前言¶
模型各自偏好的工作语言并不相同:Claude、Gemini 常见配置为英语,部分中文或多语言模型用中文提示更顺。同一个会话里混用多个模型时,只用一种输入语言很难同时照顾到它们。已有的做法一般是手动改写提示,或换一个固定语言的代理,粒度都是全局。dsh-language-bridge 把粒度下到「每个模型」:你用自己的语言输入,插件把提示翻译成该模型的工作语言再发送,模型回答后再翻译回你的语言,显示在原位。
这是什么¶
dsh-language-bridge 是 DeepSeek Harness 社区插件,由 tonyzdev 维护,仓库版本 2.0.0,许可证 MIT。它接管会话中的用户消息和回答,用 DeepSeek Flash 做双向翻译,为每个模型 id 指定一条工作语言规则。翻译发生在 DSH 进程内,界面显示译文,原文存在消息的 source.languageBridge 字段中,模型看不到。
核心功能¶
模型 → 语言规则¶
规则是有序列表,模型 id 用正则匹配(不区分大小写),第一条命中的生效;没有命中的模型保持原样。默认内置三条规则:
| 模型 id 正则 | 工作语言 |
|---|---|
claude |
en |
gemini |
en |
(^\|[^a-z0-9])(chat)?gpt($\|[^a-z]) |
en |
GPT 规则带边界,匹配 gpt-5、openai/gpt-4o、chatgpt-4o、gpt-oss,不会误中 egpt-1、mygpt 这类 id。
你的语言与输入翻译¶
- 支持任意 BCP 47 代码(
es、ja、zh-CN等),或auto跟随界面语言。 - 发送前先做语言检测,文本已经是目标语言时跳过翻译。
- 代码块、行内代码、链接、
@路径用占位符保护,原样保留。 - 翻译模型丢掉占位符时,改为只翻译占位符之间的文字,保证代码和链接不丢。
回答翻译¶
- 每轮结束后把回答换成译文显示,提供「查看原文 / 查看译文」原位切换。
- 思考内容不翻译。
- 回答已经是你的语言时不再翻译。
保持工作语言¶
对桥接的模型在系统提示里加一条规则,要求它即使收到其他语言的工具输出,也用工作语言思考和回答。这条规则只能提高概率,不能强制。
失败可见与同语言零成本¶
- 翻译失败时照常发送原文,不丢这一轮,并在消息下方显示警告。
- 你的语言和模型工作语言相同(如
en-GB与en)时,不翻译、不加系统提示、不产生费用。
安装与启用¶
前提:已安装 DeepSeek Harness(在 macOS 版 0.2.1-rc.5 上测试),并配置 DeepSeek API key 或登录 DeepSeek 账号,翻译由 DeepSeek Flash 完成。
最快方式是把下面这段话发给 DSH 里任意会话,让它自己安装:
帮我把 DeepSeek Harness 插件 https://github.com/tonyzdev/dsh-language-bridge 安装到当前 profile。有 plugin_manager 工具就直接调用 install_bundle 安装并启用;否则读取 profile 名(bash 用 $DSH_PROFILE,PowerShell 用 $env:DSH_PROFILE),运行 `dsh plugin --profile <profile> add github:tonyzdev/dsh-language-bridge`,profile 为 desktop 时用 app.asar 同级 runtime/cli/bin 下自带的 dsh(Windows 为 dsh.cmd);受沙箱限制时申请审批。不要手动改 profile 文件。
也可以在 Harness 的「插件」页点「添加插件」,填入下面的地址:
https://github.com/tonyzdev/dsh-language-bridge
安装完成后点「立即启用」;按钮没有出现时,刷新页面或重启 DeepSeek Harness。
命令行安装(先完全退出 DeepSeek Harness):
DSH="/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh"
"$DSH" plugin --profile desktop add github:tonyzdev/dsh-language-bridge
移除:
"$DSH" plugin --profile desktop remove dsh-language-bridge
典型用法¶
打开「插件 → 语言桥接」,保存后从下一步开始生效,不用重启。字段包括你的语言、模型规则、测试模型 id:正则和语言代码在表单里即时校验,有错误不能保存;测试模型 id 可以查看会命中哪条规则、是否需要翻译。
举个例子:你想用西班牙语提问,让 Claude 和 Gemini 用英语,某个中文模型用中文。就保留默认的 claude→en、gemini→en,再补一条匹配该中文模型的 zh-CN 规则。
配置也可以写进 cordis.patch.yml:用 rules、userLanguage 设初始值,用 provider(auto / deepseek-official / deepseek-account)、translateInput、translateOutput 调整行为。$DSH_HOME/storages/language-bridge.json 里的插件设置优先级更高(DSH_HOME 默认为 ~/.dsh)。
适用场景与注意¶
适合在同一个会话里跨模型工作、且各模型工作语言不一致的开发者:界面用一种语言,每个模型各用其最顺的语言。模型单一、语言固定的用户则没有收益,同语言时插件也不产生费用。
需要留意:
- 插件以当前 dsh 进程权限运行,安装前应检查源码与许可证(MIT)。
- 系统提示规则只能提高概率,不能强制;文档提到测试中出现过模型仍用非工作语言回答的情况。
- 只有代码块、行内代码、链接和
@路径受保护,没加反引号的命令和引文也会被翻译;英文句子里夹的一段中文同样会被翻译。 - 会话日志和模型输入里是译文,原文只用于界面显示;回答在一轮结束后才换成译文。
- 每段未缓存的文本是一次付费 DeepSeek Flash 请求;付费结果存在会话里,重新打开不重复收费。
- 按钮和警告文字支持中、英、日、西、法、德、俄、葡八种语言,设置页只有中英文。
- 不要与官方「推理翻译」bundle 同时启用,两者各挂一份 translator 服务,可能冲突。
从 claude-zh-bridge 升级的用户要先卸载旧插件再启用本插件,否则会翻译两次。本插件保持了相同的占位符和分块方式,旧会话里已付费的译文在 userLanguage 解析为 zh-CN 时可直接复用。
结尾¶
dsh-language-bridge 把「模型该用什么语言」从全局设定变成逐模型可控的规则,用 DeepSeek Flash 承担翻译成本,失败时不吞消息。目录页与仓库:
- https://www.skillhub.cn/plugins/tonyzdev/dsh-language-bridge
- https://github.com/tonyzdev/dsh-language-bridge