前言¶
DSH 的界面本身已經支持中文。locale 偏好能切界面,各插件自帶的 locale/zh.json 也能覆蓋一部分文案。真正沒有中文、而且界面看不見的,是拼進請求裏的英文原文:系統提示詞的各個段落、運行時上下文(工作目錄 / 沙箱策略 / 審批策略)、每個工具的描述和參數說明,以及 Cordis API 目錄。
這類文字的作用對象是模型,不是人。你在界面上看到中文界面,請求裏發的可能仍是英文,模型據此生成的推理自然跟着英文走。dsh-harness-zh 就是爲了補這個缺口:它在請求離開 Harness 之前把這些字符串替換爲簡體中文,界面語言不受影響。插件由 Giauzihau 維護,版本 0.2.7,適配 DSH 0.2.1-rc.5,按 MIT 發佈。
這是什麼¶
一句話定位:一個 DSH 插件,把面向模型的英文提示詞翻譯成簡體中文。
它翻譯的是固定文案,走詞典查表,不調用任何機器翻譯,因此同一段文字永遠得到同一個譯法,也不會因爲偶發錯誤污染一輪對話。插件只 import Node 內置模塊(node:fs / node:path / node:os / node:url),因爲配置檔的 node_modules 裏解析不到 @deepseek-ai/*。
核心功能¶
覆蓋範圍分四層,都由詞典驅動:
- 系統提示詞段落(
sections)—— DSH 裝配出的各段系統提示詞。 - 運行時上下文(
contexts)—— 工作目錄、沙箱策略、審批策略等。 - 工具描述(
tools)—— 每個工具的名字外描述。 - 工具參數描述(
parameters)—— 文本量最大的一項。
另外還有 messages(運行時上下文快照頭、技能清單提醒)、cordis-api.json(Cordis API 目錄,813 條)、mcp.json(MCP 資源服務器小節)和 runtime.json(沙箱策略措辭、審批禁用說明等)。
詞典放在 dict/,共 8 個文件、988 條詞條 + 11 條模板。查表順序是:精確匹配 → 空白歸一化匹配 → 模板匹配({{name}} 捕獲變量)。未命中就保持原樣,絕不猜測、絕不機翻。
一個關鍵的行爲邊界:會話層只翻譯 message.source.kind 屬於 harness 自己的四類消息(runtime-context、skill-catalog、user-approval、working-directory)。用戶或助手寫的正文一律原樣保留,詞典再大也改不到人打的字。
安裝與啓用¶
直接從 GitHub 安裝,不需要構建步驟(lib/ 是純 ESM,dict/ 是 JSON):
dsh plugin --profile web add github:Giauzihau/dsh-harness-zh
把 web 換成你實際在用的配置檔(瀏覽器 GUI 用 web,Electron 桌面端用 desktop)。dsh 是隨應用附帶的 CLI;在 Windows 上如果沒把它加進 PATH,完整路徑是 & "E:\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd"。
需要可復現的版本時,裝到指定 tag 或 commit:
dsh plugin --profile web add github:Giauzihau/dsh-harness-zh#v0.2.7
本地開發也可以直接指向倉庫目錄:
dsh plugin --profile web add file:E:\path\to\dsh-harness-zh
裝完重啓 Harness(Web GUI 刷新頁面不夠,宿主進程要重啓),插件會隨 dsh.profile.bundles 自動激活。更新到默認分支最新版、或卸載:
dsh plugin --profile web add github:Giauzihau/dsh-harness-zh
dsh plugin --profile web remove dsh-harness-zh
兩點說明:
- 包裏是可直接運行的 JavaScript,沒有構建步驟、也沒有
prepare腳本,所以 pnpm 不會要求你批准構建。 - 首次安裝要拉取倉庫 tarball,網絡慢時可能要一兩分鐘。
開發驗證用內置測試即可,插件自帶 26 個測試:
node --test
配置¶
配置寫在配置檔的 cordis.patch.yml 裏,按插件 id 覆蓋:
- id: harness-zh
config:
sections: true # 系統提示詞段落
contexts: true # 運行時上下文(工作目錄、沙箱、審批策略)
tools: true # 工具描述
parameters: true # 工具參數描述(文本量最大的一項)
messages: true # 運行時上下文快照頭、技能清單提醒
thinking: false # 要求模型用中文推理(true / zh / en / 自定義句子)
extraDictionaries: [] # 額外詞典目錄,覆蓋/補充內置詞典
dumpMisses: false # 把未命中的原文寫到 ~/.dsh/harness-zh-misses.json
verbose: false # 在 stderr 打印每次裝配的命中統計
enabled: false 可以整體關閉而不卸載。
默認只有 thinking 是關的,因爲它是行爲約束而不是文本替換,可能輕微影響推理質量。verbose: true 適合排查裝配階段哪些文字沒命中;dumpMisses: true 能把未命中的原文落成文件,方便你據此補詞典。
thinking:思維鏈語言¶
界面上「思考」面板裏的內容是模型自己生成的推理 token,不是插件能查表的固定文案。詞典再全也翻不了任意自然語言,唯一可行的辦法是在系統提示詞裏要求它:
- id: harness-zh
config:
thinking: zh # 等價於 true;'en' 表示要求用英文;其他字符串按原文注入
開啓後插件會把同一句話註冊兩次:一節系統提示詞(緊跟 persona 前綴、在工具策略之前),外加一條運行時上下文(order: 900,渲染在每步快照的末尾)。後者每步都會重新渲染、位置又在末尾,實測比只寫系統提示詞更容易生效。0.2.7 起正文還帶一箇中文正例和一個反例,給模型一個可模仿的句式。
這裏有一個必須提前知道的邊界:換模型比加強措辭更有效。 實測結論(0.2.7,2026-10-31)是分 provider 的:
- DeepSeek 賬號(官方
deepseek-accountprovider,例如deepseek-flash):全部功能正常,開啓thinking: zh後「思考」面板會跟着變中文。 - 其他中轉 / 聚合 provider(把模型轉發到第三方網關的通道,例如
autodl這類):提示詞翻譯照常生效,但可能出現思考過程未翻譯,「思考」面板裏的推理仍是英文。
原因是思考文本是模型或中轉通道自己生成的,插件只能通過提示詞要求它改用中文,改不了已經生成的推理 token;部分中轉通道對系統提示詞裏的語言要求不敏感。指令也不保證 100% 生效——它能改變模型行爲,不能重寫已經生成的思維鏈。
此外它隻影響「思考」面板,不改變答覆語言;答覆語言仍由你的措辭和模型自身判斷決定。
追加自己的詞典¶
第三方插件(acp_*、hindsight_*、mcp_connector_*、modlens_* 等)的文字不在範圍內,它們隨各自插件版本變化,硬編碼進本插件只會隨對方升級而腐爛。需要時用 extraDictionaries 單獨提供:
{
"my-plugin:tool:foo": { "kind": "tool", "en": "Original English text.", "zh": "中文譯文。" }
}
extraDictionaries 指向的目錄裏放 *.json,格式與內置詞典相同。嵌套寫法({ "<包名>": { "<鍵>": { "en": …, "zh": … } } })也能讀取,方便直接沿用社區詞典。
工作原理:三步,因爲同一段文字會被渲染多次¶
system-prompt/assemble(waterfall) —— 在裝配結果交給模型之前翻譯sections、contexts、tools[].description和參數 schema 裏的description。SystemPrompt#refreshContext(原型補丁) ——agent-loop.step()在發請求前會把每個上下文重新從註冊的 provider 解析一遍,這會把第 1 步翻好的英文還原。補丁打在原型上而非實例上。Session#append(原型補丁) —— 運行時上下文快照和技能清單是循環在裝配之後自己append的,而真正發給適配器的請求已被深凍結(嘗試原地改寫會拋Cannot assign to read only property 'text')。因此在寫入會話這一層翻譯:消息對象凍結,插件追加一份翻譯後的副本,id與source保持不變。
三步都包在 try/catch 裏,任何一步翻譯失敗都降級爲原文,不會讓一輪對話失敗。
適用場景與注意事項¶
適合下面這些情況:
- 你對 DSH 界面已經是中文,但希望模型拿到的系統提示詞、工具描述、參數說明也是中文。
- 你用 DeepSeek 官方賬號(
deepseek-accountprovider),想順帶讓模型用中文推理。 - 你要排查第三方插件或 MCP 服務器帶來的英文文本,需要
dumpMisses幫定位。
需要提前知道的幾點:
- 插件以當前 dsh 進程的權限運行。安裝前請檢查源碼與許可證(MIT,派生譯文署名見倉庫
NOTICE)。 - 第三方中轉 / 聚合 provider 下思考過程可能仍是英文,這是模型通道本身的行爲差異,不是翻譯沒生效。
- 技能清單裏每個技能自己的描述來自對應技能包,仍是英文;本插件只翻譯那顆提醒的框架句。
- 頁面上直接帶給模型的第三方 MCP 工具文本不在詞典內。
- 若 Harness 後續改了
refreshContext/Session#append/system-prompt/assemble的形狀,插件會靜默退化爲只翻譯裝配階段(界面照常可用),verbose: true能看到退化點。
結尾¶
dsh-harness-zh 做的事情很窄:把 DSH 拼進請求、但界面看不見的那部分英文固定文案,換成簡體中文。它不碰人打的字,不做機器翻譯,翻譯失敗就降級爲原文。對在意模型側提示詞語言一致性的 DSH 使用者來說,這是個小而明確的補充。
目錄頁:https://www.skillhub.cn/plugins/Giauzihau/dsh-harness-zh
GitHub:https://github.com/Giauzihau/dsh-harness-zh