前言¶
DeepSeek Harness (DSH) 是一个智能体开发工作流工具。传统更新方式通常涉及全量 npm install,这会重建整个包仓库,容易在内存受限环境(如 Docker)中触发 OOM。dsh-updater 旨在解决这一更新效率与稳定性问题。
什么是 dsh-updater¶
dsh-updater 是一个社区插件,由 Takinggg 维护,采用 MIT 协议。它不 fork DSH 或执行 git pull,而是通过增量下载 npm tarballs 来更新。
核心功能¶
该插件提供以下能力:
1. 一键更新:在 DSH 界面中直接触发更新。
2. 增量更新:复用现有引擎(node_modules),仅下载发生变化的 @deepseek-ai/* 包。
3. 保留第三方依赖:当版本匹配时,保留第三方依赖(如 commander、koffi)。
4. 备份与回滚:更新前自动备份引擎,并在更新失败时自动回滚。
安装与启用¶
安装该插件需要先克隆仓库,然后使用绝对路径添加。不要使用 github:owner/repo 这种非固定引用方式。
- 克隆插件仓库:
git clone https://github.com/Takinggg/dsh-updater.git
- 添加插件到 DSH(使用绝对路径):
dsh plugin --profile web add /absolute/path/to/dsh-updater
- 启用后,在 DSH 界面中打开 Settings → Updates 面板即可进行操作。
典型用法¶
在 DSH 的设置面板中,可以查看更新进度和结果。插件支持通过环境变量控制部分行为:
* DSH_UPDATE_MODE:覆盖显示设置。
* DSH_UPDATE_RESTART:控制进程退出行为(强制重启或保持运行)。
* DSH_HOME:设置备份、缓存和暂存目录的根路径(默认为 ~/.dsh)。
适用场景与注意事项¶
- 适用场景:需要在 Docker 容器、nvm 全局安装、Windows
%APPDATA%\npm或其他可写位置运行 DSH 的环境。 - 安全与限制:
- 这是一个社区插件,非 DeepSeek 官方软件。
- 插件不会运行
sudo或curl | bash。 - 目标版本必须是 npm registry 中发布的
next或latestdist-tag。 - 插件会校验 tarball 路径防止目录遍历攻击。
- 如果验证失败,会自动从
engine-bak恢复。
总结¶
dsh-updater 通过增量更新和自动回滚机制,解决了 DSH 在特定环境下全量安装导致内存溢出的问题。对于需要频繁更新或部署在资源受限环境的用户,该插件提供了一个可行的维护方案。