前言¶
如果你在用 DSH(DeepSeek Harness),大概率见过这些英文界面:命令菜单里各命令的描述、权限预设的说明文字、计划模式的审查按钮、轨迹视图的标签。它们不是配置项能改的文案,而是硬编码在包文件里的英文字符串,官方没有提供 i18n 覆盖点。想换成中文,只能直接改包文件——改完能生效,但 dsh 一升级,补丁就丢了,又得重做一遍。
社区作者 lingyingaojue 把这套手动操作做成了插件 dsh-l10n-hardpatch:安装后重启 DSH Web 即自动汉化,升级导致英文回归时,重启会自动重新打上补丁。下面介绍它的实现方式和用法。
这是什么¶
dsh-l10n-hardpatch 是一个本地目录型 bundle 插件,定位是「硬编码中文化补丁」:插件加载时,把 dsh 各包里已知的硬编码英文行,整行替换为对应的中文行。许可证为 MIT。
它不新增功能、不改交互,只解决一件事:让 dsh 包内那部分英文 UI 字符串显示为中文,并且在 dsh 升级后能自动恢复这个状态。
工作原理¶
插件通过 dsh 的 bundle patch 机制注册(cordis.patch.yml → insert)。加载时读取 patches.json,对候选副本文件执行整行精确替换。patches.json 里共 144 组「原版英文行 → 中文行」替换对,由 extract_lines.py 从「npm 原版包 vs 已汉化文件」的逐行 diff 自动生成,可以重新生成以适配新版本。
替换是幂等的,规则分三种情况:
- 文件已含中文目标行 → 跳过
- 文件含英文原行 → 替换为中文行
- 无匹配 → 保持不动
核心特性与汉化范围¶
按 README 的描述,插件有四个重点:
- 导入即汉化:安装后重启 DSH Web 生效
- 自动重打:dsh 升级导致英文回归时,重启自动重新汉化
- 覆盖全面:同时扫描全局 npm 依赖树与
~/.dsh/profiles各级 node_modules(含 pnpm store 布局),命中实际加载的文件 - 安全:行级精确替换,不误伤代码逻辑;替换后语法校验通过;任何异常只告警,不阻断插件加载
汉化范围覆盖以下包:
| 包 | 内容 |
|---|---|
dsh-command-compact |
压缩对话命令描述 |
dsh-command-feedback |
反馈命令描述 |
dsh-command-goal |
目标命令描述 |
dsh-session-log-export |
导出会话命令描述 |
dsh-permission-presets |
权限预设描述 |
dsh-plan-mode |
计划审查按钮(批准 / 继续规划等) |
dsh-client-ui-trajectory |
轨迹视图 UI 标签(约 100 处) |
有一处不需要补丁:advisor 预设与 client-connection 的中文是官方 rc.7 自带的。
安装与启用¶
这是本地目录型 bundle 插件,需要先把文件下载到本地,再让 dsh 引用该目录。
1、下载插件,两种方式任选:
# 方式 A:git 克隆
git clone https://github.com/lingyingaojue/dsh-l10n-hardpatch
# 方式 B:GitHub 页面 Code → Download ZIP,解压到任意目录
2、安装到 dsh,把 <路径> 换成你下载或解压的目录:
dsh plugin --profile web add <路径>\dsh-l10n-hardpatch
3、重启 DSH Web,汉化即生效。也可以在 Web UI 设置 → 插件 → 添加本地插件 → 选择目录。
一个已知坑¶
dsh plugin add 可能因 pnpm 的 ERR_PNPM_IGNORED_BUILDS(如 @jackwener/opencli、node-pty)以退出码 1 中断。此时依赖其实已经装好,但 package.json 的 dsh.profile.bundles 没有更新,插件不会被加载。
处理方法:手动把包名加入 dsh.profile.bundles 数组,然后重启。
更新维护¶
dsh 升级后,如果部分英文串变了,对应的替换对会失效。重新生成替换对的步骤:
# 1. 下载对应版本原版包
npm pack @deepseek-ai/dsh-client-ui-trajectory@<version>
# 2. 运行提取脚本(需配置路径)
python extract_lines.py
# 3. 替换 patches.json 后重启 DSH Web
适用场景与注意¶
适合两类人:一是希望在 DSH Web 里看到中文界面、且能接受直接替换包内字符串的用户;二是自己维护 dsh 定制、想省掉每次升级后手动改包文件的开发者。
使用前有两点需要清楚:
-
插件加载时会修改 dsh 包内的文件(整行替换加语法校验),并始终以当前 dsh 进程的权限运行。安装前建议先浏览源码,确认替换对内容符合预期,再决定是否加载。
-
它替换的是硬编码字符串,不是官方 i18n 方案。dsh 后续版本英文串变化时,需要按上一节重新生成替换对。插件本身采用 MIT 许可。
小结¶
dsh-l10n-hardpatch 把「手动改包文件 → 升级后重来」这个重复劳动,变成插件加载时的一次自动处理:幂等替换、异常只告警、升级后自动重打。如果你对 dsh 界面的英文硬编码有同样的困扰,可以按上面的步骤试一下。
- GitHub:https://github.com/lingyingaojue/dsh-l10n-hardpatch
- 社区目录页:https://www.skillhub.cn/plugins/lingyingaojue/dsh-l10n-hardpatch
社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。