Repository navigation
Releases: ddxl123/dsh-notify-long
Release list
v0.1.1 — 首个 npm 版本
首次发布到 npm:dsh-notify-long
dsh plugin --profile web add dsh-notify-long不用再克隆仓库,装完重启 profile 即可。
修复
- 提问提醒不再依赖监听顺序。 之前只有「提问先于回合分类被观察到」时,提问才会顶替该回合的完成提醒;现在两条路径彼此独立,问问题的回合一定按「需要你的输入」提醒,不会再误报成「已完成」。
Config只在真正是 schema 时才导出。 当@deepseek-ai/schemastery无法解析时,本包曾在Config名下导出一个非 schema 值,Cordis 会把它当作条目 schema 处理。现在这种情况下导出undefined,跳过校验而不是错误解析;defaultsFor与default仍然给出文档里的默认值。
变更
- 分发方式改为 npm 优先;
git clone+link:装法保留,作为改源码的路径。 - npm 装法不需要手动链接 peer:包在 profile 里是真实目录,Node 会向上一级解析到 harness 的
@deepseek-ai/schemastery与@deepseek-ai/dsh-tools。只有link:装法才需要跑scripts/link-harness-deps.mjs。 - 发布产物不含任何本地或个人信息;
npm pack共 32 个文件,不含测试与node_modules。
内部
- 用集成测试替换旧的 patch 测试:把真实插件挂到真实 Connection 通道与真实提问服务上(173 个测试全部通过)。
完整变更:v0.1.0...v0.1.1
v0.1.0 — 系统音 / 桌面横幅 / 邮件提醒
dsh-notify-long v0.1.0
DeepSeek Harness(dsh)通知插件:任务完成、出错、提问、等待授权时,用系统提示音 + 桌面横幅 + 邮件提醒你,不用盯着终端。
安装
前提:Node.js ≥ 20.11,能运行 dsh。
git clone https://github.com/ddxl123/dsh-notify-long.git
cd dsh-notify-long
node scripts/install.mjs --profile web
dsh --profile web # 首次需要重启一次,让插件包被进程加载安装脚本做的两件事都是幂等的:把仓库软链到 <profile>/node_modules/dsh-notify-long,以及在 <profile>/cordis.patch.yml 追加一行插件条目(保留你已有的 patch)。--dry-run 可预览,--uninstall 可撤销。
本版能力
四类提醒(默认全开,可逐个关闭)
| 事件 | 触发时机 |
|---|---|
completed |
一轮任务正常结束、会话回到空闲(附最后回复摘要 + 工具调用/失败/轮次统计) |
question |
agent 调用 ask_user_question(含 plan 审批) |
approval |
需要你批准某个操作(附工具名与原因) |
error |
一轮/一步失败或会话级错误(按指纹冷却,避免刷屏) |
三个通道:系统提示音(macOS afplay / Linux paplay·pw-play·aplay·ffplay / Windows PowerShell,可给不同结果配不同音效)、桌面横幅(osascript / notify-send / PowerShell)、邮件(自带 SMTP 客户端,支持 465 直连 TLS 与 587 STARTTLS)。
不吵人:同类事件去重、报错按指纹冷却、提示音突发合并、免打扰时段(此期间只发邮件)。
不丢提醒:每次提醒先写入 ~/.dsh/dsh-notify-long/outbox.json 再发送,成功才删除;失败按退避重试,最多 5 次,进程重启后继续投递。
模型可用工具:notify_user(主动提醒,可标 action/error)、notify_test(逐通道自检)、notify_status(脱敏报告配置与队列)、notify_flush(改完邮件密码立刻补发)。
邮件配置
在 ~/.dsh/settings.yaml 加一段即可(支持 provider 预设,自动填 host/port/传输方式):
dsh-notify-long:
email:
preset: qq # qq / 163 / aliyun / gmail / outlook / icloud / sendgrid / …
user: you@qq.com
from: "DSH <you@qq.com>"
to: [you@qq.com]密码从环境变量读取,不写进任何文件:export DSH_SMTP_PASSWORD='授权码'(QQ/163 需用邮箱设置里生成的授权码,不是登录密码)。也支持 email.passCommand 从 Keychain / pass 取。
改完设置不用重启(热生效)。重启后可直接让 agent 跑 notify_test 做全通道自检,或脱离 harness 单独验证:
node scripts/test-alert.mjs --channel sound
node scripts/test-alert.mjs --channel email质量
- 82 个测试全过:策略/去重/免打扰、RFC 2047 + quoted-printable 编码、SMTP 客户端(本地假服务器跑通认证失败/拒收/DATA 拒绝/点填充/明文拒绝发凭据)、队列持久化与退避重试、假 harness 的 boot 级挂载、profile 补丁编辑回归。
- 零运行时依赖、零构建步骤:纯 JavaScript ESM,只用 Node 内置模块。
- 安装在 host 侧组合,对所有会话生效,且重启后依然有效。
已知限制
- 容器、远程主机、CI 里通常没有音频设备,此时请用邮件通道(
notify_status会如实报告)。 - 邮件需要你自己的 SMTP 账号;本插件不附带任何中继服务。
- v0.1.0 面向 web profile;其它 profile 用
node scripts/install.mjs --profile <name>安装。
完整文档见 README.zh.md / README.md。