dsh-git-update-notifier:本地源碼形態的更新管理

前言

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 依賴)。

核心能力

  1. 自動檢測與交互:每天本地時間 24 時自動檢查更新。若當日未運行,啓動時補檢一次。發現更新後,在 Web GUI 右下角彈出卡片,由用戶決定“立即更新”、“稍後”或“延期”。
  2. 斷點續傳與校驗:下載過程支持斷點續傳,安裝前支持 sha512/sha1/包內身份三層校驗。
  3. 失敗處理:安裝失敗後支持重試(複用本地包)和回退。任一階段失敗,會生成完整診斷日誌落盤至 $DSH_HOME/dsh-git-update-notifier-logs/。
  4. 自身更新:插件也檢測自身版本。對於 git 檢出、npm 依賴或 github 依賴形態,可自動更新;對於手工副本形態,僅提示手動更新。
  5. 形態適配:自動識別源碼 checkout、npx 緩存、npm 安裝三種形態,分別採用 git pull 或 npm install 邏輯。
  6. 代理支持: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 倉庫。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜