dsh-plugin-translate:聊天翻譯面板與版面保持的 PDF 翻譯

前言

在 DeepSeek Harness(DSH)裏和模型長對話時,英文回覆、論文摘要或 agent 輸出往往需要對照中文閱讀;若把整段原文丟給通用翻譯,公式、代碼塊和 URL 容易被改壞。單獨開瀏覽器翻譯或手工複製,又和聊天上下文脫節。下面介紹社區插件 dsh-plugin-translate(維護者 jcy0chenyuan0):在 GUI 聊天區增加翻譯入口,並可選把論文 PDF 按文字塊位置譯後另存,與 DSH「一切皆插件」的擴展方式一致。插件目錄歸類爲聯網工具;生態目錄站 SkillHub 插件頁 與 GitHub 倉庫由社區維護,與 DeepSeek / 幻方無官方從屬關係。

這是什麼

dsh-plugin-translate 給 DSH 增加翻譯能力:聊天區頂部右側只有一個「🌐 翻譯」按鈕,鼠標懸停展開面板、移開收起;點一下可翻譯最新回覆並釘住面板。同一套能力還暴露爲模型工具 translate_text、translate_pdf,agent 可直接調用。

倉庫當前版本在 package.json 中爲 1.2.0,許可證 MIT。源碼:https://github.com/jcy0chenyuan0/dsh-plugin-translate。

核心功能

聊天區 GUI

  • 懸停展開面板,選擇模式與目標語言,翻譯最新回覆;選中聊天文字後可點「翻譯選中」。
  • 面板底部可填 PDF 路徑,執行「翻譯 PDF 並另存爲 _t.pdf」。

翻譯後端(多種模式)

配置項 mode 默認 auto,依次嘗試 DeepSeek 直連 → 任意 AI API → 微軟翻譯(配了 microsoftKey 時面板纔會出現該模式)。也可固定爲 deepseek / custom / microsoft。

  1. 任意 AI 的 API:OpenAI 兼容的 baseUrl + apiKey + model(aiStyle 可選 openai 或 anthropic 風格 /v1/messages),可接 OpenAI、Kimi、Qwen、GLM、OpenRouter、本地 Ollama / LM Studio 等。
  2. DeepSeek 直連:有 API Key 走 OpenAI 兼容端點;沒有 Key 時可複用當前 profile 已登錄的 DeepSeek 賬號憑據(與 harness 自帶 dsh-llm-deepseek-account 同一套取憑據方式,useAccountCredential 默認 true)。
  3. 微軟翻譯:可選,需配置 microsoftKey 與 microsoftRegion。

結構化切片(不誤翻公式與代碼)

AI 模式會先切片,只把自然語言送去翻譯;公式($…$、$$…$$、\(…\)、\[…\])、代碼(圍欄、行內、縮進塊)、URL、郵箱原樣保留。

目標語言

支持 13 種:zh-Hans、zh-Hant、en、ja、ko、fr、de、es、it、pt、ru、ar、hi。默認目標語言配置鍵 target 爲 zh-Hans。

論文 PDF 翻譯

通過 PyMuPDF 助手 lib/pdfhelper.py 識別 PDF 文字塊與位置,逐塊翻譯後寫回原位置,另存爲 <文件名>_t.pdf(頁數不變;公式、代碼、圖、未翻譯內容保持原樣)。掃描版無文字層不做 OCR,會明確報告 pagesWithoutText。

純文本聊天翻譯不需要 Python;PDF 流水線需要帶 PyMuPDF 的解釋器。

安裝與啓用

插件以當前 DSH 進程權限運行;安裝前應自行查看源碼與 MIT 許可證。倉庫不包含本機絕對路徑或 API Key:cordis.patch.yml 由安裝腳本按當前目錄生成(已 .gitignore)。

1. 放置目錄並生成本地 patch

把整個目錄放到任意位置,例如 Windows 下 %USERPROFILE%\.dsh\plugins\dsh-plugin-translate,在該目錄運行一次安裝腳本:

powershell -ExecutionPolicy Bypass -File .\install.ps1

macOS / Linux:

node install.mjs

腳本按當前目錄自動生成 cordis.patch.yml,不寫死盤符。

2. 讓 DSH 加載 bundle

任選其一:

  • 在 DSH 中讓 agent 執行:plugin_manager install_bundle file:<該目錄的絕對路徑>(注意 install_bundle 與 file: 之間有兩個空格,與 README 一致)。
  • 或按生成的 cordis.patch.yml 裏 insert 的內容,手工追加到 <profile>/cordis.patch.yml(例如 %USERPROFILE%\.dsh\profiles\desktop\cordis.patch.yml)。

裝完後在 GUI「設置 → 插件」中可見 dsh-plugin-translate,可整體啓用/停用。

3. PDF 相關依賴(可選)

安裝腳本在 Windows 上默認靜默安裝缺失環境;僅檢查時:

powershell -ExecutionPolicy Bypass -File .\install.ps1 -CheckOnly

插件加載時還會在後臺運行 bootstrap.ps1 -AutoInstall -Quiet(6 小時內不重複),不阻塞 DSH 啓動。需要 Python(優先 DSH 自帶運行時)與 pip install pymupdf 時才做 PDF 翻譯;可用 DSH_PYTHON 或 config.pythonPath 指定解釋器。關閉自動安裝:patch 的 config 設 autoInstall: false,或環境變量 DSH_BOOTSTRAP=0。

改 Host 代碼後立刻生效:loader 按 ES 模塊路徑緩存,可換未加載過的實現文件名(如 translate-host2.js)並同步改 cordis.patch.yml 的 name,再重新 install_bundle,免重啓換新代碼。

配置要點

cordis.patch.yml 的 config 全部可選,常用項如下(完整表見倉庫 README):

鍵 默認 說明
mode auto auto / deepseek / custom / microsoft
target zh-Hans 默認目標語言
aiBaseUrl aiApiKey aiModel 空 任意 AI OpenAI 兼容 API
aiStyle openai openai / anthropic
deepseekApiKey deepseekModel 空 留空則用 profile 登錄憑據
batchChars batchItems 1800 / 12 單次請求規模上限
maxChars maxPdfPages maxPdfBlocks 20000 / 300 / 4000 文本與 PDF 上限

也可用環境變量:AI_BASE_URL、AI_API_KEY、AI_MODEL、AI_STYLE、DEEPSEEK_API_KEY、MS_TRANSLATOR_KEY、MS_TRANSLATOR_REGION。README 說明 Key 不落盤保存。

典型用法

GUI

聊天區「🌐 翻譯」→ 懸停展開 → 選模式與目標語言 → 翻譯最新回覆或選中文字;PDF 路徑填在面板底部後另存 _t.pdf。

模型工具

// translate_text
{ "text": "……", "target": "en", "mode": "deepseek" }

// translate_pdf —— 另存爲 <原文件名>_t.pdf(可用 out 指定路徑 / dryRun 只體檢)
{ "path": "<PDF 路徑>", "target": "zh-Hans" }
{ "path": "<PDF 路徑>", "target": "zh-Hans", "dryRun": true }

倉庫自測命令(節選):

node test/smoke.mjs
node test/client-bundle.mjs
node test/e2e.mjs

適用場景與注意

適合:在 DSH 內快速譯最新回覆或選中片段;需要保留 LaTeX / 代碼的 AI 輸出;有文字層的論文 PDF 希望版面大致原位譯成 _t.pdf。

已知限制(來自 README):掃描版 PDF 無 OCR;中英版面長度差異可能導致個別塊 overflow 警告;推理模型偶發空響應體會自動拆批重試;圖片內文字、矢量圖標註不處理。第一次請求可能偏慢。

插件分類爲聯網工具,調用外部 API 或 DeepSeek 賬號時需自行承擔密鑰與合規責任。

結尾

dsh-plugin-translate 把「懸停翻譯面板 + 多後端 + 公式代碼保護 + PDF 塊級另存」收進一個 DSH bundle,適合已在使用 Harness 的開發者按需啓用。

羽毛球分组比赛记分
小程序二维码

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

小夜