前言¶
在 DeepSeek Harness(DSH)里读模型输出、翻文档或对照聊天记录时,经常需要把某一段文字译成另一种语言。常见做法是复制到外部翻译页或另开工具,上下文要来回切换。DSH 社区插件 dsh-selection-translate(维护者 huanleyabo)把这一步收进客户端:在界面里选中文字,点浮出的「译」按钮,译文在选区旁就地弹出,默认还可直接复用当前会话正在使用的模型,一般不必单独配置 API Key。
这是什么¶
dsh-selection-translate 是 DSH 的 bundle 插件,分类为联网工具。它在客户端内(含输入框、文本域、聊天记录、工具输出等)监听文字选区,选中后在选区旁显示「译」按钮;点击后调用大模型完成翻译,结果在浮层中展示,并支持切换目标语言、复制与重译。
插件版本为 0.1.0,要求 DSH 引擎 >=0.2.0-rc.1,许可证为 MIT。源码与说明见 GitHub 仓库,目录页:SkillHub 插件页。
核心功能¶
下面按 README 中已列能力归纳,均可在安装后按交互步骤验证。
| 能力 | 说明 |
|---|---|
| 划词触发 | 鼠标选中文字后,选区旁浮出「译」按钮;Shift + 方向键 键盘选区同样会触发 |
| 一键翻译 | 点击后调用模型,原文与译文在选区旁浮层展示 |
| 就近弹出 | 浮层自动避开屏幕边缘,超出视口时上翻或收进可视区 |
| 指定语言 | 浮层底部语言胶囊可即时切换目标语言并重译(如智能 / 简中 / 繁中 / EN / 日 / 韩等) |
| 智能中英互译 | 默认「智能」:中文→英文,其他语言→简体中文 |
| 复制译文 | 一键复制,非安全上下文会回退 execCommand |
| 双模型来源 | ① 当前会话模型(默认,零配置,走 Host 端 llm)② 自定义 OpenAI 兼容端点 |
| 设置界面 | 「设置 → 通用」中可开关、设默认目标语言,并在「模型与端点设置」中切换提供商、Base URL、模型、API Key、测试翻译 |
隐私方面:API Key 只保存在 Host 端,不下发到浏览器;浏览器向 Host 仅发送 {text, targetLang, sessionId}。
安装与启用¶
本插件是标准 DSH bundle 包,将整个目录作为本地包链入 profile。在 DSH 检出目录下,以 desktop profile 为例:
# 在 DSH 检出目录下,使用桌面 profile
dsh plugin --profile desktop add link:<本目录绝对路径>/dsh-selection-translate
也可在该 profile 的 package.json 中把本包加入 dependencies 与 dsh.profile.bundles,然后重新加载 profile。cordis.patch.yml 会把插件行插入 profile 加载树,例如:
- insert:
- id: dsh-selection-translate
name: dsh-selection-translate
装好后重启 DSH(或让 profile 热加载),选中任意文字应能看到「译」按钮。
典型用法¶
- 用鼠标选中一段文字,选区右上角出现「译」按钮。
- 点「译」,浮层显示原文并开始翻译。
- 需要换语言时,点浮层底部语言胶囊。
- 使用「复制译文」复制结果,「重译」重新请求;
Esc或点击空白处关闭浮层。
若使用默认的当前会话模型(provider: "current"),Host 会按顺序解析模型:请求中的 sessionId 对应会话 → agentDefaultModel.currentSelection() → 活动会话中最近可解析出模型的一个。都取不到时会提示在输入框下方选择模型,或改用自定义端点。
配置说明¶
配置文件位于 ~/.dsh/selection-translate.json(权限 0600)。示例:
{
"enabled": true,
"targetLang": "auto",
"maxChars": 6000,
"temperature": 0.1,
"timeoutMs": 60000,
"provider": "current",
"endpoint": "",
"model": "",
"apiKey": ""
}
| 字段 | 说明 |
|---|---|
enabled |
划词翻译总开关 |
targetLang |
默认目标语言,auto 为智能中英互译 |
maxChars |
单次最大字符数,超出会报错提示 |
temperature |
采样温度,翻译建议保持低值 |
timeoutMs |
单次翻译超时,默认 60s |
provider |
current 用当前会话模型;external 用自定义端点 |
endpoint / model / apiKey |
provider: "external" 时使用,endpoint 需为 /chat/completions 完整地址 |
Host 端还提供前缀 /api/dsh-selection-translate 的 HTTP 路由(如 GET /ping、GET/POST /config、POST /translate),供客户端读写配置与发起翻译;错误以 { ok: false, error } 返回(HTTP 200),便于前端展示原因。
适用场景与注意¶
适合谁: 经常在 DSH 内阅读英文文档、对照多语言聊天记录,或需要快速理解工具输出片段的开发者;希望翻译与当前对话共用同一模型、减少复制粘贴的人。
运行与权限: 插件以当前 DSH 进程权限运行,安装前建议阅读仓库源码与 MIT 许可证,确认端点与密钥配置符合你的环境策略。
已知边界(README 已说明):
- 不覆盖 iframe 内文字(如
iframe[data-html-preview]文档预览、侧栏浏览器页等),划词按钮只挂在主文档。 provider: "current"依赖 Host 端llm与sessions服务;缺失时会明确报错。- 自定义端点须为 OpenAI 兼容的
chat/completions协议。
仓库内提供无额外依赖的自包含测试:node test/host.test.mjs(32 项)、node test/client.test.mjs(14 项),可用于本地校验 Host 与浏览器端逻辑。
结尾¶
dsh-selection-translate 把「选中 → 翻译 → 复制」收进 DSH 壳层,默认复用当前会话模型,也可切换到任意 OpenAI 兼容端点;配置与密钥留在 Host,浏览器只传文本与语言偏好。若你已在用 DSH desktop profile,可用上面的 link: 安装方式链入本地包后试用。
- 目录页:https://www.skillhub.cn/plugins/huanleyabo/dsh-selection-translate
- GitHub:https://github.com/huanleyabo/dsh-selection-translate
社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,本插件是其中面向划词翻译的一类联网工具实现。