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
羽毛球分组比赛记分
小程序二维码

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

小夜