wuuuuu123-32/dsh-mailbox-notify ↗★ 0
dsh-mailbox-notify
DeepSeek Harness (dsh) 任务通知:任务跑完自动发邮件到你手机,审批卡住超过 1 分钟也会提醒你,并且每封新通知会自动删掉上一封(邮箱永不堆积)。零依赖、零构建、不监听端口。 适合不在DSH界面前等待的用户,通过邮件接收任务完成或审批等待提醒,需配置邮件服务。
インストール
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:wuuuuu123-32/dsh-mailbox-notifyドキュメント
README 全文を読む ↗配置
把 config.example.json 复制到 ~/.dsh/mailbox-notify.json(Windows 是 C:\Users\你的名字\.dsh\mailbox-notify.json),填上你的邮箱:
{
"channel": "mail",
"mail": {
"host": "smtp.qq.com",
"port": 465,
"user": "你的邮箱@qq.com",
"pass": "你的SMTP授权码",
"to": "你的邮箱@qq.com"
},
"imap": {
"host": "imap.qq.com",
"port": 993
},
"link": "https://你的-dsh-地址/"
}
link 填上你平时打开 dsh 的地址(比如 Tailscale 域名),邮件末尾就会多一行「处理:…」,在手机上点一下就能去点审批。
怎么拿 SMTP 授权码
授权码不是你的登录密码,是邮箱服务商发给第三方程序的专用密码。以 QQ 邮箱为例:
- 电脑登录 mail.qq.com → 设置 → 账户
- 找到「POP3/IMAP/SMTP...服务」,开启 SMTP 服务(要短信验证)
- 生成授权码,把那串 16 位字母填进
pass - IMAP 通常是同一个开关,一起开着的
163、Gmail、Outlook 类似,搜「你的邮箱 + SMTP 授权码」就有官方教程。
全部配置项
| key | 默认 | 说明 |
|---|---|---|
channel | "mail" | mail / ntfy / both |
notifyOn | "goals" | errors 只报错 / goals 默认 / all 每轮都发 |
longTaskMs | 180000 | 超过这个毫秒数的轮次算"正经干活",也会通知 |
minToolCalls | 5 | 一轮里工具调用达到这个次数也会通知(不依赖 goal) |
debounceMs | 60000 | 同类成功通知的最小间隔,防止刷屏 |
cleanupOld | true | 发新通知前删掉旧的同前缀通知 |
mailTag | "[dsh-notify]" | 通知邮件的主题前缀,IMAP 靠它识别自己的邮件 |
approvalTimeoutMs | 60000 | 审批挂起多久后提醒;设 0 关掉审批提醒 |
approvalIncludeSubagents | true | 子代理的审批要不要也提醒 |
questionTimeoutMs | 60000 | 提问(ask_user_question)挂起多久后提醒;设 0 关掉提问提醒 |
questionIncludeSubagents | true | 子代理的提问要不要也提醒 |
link | "" | 邮件末尾附带回 dsh 的链接,留空则不附 |
mail.* | — | SMTP 服务器、端口、账号、授权码、收件地址 |
imap.* | imap.qq.com:993 | 用来清理旧通知的 IMAP 服务器 |
ntfy.topic | "" | 填了才启用 ntfy 通道 |
timeoutMs | 25000 | 网络操作超时 |
也可以用环境变量覆盖:DSH_NOTIFY_CHANNEL、DSH_NOTIFY_ON、DSH_NOTIFY_APPROVAL_MS、DSH_NOTIFY_QUESTION_MS、DSH_NOTIFY_LINK、DSH_NOTIFY_SMTP_HOST、DSH_NOTIFY_SMTP_USER、DSH_NOTIFY_SMTP_PASS、DSH_NOTIFY_MAIL_TO 等(完整列表见源码 resolveConfig)。
全部配置项
| key | 默认 | 说明 |
|---|---|---|
channel | "mail" | mail / ntfy / both |
notifyOn | "goals" | errors 只报错 / goals 默认 / all 每轮都发 |
longTaskMs | 180000 | 超过这个毫秒数的轮次算"正经干活",也会通知 |
minToolCalls | 5 | 一轮里工具调用达到这个次数也会通知(不依赖 goal) |
debounceMs | 60000 | 同类成功通知的最小间隔,防止刷屏 |
cleanupOld | true | 发新通知前删掉旧的同前缀通知 |
mailTag | "[dsh-notify]" | 通知邮件的主题前缀,IMAP 靠它识别自己的邮件 |
approvalTimeoutMs | 60000 | 审批挂起多久后提醒;设 0 关掉审批提醒 |
approvalIncludeSubagents | true | 子代理的审批要不要也提醒 |
questionTimeoutMs | 60000 | 提问(ask_user_question)挂起多久后提醒;设 0 关掉提问提醒 |
questionIncludeSubagents | true | 子代理的提问要不要也提醒 |
link | "" | 邮件末尾附带回 dsh 的链接,留空则不附 |
mail.* | — | SMTP 服务器、端口、账号、授权码、收件地址 |
imap.* | imap.qq.com:993 | 用来清理旧通知的 IMAP 服务器 |
ntfy.topic | "" | 填了才启用 ntfy 通道 |
timeoutMs | 25000 | 网络操作超时 |
也可以用环境变量覆盖:DSH_NOTIFY_CHANNEL、DSH_NOTIFY_ON、DSH_NOTIFY_APPROVAL_MS、DSH_NOTIFY_QUESTION_MS、DSH_NOTIFY_LINK、DSH_NOTIFY_SMTP_HOST、DSH_NOTIFY_SMTP_USER、DSH_NOTIFY_SMTP_PASS、DSH_NOTIFY_MAIL_TO 等(完整列表见源码 resolveConfig)。