dsh-selection-translate:在 DSH 客户端内划词翻译

前言

在 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 热加载),选中任意文字应能看到「译」按钮。

典型用法

  1. 用鼠标选中一段文字,选区右上角出现「译」按钮。
  2. 点「译」,浮层显示原文并开始翻译。
  3. 需要换语言时,点浮层底部语言胶囊。
  4. 使用「复制译文」复制结果,「重译」重新请求;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 生态强调「一切皆插件」,本插件是其中面向划词翻译的一类联网工具实现。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜