🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

思维链翻译 MUMU-DADA/dsh-cot-translate

DeepSeek Harness
MUMU-DADA15 天前有提交已提供中文文档扫描:含敏感能力

把模型思考过程实时译成中文,原文与上下文不变

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/21 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add MUMU-DADA/dsh-cot-translate
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]!
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
数据截至 2026/10/22·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/05·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 15 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(unknown · 2026/10/22) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 39 处,展示前 38 条)
  • 发起网络请求
    src/client/api.ts:9
    const response = await fetch(path, { signal: AbortSignal.timeout(timeoutMs) })
  • 发起网络请求
    src/client/api.ts:20
    const response = await fetch(path, {
  • 发起网络请求
    src/client/translate.ts:140
    const result = await this.request(chunks.slice(start, end))
  • 读取本地文件
    src/host/models.ts:123
    return existsSync(path) ? path : undefined
  • 读取本地文件
    src/host/models.ts:152
    const installed = existsSync(path)
  • 读取本地文件
    src/host/models.ts:160
    bytes: installed ? statSync(path).size : 0,
  • 写入本地文件
    src/host/models.ts:205
    mkdirSync(entry.bundled ? bundledDir() : managedDir(), { recursive: true })
  • 写入本地文件
    src/host/models.ts:220
    await pipeline(body, createWriteStream(temp))
  • 写入本地文件
    src/host/models.ts:221
    renameSync(temp, target)
  • 读取本地文件
    src/host/models.ts:228
    if (existsSync(temp)) unlinkSync(temp)
  • 删除本地文件
    src/host/models.ts:228
    if (existsSync(temp)) unlinkSync(temp)
  • 读取本地文件
    src/host/models.ts:241
    if (existsSync(path)) unlinkSync(path)
  • 删除本地文件
    src/host/models.ts:241
    if (existsSync(path)) unlinkSync(path)
  • 读取本地文件
    src/host/models.ts:254
    if (existsSync(target)) return
  • 写入本地文件
    src/host/models.ts:258
    mkdirSync(bundledDir(), { recursive: true })
  • 写入本地文件
    src/host/models.ts:259
    renameSync(legacy, target)
  • 读取本地文件
    src/host/persistent-cache.ts:68
    if (!existsSync(this.dir)) return
  • 读取本地文件
    src/host/persistent-cache.ts:71
    shards = readdirSync(this.dir)
  • 读取本地文件
    src/host/persistent-cache.ts:79
    names = readdirSync(shardDir)
  • 读取本地文件
    src/host/persistent-cache.ts:88
    const stat = statSync(path)
  • 读取本地文件
    src/host/persistent-cache.ts:104
    const raw = readFileSync(meta.path, 'utf8')
  • 写入本地文件
    src/host/persistent-cache.ts:113
    utimesSync(meta.path, new Date(now), new Date(now))
  • 写入本地文件
    src/host/persistent-cache.ts:133
    mkdirSync(join(this.dir, key.slice(0, 2)), { recursive: true })
  • 写入本地文件
    src/host/persistent-cache.ts:135
    writeFileSync(temp, payload, 'utf8')
  • 写入本地文件
    src/host/persistent-cache.ts:136
    renameSync(temp, path)
  • 删除本地文件递归
    src/host/persistent-cache.ts:161
    rmSync(this.dir, { recursive: true, force: true })
  • 删除本地文件
    src/host/persistent-cache.ts:166
    unlinkSync(meta.path)
  • 删除本地文件
    src/host/persistent-cache.ts:195
    unlinkSync(meta.path)
  • 执行外部命令来自配置/变量
    src/host/runtime.ts:46
    const child = spawn(bin, args, { detached: true, stdio: 'ignore', windowsHide: true })
  • 读取本地文件
    src/host/runtime.ts:171
    if (existsSync(candidate)) return candidate
  • 读取本地文件
    src/host/runtime.ts:180
    if (!existsSync(dir)) return undefined
  • 读取本地文件
    src/host/runtime.ts:182
    const files = readdirSync(dir).filter((name) => name.toLowerCase().endsWith('.gguf'))
  • 读取本地文件
    src/host/runtime.ts:270
    if (existsSync(candidate)) return candidate
  • 读取本地文件
    src/host/runtime.ts:276
    if (existsSync(candidate)) return candidate
  • 读取本地文件
    src/host/settings.ts:106
    if (!existsSync(file)) return { ...DEFAULT_SETTINGS }
  • 读取本地文件
    src/host/settings.ts:108
    return normalizeSettings(JSON.parse(readFileSync(file, 'utf8')))
  • 写入本地文件
    src/host/settings.ts:118
    mkdirSync(dirname(file), { recursive: true })
  • 写入本地文件
    src/host/settings.ts:119
    writeFileSync(file, `${JSON.stringify(settings, null, 2)}\n`, 'utf8')
扫描于 2026/11/5(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-ui-chat@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-settings
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DSH 思维链/推理翻译插件:把 reasoning 实时翻译成中文,本地模型优先,原文与上下文不变 | 为 DeepSeek Harness 提供显示层推理翻译,本地优先,支持 9 种界面语言

README

由 DeepSeek 最新模型翻译生成
dsh-cot-translate 在 DeepSeek Harness(DSH) 界面中,把模型的思维链(reasoning / chain-of-thought)实时翻译成中文或多国语言的显示层插件。默认优先使用本地翻译模型(基于 llama.cpp 的 llama-server,可选 Ollama),全部不可用时自动降级到免费在线翻译。 兼容环境:DSH 0.2.0-rc.2 / 0.2.1-rc.2 + Cordis 4.0.4 / 4.0.5(DSH Desktop 内置版本) 与 GenUI 插件共存:只挂原生 ReasoningRow([data-variant="think"]),不替换 assistant-step 渲染器,因此与 @changfenhuang/dsh-genui 这类只接管代码块 / 面板的生成式 UI 插件互不干扰(2026-10-20 实测)。 它解决什么问题? 很多模型即使在中文对话里也习惯用英文思考。这个插件只专注做好一件事:在不改动任何对话数据的前提下,把模型的思考过程实时翻译给你看。 - 展开即见双语对照:点开任意一条 Think 思考块,左侧是原文、右侧是译文,按段落一一对齐;鼠标移到任意一段上,左右两边会同时高亮,方便逐句对照。
展开完整文档(README 剩余 1 节)
dsh-cot-translate

在 DeepSeek Harness(DSH) 界面中,把模型的思维链(reasoning / chain-of-thought)实时翻译成中文或多国语言的显示层插件。默认优先使用本地翻译模型(基于 llama.cpp 的 llama-server,可选 Ollama),全部不可用时自动降级到免费在线翻译。

兼容环境:DSH 0.2.0-rc.2 / 0.2.1-rc.2 + Cordis 4.0.4 / 4.0.5(DSH Desktop 内置版本)

与 GenUI 插件共存:只挂原生 ReasoningRow([data-variant="think"]),不替换 assistant-step 渲染器,因此与 @changfenhuang/dsh-genui 这类只接管代码块 / 面板的生成式 UI 插件互不干扰(2026-10-20 实测)。

它解决什么问题?

很多模型即使在中文对话里也习惯用英文思考。这个插件只专注做好一件事:在不改动任何对话数据的前提下,把模型的思考过程实时翻译给你看。

- 展开即见双语对照:点开任意一条 Think 思考块,左侧是原文、右侧是译文,按段落一一对齐;鼠标移到任意一段上,左右两边会同时高亮,方便逐句对照。
- 纯画面显示、零上下文污染:译文只在你的屏幕上显示,绝不写回会话记录,也不会进入模型的上下文影响后续回答。
- 代码与技术内容原样保留:代码块、行内代码、文件路径、终端命令、网址链接、函数调用(如 fn())在翻译前会自动剥离保护,100% 保持原样,不会被误翻。
- 支持 33+ 种译文语言:基于腾讯混元 Hy-MT2 专用翻译模型,支持简繁中文、英、日、韩、法、德、西、葡、俄、阿、泰、越、印尼、粤语等 30 余种语言互译。
- 9 种插件界面语言(i18n):设置页与双语面板内置 简体中文、English、繁體中文、日本語、한국어、Français、Deutsch、Español、Русский,跟随 DSH 界面语言即时切换。
- 隐私兜底不报错:默认只在本机翻译,不会自动把原文发给第三方;本地模型不可用时直接显示英文原文,不弹窗、不卡对话。需要在线兜底时,必须在设置页显式开启「允许在线翻译(Google)」。

实际效果

展开对话里的 Think 思考行后,思考区会变成左原文 / 右译文的双栏对照:

| 原文 | 译文 |
| I should check the repo layout first. | 我应该先看看仓库结构。 |
| Run npm test before touching the host routes. | 修改服务端路由前先运行 npm test。 |

- 悬停联动高亮:鼠标移到任意一行,左右两栏对应段落同时高亮。
- 纯代码段落自动跳过:只有代码或路径的段落,右栏会直接标示“技术内容,不翻译”。
- 窄窗口自适应:当区域宽度小于 520px 时,自动切换为上下堆叠排版。
- 折叠自动还原:收起 Think 行后,立即恢复为 DSH 原本的样式。

快速安装与卸载

安装到 DSH 的 web profile(开发期可直接传入本仓库路径)
dsh plugin --profile web add <本仓库路径>

安装后请完整重启 DSH Desktop(HMR 热更新不监听 node_modules)

发布包:从 GitHub Releases 下载 dsh-cot-translate-0.2.0.tgz,执行 dsh plugin --profile web add <下载的tgz路径>。发布包已含构建产物,不含模型权重和 llama.cpp;请另行下载。若从源码安装,先在仓库根目录执行 npm ci(自动构建),再执行上面的安装命令。

卸载插件:

dsh plugin --profile web remove dsh-cot-translate
同样需要完整重启 DSH Desktop

设置页说明(设置 → 思维链翻译)

在 DSH 左下角打开「设置 → 思维链翻译」,所有改动都会保存在 ~/.dsh/cot-translate/settings.json 并立即生效(无需重启):

| 设置项 | 功能说明 |
| 启用翻译 | 总开关;关闭后思考块恢复只显示原文。 |
| 翻译时机 | 半自动(手动点开思考块才开始翻)/ 自动(思考刚生成完就在后台自动翻好,折叠状态也提前翻,点开秒出译文)。 |
| 译文语言 | 下拉选择要翻译成的语言(支持 Hy-MT2 的 33+ 种语言);首次安装默认跟随 DSH 客户端语言。 |
| 本地翻译模型 | 默认使用插件自带的 Hy-MT2 1.8B Q4_K_M(保底模型,不可删除,占显存约 1.5GB、速度最快);也可在页面上一键下载、更新或删除更高精度的 1.8B Q8_0(约 2.3GB 显存)和 7B Q4_K_M(约 4.5GB 显存,翻译质量最好)。 |
| 使用当前对话的 API 模型翻译 | 开启后直接借用当前聊天选中的 API 模型做翻译(速度更快、不占本机显卡显存,但会消耗 API 额度);本地模型退居保底。 |
| 允许在线翻译(Google) | 默认关闭。关闭时只在本机翻译,本地模型失败就显示原文;开启后,本地模型不可用时才把这批思考原文发送给 Google 免费接口。涉及隐私,请自行确认网络与数据边界。 |
| 翻译缓存 | 译文缓存在本地磁盘 ~/.dsh/cot-translate/cache/(只存译文,原文不落盘,上限 50MB,超限自动清理最旧条目)。重启后看过的思考 0ms 直接命中,支持一键清空。 |
| 本地服务端口 | llama-server 使用的本机端口(默认 28457,特意避开 8080 等常见冲突端口)。页面会实时显示端口状态(空闲 / 正在使用 / 被其他程序占用)。 |
| 本地模型速度测试 | 用一段固定测试文本跑一遍当前翻译链,测每段平均耗时。 |

本地模型加速配置(推荐)

本地推理使用 llama.cpp 官方免安装二进制文件 llama-server——无需安装器、没有系统托盘图标、不开机自启、删文件夹即卸载:

1. 下载运行环境:前往 ggml-org/llama.cpp Releases 下载对应系统的压缩包(例如 Windows 显卡推荐下载 Vulkan 版 llama--bin-win-vulkan-x64.zip,仅约 35MB,无需安装庞大的 CUDA 工具包),解压到:
- Windows:%USERPROFILE%\tools\llama.cpp\
- macOS / Linux:~/tools/llama.cpp/
2. 准备模型文件:
- 默认保底模型位于 <插件根目录>/models/Hy-MT2-1.8B-Q4_K_M.gguf(约 1.08GB,来自 tencent/Hy-MT2-1.8B-GGUF);如果缺失,可以直接在插件设置页点击「下载」或「更新」。
- 在设置页下载的其它可选模型(1.8B Q8 / 7B Q4)会自动存放在 ~/.dsh/cot-translate/models/。
3. 全自动按需启动:你不需要手动去跑命令行启动服务。当需要翻译时,插件会自动在后台无窗口拉起 llama-server(带 --no-webui 参数,默认监听 127.0.0.1:28457)。在主流 10GB 级独显上,1.8B 模型热调用仅需约 50ms/段。

默认不会联网:本机没有可用模型时,插件直接显示原文。只有你在设置页显式开启「允许在线翻译(Google)」后,才会用免费的 Google 翻译兜底。

界面多语言(i18n)

插件界面会自动跟随 DSH 的语言设置(「设置 → 通用 → 语言」):

- 已内置完整翻译:简体中文(zh)、English(en)、繁體中文(zh-Hant)、日本語(ja)、한국어(ko)、Français(fr)、Deutsch(de)、Español(es)、Русский(ru)。
- 切换语言后,设置页与思考块双语面板会立即刷新(首次安装插件后需重启一次 DSH 以加载新增语言项)。
- 如果想修改文案或新增其它语言,只需编辑 src/client/locales/<语言>.json 并运行 npm run i18n:status 查看进度,详见 docs/I18N.md。

目录结构与开发指南

dsh-cot-translate/
├── src/
│ ├── index.ts # 服务端(host)入口:注册 /_cotx/ 同源路由 │ ├── shared.ts # 前后端共享数据类型 │ ├── host/ │ │ ├── control.ts # 设置读写、模型下载管理、速度自测与服务重启编排 │ │ ├── settings.ts # 用户设置持久化(~/.dsh/cot-translate/settings.json) │ │ ├── models.ts # 本地模型目录、HuggingFace 下载与状态查询 │ │ ├── languages.ts # Hy-MT2 支持的 33+ 种目标语言映射表 │ │ ├── persistent-cache.ts # 50MB 磁盘译文缓存(只存译文,SHA-256 哈希键) │ │ ├── cache.ts # 内存 LRU 缓存 + 30 秒失败冷却缓存 │ │ ├── providers.ts # llamacpp / ollama / google 翻译适配器 │ │ ├── session-model.ts # 借用当前对话 API 模型翻译的适配器 │ │ ├── runtime.ts # 按需后台拉起与关闭 llama-server / ollama │ │ ├── chain.ts # 多翻译源按序尝试、超时控制与失败降级 │ │ └── routes.ts # HTTP 路由参数校验与本机安全边界 │ └── client/ │ ├── index.ts # 浏览器端(client)入口:注册多语言、样式、设置页与 DOM 观察器 │ ├── attach.ts # 监听展开的思考块并就地挂载双语对照面板 │ ├── bilingual.ts # 双语对照面板渲染、逐段并发请求与流式输出节流 │ ├── settings-view.ts # 「设置 → 思维链翻译」完整设置页面 │ ├── strip.ts # 代码、路径、URL、函数调用保护与句子分批 │ ├── text.ts # 段落切分与行内代码高亮渲染 │ ├── translate.ts # 前端翻译请求调度与客户端缓存 │ ├── prefs.ts # 客户端设置同步与首次默认语言检测 │ ├── styles.ts # 双栏排版、悬停联动高亮与设置页样式 │ └── locales/ # 9 种界面语言的 JSON 翻译字典与格式化工具 ├── test/ # 自动化测试(单元逻辑 + jsdom 渲染 + i18n + HTTP 端到端) ├── scripts/ # 构建脚本、i18n 进度检查器与 DSH 槽位导出工具 ├── docs/ # 架构设计、决策记录与多语言贡献指南 └── THIRD_PARTY_LICENSES.md # 第三方模型与运行时的版权及许可证说明

常用开发命令:

npm install
npm run build # 编译生成 lib/index.js(服务端)与 lib/client.js(浏览器端)
npm run typecheck # TypeScript 类型检查
npm test # 运行全部自动化测试(会自动先执行 build)
npm run i18n:status # 检查所有界面语言 JSON 字典的翻译完成度
npm run slots chat # 查看 DSH 运行时里可用的客户端 UI 槽位

深入了解文档

| 文档 | 说明 |
| docs/ARCHITECTURE.md | 架构说明:前后端如何配合、为什么采用 DOM 注入、缓存与安全边界 |
| docs/DECISIONS.md | 决策记录(ADR-001 ~ ADR-022):技术选型背后的原因与取舍 |
| docs/I18N.md | 多语言(i18n)字典结构与翻译贡献指南 |
| THIRD_PARTY_LICENSES.md | 第三方组件(Hy-MT2 模型、llama.cpp)许可证详情 |

许可证与第三方组件

本插件本体基于 MIT 许可证 发布(© 2026 dsh-cot-translate contributors)。

插件运行过程中使用的第三方模型与工具遵循各自的开源许可证,完整说明见 THIRD_PARTY_LICENSES.md:

| 组件 | 版权归属 | 许可证 |
| Hy-MT2 翻译模型(自带保底 + 可选下载) | © Tencent Hunyuan(腾讯混元) | Apache-2.0 |
| llama.cpp / llama-server(本地推理运行时) | © ggml-org contributors | MIT |
预览分享卡片长什么样 ↓MUMU-DADA/dsh-cot-translate
分享 · DeepSeek Harness Hub
MUMU-DADA/dsh-cot-translate

把模型思考过程实时译成中文,原文与上下文不变

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部