前言¶
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。
典型用法与卸载¶
- 安装并重启 DSH,在「设置 → 模型」选好默认模型(与
agentDefaultModel一致)。 - 打开插件设置页:已缓存的条目应显示中文标题与描述;新装社区插件首次可能仍为英文,待后台翻译完成後刷新或再进设置页即可。
- 卸载:在插件设置里关闭「插件简体中文化」并重启;注入层会通过
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 级的元数据本地化辅助。