dsh-translator
DeepSeek Harness (DSH) 内置翻译插件:多语言、多模型流式翻译,支持文档导入、翻译历史与 Markdown 预览。
A built-in translator plugin for DeepSeek Harness: multi-language, multi-model streaming translation with document import, translation history and Markdown preview.
功能 Features
- 🧭 侧边栏底部「文 / 翻译」入口(宽侧栏 / 56px 窄轨道均正常显示)
- 🌐 16 种语言 + 源语言自动检测 + 语言互换
- 🤖 模型选择:列出 DSH 中所有已配置 provider 的模型(DeepSeek / Kimi / Claude / GPT …),默认选中当前默认模型
- ⚡ 流式翻译输出,任务进度实时刷新
- 📄 文档导入:纯文本类 + PDF / DOCX / PPTX / XLSX(markitdown-node → 内置 ZIP/XML 解析 → pdfjs-dist 三级降级)
- 🕘 翻译历史(持久化到
~/.dsh/translator-state.json,上限 100 条,可单删/清空/点击回填) - 📝 Markdown 预览(内置轻量渲染器,可切换纯文本)
- 📖 术语库:人名/地名等固定译名,翻译时强制使用(见下)
- ⚙️ 可自定义翻译提示词(支持
{{target_language}}与{{text}}占位符) - ⌨️ Ctrl+Enter 快捷翻译、拖拽文件到输入框直接导入、一键复制结果
📖 术语库(固定译名)
普通翻译面板右上角 📖 打开术语库:
- 添加单条(原文 + 译名),或批量导入(每行一条
原文 = 译名,也支持→、➡、Tab 分隔);同名条目自动去重; - 翻译时术语表会自动注入提示词,要求模型必须使用固定译名;
- 翻译完成后做术语合规检查:译文里若仍出现术语原文(如
Alice没译成爱丽丝),会在结果上方提示"以下术语可能未使用固定译名",便于人工复核; - 「保留原文」类条目:添加
原文 = 原文(如SEKAI = SEKAI)即表示保留不译,不会触发检查; - 单字符词条不参与检查(避免误报);
- 可用「翻译时应用术语库」开关整体启停;
- 数据持久化在
~/.dsh/translator-terms.json,可通过插件配置termsPath覆盖。
🎵 歌词三合一流水线(独立入口「歌 / 歌词」)
与普通翻译完全分离的日文歌词专用流水线,移植自用户原来的 Python 三合一脚本:
- 三模型并行草稿:DeepSeek / Kimi / Claude 三个模型同时翻译(各可选模型,默认
deepseek-v4-flash/kimi-k3/claude-opus-4-6),实时显示每份草稿; - 终审整合:由「终审&润色」模型取长补短合成最终定稿(≥2 份草稿才整合,只有 1 份时直接采用并提示;终审失败自动改用最长草稿兜底);
- 润色:在保持原意与行数的前提下打磨歌词韵味;
- 日中对照:逐行交替排版(行数对不上就跳过,不硬凑);
- 复盘写笔记:自动总结本次翻译经验,追加到经验笔记文件,下次翻译时自动注入提示词(只注入最近 20 条 / 4000 字符,防止笔记无限膨胀);
- 从人工润色中学习:选一条三合一历史,粘贴你人工润色后的版本,自动提炼人类改进并写入笔记。
🌐 网络分段(VPN)支持
不同模型可能需要不同的网络环境(比如 Claude 中转要开 VPN,而 DeepSeek / Kimi 一开 VPN 就断连)。为此每个模型旁都有一个 VPN 开关:
- 标记「需要 VPN」的阶段会与其它阶段按网络状态分组执行(同组内草稿仍并行);
- 前后两组网络状态不同时,流水线自动暂停,弹窗提示你开/关 VPN,点「继续」后接着跑;
- 任何阶段调用失败时,弹窗提供**「重试失败阶段」(会连带重跑其后已执行的阶段,避免用旧输入继续)或「跳过继续」**(失败阶段按未成功处理,其余照常);
- 默认:Claude 草稿标记为需要 VPN,DeepSeek / Kimi 草稿与终审&润色不需要;全部关掉即回到无暂停的直跑模式。
细节:
所有调用走 DSH 已配置的 provider,不需要任何 API Key;
提示词针对日文歌词优化(保持行数、祈使句「动词+吧」、语气词、专有名词不汉化等);
经验笔记文件默认
~/.dsh/translator-notes.txt,可通过插件配置覆盖,例如复用旧工具笔记:- insert: - id: translator name: dsh-translator config: notesPath: 'C:\translate_tool\translation_notes.txt'流水线历史独立保存(上限 20 条),可回填、删除、清空。
安装 Install
需要 DeepSeek Harness 桌面版(内置 Host 的
dsh web模式)。
方式一:安装脚本(推荐)
# 在仓库目录下执行
powershell -ExecutionPolicy Bypass -File install.ps1
# 自定义 DSH 家目录:
powershell -ExecutionPolicy Bypass -File install.ps1 -DshHome C:\Users\你的用户名\.dsh
脚本会:① 把插件复制到 <DSH_HOME>\profiles\web\node_modules\dsh-translator\;② 在 <DSH_HOME>\profiles\web\cordis.patch.yml 幂等追加注册行。然后重启 DeepSeek Harness 即可。
方式二:手动安装
把
lib/与package.json复制到<DSH_HOME>\profiles\web\node_modules\dsh-translator\;编辑
<DSH_HOME>\profiles\web\cordis.patch.yml,追加(注意必须是insert块语法,裸- id:会被 loader 当作"覆盖已有条目"而跳过):- insert: - id: translator name: dsh-translator config: {}重启 DeepSeek Harness(桌面端与浏览器端共用同一 Host,都会生效)。
使用 Usage
- 点击左侧边栏底部的「翻译」按钮;
- 选择源语言(可自动检测)与目标语言;
- 选择翻译模型;
- 输入文本,或点「导入文档」/ 直接把文件拖进输入框;
- 点「翻译」(或 Ctrl+Enter),流式结果实时显示在右侧;
- 打开右上角 🕘 查看历史、⚙ 调整设置(Markdown 预览 / 提示词)。
工作原理 How it works
| 端 | 文件 | 职责 |
|---|---|---|
| Host | lib/index.js |
通过 webServer 注册 /api/translator 路由(JSON RPC + 文件导入);用 llm.stream() 做流式翻译任务;文档转换(markitdown-node / 内置 ZIP+XML / pdfjs-dist);历史与设置持久化 |
| Client | lib/client.js |
sidebar.footer.action 侧栏入口 + shell.overlay 全屏翻译面板;同源 fetch("/api/translator/*") 调用 Host(与官方 dsh-file-upload 同一模式) |
状态文件:~/.dsh/translator-state.json(设置 + 历史)。
依赖 Dependencies
node >= 22.6.0(DSH Host 运行时)- 可选(用于复杂文档转换,缺失时自动回退到内置解析器):
markitdown-node^1.5.2pdfjs-dist^4.10.38
- 在 DSH web profile 中安装时,会优先复用同目录
dsh-file-upload携带的上述依赖(零额外安装)。
许可 License
MIT © 2026 limulin778-web
No comments yet. Be the first to write one.