dsh-mail-notify
DeepSeek Harness 插件:agent 每结束一轮回答,就发一封通知邮件。零依赖,只用 Node 内置模块。 适合需要离线或后台运行任务,并在完成后接收即时邮件提醒的用户。
Install
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Cangjier/dsh-mail-notifyREADME
Read the full README ↗第 3 步:填个人配置并启用
本包的 cordis.patch.yml 里只有占位地址(you@example.com),真实邮箱写在
profile 自己的覆盖层 %USERPROFILE%\.dsh\profiles\desktop\cordis.patch.yml 里,
这样公开仓库不会留下你的地址:
- id: mail-notify
name: 'dsh-mail-notify'
config:
enabled: true
smtp:
user: 你的账号@qq.com
from: 你的账号@qq.com
to:
- 收件人@qq.com
patch 是整体替换 config,不是深合并,所以这段会覆盖本包的默认值——从 enabled 开始写全。
host / port / secure 会按发件域名自动推断,不必手写;其余字段都有代码默认值。
example.com故意不在内置端点表里:如果只把enabled改成true而不填真实地址, 会得到一条明确的配置错误日志,而不是静默失败。
配置
| 字段 | 默认值 | 说明 |
|---|---|---|
enabled | false | 出厂就是关的。false 时不注册监听器、不发信 |
smtp.user | 必填 | SMTP 登录账号(发件邮箱) |
smtp.from | 同 user | 信头里的发件地址 |
smtp.host | 按发件域名推断 | 认不出的域名必须手填,否则只记错误日志、保持不发信 |
smtp.port | 推断值 | 隐式 TLS 默认 465,STARTTLS 默认 587 |
smtp.secure | 推断值 | true = 465 隐式 TLS,false = EHLO 后 STARTTLS |
to | 必填 | 收件人数组;每人单独投递,互相看不到地址 |
subject | DSH 任务完成 | 标题固定前缀;非正常结束时自动补后缀,如「(已取消)」「(出错)」 |
subjectSummary | true | 标题是否带本轮回答的摘要:「前缀(结束原因)|摘要」 |
subjectSummaryChars | 40 | 摘要最多几个字,按字符截断并加省略号 |
authCode | 无 | 内联授权码,不推荐 |
authCodeEnv | QQ_SMTP_AUTH_CODE | 授权码环境变量名 |
authCodeFile | 本目录 secret.txt | 授权码文件路径,相对路径以本目录为基准 |
skipSubagentSessions | true | 跳过子代理会话,避免一次任务刷出一堆邮件 |
mergeSteps | false | false 只发最后一条助手消息;true 拼接整轮所有步骤 |
maxBodyChars | 20000 | 正文超长时截断并注明原长度 |
includeSessionInfo | false | 正文末尾附会话 id、工作目录、结束原因、时间 |
dryRun | false | true 时只记日志不连服务器,用于试配置 |
timeoutMs | 30000 | 单步读写超时 |
内置端点:qq.com / vip.qq.com / foxmail.com → smtp.qq.com:465;
163.com / 126.com / yeah.net → 各自 :465;sina.com / 139.com / aliyun.com → 各自 :465;
gmail.com → smtp.gmail.com:465;outlook.com / hotmail.com / live.com → smtp.office365.com:587 STARTTLS;
icloud.com / me.com → smtp.mail.me.com:587 STARTTLS。其他域名请显式写全 smtp.host/port/secure。
标题里的摘要
摘要是本地推断出来的,不调模型、不联网、不额外花钱:跳过代码块,优先取回答里第一个
Markdown 标题,没有标题就取第一行;首选内容短于 8 个字就往后接一行(最多三条候选行),
让「好的」这种标题能自解释;最后按 subjectSummaryChars 个字符截断并加省略号。
Markdown 标记(#、列表符、**、链接、表格竖线)都会被剥掉。
DSH 任务完成|邮件标题已带摘要
DSH 任务完成(出错)|沙箱拒绝了这次写入
DSH 任务完成|路径已改成 C:/tmp
结束原因后缀排在摘要之前,所以出错、被取消这类结果在收件箱里一眼可见。
不想要摘要就把 subjectSummary 设成 false,标题回到只有前缀加结束原因。