dsh-email-push-master:DSH 代理的离线邮件提醒插件

前言

在使用 DSH 或其他 AI 编码代理时,经常需要启动一个长时间运行的任务,然后离开电脑。任务结束后、被阻塞时,或者需要你做决策时,如果不在终端旁,很容易错过进度更新。

dsh-email-push-master 解决的是这个问题。它通过邮件向你的手机邮箱发送单向通知:当 DSH 代理完成任务、遇到阻塞、准备提问或达到里程碑时,它会发送一封邮件提醒你回来处理。

插件介绍

这是一个由 JamesYasR 维护的 DSH 插件,也是对开源项目 dsh-notify-skill 的一个硬核分支。它的核心设计是将发送器(sender.mjs)打包进技能中,完全依赖 Node.js 内置的 tls 和 net 模块,不依赖第三方库。这样做的好处是发送过程确定性强,并且在 Windows 环境下避免了 .NET SmtpClient 在端口 465 上常见的心跳卡死问题。

核心功能

该插件主要提供以下能力:

  1. 多场景通知:支持在目标完成、任务阻塞、需要决策或长任务里程碑时触发邮件。
  2. 零依赖发送器:使用 Node.js 原生模块,无需额外安装 SMTP 库。
  3. 智能错误处理:对错误进行结构化分类(如 535 认证失败、550 收件人无效、网络错误)。
  4. 自检功能:提供 --check 标志,用于在不发送邮件的情况下验证配置和 SMTP 认证状态。
  5. 自动推断 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 代理的“离线助手”,确保你不会错过任何关键进度。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜