前言¶
DeepSeek Harness (DSH) 採用插件化架構,通過擴展包來增強功能。在 Web UI 中,管理當前配置文件的依賴項(包括 npm 包、Git 倉庫和本地鏈接)通常需要手動操作命令行工具。下面介紹的這個插件通過在設置中添加一個“插件包”頁面,提供了圖形化的依賴管理界面。
它是什麼¶
這是 hyqhyq3 維護的一個社區插件(MIT 許可證)。它向 DSH Web UI 添加了“設置 → 插件包”頁面,列出當前配置文件中安裝的每個依賴項,顯示其版本和來源,並支持一鍵安裝、更新和移除。該插件本身不提供模型交互接口,僅服務於設置頁面和後端 API。
安裝與啓用¶
安裝插件需要使用 DSH 的包管理器命令。
dsh plugin --profile web add github:hyqhyq3/dsh-plugin-updater
安裝後,需要重啓 DSH 才能生效。重啓完成後,打開 Web UI 的“設置” → “插件包”即可看到新頁面。
核心功能¶
1. 依賴項清單與狀態¶
頁面會列出當前配置文件中 dependencies 的所有包,顯示其:
* 已安裝版本
* 來源(npm / Git / 本地 / 內置)
* 是否爲當前激活的 bundle 層(dsh.profile.bundles)
2. 更新檢測¶
插件針對不同來源實現了自動檢測邏輯:
* npm:對比已安裝版本與 pnpm view 查詢到的最新標籤(dist-tags)。
* Git:對比本地 lockfile 記錄的 commit 與遠程倉庫的最新 tag。
* 本地:對比本地 HEAD 與 origin HEAD,檢測是否需要 fetch。
* 內置:顯示版本,隨 DSH 安裝一起更新。
3. 插件市場¶
在“商店”標籤頁,可以搜索 GitHub 上帶有 dsh-plugin 話題的倉庫。搜索結果支持按相關性、星標數或最後更新時間排序,支持分頁。安裝時直接添加爲 github:owner/repo 依賴。
4. 構建腳本門控¶
針對 pnpm >= 10 的安全限制,當安裝腳本未在白名單中時,插件會拒絕安裝。此時頁面會提供“允許構建腳本並重試”按鈕,自動將建議的 allowBuilds 配置寫入 pnpm-workspace.yaml 並重新執行安裝。
典型用法¶
搜索並安裝:
1. 切換到“商店”標籤頁。
2. 輸入關鍵詞搜索。
3. 點擊目標倉庫的“安裝”。
處理更新:
1. 切換到“已安裝”標籤頁。
2. 找到有更新的包,點擊“更新”。
3. 如果遇到構建腳本攔截,點擊“允許構建腳本並重試”。
移除:
點擊包旁邊的“移除”按鈕,確認後插件會執行 pnpm remove 並重新平衡 bundle 層。
注意事項¶
- 重啓生效:對配置文件的修改(安裝、更新、移除)不會立即生效,必須重啓 DSH 進程,頁面會顯示重啓提示橫幅。
- 自我保護:該插件頁面無法通過“移除”按鈕自行卸載,需使用命令行
dsh plugin --profile <name> remove dsh-plugin-updater。 - 市場限制:GitHub 搜索 API 在未提供 Token 時限制爲 10 請求/分鐘,結果會被緩存約 5 分鐘以緩解限制。
- 管理範圍:插件僅管理配置文件 manifest 中的
dependencies,不涉及運行時 loader 條目的啓用/禁用。 - 本地依賴:僅當安裝源爲
link:或包含.git目標時纔會進行更新檢查。 - Git 更新邏輯:Git 包的更新檢測基於 spec 中指定的 ref,不會自動將移動的 tag 視爲更新。
技術細節¶
插件採用純 ESM JavaScript 編寫,無外部依賴。服務端運行在 DSH 進程內,通過 lib/index.js 發現當前配置文件並調用 pnpm 命令;客戶端通過 lib/client.js 註冊設置頁面並輪詢狀態。它通過 /plugin-updater/api/* 提供了完整的 HTTP API,包括狀態查詢、GitHub 搜索以及安裝、更新、移除的操作接口。
總結¶
該插件解決了 DSH Web UI 中依賴管理不便的問題,通過圖形界面實現了對 npm、Git 和本地包的統一管理。對於需要頻繁維護 DSH 配置的開發者,它能顯著提高效率。