DeepSeek Harness 的核心理念是“一切皆插件”。当插件安装后,如果不主动查询,很难察觉其是否更新。dsh-update-notifier 解决了这一信息差,通过定时扫描,在版本更新时请求用户确认。
这是什么¶
这是一个由 Stuart Hu 维护的插件,用于监控已安装 DSH 插件的 npm 版本。它每小时对比一次本地安装与注册表的 latest 标签,发现新版本时通过 UI 气泡请求批准。它本身从不执行升级,而是将批准指令交给 DSH Agent 执行。
核心功能¶
- 定时与手动检查:默认每小时检查一次,也可通过
/check-updates命令立即手动触发。 - 审批气泡:新版本以气泡形式呈现,用户勾选后,Agent 执行升级。
- 记忆拒绝:未勾选的版本会被记录在
<profileDir>/.dsh-update-notifier.json中,下次不再询问,除非 registry 的最新版本变更。 - 安全执行:插件不直接运行包管理器,仅向 Agent 发送文本指令。
安装与启用¶
通过 DSH CLI 安装插件:
dsh plugin --profile web add dsh-update-notifier
安装后需要重启 dsh 进程才能生效。该插件需要 Node.js 18+ 环境(用于全局 fetch),且与 dsh 0.1.0-rc.6+ 兼容。
典型用法¶
手动检查¶
在 DSH 会话中输入以下命令,立即扫描当前会话的插件更新:
/check-updates
系统会返回检查结果,并弹出批准气泡。如果气泡无法显示(例如无 UI 环境),结果中会直接包含升级命令。
执行升级¶
- 在气泡中勾选需要升级的插件。
- DSH Agent 会接收到指令并执行类似以下的命令:
pnpm --dir <profileDir> add <pkg>@<latest>
配置检查频率¶
在 cordis.patch.yml 中配置 update-notifier 节点:
update-notifier:
interval: 3600000 # 默认 3600000ms (1小时),最小 60000ms
initialDelay: 10000 # 启动后 10 秒开始第一次检查
适用场景与注意¶
适用场景¶
- 需要长期维护插件版本的 DSH 用户。
- 想要统一管理多个插件更新,避免遗漏的场景。
限制与注意事项¶
- 仅限注册安装:插件必须是通过 npm 安装到
node_modules的,本地链接或内置插件不可见。 - 仅限 latest 标签:插件不支持锁定
next、beta等预发布版本,或 Pin 到特定版本。 - 一次一个气泡:如果当前已有气泡处于待回答状态,新的检查会被跳过或拒绝。
- 插件退出机制:插件本身可以在其
package.json中声明{ "dsh": { "updateNotifier": false } }来退出更新通知。 - 安全机制:插件不会尝试升级任何未获批准的包。批准后的命令由 Agent 执行,插件层不直接操作 shell。
短结尾¶
dsh-update-notifier 通过将版本检查与审批流程整合到 DSH 会话中,解决了手动维护插件版本的痛点。它通过 /check-updates 命令和配置文件提供了灵活的控制,确保了升级操作的安全性。