前言¶
在 DSH 里读长文档、对照侧栏说明或翻看对话记录时,经常需要把一小段外文翻成中文。常见做法是复制到浏览器或独立翻译工具,再贴回来,选区容易丢、步骤也碎。下面介绍社区插件 dsh-selection-translate(维护者 ringo-x):在 DSH 桌面 Web 客户端里划选文字,选区旁出现「翻译」按钮,点击后在原位弹出翻译卡片,走 DSH 内置的 Bing / Google 免费匿名接口,不需要 API key,也没有构建步骤。
这是什么¶
dsh-selection-translate 是 DSH Desktop 的 Web Client 插件,分类为联网工具。仓库:ringo-x/dsh-selection-translate;社区目录页:skillhub.cn 条目。README 英文简介为:在桌面客户端中选中文本并在原地翻译(select text, translate it in place)。
插件当前为 MVP:README 记录 npm 公开包 @ringo-x/dsh-selection-translate@0.1.1(MIT),语法、清单与后端接口已做自动化校验;实际划词与视觉交互仍建议安装后自行点验。
核心功能¶
按 README 已核实的能力概括如下。
选区与浮层
- 鼠标划选或 Shift+方向键选择后,在选区末端显示浮动「翻译」按钮。
- 浮层注册在
shell.overlay;该层默认可点击穿透,按钮与卡片通过pointer-events: auto接收事件。 - 默认不在
input、textarea、contenteditable内触发,避免干扰编辑。
翻译卡片
- 展示所用服务、目标语言、原文预览与译文;支持复制、重试与错误提示。
- Esc、点击外部、滚动或窗口失焦时自动关闭。
- 主题 token 适配亮/暗色;中英文案走
ctx.locale。
请求与限制
- 单次选区最多 4000 字符;20 秒超时、请求可取消、带内存缓存。
- 选中文本会发往 Bing / Google,卡片底部有隐私提示。
工作原理(简要)¶
选中文字
→ document mouseup / keyup
→ 校验选区(非空、长度、是否在输入框/插件卡片内)
→ shell.overlay 浮动按钮
→ 点击(mousedown preventDefault 保留选区)
→ ctx.get('remote.cotTranslation') → face.translate(...)
→ Host translator → Bing / Google 免费匿名接口
→ 翻译卡片
- Client:
client.js,纯 React(React.createElement),无第三方 npm 运行时依赖。 - Host:
index.js仅保留 bundle 行,翻译在 Host 的translator服务中完成。 - 翻译链路:
ctx.remote.cotTranslation由内置「思考翻译」bundle 提供;目标语言与翻译服务跟随该 bundle 的设置。
依赖与前置条件¶
| 依赖 | 说明 |
|---|---|
DSH Desktop 0.2.1-rc.2 |
插件运行在 Web Client / shell.overlay |
@deepseek-ai/dsh-experimental-cot-translation-bundle |
必须启用;提供 translator 与 cotTranslation Remote,默认 Bing + auto |
| Node.js | 仅开发与跑 npm run check 时需要;插件运行时不依赖 Node API |
没有 npm 运行时依赖,也没有构建步骤。禁用「思考翻译」后,划词翻译不可用;若把翻译服务切到付费 DeepSeek Flash,划词会提示改回 Bing/Google(当前版本不绑定 Session)。
安装与启用¶
已抓取资料中未给出形如 dsh plugin add … 的固定安装命令。README 说明:包已发布到 npm(@ringo-x/dsh-selection-translate),社区市场(如 dsh-compat-market)从 npm 注册表与 GitHub 仓库 dsh-plugin topic 聚合目录,无单独上传接口;新包需等 npm 检索收录后出现在市场,在此之前可通过带 dsh-plugin topic 的 GitHub 仓库发现。
安装前建议自行核对 GitHub 源码 与 MIT 许可证。插件随当前 DSH 进程权限运行,联网请求会把选中文本发给第三方翻译端点。
启用步骤(逻辑顺序):
- 使用满足版本要求的 DSH Desktop,并在 profile 中安装、启用本插件(通过 DSH 插件管理或社区市场界面,以你当前环境文档为准)。
- 同时启用
@deepseek-ai/dsh-experimental-cot-translation-bundle(思考翻译)。 - 确认插件在
shell.overlay中为 active(README 验证记录中selection-translate已注册且为 active)。
开发者在工作区通过 plugin_manager 安装或更新到 profile;不要手动改 profile 的 package.json / cordis.patch.yml。
典型用法¶
- 在对话正文或侧栏中选中文字(输入框内默认不触发)。
- 点击选区旁的「翻译」。
- 在卡片中查看译文;可复制或重试;用 Esc 或点击外部关闭。
修改目标语言或翻译服务:
- 打开 设置 → 插件 → 思考翻译。
- 默认 Bing +
auto(中文界面下即简体中文)。 - 可切换 Google,或填写
zh、en、ja等语言代码。
适用场景与注意¶
适合
- 已在 DSH 窗口内阅读、希望少切换应用做短句翻译的场景。
- 愿意使用 Bing / Google 免费匿名接口、且接受选区内容出网的用户。
不适合或需注意
- 不是系统级划词工具,只在 DSH 窗口内部生效。
- 付费 DeepSeek Flash 不支持划词;长文单次上限 4000 字符。
- 启用思考翻译后,展开的思考内容会多出翻译工具栏(不会自动翻译),与划词能力是同一 bundle 的副作用。
README 标明:68 个单元测试已通过,但按钮位置、卡片视觉、窄窗口等仍需人工确认。生态上 DSH 强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-selection-translate 把「选中 → 点翻译 → 看卡片」收进 DSH 桌面客户端,复用思考翻译 bundle 的 Bing/Google 链路,免 API key、免构建。若你需要在 Harness 里就地看懂一段外文,可先装好思考翻译依赖,再从社区目录或 npm 包名安装本插件,按上文路径设置语言与服务后试用。
- 目录页:https://www.skillhub.cn/plugins/ringo-x/dsh-selection-translate
- GitHub:https://github.com/ringo-x/dsh-selection-translate