DeepSeek Harness (DSH) 采用插件化架构。在维护 DSH 实例时,手动更新核心 CLI 或依赖项容易因版本不匹配或文件锁定导致服务中断。dsh-autoupdate 插件通过受保护的更新管道解决了这一问题,确保更新过程安全可控。
插件定位¶
dsh-autoupdate 是 DeepSeek Harness 的内置自动更新插件。它由维护者 lc23313 开发,采用 MIT 许可证。该插件通过设置页提供手动检查入口,并实现了完整的更新事务保护机制,包括健康检查、自动回滚以及基于熔断器的降级策略。
核心功能¶
- 设置页 UI:在 DSH 设置页面添加了“检查更新”按钮,提供确认对话框以触发更新流程。
- 受保护的更新管道:采用“退出时应用”机制。守护进程在 DSH 进程退出后执行安装,避免 Windows 环境下的文件锁定问题。
- 精确版本与验证:安装过程中锁定精确版本,通过双重验证(清单版本 + 二进制运行验证)确认更新成功。
- 自动回滚:若更新过程中出现任何失败,系统会自动回滚到前一版本。
- 熔断与降级:内置熔断器,根据连续失败次数自动将模式降级为
auto -> notify -> off。 - 任意 Dist-Tag 支持:支持跟踪任何 npm dist-tag(如
latest,rc等)。
安装与启用¶
通过官方插件渠道安装:
dsh plugin --profile web add dsh-autoupdate
安装完成后,重启 DSH 进程以使插件生效。可以通过以下命令验证插件是否已注册:
dsh --dump-config --profile web
典型用法¶
安装完成后,插件会自动初始化。状态和日志文件位于:
$DSH_HOME/plugins-data/dsh-autoupdate/
查看当前状态和查看日志的常用命令:
cat $DSH_HOME/plugins-data/dsh-autoupdate/state.json
cat $DSH_HOME/plugins-data/dsh-autoupdate/autoupdate.log
安全与信任¶
该插件设计上侧重于安全性:
* 最小化权限:仅生成 npm 命令(版本查询和全局安装)以及可选的 dsh plugin 命令。
* 隔离写入:绝不写入 DSH 拥有的文件(如 settings.yaml 或配置文件)。
* 审计日志:所有决策过程均记录在 autoupdate.log 中,便于审计。
* 版本锁定:安装过程始终锁定检查时解析的精确版本。
依赖要求¶
使用该插件需要满足以下环境条件:
* Node.js >= 18
* @deepseek-ai/cordis >= 4.0.0
* @deepseek-ai/schemastery >= 1.0.0