Skip to content

Releases: ddxl123/dsh-notify-long

v0.1.1 — 首个 npm 版本

Choose a tag to compare

@ddxl123 ddxl123 released this 16 Sep 17:21

首次发布到 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 — 系统音 / 桌面横幅 / 邮件提醒

Choose a tag to compare

@ddxl123 ddxl123 released this 12 Sep 14:32

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。