dsh-plugin-labels:爲 DSH 已裝插件配中文名與說明

前言

在 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 的端口):

  1. 查看已裝插件 + 標籤 + 診斷字段
Invoke-WebRequest -UseBasicParsing http://127.0.0.1:<端口>/api/plugin-labels/list
  1. 補翻譯(無參 = 只補空缺;最多 20 條/次)
Invoke-RestMethod -Method Post -ContentType 'application/json' -Body '{}' http://127.0.0.1:<端口>/api/plugin-labels/translate
  1. 顯式重翻指定插件
Invoke-RestMethod -Method Post -ContentType 'application/json' -Body '{"names":["@linxin666/dsh-remote-web-ui"]}' http://127.0.0.1:<端口>/api/plugin-labels/translate
  1. 手改一條(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
  1. 導入導出的 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 進程權限運行,安裝前應檢查源碼與許可證。

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

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

小夜