前言¶
DeepSeek Harness (DSH) 採用插件化架構,支持通過源碼 checkout 的方式本地開發。這種形態下,本體代碼通常指向 deepseek-ai/deepseek-harness 倉庫。社區中常見的更新檢測插件大多通過比對 npm registry 上的 @deepseek-ai/dsh 版本來判斷,這會導致誤報(本地提交數往往多於 npm 上的發佈版本);若執行 npm install,則會破壞 pnpm workspace 的鏈接結構。
dsh-git-update-notifier 專爲解決此類問題設計。它不依賴 npm registry 檢測源碼形態,而是直接通過 git 推進本地提交。同時,它也支持 npx 和 npm 安裝形態,通過 npm registry 進行版本比對。插件在每天 24 時自動檢查,若此時 DSH 未運行,下次啓動時會補檢一次。
插件簡介¶
- 名稱:dsh-git-update-notifier
- 所有者:lmr233
- 許可:MIT
- 定位:每天首次啓動 DSH 時用 git 檢測上游提交併在 Web GUI 中詢問是否更新(適配源碼 checkout,不改 npm 依賴)。
核心能力¶
- 自動檢測與交互:每天本地時間 24 時自動檢查更新。若當日未運行,啓動時補檢一次。發現更新後,在 Web GUI 右下角彈出卡片,由用戶決定“立即更新”、“稍後”或“延期”。
- 斷點續傳與校驗:下載過程支持斷點續傳,安裝前支持 sha512/sha1/包內身份三層校驗。
- 失敗處理:安裝失敗後支持重試(複用本地包)和回退。任一階段失敗,會生成完整診斷日誌落盤至
$DSH_HOME/dsh-git-update-notifier-logs/。 - 自身更新:插件也檢測自身版本。對於 git 檢出、npm 依賴或 github 依賴形態,可自動更新;對於手工副本形態,僅提示手動更新。
- 形態適配:自動識別源碼 checkout、npx 緩存、npm 安裝三種形態,分別採用 git pull 或 npm install 邏輯。
- 代理支持:Windows 上 git 不讀取系統代理,插件會自行探測並應用代理(支持環境變量或系統代理),支持顯式設置
DSH_GIT_UPDATE_NOTIFIER_PROXY。
安裝與啓用¶
通過官方命令安裝到 web profile:
dsh plugin --profile web add dsh-git-update-notifier
安裝後需重啓 dsh web 才能生效。
典型用法¶
可以通過環境變量控制檢測行爲:
- 設置發佈通道(默認
latest,可切換至next或alpha):
DSH_GIT_UPDATE_NOTIFIER_CHANNEL=next
- 設置鏡像源:
DSH_GIT_UPDATE_NOTIFIER_REGISTRY=https://registry.npmmirror.com
- 設置代理:
DSH_GIT_UPDATE_NOTIFIER_PROXY
- 手動檢測:在設置頁點擊“檢測更新”按鈕。
行爲與交互¶
- 彈窗與設置頁:更新詢問以浮層卡片形式展示在 Web GUI 右下角(點擊穿透)。同時,設置頁包含一個常駐區塊,顯示狀態、版本號、手動檢測按鈕及延期選項。
- 延期機制:選擇延期後,可設定 1 天、3 天、1 周、2 周或 1 個月。到期前不再彈窗,但設置頁仍可查看與更新。
- 重試與回退:安裝或下載失敗時,設置頁提供“重試安裝”和“回退到更新前”按鈕。回退腳本會直接生成在
$DSH_HOME目錄,確保即使 DSH 無法啓動也能通過外部腳本回退。 - 補檢機制:若 24 時 DSH 未運行,下次啓動時會執行補檢,確保當日檢測不遺漏。
技術細節與注意¶
- 運行環境:需要 Node.js 版本爲
^22.19.0 || >=24.0.0。 - 構建要求:插件爲純手寫 JavaScript,無構建步驟,可直接運行。
- 宿主端代碼改動:若修改了
lib/index.js等宿主端代碼,必須重啓dsh web才能生效(僅刷新頁面無效)。 - 手工副本限制:手工複製的副本無法自動更新,只能手動替換。
- 代理處理:Windows 上 git 默認不讀取系統代理,插件會主動探測並使用。
總結¶
dsh-git-update-notifier 解決了源碼 checkout 形態下更新檢測難、易破壞 workspace 的問題。它通過 git 推進提交,配合完整的校驗、回退和診斷機制,爲本地開發提供了可靠的更新保障。更多細節與源碼可參考插件目錄或GitHub 倉庫。