前言¶
DeepSeek Harness(dsh)通過 npm 全局安裝後,版本升級往往要自行查 registry、執行 npm install -g,再手動停掉舊進程並重新拉起 dsh web。對長期開着 Web 界面的開發者來說,這一步容易拖後,也可能在重啓環節失手。
下面介紹社區插件 dsh-auto-update(npm 包名 @marvinlee2011/dsh-auto-update,倉庫 lee-nihao2333/dsh-auto-update)。它在會話標題欄右上角提供「更新」按鈕:僅在 registry 上確有更新時顯示,點擊後由當前用戶執行全局安裝並重啓 dsh,新進程就緒後頁面自動刷新。與靜默自更新不同,是否升級完全由你點按鈕決定。
這是什麼¶
該插件屬於 DSH 生態中的客戶端類 bundle:Host 側無構建步驟、無額外運行時依賴,僅在 Web profile 下向會話 UI 注入控件,並與內置 /api 共用同一套 Host/Origin 校驗與瀏覽器認證。
維護者 GitHub 賬號爲 lee-nihao2333;源碼與文檔託管於上述倉庫,npm 發佈名爲 @marvinlee2011/dsh-auto-update(當前資料記載版本 1.0.0),許可證 MIT。插件與 DeepSeek 官方無隸屬關係。
核心功能¶
- 版本探測:讀取 npm registry 上目標包的
dist-tags(默認latest),與當前磁盤上的dsh版本比較;無更新時不顯示按鈕。 - 一鍵升級:點擊後在當前用戶權限下執行
npm install --global,使用解析後的精確版本號(例如@deepseek-ai/dsh@x.y.z)。 - 安裝後校驗:安裝完成後重新讀取
package.json覈對版本;不一致則不重啓並報錯。 - 受控重啓:通過獨立腳本等待當前進程退出,再以相同 node、啓動腳本、參數與工作目錄拉起
dsh;當前進程經appExit優雅退出。 - 週期檢查:默認啓動時檢查一次,之後每 30 分鐘檢查一次;頁面約每 60 秒讀取一次 Host 狀態。檢查只讀 packument,不改動磁盤。
- 失敗可重試:安裝失敗時按鈕變爲「重試更新」;安裝成功但重啓未完成時顯示「重啓」,可單獨重試。
對外暴露三個經認證的路由:GET /dsh-auto-update/status、POST /dsh-auto-update/apply、POST /dsh-auto-update/restart。頁面側無法指定包名、版本或 shell 命令。
安裝與啓用¶
環境要求(來自插件 engines):
dsh:>=0.2.1-rc.2且<0.3.0- Node.js:
^22.19.0 || >=24.0.0 - 當前用戶對 npm 全局前綴具備寫權限(升級動作爲
npm install --global)
方式一:插件管理器(推薦)¶
- 打開 DSH Web → 設置 → 插件。
- 點擊 安裝第三方插件,輸入包名
@marvinlee2011/dsh-auto-update並確認。 - 插件出現在列表中並啓用後,刷新頁面。
插件管理器會同時將包裝進 profile、把 bundle 加入啓動列表並啓用。
方式二:命令行¶
先安裝依賴:
dsh plugin --profile web add @marvinlee2011/dsh-auto-update
再把包名加入 profile 啓動列表 ~/.dsh/profiles/web/package.json 中的 dsh.profile.bundles:
{
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"@marvinlee2011/dsh-auto-update"
]
}
}
}
然後重啓 dsh web。注意:dsh plugin add 只安裝依賴,不會自動把 bundle 寫入啓動列表;漏配時啓動日誌會提示 bundle 未啓動。
典型用法¶
- 打開任意會話,在標題欄右上角工具區最右側查看是否出現「更新」(英文界面爲 “Update”)。
- 懸停按鈕可看到「當前版本 → 目標版本」。
- 點擊後狀態依次爲「正在更新…」「正在重啓…」,隨後頁面自動刷新。
按鈕出現條件:registry 上 distTag 指向的版本高於本機;或上次安裝成功但重啓尚未完成(此時顯示「重啓」)。
配置¶
在 profile 的 cordis.patch.yml 中覆蓋插件行,修改後需重啓 dsh(或在插件管理器中重載插件):
- id: dsh-auto-update
name: '@marvinlee2011/dsh-auto-update'
config:
packageName: '@deepseek-ai/dsh' # 要升級的包
distTag: latest # 比較的 dist-tag
registry: '' # 空 = 沿用 npm 自身的 registry 配置
checkIntervalMinutes: 30 # 自動檢查間隔,1–1440
常見調整:
- 跟進預發佈:將
distTag改爲next或alpha(視目標包實際標籤而定)。 - 降低檢查頻率:增大
checkIntervalMinutes;打開頁面仍會反映當前狀態。 - 鏡像或私有源:
registry留空時插件執行npm config get registry,也可寫死地址。
調整 distTag 後,點擊「更新」會按該標籤當時解析出的精確版本安裝。
適用場景與注意¶
適合誰:經常在瀏覽器裏用 DSH Web、希望 registry 有新版本時能一眼看到、並願意在確認後讓本機全局 dsh 升級的用戶。
務必注意:
- 插件以當前
dsh進程的 Node 用戶身份執行全局 npm 安裝與重啓腳本。安裝前建議在 GitHub 閱讀源碼與 MIT 許可證,確認行爲符合你的環境策略。 - 只在 Web profile 生效;CLI 或其它 profile 不會出現該按鈕。
- 不會靜默升級;無更新時界面無額外提示,屬預期行爲。
- 診斷文件位於
<DSH_HOME>/cache/dsh-auto-update/:state.json(最近檢查與階段)、restart.log(重啓腳本輸出)、restart.json(最近重啓記錄)。
右上角沒有按鈕時,可按 README 排查:當前 latest 是否等於已裝版本(可用 npm view @deepseek-ai/dsh dist-tags 覈對)、是否已打開會話、頁面是否已加載插件(可刷新)。預發佈在 next/alpha 時需改 distTag。
卸載¶
在插件管理器中停用或移除;或執行:
dsh plugin --profile web remove @marvinlee2011/dsh-auto-update
並從 dsh.profile.bundles 中刪除 @marvinlee2011/dsh-auto-update,重啓 dsh web。
結尾¶
dsh-auto-update 把「查 registry → 全局安裝 → 重啓進程 → 刷新頁面」收成標題欄上的一個顯式操作,默認只跟 latest,也可通過 cordis.patch.yml 改包名、dist-tag 與檢查間隔。社區插件目錄頁:skillhub.cn/plugins/lee-nihao2333/dsh-auto-update;源碼與完整 FAQ:github.com/lee-nihao2333/dsh-auto-update。