前言¶
在 DeepSeek Harness(DSH)里读文档、翻代码或浏览侧栏网页时,经常需要把一小段外文或术语译成中文。切到浏览器或单独开翻译工具会打断上下文;把整段内容贴进对话区又偏重。下面介绍的 dsh-translate 把翻译挂在右侧栏:在文件树、文档预览或侧栏浏览器里选中文字,选区正下方弹出翻译卡片,不必离开当前工作面。
这是什么¶
dsh-translate 由社区维护者 Mopemop 发布,在 SkillHub 插件目录 归类为「联网工具」。当前版本为 0.9.4(MIT 许可证)。插件在 DSH 右栏监听文本选区:同文档内直接读 DOM;侧栏 Electron <webview> 通过 executeJavaScript 桥接并约 250ms 轮询。译文经宿主进程请求三家引擎,页面 origin 为 dsh-app://app,传统翻译端点无 CORS,模型凭据也只能由宿主读取,因此请求统一走 POST/GET /dsh-translate/api/translate。
核心功能¶
划词与卡片交互¶
在 Markdown / 代码 / 文本 / PDF 文字层 的文档预览里划词,或在 侧栏浏览器 tab 里划词,都会出现同一张卡片。对话区划词不会触发;按 Escape、点卡片外、滚动或改窗口会收起。卡片贴在选区下方,随选区滚动重定位;卡片内部滚动不会误关。几何范围限制在右侧栏内([data-sidebar-right-session]),避免盖住对话区且无法点击。在侧栏外松手完成选区时,仍可通过捕获阶段 mouseup 与选区稳定逻辑弹出卡片。
切换引擎或语言时,旧译文留在原位(仅变淡),引擎标签显示「更新中…」,避免闪白;每次请求带单调递增的 requestId,迟到结果不会覆盖新一轮译文。
三条翻译引擎¶
| 引擎 | 说明 |
|---|---|
| 微软翻译 | 默认首选。免费路径:edge.microsoft.com 取 JWT,失败则走 Bing 网页版 cn.bing.com/translator;可配置 microsoftApiKey 走 Azure Translator |
| Google 翻译 | 免费路径:translate.googleapis.com(gtx);可配置 googleApiKey 走 Cloud Translation v2。需网络能访问该域名 |
| 模型 | 通过 ctx.llm.stream,跟随当前对话的模型(读会话投影 modelSelection,读不到则限时读日志或退回设置里的全局默认) |
点卡片底部 引擎标签 打开下拉(带说明、当前项打勾),可在 自动 → 微软 → Google → 模型 间选择;自动 按配置顺序依次尝试(默认 微软 → Google → 模型)。选择会记住(本地键 dsh-translate:engine)。默认显式使用微软,而非自动,以减少等待前一家超时(免费引擎单次超时 8s)的情况。
源语言、目标语言 各有一个紧凑下拉:默认 自动检测 → 中文,共 72 门目标语言可选;选择会记住(dsh-translate:source / dsh-translate:target)。三家都失败时,卡片会列出每一路的失败原因,并支持重试。宿主按引擎、目标语言、源语言维度缓存结果。
模型跟随当前对话¶
模型路径优先读 sessionController.projections({ sessionId }) 中的 modelSelection(pending → lastUsed),避免整份会话日志解析(体量大、曾导致「模型翻译超时」)。老版本或无投影时,限时 1.5s 读 inspect(sessionId);再不行则用 agentDefaultModel.currentSelection()。可通过 GET /dsh-translate/api/health 的 sessionFollow 查看本次使用的 provider/model 与回落原因。配置 followSessionModel: false 时始终用全局默认模型。
安装与启用¶
插件以 Cordis bundle 形式提供 cordis.patch.yml。从 GitHub 仓库 或 SkillHub 目录页 获取包后,按你当前 DSH 环境的插件安装方式接入(目录页标注为可安装;README 未给出单独的 dsh plugin add 字面命令,请以你使用的 DSH 版本文档为准)。
修改配置后须重启 DSH。 在 profile 的 cordis.patch.yml 中可写入(entry config 优先于环境变量):
- id: dsh-translate
config:
engines: ['microsoft', 'google', 'llm'] # 自动模式的顺序;只写一家即只用一家
freeTimeoutMs: 8000 # 传统引擎超时
llmTimeoutMs: 45000 # 模型引擎超时
followSessionModel: true # 模型是否跟随当前对话
googleApiKey: '' # 填了走 Cloud Translation v2
microsoftApiKey: '' # 填了走 Azure Translator
microsoftRegion: '' # Azure 多区域资源需要
也可用环境变量:DSH_TRANSLATE_GOOGLE_KEY、DSH_TRANSLATE_MICROSOFT_KEY(及 DSH_TRANSLATE_MICROSOFT_REGION)。
典型用法¶
- 在右栏打开仓库文件、Markdown 预览或内置浏览器,用鼠标选中需要翻译的一段文字。
- 在选区下方查看译文;需要换引擎时点底部引擎标签,在列表中选择微软、Google、模型或自动。
- 若原文语言固定,点左侧源语言下拉(默认可保持「自动检测」);点右侧目标语言下拉选择输出语言(默认中文)。
- 若 Google 免费端点在本机网络下不可达,卡片会标明网络原因;可为 DSH 宿主进程配置代理(Node 24 支持
--use-env-proxy,读取HTTPS_PROXY),例如在同一终端启动 DSH 前:
$env:HTTPS_PROXY = 'http://127.0.0.1:7990'
$env:NODE_OPTIONS = '--use-env-proxy'
- 排查模型路径时,可请求
GET /dsh-translate/api/health查看sessionFollow与引擎健康信息。
适用场景与注意¶
适合在 DSH 右栏内阅读外文文档、代码注释或网页片段、又不想频繁切换窗口的开发者。微软免费通道在作者实测环境中 edge.microsoft.com/translate/auth 可能 404,会回落 Bing 网页版;Google 免费端点在大陆直连常不可用,属网络环境事实,可配代理或改用微软/模型路径。
插件在 当前 DSH 宿主进程权限 下运行,会向微软、Google 或已配置的模型服务发起网络请求;安装前请自行审阅 源码 与 MIT 许可证,勿在配置中泄露 API Key。SkillHub 为社区目录站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-translate 把划词翻译收进 DSH 右栏:三引擎、可记的语言与引擎选择、宿主侧收口请求与缓存,并尽量让卡片行为与侧栏布局一致。进一步了解与问题反馈: