dsh-sidebar-translate
给 DeepSeek Harness 桌面版自带的侧边浏览器加:
- 整页双语对照翻译(原文 + 中文译文并排)
- 划词翻译(选中即译)
- 选中即引用(选中的内容自动成为对话上下文)
翻译默认走 DeepSeek 模型,可切回免费机翻;不上传整页,只按段落请求,相同文本有缓存。
功能
| 功能 | 怎么用 |
|---|
| 整页翻译 | 点页面右下角的蓝色「译」浮球;再点一次还原原文 |
| 仅译文 / 双语对照 | 浮球上方「⋯」菜单切换 |
| 翻译引擎 | 「⋯」菜单在「DeepSeek 模型」和「免费机翻」之间切换 |
| 划词翻译 | 选中文字,浮条上点「译」 |
| 选中即引用 | 选中文字即自动成为引用;输入问题按 Enter,引用随消息发送 |
| 术语表 | 编辑插件目录下的 glossary.json(见下) |
适用环境
- 只在 DeepSeek Harness 桌面应用里生效:桌面版侧边浏览器是 Electron
<webview>,插件可以注入页面脚本。
- 用普通浏览器打开 Web GUI 时,侧边浏览器是跨域 iframe,脚本注入不进去,本插件不会有反应。
- 依赖 DSH 自带的
@deepseek-ai/dsh-experimental-translator(ctx.translator):
- 免费机翻走 Bing/Google 匿名端点,不需要账号;
- DeepSeek 模型走原生 Flash 路由,需要当前有已激活的会话(没有会话时自动退回免费机翻)。
安装
在 DSH 里用插件管理器安装:
plugin_manager install_bundle "github:LessXi/dsh-sidebar-translate"
或者把本仓库克隆到本地目录后:
plugin_manager install_bundle "<本地目录>"
安装后重启一次 DSH 桌面应用(或至少重新打开侧边浏览器标签页),让客户端代码生效。
使用
- 在右侧栏打开侧边浏览器,访问任意英文页面。
- 点右下角「译」浮球开始整页翻译;再点一次关闭。
- 选中任意文字会出现浮条:
- 「译」:看选中片段的翻译;
- 选中内容同时会自动成为引用(输入框右上方出现小条)。
- 在输入框输入问题,按 Enter 发送:引用会作为文件引用随消息发送,消息正文只有你的问题。
翻译引擎与成本
- 免费机翻:Bing / Google 匿名端点,不花 token,速度最快。
- DeepSeek 模型(默认):走 DSH 内置翻译服务的 DeepSeek 路由,按 token 计费,质量更好;需要活跃会话。
- 长页面会按段落批量请求:每段一次翻译调用,相同文本有内存缓存,重复段落不会重复计费。
术语表
插件目录下的 glossary.json 是一个 {"原文": "译法"} 的 JSON:
{
"flatbuffer": "flatbuffer",
"TFLite": "TFLite",
"Keras": "Keras"
}
- 值写成和原文相同 = 保留原文不翻译。
- 翻译前会把命中的术语替换成占位符,返回后校验再回填:模型无法改写这些词,术语译法强制统一。
- 普通代码、URL、带下划线/点号的标识符也会被自动保护,不会被翻译或改写。
- 改完文件自动生效(按文件修改时间重载),不需要重启。
引用机制
选中内容会保存为插件目录下的 refs/selection.md(包含页面标题、来源地址和选中文本)。发送时以 @文件路径 的形式作为文件引用附在消息里:
- 消息正文只有你的问题;
- 引用在聊天界面显示为一个小胶囊(文件名),不是长路径;
- 模型用 read 工具按路径读取文件内容,作为回答的上下文。
隐私
- 翻译请求只发送当前段落的文本(以及术语表),不发送整页 HTML、cookie 或登录态。
- 选中内容的引用文件保存在本地插件目录,不会主动上传;只有在你发送消息时,模型按路径读取它。
已知限制
- 只在桌面版生效(Web GUI 的 iframe 无法注入)。
- 页面结构千差万别,个别站点可能漏翻或需要补充选择器。
- 动态加载的内容会通过
MutationObserver 补译,但极端 SPA 可能来不及。
- 翻译是逐段请求,长页面会产生多次请求;翻页/切换页面后需要重新点「译」。
- 侧边浏览器的
<webview> 是 DSH 内置实现,DSH 大版本升级后可能需要跟随适配。
目录结构
| 文件 | 作用 |
|---|
index.js | Host 半侧:翻译路由、术语表保护/回填、引用文件写入 |
client.js | Client 半侧:扫描 webview、注入页面脚本、浮球/浮条/引用胶囊、Enter 拦截 |
cordis.patch.yml | Bundle patch:插入 translator 行和本插件行 |
glossary.json | 默认术语表 |
locale/、icon.svg | 插件管理器里的标题、描述和图标 |
License
MIT