dsh-plugin-readme-zh:把已安装插件文档译成简体中文并分段缓存

前言

DeepSeek Harness(DSH)的插件生态里,每个 bundle 通常带着英文 README 或 meta.detail 长文档,插件列表行也往往是 meta.title、meta.description 的英文 fallback。读文档、对比功能时,如果依赖浏览器翻译或每次手动复制,既慢,插件一更新又要从头来。下面介绍社区插件 dsh-plugin-readme-zh(维护者 PinkyKan,GitHub:PinkyKan/dsh-plugin-readme-zh):在 DSH 插件页内把已安装插件的长说明与列表一行简介译成简体中文,结果写入持久化分段缓存,只有文档实际变更的部分才重新调用模型。

这是什么

dsh-plugin-readme-zh 是一个 DSH bundle(package.json 版本 1.0.0,MIT 许可证,要求 dsh >=0.2.1-rc.3、node >=22)。它在社区目录 skillhub.cn 的分类为「记忆」;简介为:对已安装插件文档做简体中文翻译,并用持久化分段缓存避免重复劳动。

翻译使用当前 profile 下选为 agent 默认的模型(或在 profile patch 里显式配置的 provider / model);缓存目录为 $DSH_HOME/plugin-data/dsh-plugin-readme-zh/(Markdown 分段与短字符串)。

核心功能

详情页「中文说明」

在每个已安装插件的详情页头部增加 中文说明 控件。点击后弹出对话框,展示译好的长文档、实时进度与缓存统计。首次翻译会走进度条;之后命中缓存可即时打开。对话框内提供 重新翻译、复制中文(复制译好的 Markdown),以及 翻译全部已安装插件(后台翻译所有已安装插件的长文档,并刷新列表一行简介)。

若插件没有可读文档、文件不可用,或文档本身已是中文,该按钮会隐藏。

插件列表一行中文(可选)

默认不会在别的 package 目录里写文件。若在 bundle 配置里开启 metaSidecars: true,会把列表行的 meta.title / meta.description 译成中文,写入各已安装 bundle 自己的 locale/zh.json(合并已有文件,作者自带中文不会被覆盖);若包内原本没有 locale/,还会补 locale/en.json 作为英文种子;需要时会在 exports 里追加 "./locale/*.json": "./locale/*.json"。这样 Settings → Plugins 列表通过宿主正常的 locale 解析显示中文,而不是在前端 DOM 上打补丁。

pnpm install 重新解压包会清掉这些 sidecar 文件;下次启动会从字符串缓存重新写入。

分段缓存与增量翻译

长文档按 Markdown 结构切分后再译:

  1. 围栏代码块、HTML 注释块、独立 HTML 标签行原样保留,不送模型。
  2. 先按标题(# … ######)切段,增删或重排某一节只影响该节的 hash。
  3. 节内正文按行边界打包,单块最多 3000 字符。
  4. 每块以源文 SHA-256 为键;缓存记录文档 hash、块 hash 与译文。

插件升级后:未改动的块直接复用;仅源文变化的块重新翻译;文档不变则版本 bump 也不消耗模型调用。翻译中途重启会保留已完成的块,下次继续而非重头开始。

安装与启用

官方 README 给出多种分发方式,任选其一(将 <name>、<profile>、路径替换为你的环境):

Git 仓库(需能访问 GitHub):

dsh plugin --profile <name> add git+https://github.com/<owner>/<repo>

本地目录(开发时用 link):

dsh plugin --profile <name> add link:/abs/path/dsh-plugin-readme-zh

离线 tarball:

dsh plugin --profile <name> add file:/abs/path/<name>.tgz

npm registry(发布后):

dsh plugin --profile <name> add <package-name>

安装后在 Plugins 页面启用该 bundle(或写入 dsh.profile.bundles)。若需要列表一行也显示中文,在 profile patch 里为该 bundle 设置 metaSidecars: true(默认 false,公开安装默认不改动其他包目录)。

典型用法

  1. 安装并启用 bundle;每次启动会在后台自动翻译所有已安装插件的列表一行简介(已缓存字符串不再消耗模型)。
  2. 打开 Settings → Plugins,列表行在包名旁可见中文一行说明(在开启 metaSidecars: true 时)。
  3. 进入任意已安装插件详情页,点 中文说明 查看长文档译文。
  4. 需要全量刷新时,使用 翻译全部已安装插件 或单文档 重新翻译。

配置项

在 profile patch 的 bundle 行上可改以下字段(默认值见下表):

Field Default Meaning
engine auto auto 优先模型服务,失败回退 translator;llm 必须用模型;translator 仅用 ctx.translator。
provider agent default 翻译用的模型 provider。
model agent default 翻译用的 model id。
reasoningEffort off when supported 翻译调用的 reasoning effort。
maxTokens 8192 每块输出 token 上限。
translatorProvider bing translator 回退时的 provider。
metaSidecars false 为 true 时写入各包的 locale/ sidecar,使列表原生显示中文。

翻译 prompt 要求保留 Markdown、代码、URL、路径、包名与标识符,且只返回译文片段。

适用场景与注意

适合谁: 长期在 DSH 里安装、对比多个英文插件文档的开发者;希望列表与详情统一看简体中文、又希望插件更新后尽量少重复翻译 token 的用户。

权限与安全: 插件以当前 DSH 进程权限运行;开启 metaSidecars 时会向已安装包目录写入 locale/*.json 等文件。安装前应阅读 源码仓库 与 MIT 许可证,确认符合你的环境策略。

局限(摘自官方说明):

  • 长详情与列表 meta 一行会译;深层配置字段标签、行标题、文档内嵌字符串仍保持原语言。
  • 长文档首次翻译按块调用模型,约 30 KB README 通常需数次调用。
  • 对话框使用精简 Markdown 渲染器;原始 HTML 会降为文本,外链图以 alt 显示,链接限于 HTTP(S)、mailto:、页内锚点。
  • 缓存按 profile 的 $DSH_HOME 隔离;换 profile 从空缓存开始。
  • 不支持手改缓存文件后继续使用。

社区目录 skillhub.cn 与 DeepSeek / 幻方无官方从属关系;DSH 生态遵循「一切皆插件」,本文仅介绍该 bundle 的已文档化行为。

结尾

dsh-plugin-readme-zh 把「读英文插件文档」收成插件页内的 中文说明 与可选的列表 locale sidecar,并用按标题与 hash 分段的方式控制更新成本。需要进一步了解实现与分发细节时,可直接查阅 GitHub:https://github.com/PinkyKan/dsh-plugin-readme-zh;在目录站浏览条目:https://www.skillhub.cn/plugins/PinkyKan/dsh-plugin-readme-zh。

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

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

小夜