dsh-plugin-zh-cn:用 DSH 自带模型把已安装插件元数据译成简体中文

前言

DeepSeek Harness(DSH)采用「一切皆插件」的组合方式,设置里的插件列表会展示每个包的标题与描述。社区插件大多只有英文 LocalizedText({ en: "..." }),界面切到中文时,resolveText() 仍只能回退到英文原文,阅读和筛选成本都偏高。

常见补救是改 DOM、挂第三方翻译 API,或维护硬编码词典——要么和 React 重渲染打架,要么多一套密钥与配额,要么跟不上插件更新。下面介绍社区插件 dsh-plugin-zh-cn(维护者 Daneel0001):在数据层把已安装插件的 title / description 从 { en } 补成 { en, zh },翻译走 DSH 设置里选定的默认模型(agentDefaultModel),结果写入 profile 本地缓存;不碰 DOM,不调用第三方翻译 API,也没有内置词典。

这是什么

dsh-plugin-zh-cn 在 Harness 启动时读取本地翻译缓存,对已安装且尚未带 zh 字段的插件元数据调用 DSH 内置 llm 服务生成简体中文,再交给官方 resolveText() 渲染。界面语言为中文时显示中文标题与描述;English 或其它语言界面与安装前逐字相同。

仓库:https://github.com/Daneel0001/dsh-plugin-zh-cn
社区目录页:https://www.skillhub.cn/plugins/Daneel0001/dsh-plugin-zh-cn(独立站点,与 DeepSeek / 幻方无官方从属关系)

当前 package 版本为 2.0.8,许可证 MIT。

核心功能

数据层注入,零 DOM

插件列表的数据链从 pluginInventory.list() 到 readPluginInventory,最终通过 pluginPackages.metaOf 取 { title, description }。本插件包装 metaOf 与 pluginInventory.list 两处返回值,把仅含英文的元数据投影为 { en, zh }。中文界面由 DSH 自己的 resolveText() 取 zh,不从文本节点事后改写。

翻译与缓存

  • 模型来源:ctx.get('agentDefaultModel').currentSelection();也可在配置里指定 provider / model,留空则用「设置 → 模型」默认项。
  • 调用方式:ctx.get('llm').stream(...),一次请求同时翻译名称与描述,要求模型只返回 JSON;名称 ≤ 12 汉字、描述 ≤ 40 汉字,专有名词(API、MCP、LLM 等)照抄不译。
  • 缓存路径默认:<DSH_PROFILE_DIR>/dsh-plugin-zh-cn/local-cache.json,按包名增量;英文指纹未变则不重译。原子写入(先 .tmp 再 rename)。
  • 严格模式(默认 strict: true):名称与描述都拿到合法中文译文才写入缓存,避免半中半英。
  • 元数据里已有 zh 的插件(含官方内置)一律跳过;翻译失败则保留英文并记 warn,设置页不崩溃。

生效节奏

时机 表现
第一次启动 缓存命中项立刻中文;新插件后台翻译,本次启动仍可能显示英文
第二次启动 上次译好的项直接读缓存,不再发翻译请求
不换进程的热操作 后台译完后切换设置页或刷新窗口即可看到更新(注入层实时查缓存)

换插件版本后须重启 Harness;仅禁用再启用不会让 Node 重新加载 ESM 模块。安装或升级后也需重启,仅刷新页面不会把新插件送进已打开窗口的模块图。

安装与启用

从插件市场安装(推荐)

在 DSH 桌面版「插件」页点「添加插件」,填入仓库地址:

github:Daneel0001/dsh-plugin-zh-cn

装好后重启 Harness。

手动安装(Windows 示例)

# 1. 把 tgz 放进 profile 的 plugins 目录
Copy-Item .\dsh-plugin-zh-cn-2.0.0.tgz "$env:DSH_PROFILE_DIR\plugins\"

# 2. 在 <profile>/package.json 里登记两处
#    dependencies:        "dsh-plugin-zh-cn": "file:<profile>/plugins/dsh-plugin-zh-cn-2.0.0.tgz"
#    dsh.profile.bundles: 追加 "dsh-plugin-zh-cn"

# 3. 用 pnpm 真正安装(这一步才会写入 lockfile 与 .modules.yaml)
node "$pnpm" install --dir "$env:DSH_PROFILE_DIR"

必须完成第 3 步;只复制 tgz 或手工拷 node_modules 可能被 profile 组合逻辑静默跳过。

配置要点

在组合配置中插件 id 为 zh-cn-plugin-locale,主要字段如下(完整列表见仓库 README):

- id: zh-cn-plugin-locale
  name: dsh-plugin-zh-cn
  config:
    enabled: true          # 总开关
    strict: true           # 名称+描述都有译文才写入缓存
    timeoutMs: 60000       # 单条翻译超时
    maxTokens: 4096
    provider: ''           # 留空 = 默认模型
    model: ''
    cacheFile: ''          # 留空 = profile 下默认 local-cache.json
    seedFiles: []          # 额外缓存初值(绝对路径),只合并不覆盖
    maxPerStart: 500
    delayMs: 200           # 两条翻译间隔
    saveEvery: 8
    retry: 3
    debug: false

若希望第一次启动就看到中文,可把现成的 local-cache.json 通过 seedFiles 并入,格式见仓库 examples/local-cache.example.json。

典型用法与卸载

  1. 安装并重启 DSH,在「设置 → 模型」选好默认模型(与 agentDefaultModel 一致)。
  2. 打开插件设置页:已缓存的条目应显示中文标题与描述;新装社区插件首次可能仍为英文,待后台翻译完成後刷新或再进设置页即可。
  3. 卸载:在插件设置里关闭「插件简体中文化」并重启;注入层会通过 ctx.effect 清理回调还原。运行时缓存目录 <DSH_PROFILE_DIR>/dsh-plugin-zh-cn/ 可手动删除以彻底清理。

适用场景与注意

适合:长期用中文界面管理大量英文元数据的社区插件;希望翻译与模型配额统一走 DSH 已有 LLM 配置、且接受「首次启动或新版本插件可能短暂英文」的用户。

注意:

  • 插件以当前 DSH 进程的权限运行,会调用内置 llm 并写入 profile 下自有目录的 local-cache.json;安装前请阅读源码与 MIT 许可证,确认模型调用符合你的环境策略。
  • 只读其它插件的 package.json,不修改其它插件目录;除模型请求外不额外联网。
  • 右侧启用/停用开关走 entry.enabled,与本插件的元数据注入无关。

结尾

dsh-plugin-zh-cn 把「已安装插件显示名与描述」的汉化放在元数据与官方本地化链路上完成:无 DOM 补丁、无第三方翻译 API、无硬编码词典,失败则降级为英文。若你主要在中文界面浏览插件市场装来的扩展,可以把它当作 profile 级的元数据本地化辅助。

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

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

Xiaoye