前言¶
模型各自偏好的工作語言並不相同: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