@lynn123411/dsh-chat-translate
DeepSeek Harness Web 界面的工具调用与思考链智能翻译插件。自动将当前会话中工具调用标题翻译为中文,并可在开启 AI 翻译后进一步翻译思考正文,采用非侵入式双语对照渲染(点击译文可切换原文),不污染会话上下文。内置 OpenAI 兼容 AI 翻译与免 Key Bing 兜底双通道。配置详见 docs/配置.md。
特性
- 工具调用标题自动翻译:仅在渲染层将工具调用动作描述(如
Locate DSH home directory structure)翻译为中文,回答正文永不翻译。
- 思考链翻译(按钮触发,仅 AI 通道):每张思考卡的「Think」右侧有一个 18px 按钮,点击才翻译这条思考正文,不会自动翻译;折叠时按钮排在标题与折叠摘要之间。三态:未翻译=描边「译」字,翻译中=圈内圆环旋转(系统开启「减弱动态效果」时改为静态高亮),已翻译=实心高亮,再点一次整条切回原文(正文里的点击不再切换,思考链一律靠这个按钮变更)。思考还在流式输出(
data-state="running")时按钮置灰;折叠状态下点击会先自动展开这张卡片;翻译中再点忽略;失败时按钮停止动画、回到可翻译状态,可以再点重试。
- 缓存与显示规则:展开卡片时若整条思考的段落都已命中本地缓存,直接显示中文(不发请求);只命中一部分时展开仍是原文,点按钮时已命中的立刻出现、其余才发请求;翻译中途折叠卡片,本次翻译会跑完并进缓存,再展开点一下即可显示。思考卡折叠起来的那一行摘要永不翻译;代码块原样保留;混合块(列表项文字加子列表或代码块)只翻行内文字,嵌套结构留在原位。
- 按块翻译与打包:正文按 markdown 块级元素切分,相邻块打包成一个请求,输入上限 4096 估算 token、输出上限 8192 token;单个块超过输入上限时按空行、单行、句末依次切分,译回后拼回;客户端按 2048 估算 token 分块,逐块请求、逐块挂载,中文一段一段出现。请求走独立串行队列,同时最多一个在途,超时独立(默认 600 秒,可调至 900 秒),译文进独立缓存池(客户端与磁盘各 300 条),与工具标题互不挤占。
- AI 翻译通道(OpenAI 兼容协议):对接任意 OpenAI 兼容的
chat/completions 服务(OpenAI、DeepSeek、通义、Ollama、本地 vLLM 等),Base URL 与模型可在设置面板配置;API Key 经 DSH 凭据服务读写 ~/.dsh/.credentials.yaml 的 TRANSLATE_API_KEY,填写后立即生效。工具标题与思考链都由它承接。
- Bing 免 Key 兜底通道:内置微软 Bing 网页翻译(免 Key、国内直连),只用于工具调用标题的兜底;AI 未配置或请求失败时自动降级,思考链翻译永远不走这条通道。双通道均有独立开关,同时关闭则不翻译。
- 非侵入式 DOM 挂载与双语对照:非侵入式包装保留原始 DOM 节点与 React Fiber 事件系统;工具标题点击译文原地切换单条,思考链只由标题右侧的按钮在原文与中文之间整条切换,正文里的点击不改变原文与译文。
- 智能内容脱敏与占位符保护:翻译前对多行代码块、内联代码、URL 链接、文件路径及 CLI 命令行参数进行占位符脱敏与鲁棒还原,杜绝代码与路径被误翻译。占位符为
⟦<随机短码><序号>⟧ 形式的独立片段,构建时会在紧邻拉丁字母的一侧补一个空格,避免译回时与相邻单词粘连。译文只有在每个占位符都按原顺序被完整还原时才被采用:占位符被改写、遗失或多个重复时整条译文作废并换通道,退回原文,且绝不写入缓存;升级前旧格式写入的污染译文在读取时被驱逐。
- 当前会话作用域:仅翻译当前查看的会话,切换会话自动跟随新内容;视口懒加载(150px 缓冲)与文档顺序排队,译文按阅读顺序出现。
- 智能调度与熔断保护:工具标题走 1–100 动态并发限流队列、AI 30s / Bing 2s 超时、连续失败熔断自愈、在途请求合并去重、7 天 LRU 磁盘持久化缓存(工具标题
~/.dsh/dsh-chat-translate/cache.json,思考链 ~/.dsh/dsh-chat-translate/think-cache.json)。
- DSH 原生配置接入:配置走 DSH
settings 服务(用户层写入 ~/.dsh/settings.yaml 的 dsh-chat-translate 段)、密钥走 DSH credentials 服务、设置面板经 settingsScope 与 credentials Remote API 读写——无任何自研配置文件。
- 设置面板集成:设置面板挂在与
dsh-smooth-stream 共用的「设置 - 阅读体验」共享页(本插件贡献其中一张卡片),页内提供总开关、AI/Bing 通道开关、「显示思考链翻译按钮」(默认打开)与思考链超时、Base URL 与模型配置、通道测试与并发数调节。按钮的显示还要求 AI 通道打开且已配置(Key / Base URL / 模型齐全),缺任何一条都不注入按钮并还原已翻译内容。
- 与 dsh-smooth-stream 协同:该插件的思考卡即使折叠也把正文留在 DOM 里,本插件因此能在思考流式期间就地翻译定型段落;它挂载的译文容器沿用
dsh-tidy-translated-block,会由 smooth-stream 的逐字显示机制按字符显现。
安装
dsh plugin --profile web add @lynn123411/dsh-chat-translate