前言¶
如果你在用 DSH(DeepSeek Harness),大概率見過這些英文界面:命令菜單裏各命令的描述、權限預設的說明文字、計劃模式的審查按鈕、軌跡視圖的標籤。它們不是配置項能改的文案,而是硬編碼在包文件裏的英文字符串,官方沒有提供 i18n 覆蓋點。想換成中文,只能直接改包文件——改完能生效,但 dsh 一升級,補丁就丟了,又得重做一遍。
社區作者 lingyingaojue 把這套手動操作做成了插件 dsh-l10n-hardpatch:安裝後重啓 DSH Web 即自動漢化,升級導致英文迴歸時,重啓會自動重新打上補丁。下面介紹它的實現方式和用法。
這是什麼¶
dsh-l10n-hardpatch 是一個本地目錄型 bundle 插件,定位是「硬編碼中文化補丁」:插件加載時,把 dsh 各包裏已知的硬編碼英文行,整行替換爲對應的中文行。許可證爲 MIT。
它不新增功能、不改交互,只解決一件事:讓 dsh 包內那部分英文 UI 字符串顯示爲中文,並且在 dsh 升級後能自動恢復這個狀態。
工作原理¶
插件通過 dsh 的 bundle patch 機制註冊(cordis.patch.yml → insert)。加載時讀取 patches.json,對候選副本文件執行整行精確替換。patches.json 裏共 144 組「原版英文行 → 中文行」替換對,由 extract_lines.py 從「npm 原版包 vs 已漢化文件」的逐行 diff 自動生成,可以重新生成以適配新版本。
替換是冪等的,規則分三種情況:
- 文件已含中文目標行 → 跳過
- 文件含英文原行 → 替換爲中文行
- 無匹配 → 保持不動
核心特性與漢化範圍¶
按 README 的描述,插件有四個重點:
- 導入即漢化:安裝後重啓 DSH Web 生效
- 自動重打:dsh 升級導致英文迴歸時,重啓自動重新漢化
- 覆蓋全面:同時掃描全局 npm 依賴樹與
~/.dsh/profiles各級 node_modules(含 pnpm store 佈局),命中實際加載的文件 - 安全:行級精確替換,不誤傷代碼邏輯;替換後語法校驗通過;任何異常只告警,不阻斷插件加載
漢化範圍覆蓋以下包:
| 包 | 內容 |
|---|---|
dsh-command-compact |
壓縮對話命令描述 |
dsh-command-feedback |
反饋命令描述 |
dsh-command-goal |
目標命令描述 |
dsh-session-log-export |
導出會話命令描述 |
dsh-permission-presets |
權限預設描述 |
dsh-plan-mode |
計劃審查按鈕(批准 / 繼續規劃等) |
dsh-client-ui-trajectory |
軌跡視圖 UI 標籤(約 100 處) |
有一處不需要補丁:advisor 預設與 client-connection 的中文是官方 rc.7 自帶的。
安裝與啓用¶
這是本地目錄型 bundle 插件,需要先把文件下載到本地,再讓 dsh 引用該目錄。
1、下載插件,兩種方式任選:
# 方式 A:git 克隆
git clone https://github.com/lingyingaojue/dsh-l10n-hardpatch
# 方式 B:GitHub 頁面 Code → Download ZIP,解壓到任意目錄
2、安裝到 dsh,把 <路徑> 換成你下載或解壓的目錄:
dsh plugin --profile web add <路徑>\dsh-l10n-hardpatch
3、重啓 DSH Web,漢化即生效。也可以在 Web UI 設置 → 插件 → 添加本地插件 → 選擇目錄。
一個已知坑¶
dsh plugin add 可能因 pnpm 的 ERR_PNPM_IGNORED_BUILDS(如 @jackwener/opencli、node-pty)以退出碼 1 中斷。此時依賴其實已經裝好,但 package.json 的 dsh.profile.bundles 沒有更新,插件不會被加載。
處理方法:手動把包名加入 dsh.profile.bundles 數組,然後重啓。
更新維護¶
dsh 升級後,如果部分英文串變了,對應的替換對會失效。重新生成替換對的步驟:
# 1. 下載對應版本原版包
npm pack @deepseek-ai/dsh-client-ui-trajectory@<version>
# 2. 運行提取腳本(需配置路徑)
python extract_lines.py
# 3. 替換 patches.json 後重啓 DSH Web
適用場景與注意¶
適合兩類人:一是希望在 DSH Web 裏看到中文界面、且能接受直接替換包內字符串的用戶;二是自己維護 dsh 定製、想省掉每次升級後手動改包文件的開發者。
使用前有兩點需要清楚:
-
插件加載時會修改 dsh 包內的文件(整行替換加語法校驗),並始終以當前 dsh 進程的權限運行。安裝前建議先瀏覽源碼,確認替換對內容符合預期,再決定是否加載。
-
它替換的是硬編碼字符串,不是官方 i18n 方案。dsh 後續版本英文串變化時,需要按上一節重新生成替換對。插件本身採用 MIT 許可。
小結¶
dsh-l10n-hardpatch 把「手動改包文件 → 升級後重來」這個重複勞動,變成插件加載時的一次自動處理:冪等替換、異常只告警、升級後自動重打。如果你對 dsh 界面的英文硬編碼有同樣的困擾,可以按上面的步驟試一下。
- GitHub:https://github.com/lingyingaojue/dsh-l10n-hardpatch
- 社區目錄頁:https://www.skillhub.cn/plugins/lingyingaojue/dsh-l10n-hardpatch
社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。