dsh-plugin-zh-cn

DSH PLUGIN开发与运行时

仓库 Daneel0001/dsh-plugin-zh-cn

开发与运行时 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

把 DeepSeek Harness(DSH)已安装插件的显示名与描述,在启动时用 DSH 设置里选定的模型(agentDefaultModel)自动翻译成简体中文,并缓存到本地。

一句话选型结论

按资料字段整理

dsh-plugin-zh-cn 是开发与运行时类的 DSH 可安装插件,验证等级 L5 · 运行验证通过,安全审查为低风险,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类开发与运行时 收录类型可安装插件 验证等级L5 · 运行验证通过 安全审查低风险
验证等级 L5 L5 · 运行验证通过
GitHub 星标 0 复刻 0 · 未关闭 issue 0
最近更新 2026-10-18 创建于 2026-10-15
README 12.4 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add github:Daneel0001/dsh-plugin-zh-cn#v1.4.0
  1. 1
    确认版本与运行环境

    仓库没有标注兼容版本与 Node.js 要求,先确认你的 DSH 版本能装,再继续。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本未标注版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名未发布到 npm可用 npm view 查看包信息

能做什么

开发与运行时
字段来自项目仓库与公开索引,中文说明由本站标注

适用场景

存储

上游标签

deepseek-harnessdsh-plugini18nzh-cn

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L5:安装和运行都在沙盒里跑通过,装完能直接用的概率高。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有声明 Node.js 版本要求,版本不匹配可能装不上。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在开发与运行时场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-plugin-zh-cn当前 L5 · 运行验证通过 低风险 0 未标注 有
deepseek-harness L3 · 安装规范通过 低风险 24.6 万 未标注 无
rea L4 · 沙盒安装通过 低风险 2.6 万 0.1.1-rc.2 有
dsh-TUI L4 · 沙盒安装通过 中风险 4,292 0.1.7-rc.2 等 5 个 有
mirage L3 · 安装规范通过 低风险 3,681 未标注 无
dashi-taskboard L4 · 沙盒安装通过 低风险 3,311 0.1.1-rc.2 有

仓库档案

开发与运行时
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方Daneel0001仓库 dsh-plugin-zh-cn · 默认分支 main
分类开发与运行时developer
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言未标注仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue0 / 0 / 0收录时的数值,非实时
创建 / 更新2026-10-15 · 2026-10-18最后推送 2026-10-18
本站收录2026-10-30首次进入本站目录的时间

README 全文

12.4 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-plugin-zh-cn

把 DeepSeek Harness(DSH)已安装插件的显示名与描述,在启动时用 DSH 设置里选定的模型(agentDefaultModel)自动翻译成简体中文,并缓存到本地。

没有硬编码词典,不调用任何第三方翻译 API,不碰 DOM。

安装前   billion-context      A context-compression plugin — small context windows…
安装后   十亿级上下文插件       小上下文窗口即可容纳超大仓库上下文

> English: dsh-plugin-zh-cn renders installed DSH plugin titles and descriptions in
> Simplified Chinese. At startup it reads a local translation cache, projects
> { en } plugin metadata into { en, zh } so DSH's own resolveText() renders Chinese,
> and asks DSH's built-in llm service to translate any installed plugin the cache does not
> know yet. No third-party API, no built-in dictionary, no DOM manipulation. See
> English summary.


效果与保证

界面语言 插件标题 插件描述
中文 中文标题 中文描述
English / 其它 与安装前逐字相同 与安装前逐字相同
  • 零 DOM 改动:不新增节点、不改 class、不改内联样式、不改任何文本节点。
  • 零开关影响:右侧启用/停用走 entry.enabled 与 pluginManager.setPluginEnabled,
    和元数据毫无交集。
  • 不动别人的翻译:元数据里已经带 zh 的插件(含全部官方内置插件)一律跳过,
    一个字节都不改。已经自带中文的内置选项(「语音输入」「终端」……)自然不会被碰。
  • 失败即原样:模型报错、超时、返回非法 JSON、译文不是中文 —— 任何一条都只让
    该插件保留英文,并记一条警告,设置界面不会崩溃、不会白屏。
  • 严格模式(默认开):名称与描述都拿到译文才写入缓存,绝不出现半中半英。
  • 可完全卸载:插件被禁用或移除时,注入层通过 ctx.effect 的清理回调原样撤销。

安装

从插件市场安装(推荐)

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

github:Daneel0001/dsh-plugin-zh-cn

装好后 重启 Harness。客户端模块图是在渲染页面时写进 index.html 的,
仅刷新页面不会把新插件送进已打开的窗口。

手动安装

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

# 2. 在 /package.json 里登记两处
#    dependencies:        "dsh-plugin-zh-cn": "file:/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 放进 plugins/、再手工复制目录到 node_modules/ 是不够的:
> DSH 组合 profile 时以 pnpm 的安装结果为依据,未进入 pnpm-lock.yaml /
> node_modules/.modules.yaml 的包会被静默跳过。

生效时机\n\n> 换了插件版本之后必须重启 DSH。 实测在运行中的实例里用「禁用 → 启用」热重载插件,不会让 Node 重新加载模块(ESM 模块缓存命中),跑的还是旧代码;只有重启 Harness 才会真正换版本。\n\n- 第一次启动:已缓存过的插件立刻就是中文;新发现的插件在后台翻译,

本次启动仍显示英文。
- 第二次启动:上次翻好的插件直接命中缓存,一个请求都不发。
- 想在第一次启动里就看到中文:把一份现成的 local-cache.json 交给 seedFiles
(格式见 examples/local-cache.example.json)。
- 也可以在后台翻译完成后切换一次设置页或刷新窗口:注入层是实时查缓存的,
重新取数就能看到中文,不必重启。

工作原理

1. 拦截点:数据层,而不是 DOM

DSH 的插件列表渲染链是(均为 app.asar 内官方源码):

客户端 UI 组件 PluginInventorySettingsTab
└─ ctx.remote.pluginInventory.list()          dsh-client-ui-settings-plugin-inventory/lib/client.js
└─ 宿主服务 pluginInventory.list()        dsh-host-plugin-inventory/lib/index.js
└─ readPluginInventory(ctx)
├─ ctx.loader.entries()        ← 「已安装」的插件行
└─ ctx.get('pluginPackages').metaOf(name, base) → { title, description }

而屏幕上真正出现的文字,只在客户端这一个出口被解析:

// dsh-client-locale/lib/client.js
resolveText(text) {
if (typeof text === 'string') return text;
return this.fallbackChain(this.snapshot.active)
.reduceRight((resolved, locale) => text[localeKey(locale)] ?? resolved, text.en);
}

LocalizedText = string | { en: string, [locale]: string } —— 中文界面取 zh,英文界面取 en。
这正是官方内置插件显示「智能体团队」而英文界面仍显示原文的机制。

所以本插件只做一件事:在数据层把 meta.title / meta.description 从 { en } 补成 { en, zh }。
包装两处返回值,任一生效即可:

目标 位置 说明
pluginPackages.metaOf dsh-app-boot 的 cordis Service readPluginInventory 的直接取数处
pluginInventory.list dsh-host-plugin-inventory 的 Remote 网关 界面调用的入口,兜底

为什么不用 MutationObserver 改文本节点?

事后补救。React 每次重渲染都会把改过的文本节点覆盖回去,需要持续对抗;
而且一旦插件的元数据或 DOM 结构稍有变化就容易误伤布局。
数据层注入则从根上解决问题:DOM 从头到尾就没有被改过,中文是 DSH 自己渲染出来的。

2. 缓存

运行时缓存位置(原子写入:先写 .tmp 再 rename):

/dsh-plugin-zh-cn/local-cache.json
# 例如 C:\Users\<你>\.dsh\profiles\desktop\dsh-plugin-zh-cn\local-cache.json
{
"version": 2,
"generator": "dsh-plugin-zh-cn",
"updatedAt": "2026-10-16T10:43:30.000Z",
"entries": {
"billion-context": {
"en": { "title": "billion-context", "description": "A context-compression plugin — …" },
"zh": { "title": "十亿级上下文插件", "description": "小上下文窗口即可…" },
"model": "deepseek/deepseek-chat",
"translatedAt": "2026-10-16T10:43:30.000Z"
}
}
}
  • 增量:按包名索引;en 是英文指纹,指纹没变就一个请求都不发,变了才重译。
  • 只增不减:每次写盘都是「读旧 → 合并新条目 → 原子替换」,
    历史条目(包括已经卸载的插件)永远保留,方便你回查和手工编辑。
  • 兼容旧格式:扁平词表 { "<包名>": { "title": "…", "description": "…" } }
    会被当作中文译文直接吸收,可以作为初值平滑迁移。
  • 多来源合并:随包发布的 local-cache.json 与 seedFiles 都是初值,
    运行时缓存里的同键条目优先,绝不会被清空覆盖。

3. 翻译

只用 ctx.get('llm').stream(...),模型取 ctx.get('agentDefaultModel').currentSelection()。
一次请求同时把名称与描述交给模型,要求它只回一个 JSON:

系统提示词(要点)
只输出 {"name":"<中文名称>","desc":"<中文描述>"},不要解释、不要 Markdown 围栏
名称 ≤ 12 个汉字;描述 ≤ 40 个汉字、一句话
API / Token / MCP / SSH / Git / JSON / LLM 等专有名词照抄不译

收到回复后会先校验再落盘:必须能解析出 JSON、译文必须真的含中文。
不满足就当作失败,保留英文原文。

配置

- id: zh-cn-plugin-locale
name: dsh-plugin-zh-cn
config:
enabled: true          # 总开关
strict: true           # 名称+描述都有译文才写入缓存
timeoutMs: 60000       # 单条翻译超时(描述很长的插件要给足时间)
maxTokens: 4096        # 单条翻译输出上限(推理型模型可能先吐思考再给 JSON)
provider: ''           # 留空 = 用「设置 → 模型」里的默认模型
model: ''
cacheFile: ''          # 留空 = /dsh-plugin-zh-cn/local-cache.json
seedFiles: []          # 额外的缓存初值(绝对路径),只合并、不覆盖
maxPerStart: 500       # 每次启动最多新翻几个插件(默认实质上不限,一个全新 profile 也就几百条)
delayMs: 200           # 两条翻译之间的间隔
saveEvery: 8           # 每翻译成功几条落一次盘,中途退出不丢已完成的部分
retry: 3               # 每条最多尝试几次(设为 1 即关闭重试)
debug: false           # 把每条翻译结果写进 debug 日志

安全与副作用

  • 只读其它插件的 package.json;不写入任何其它插件的目录。
  • 唯一会写的文件是 local-cache.json(及其 .tmp),位置就在插件自己的数据目录。
  • 不联网(除 DSH 自己的模型调用外)、不执行外部命令、不改 profile 配置。
  • 所有异常都被捕获并降级为一条 warn 日志,不会影响 DSH 启动。

卸载

在插件设置里关掉「插件简体中文化」,然后重启。

注入层随插件 fiber 一起卸载(ctx.effect 清理回调会还原被包装的两个方法)。
运行时缓存 local-cache.json 会留在 profile 里,想彻底清干净就手动删掉
/dsh-plugin-zh-cn/ 目录。

开发

npm run check          # 静态自检:清单、语法、可导入性,以及「不许硬编码词典」
npm run check:syntax   # 只做语法检查

npm test               # 47 项验收测试(含 8 项 apply 集成测试)

npm test 零依赖,在源码目录里就能跑完 47 项(含 8 项 apply 端到端集成测试)。
测试全部在系统临时目录里工作,永远不会碰真实 profile。

导出:apply、resolveConfig、DEFAULTS、inject、name,以及供测试使用的纯函数
resolveCacheFile、nearestProfileDir、collectInstalledPlugins、
extractEnglish、alreadyLocalized、resolveSelection、runTranslationPass。

目录结构

lib/index.js        插件入口:读缓存 → 装注入 → 异步扫描翻译
lib/inject.js       数据层注入:包装 metaOf / pluginInventory.list(实例 + 原型,动态 this)
lib/cache.js        local-cache.json 的读取、合并、原子写
lib/translate.js    llm 调用、提示词、JSON 解析与中文校验
lib/text.js         LocalizedText 工具与「值不值得翻译」的判定
locale/*.json       本插件自身的语言字典(自举)
cordis.patch.yml    bundle 补丁:把插件行插进组合配置树
test/acceptance.mjs 47 项验收测试
scripts/check.mjs   静态自检(CI / prepack)
examples/           local-cache.json 格式示例

English summary

dsh-plugin-zh-cn renders the titles and descriptions of installed DSH plugins in
Simplified Chinese.

At startup the host half:

  1. reads /dsh-plugin-zh-cn/local-cache.json synchronously, so the first render
    already has Chinese for everything it has seen before;
  2. wraps pluginPackages.metaOf and pluginInventory.list — the exact functions the
    settings UI reads plugin metadata through — projecting { en } into { en, zh }.
    DSH's own resolveText() then renders Chinese on a Chinese UI and the original English
    everywhere else. No DOM node, class, style, or the enable/disable toggle is touched.
  3. asynchronously scans the installed plugin list and asks DSH's built-in llm service
    (ctx.get('llm'), default model from agentDefaultModel) to translate any plugin the
    cache does not know, one request carrying both the name and the description, and
    expecting {"name": …, "desc": …}. Results are merged back into the cache.

No third-party translation API, no built-in dictionary, no network calls beyond DSH's own
model route. Any failure — timeout, bad JSON, non-Chinese output, model error — leaves the
English original in place and logs a warning.

许可

MIT

常见问题

6 问
答案由本站依据条目字段整理,不引用上游原文
dsh-plugin-zh-cn 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add github:Daneel0001/dsh-plugin-zh-cn#v1.4.0` 即可。

dsh-plugin-zh-cn 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-plugin-zh-cn 安全吗?

低风险。

dsh-plugin-zh-cn 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-plugin-zh-cn 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

同名或近似条目

1 条
不同作者的仓库分开列,请确认你要装的是哪一个
开发与运行时
按星标排序,可作替代方案

rea

rea

L4 · 沙盒安装通过 2.6 万 星

dsh-TUI

dsh-TUI

Claude Code 风格全屏终端 UI:像素鲸鱼顶栏、实时工作状态行、思考流式展开。

L4 · 沙盒安装通过 4,292 星

mirage

mirage

把文件系统与 bash 提供者换成 mirage 虚拟工作区:文件工具与 shell 命令作用于挂载的资源(RAM、S3、Redis、Sla

L3 · 安装规范通过 3,681 星

dashi-taskboard

dashi-taskboard

把当前已安装并运行中的 Codex Taskboard 嵌入 DeepSeek Harness 侧边栏,并通过 Launcher 运行时描述

L4 · 沙盒安装通过 3,311 星

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 —。