前言¶
在 DeepSeek Harness(DSH)的生态中,默认的更新行为倾向于“浮动”。例如,使用 dsh plugin --profile web update 实际上执行的是 pnpm update,这会将依赖更新到最新版本。社区现有的其他更新器(如 dsh-update-checker、dsh-safe-updater 等)也大多会将 profile 指向最新版本。
这种默认行为在 DSH 处于 RC 阶段,或者插件运行在具备进程权限的环境下时存在风险。dsh-lockstep 解决的问题是:“保持 N 台机器处于相同的已审核 pin 上,并注意到世界已经发生了变化”。
这是什么¶
dsh-lockstep 是一个基于 pin 的更新工具,隶属于 DSH 插件生态。由 da-beda 维护。它的核心逻辑是:对比已审核的 lockfile 与 npm registry 和 GitHub 上的状态,规划 pin bump,然后停止。它不会将任何依赖“浮动”到最新版本。
核心功能¶
该插件提供以下核心能力:
- 检查 lockfile drift:对比当前锁定的版本与远程仓库(npm 或 GitHub)的最新状态。
- 规划 pin bump:当有更新时,生成具体的 bump 计划。
- 永不浮动:严格执行锁定策略,不会自动更新到最新版本。
安装与启用¶
可以通过两种方式安装该插件。
作为 CLI 工具(无需 DSH):
npx -y github:da-beda/dsh-lockstep#v0.1.1 check --lock plugins.lock.json
作为 DSH 插件(注册 lockstep_check / lockstep_plan 工具):
dsh plugin --profile tui add github:da-beda/dsh-lockstep#v0.1.1
dsh plugin --profile web add github:da-beda/dsh-lockstep#v0.1.1
典型用法¶
使用 dsh-lockstep 的标准工作流是先检查,再规划,最后应用变更。
- 检查状态
dsh-lockstep check
# 或者指定 lockfile
dsh-lockstep check --lock plugins.lock.json
- 查看变更计划
dsh-lockstep plan
- 应用变更并写入
需要显式传递--write参数。apply命令在未传递--write时会拒绝执行写入操作。
dsh-lockstep apply --write
完整的操作链路是:
check → plan → review → apply --write → commit → 在每台机器上运行 install.sh。
适用场景与注意¶
- 适用场景:需要严格控制多台机器依赖版本一致性的环境,特别是 DSH 处于 RC 版本或插件涉及系统权限时。
- 安全机制:
- 插件仅与 npm registry 和 GitHub 通信,不执行 package install scripts。
- 写入 lockfile 并不等同于安装代码,这只是一个配置文件的更新。
- 错误处理:
apply命令在未使用--write时会拒绝写入。- 如果遇到 GitHub API 速率限制,请设置环境变量
GITHUB_TOKEN或GH_TOKEN。
- 生态背景:DSH 的核心理念是“一切皆插件”。社区目录(catalog)是独立站点,与 DeepSeek / 幻方无官方从属关系。
链接¶
- 插件目录:https://www.skillhub.cn/plugins/da-beda/dsh-lockstep
- 源码地址:https://github.com/da-beda/dsh-lockstep