前言¶
在 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