dsh-language-bridge:给每个模型指定工作语言

前言

模型各自偏好的工作语言并不相同: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
羽毛球分组比赛记分
小程序二维码

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

小夜