# 配置参考 设置入口:DSH → **设置 → 邮件通知**。面板分两级,平时只需要填基础页的两个框; 其余全部收在「高级设置」二级页里。保存即生效,不用重启。 - [基础页与高级页](#基础页与高级页) - [离开模式](#离开模式) - [邮件模板](#邮件模板) - [配置文件](#配置文件) ## 基础页与高级页 **基础页(默认看到的)** | 分组 | 内容 | | --- | --- | | **邮件通道** | 邮箱账号、授权码、收件地址(留空 = 发给自己)。QQ 邮箱的服务器与端口已经设好,不用填 | | **邮件内容** | 标题模板(单行)、正文模板(多行)、实时预览、占位符清单、「恢复默认(精简)」「套用详细模板」 | | **高级设置** | 一个入口按钮,点进去才是下面那张表 | **高级页(点「高级设置 ▸」进入,可点「← 返回基础设置」回来)** | 分组 | 内容 | | --- | --- | | **发信时机** | **自动模式**(不看页头按钮,按"是否在看界面"自动发;默认关) | | **SMTP 服务器** | 服务器、端口、账号、授权码、发件人、发件显示名、收件地址、是否使用 TLS、是否校验证书、是否允许无 TLS 明文发送 | | **通知时机** | 任务完成 / 需要授权 / 向我提问 三个开关;是否也给子会话发;三个"看界面时也弹提示"开关 | | **标题与地址** | 标题前缀、正文里的地址、`{提问}` `{最后回复}` 的截断长度 | | **限流与判定** | 同类通知最小间隔、每分钟上限、心跳过期判定、总开关 | 三个按钮:**保存设置**(写回 `config.json` 并立即生效)、**发送测试邮件**(用界面上的草稿试发,没保存也能试; **按你当前的模板渲染**,所以手机上看到的就是真通知的样子)、**重新读取**。 面板顶部会显示当前状态:配置是否就绪、**此刻是否被判定为"你正在看界面"**、上次发信成功还是失败。 QQ 邮箱先做这一步:网页版邮箱 → 设置 → 账户 → 开启「IMAP/SMTP 服务」→ 生成**授权码**(16 位,**不是登录密码**)。 其他邮箱(163 / Gmail / Outlook / 自建 SMTP)在高级设置里填对应的服务器与端口即可。 ## 离开模式 页头最右侧的按钮就是**总闸**: | 按钮显示 | 行为 | | --- | --- | | `离开模式:开` | **一律发**:你在设置里勾选的三种通知,只要发生就发邮件 —— 不管你是不是正看着 harness | | `离开模式:关`(默认) | **一封都不发** | | `离开模式:自动`(按钮变灰) | 高级设置里打开了「自动模式」:按钮不生效,回到"不在看界面才发" | 为什么不让插件自己判断:唯一的依据是窗口有没有焦点(`document.hasFocus()` + `visibilityState`), 而**"人走了、窗口还开着(甚至还是焦点)"恰恰是最常见的情况** —— 那时插件会以为你还在看,你在外面就收不到。 所以默认把决定权交回给人:**出门前点一下,回来再点一下**。状态记在配置里,重启后保持。 面板顶部的状态行、`GET /status` 的 `willMail` 字段、以及启动日志都会如实写明当前处在哪种方式。 ## 邮件模板 **标题**与**正文**都是模板,大括号里的词会被替换成真实内容: | 占位符 | 含义 | | --- | --- | | `{会话}` | 会话名(左侧列表里显示的那个) | | `{工作区}` | 工作目录的完整路径 | | `{状态}` | 已完成 / 出错 / 已中止 / 需要你授权 / 等你回答 | | `{离开模式}` | 开 / 关 / 自动 —— 页头那个开关的状态 | | `{详情}` | 提问内容与选项、授权原因;任务完成时为空 | | `{摘要}` | 一行摘要(问题首行、工具名),适合放进标题 | | `{提问}` `{最后回复}` | 你这一轮的提问 / 助手的最后回复(按「摘要长度」截断) | | `{时间}` | 通知发出的时间 | | `{地址}` | harness 界面地址(默认 `http://127.0.0.1:3080`) | | `{回合}` | 回合编号 | | `{用时}` | 本回合耗时 | | `{图标}` | 状态对应的小图标字符 | | `{工具}` | 触发授权的工具名 | | `{会话ID}` | 会话内部 id(一般用不上,有 `{会话}` 就够) | 默认正文(**通知多半是在手机上看,所以默认很短**): ``` 工作区:F:\Space For AI work\harness 会话:继续邮件通知插件工作 状态:已完成 离开模式:开 这封邮件由 dsh-email-notify 发送 ``` > `{结果}` 是 0.5.0 及更早的旧名字,**老模板里的 `{结果}` 仍然能用**(会照旧渲染成"已完成"等), > 但占位符清单里只列新名字 `{状态}`。 `{详情}` 在默认模板里紧跟「离开模式」,任务完成时它是空的、不会多出空行; 轮到「需要授权」「等你回答」时才展开,例如: ``` 工作区:F:\Space For AI work\harness 会话:继续邮件通知插件工作 状态:等你回答 离开模式:开 高级设置想要哪种? · 原地折叠展开 · 真正的二级页面 任务现在停在等你回答这一步,回到 harness 窗口作答才会继续。 这封邮件由 dsh-email-notify 发送 ``` 想看更详细的内容就把 `{提问}` `{最后回复}` 加进模板,或者点「套用详细模板」。模板留空 = 用内置默认, 所以没自定义过的用户会跟着插件升级一起拿到改进后的默认模板;认不出的占位符会渲染成空,并在保存时提示你。 ## 配置文件 设置存在 `~/.dsh/dsh-email-notify/config.json`(Windows:`C:\Users\<你>\.dsh\dsh-email-notify\config.json`)。 设置界面读写的就是它;也可以手改,改完保存即生效。授权码只存在本机,**读回界面时永远为空**(留空 = 不修改)。 密码也可以不落盘:设环境变量 `DSH_EMAIL_NOTIFY_PASS`(可选 `DSH_EMAIL_NOTIFY_USER`),配置里 `pass` 留空即可, 界面会提示"由环境变量提供"。