前言¶
在 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。
- 任意 AI 的 API:OpenAI 兼容的
baseUrl + apiKey + model(aiStyle可选openai或 anthropic 风格/v1/messages),可接 OpenAI、Kimi、Qwen、GLM、OpenRouter、本地 Ollama / LM Studio 等。 - DeepSeek 直连:有 API Key 走 OpenAI 兼容端点;没有 Key 时可复用当前 profile 已登录的 DeepSeek 账号凭据(与 harness 自带
dsh-llm-deepseek-account同一套取凭据方式,useAccountCredential默认true)。 - 微软翻译:可选,需配置
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 的开发者按需启用。