前言¶
在使用 DSH 或其他 AI 编码代理时,经常需要启动一个长时间运行的任务,然后离开电脑。任务结束后、被阻塞时,或者需要你做决策时,如果不在终端旁,很容易错过进度更新。
dsh-email-push-master 解决的是这个问题。它通过邮件向你的手机邮箱发送单向通知:当 DSH 代理完成任务、遇到阻塞、准备提问或达到里程碑时,它会发送一封邮件提醒你回来处理。
插件介绍¶
这是一个由 JamesYasR 维护的 DSH 插件,也是对开源项目 dsh-notify-skill 的一个硬核分支。它的核心设计是将发送器(sender.mjs)打包进技能中,完全依赖 Node.js 内置的 tls 和 net 模块,不依赖第三方库。这样做的好处是发送过程确定性强,并且在 Windows 环境下避免了 .NET SmtpClient 在端口 465 上常见的心跳卡死问题。
核心功能¶
该插件主要提供以下能力:
- 多场景通知:支持在目标完成、任务阻塞、需要决策或长任务里程碑时触发邮件。
- 零依赖发送器:使用 Node.js 原生模块,无需额外安装 SMTP 库。
- 智能错误处理:对错误进行结构化分类(如 535 认证失败、550 收件人无效、网络错误)。
- 自检功能:提供
--check标志,用于在不发送邮件的情况下验证配置和 SMTP 认证状态。 - 自动推断 SMTP 主机:针对 QQ 邮箱和 163 邮箱,如果未在配置中指定
smtpHost,插件会自动推断对应的主机名和端口。
安装与启用¶
通过 DSH 插件机制安装是最推荐的方式,它会自动注册到 ctx.skills。
dsh plugin --profile web add dsh-email-push-master
也可以直接从 GitHub 安装:
dsh plugin --profile web add github:JamesYasR/dsh-email-push-master
安装完成后,重启 dsh web 即可在会话技能列表中找到该插件。
典型用法¶
1. 配置文件¶
在技能目录下,将 config.example.json 复制为 config.json 并填写。配置项包括发件人邮箱、授权码、收件人以及 SMTP 服务器信息。
{
"email": {
"smtpHost": "",
"smtpPort": 465,
"useSsl": true,
"from": "your-address@qq.com",
"authCode": "16-char authorization code",
"to": "recipient@example.com"
}
}
如果不填写 smtpHost,插件会根据邮箱后缀自动推断(如 @qq.com 对应 smtp.qq.com)。
2. 命令行发送¶
DSH 代理在运行时会调用打包好的 sender.mjs。命令格式如下:
node sender.mjs "subject" "body"
3. 自检配置¶
在正式发送前,建议先运行自检命令,确认网络和授权码无误:
node sender.mjs --check
适用场景与注意¶
- 环境要求:插件要求 Node.js 版本大于等于 18。
- Windows 兼容性:由于 Windows 原生
SmtpClient在端口 465 上存在已知问题,该插件使用node:tls进行 TLS 连接,解决了这个问题。 - 安全规范:
config.json和notify.log文件已被加入 Git 忽略列表,切勿手动提交或泄露。- 插件指令代理绝不在日志或对话中打印授权码。
- 535 错误不重试:如果收到 535 认证失败(通常由风控导致),插件不会自动重试,以防止账号被进一步锁定。
- 其他代理:该插件的设计理念是“告知而非控制”,因此也兼容 Claude Code、Codex 等其他现代智能体,只要它们能读取
SKILL.md并调用sender.mjs即可。
结语¶
dsh-email-push-master 通过将 SMTP 逻辑内联,提供了一个稳定、低风险的邮件通知方案。如果你习惯通过手机邮件处理工作流,这个插件可以作为 DSH 代理的“离线助手”,确保你不会错过任何关键进度。