前言¶
在 DeepSeek Harness(DSH)桌面端里读长回复时,若需要边看原文边对照另一种语言,常见做法是复制到外部翻译工具,或依赖浏览器整页翻译。这两种方式要么打断对话流程,要么难以和 Markdown 标题、列表、代码块等结构对齐。dsh-bilingual 是面向 DSH Desktop 的客户端插件:在聊天界面提供「双语」开关,开启后仅在显示层为助手回复的每一段原文下方追加另一种语言的译文,不改变会话记录、发给模型的上下文以及复制内容。
这是什么¶
- 名称与归属:npm 包
dsh-bilingual,仓库 Hemuchuan/dsh-bilingual,维护者 Hemuchuan;许可证 MIT。 - 分类:客户端(DSH 插件目录归类为客户端)。
- 定位:给 DSH 桌面端聊天界面增加「中英逐段翻译 / 双语对照」——原文是中文则在下面加英文,原文是英文则在下面加中文。
- 运行环境:面向 DSH Desktop(Windows / macOS / Linux);插件安装到
profiles/desktop。同一套 Web GUI 架构下也可用于dsh web,当前主要在桌面端验证。package.json要求dsh版本>=0.2.1-rc.1 <0.3.0-0,Node>=20。
核心功能¶
下面介绍显示规则与「只改显示」的边界,均来自项目 README。
段落与结构
- 标题的译文拼在同一行(例如:
3. 重要物理性质 3. Important physical properties)。 - 列表项的译文仍在该条项目符号内,前面留一个空行,与原文形成两段。
- 代码块、块级公式、HTML 块原样保留,不翻译;表格会生成一张完整的译文表附在原文表下方。
不翻译或有限翻译的范围
- 只翻助手回复正文:用户消息、思考链、工具调用、工具输出不翻;代码块、块内公式不单独翻。
- 只处理中文/英文;其他语言按「非中文即英文」的粗略判断,可能不翻或翻错方向。
- 目标语言是「另一种」:中文段配英文、英文段配中文,不做「固定翻成某一种语言」。
数据与费用
- 会话记录、发给模型的上下文、复制按钮都仍是原文。
- 每段未命中缓存的文本会发一次 DeepSeek 请求;长回复首次开启会批量请求,需留意 API 用量。
安装与启用¶
从 npm 安装(推荐)¶
已发布为 dsh-bilingual@0.1.6。在 DSH 环境中执行:
dsh plugin --profile desktop add dsh-bilingual
也可以在 DSH 插件市场里搜索 dsh-bilingual 或「逐段翻译」。
本地 link(开发)¶
适合在插件源码目录调试。先退出 DSH(或装完后再重启),在插件目录执行:
& "$env:LOCALAPPDATA\Programs\DeepSeek Harness\resources\runtime\bin\node.exe" install.mjs --profile desktop
install.mjs 会在备份 package.json 后:在 profiles/<profile>/package.json 的 dependencies 中加入 "dsh-bilingual": "link:<本目录>";在 dsh.profile.bundles 中加入 "dsh-bilingual";在 profiles/<profile>/node_modules/dsh-bilingual 建立指向本目录的 junction。也可用 DSH 插件管理器的「本地链接」方式,本质相同。完成后重新打开 DSH。
配置 API¶
- 打开 设置 → 双语。
- 插件会优先复用 DSH 已保存的
DEEPSEEK_API_KEY(~/.dsh/.credentials.yaml);若 DSH 中没有,可粘贴sk-...,点「保存」,再点「测试连接」。 - Key 优先级:插件里填的 Key > 环境变量
DEEPSEEK_API_KEY> DSH 凭据。插件 Key 存在~/.dsh/dsh-bilingual.json(DSH_HOME下),不会写进会话,也不会回传到浏览器。 - 模型默认
deepseek-chat,Base URL 默认https://api.deepseek.com,可改成任意 OpenAI 兼容端点。
典型用法¶
经过上面的安装与配置,按以下步骤在对话中使用。
- 回到对话界面,点会话头部的 「双语」 按钮开启(默认关闭;状态存在
sessionStorage,仅对当前标签页生效)。 - 开启后,已落定的助手消息会按可见区域逐条翻译;滚动到新消息时继续翻译。翻译发生在显示层;刷新后同一段可命中本机缓存,不重复请求。
- 关闭开关即恢复原文显示(缓存保留,下次开启可复用)。
README 中的对照示例如下(节选):
### 3. 重要物理性质 3. Important physical properties
- **标量性**:磁通量是标量,但有正负之分。正负号取决于所选曲面的法线方向。
**Scalar nature**: Magnetic flux is a scalar quantity, but it can be positive or negative.
The sign depends on the direction of the normal to the selected surface.
实现要点(可选了解)¶
插件分「浏览器半」与「宿主半」:
- 客户端(
lib/client.js)以priority: -10影子注册conversation.chat.node的assistant-step渲染器;正文从数据层取原始 Markdown,经lib/markdown.cjs行级切分后插入译文,再交给官方MarkdownText渲染。 - 宿主(
lib/index.js)注册/api/dsh-bilingual/*,代理 DeepSeekchat/completions:API Key 只在服务端,浏览器不直连。 - 纯函数(
lib/markdown.cjs)负责切分、语言判断、译文清洗与拼装,并有独立单测。
修改 lib/client.js 或 lib/index.js 后需重启 DSH;仅改客户端 bundle 时,重启后刷新页面即可。
适用场景与注意¶
适合谁
- 在 DSH Desktop 上频繁阅读助手长文,需要段落级中英对照、且希望保留 Markdown 结构的开发者或研究者。
安装前建议
- 插件以当前 DSH 进程权限运行,会向配置的 DeepSeek 兼容端点发送译文请求。安装前应查看 GitHub 源码 与 MIT 许可证,确认凭据与用量策略符合你的环境。
已知边界
- 依赖 DSH 的
assistant-step数据形状;DSH 大版本若改动node.data.blocks/MarkdownText,需插件跟进适配;渲染异常时会退回纯文本。 - DSH 插件社区目录(如 SkillHub 条目)为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本介绍不表述为官方应用商店应用。
卸载(简要)
编辑 profiles/desktop/package.json 移除 dsh-bilingual 依赖与 bundle 项,删除 profiles/desktop/node_modules/dsh-bilingual,重启 DSH。可选删除 ~/.dsh/dsh-bilingual.json。
结尾¶
dsh-bilingual 在 DSH 桌面端对话里用开关控制「显示层双语」,会话与上下文保持原文,适合需要中英逐段对照又不愿离开 DSH 的场景。进一步说明与 issue 见 GitHub 仓库,目录页见 SkillHub:Hemuchuan/dsh-bilingual。