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 进程权限运行,安装前应检查源码与许可证。

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

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

小夜