前言¶
在 DSH(DeepSeek Harness)中,插件以包名(如 @deepseek-ai/dsh-remote-web-ui)呈現,官方「插件」頁的已安裝列表、詳情頁與插件包卡片均只顯示英文。對習慣中文界面的用戶,這種信息入口需要額外時間理解。本插件通過在 DSH 進程內包裝顯示元數據,把已安裝插件的中文名與一句話說明直接寫入官方頁面的顯示字段,做到“原地顯示中文”,同時支持自動翻譯新插件和通過 HTTP API 手動管理。
是什麼¶
dsh-plugin-labels 是一個爲 DSH 桌面版 Web GUI 提供中文標籤管理的插件,由 qyy2005 維護,當前版本 0.8.0,採用 MIT 許可證。它不提供 UI 入口,所有管理通過 loopback HTTP API 或讓 AI/腳本調用,以保持界面簡潔。插件會將標籤緩存在本地 JSON 文件中,默認在 DSH 啓動約 4 秒後自動補全缺失的翻譯,並支持手動修改與導出/導入。
核心功能¶
- 中文名 + 一句話說明:每個插件一條 ≤10 字的中文名和 ≤80 字的說明。說明必須寫清解決的問題、在 DSH 中的入口與操作步驟。
- 官方頁原地中文:官方「插件」頁的已安裝插件行、詳情頁與插件包卡片直接顯示中文名與中文描述。未翻譯的插件回退英文。默認開啓。
- 自動翻譯新插件:DSH 啓動約 4 秒後自動補一次缺失標籤(每次最多 20 條,只補空缺,不覆蓋手動修改)。可用
DSH_PLUGIN_LABELS_AUTO_TRANSLATE=0關閉。 - 手改優先:手動設置的標籤不會被自動翻譯覆蓋;顯式“重翻”纔會覆蓋。
- 無 UI 管理入口:通過 4 個 loopback HTTP API 操作,也可以讓 AI/腳本直接調用。
- 導出 / 導入 API:導出帶
source(ai或manual)的 JSON,導入時保留來源,只接受已安裝插件名(≤64KB)。 - 緩存 v2:標籤緩存在
<DSH_HOME>/plugin-labels.json,UTF-8 無 BOM、原子寫,舊 v1 數據可遷移讀取。
安裝¶
方式一:npm 包(推薦)
在 DSH 插件頁 → 添加插件 → 填包名 dsh-plugin-labels;或在創造模式會話裏 plugin_manager → install_bundle → target: "dsh-plugin-labels"。安裝後 profile 依賴形如 "dsh-plugin-labels": "dsh-plugin-labels@^0.8.0"。
方式二:從 Git 倉庫安裝
在 DSH 插件頁 → 添加插件 → 填本倉庫的 Git 地址 https://github.com/qyy2005/dsh-plugin-labels,DSH 會拉取並安裝;此時 profile 依賴形如 github:qyy2005/dsh-plugin-labels。私有倉庫需具備相應訪問權限。
方式三:本機目錄安裝(開發用)
用 plugin_manager → install_bundle → target 填本目錄絕對路徑,profile 依賴形如 link:<本機插件目錄絕對路徑>,node_modules/dsh-plugin-labels 是指向本目錄的符號鏈接。適合開發,改完刷新/重啓即可;源碼目錄不可刪除或移動。
使用¶
v0.7.0 起沒有 UI 入口,全部通過 4 個 loopback HTTP API 操作(端口爲當前 DSH Web GUI 的端口):
- 查看已裝插件 + 標籤 + 診斷字段
Invoke-WebRequest -UseBasicParsing http://127.0.0.1:<端口>/api/plugin-labels/list
- 補翻譯(無參 = 只補空缺;最多 20 條/次)
Invoke-RestMethod -Method Post -ContentType 'application/json' -Body '{}' http://127.0.0.1:<端口>/api/plugin-labels/translate
- 顯式重翻指定插件
Invoke-RestMethod -Method Post -ContentType 'application/json' -Body '{"names":["@linxin666/dsh-remote-web-ui"]}' http://127.0.0.1:<端口>/api/plugin-labels/translate
- 手改一條(source=manual),或恢復 AI
Invoke-RestMethod -Method Post -ContentType 'application/json' -Body '{"name":"@linxin666/dsh-remote-web-ui","title":"遠程網頁訪問","oneLine":"掃碼配對手機和電腦共用網頁界面。"}' http://127.0.0.1:<端口>/api/plugin-labels/label
- 導入導出的 JSON
Invoke-RestMethod -Method Post -ContentType 'application/json' -InFile labels.json http://127.0.0.1:<端口>/api/plugin-labels/import
自動翻譯會替你補空缺,手改過的條目不會被自動覆蓋。
插件速查文檔¶
node scripts/gen-doc.mjs 會在本地生成 PLUGINS.zh.md 與 PLUGINS.zh.html:中文名、原始包名、一句話作用、版本、說明(AI 生成 / 手改 / 待翻譯)。HTML 是單文件、內聯樣式、可搜索、隨系統深淺色,雙擊即可打開,無需聯網。內容來自你本機的標籤緩存與已裝插件清單,默認不提交到倉庫。
重新生成(裝/卸插件,或翻譯/手改標籤之後):
node scripts/gen-doc.mjs # 默認讀取 $env:DSH_HOME(或 ~/.dsh)的 desktop profile
node scripts/gen-doc.mjs --home "$env:DSH_HOME" --profile desktop
npm run docs # 等價於 node scripts/gen-doc.mjs
生成器只讀本地標籤緩存與 profile 清單,產物不含本機路徑、DSH_HOME、用戶名或 token;生成的兩個文件只留在本地(已 gitignore),不要手工編輯。
環境變量¶
DSH_PLUGIN_LABELS_AUTO_TRANSLATE=0:關閉自動翻譯新插件。DSH_PLUGIN_LABELS_OFFICIAL_META=0:關閉官方頁原地中文顯示。
兼容性¶
- DSH 桌面版 Web GUI 0.2.1-rc.2。
- 本插件不依賴任何 UI slot,顯示覆蓋包裝宿主的
pluginPackages.metaOf()和pluginManager.listBundles(),client 只註冊 locale 字典。 - 若拿不到這些內部服務,會靜默回退不顯示中文,插件其它功能與 API 仍可用。
適用場景¶
適合需要將 DSH 已裝插件中文名與說明統一管理、或希望通過 API 批量導入導出標籤的用戶。插件以當前 DSH 進程權限運行,安裝前應檢查源碼與許可證。