dsh-think-translate 1.2.19 → 1.2.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.ru.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/hero.ru.png?v=1.2.19" alt="dsh-think-translate — Мысли ИИ — на вашем языке" width="100%" />
2
+ <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/hero.ru.png?v=1.2.21" alt="dsh-think-translate — Мысли ИИ — на вашем языке" width="100%" />
3
3
  </p>
4
4
 
5
5
  <p align="center">
@@ -8,9 +8,9 @@
8
8
  </p>
9
9
 
10
10
  <p align="center">
11
- <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/badge-mit.ru.svg?v=1.2.19" alt="Лицензия MIT" />
12
- <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/badge-local.ru.svg?v=1.2.19" alt="Локальный Ollama" />
13
- <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/badge-original.ru.svg?v=1.2.19" alt="Оригиналы сохранены" />
11
+ <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/badge-mit.ru.svg?v=1.2.21" alt="Лицензия MIT" />
12
+ <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/badge-local.ru.svg?v=1.2.21" alt="Локальный Ollama" />
13
+ <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/badge-original.ru.svg?v=1.2.21" alt="Оригиналы сохранены" />
14
14
  </p>
15
15
 
16
16
  <p align="center">
@@ -18,7 +18,7 @@
18
18
  </p>
19
19
 
20
20
  <p align="center">
21
- <a href="#quick-start"><img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/nav-quick-start.ru.svg?v=1.2.19" alt="Установка" height="24" /></a> &nbsp;·&nbsp; <a href="#demo"><img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/nav-demo.ru.svg?v=1.2.19" alt="Демонстрации" height="24" /></a> &nbsp;·&nbsp; <a href="#features"><img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/nav-features.ru.svg?v=1.2.19" alt="Возможности" height="24" /></a> &nbsp;·&nbsp; <a href="#comparison"><img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/nav-comparison.ru.svg?v=1.2.19" alt="Сравнение" height="24" /></a> &nbsp;·&nbsp; <a href="#faq"><img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/nav-faq.ru.svg?v=1.2.19" alt="Вопросы" height="24" /></a>
21
+ <a href="#quick-start"><img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/nav-quick-start.ru.svg?v=1.2.21" alt="Установка" height="24" /></a> &nbsp;·&nbsp; <a href="#demo"><img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/nav-demo.ru.svg?v=1.2.21" alt="Демонстрации" height="24" /></a> &nbsp;·&nbsp; <a href="#features"><img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/nav-features.ru.svg?v=1.2.21" alt="Возможности" height="24" /></a> &nbsp;·&nbsp; <a href="#comparison"><img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/nav-comparison.ru.svg?v=1.2.21" alt="Сравнение" height="24" /></a> &nbsp;·&nbsp; <a href="#faq"><img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/nav-faq.ru.svg?v=1.2.21" alt="Вопросы" height="24" /></a>
22
22
  </p>
23
23
 
24
24
  ---
@@ -29,10 +29,10 @@
29
29
  <table>
30
30
  <tr>
31
31
  <td width="50%" align="center" valign="bottom">
32
- <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/demo/demo.gif?v=1.2.19" alt="Демо 1 · Рассуждения и ответы" width="100%" />
32
+ <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/demo/demo.gif?v=1.2.21" alt="Демо 1 · Рассуждения и ответы" width="100%" />
33
33
  </td>
34
34
  <td width="50%" align="center" valign="bottom">
35
- <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/demo/demo2.gif?v=1.2.19" alt="Демо 2 · Другие операции" width="100%" />
35
+ <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/demo/demo2.gif?v=1.2.21" alt="Демо 2 · Другие операции" width="100%" />
36
36
  </td>
37
37
  </tr>
38
38
  <tr>
@@ -45,7 +45,7 @@
45
45
  ## Сравнение с официальным плагином перевода
46
46
 
47
47
  <p align="center">
48
- <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/translation-comparison.ru.png?v=1.2.19" alt="Сравнение с официальным плагином перевода" width="100%" />
48
+ <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/translation-comparison.ru.png?v=1.2.21" alt="Сравнение с официальным плагином перевода" width="100%" />
49
49
  </p>
50
50
 
51
51
  Включайте этот плагин или официальный переводчик рассуждений. Оба управляют интерфейсом рассуждений.
@@ -137,6 +137,8 @@ dsh plugin --profile web add dsh-think-translate@latest
137
137
 
138
138
  ### Глоссарий: единые термины
139
139
 
140
+ Встроенный глоссарий и свои записи имеют независимые флажки в соответствующих разделах и применяются сразу. Отключение не удаляет текст. Необязательный список содержит 60 английских терминов ИИ, программирования и продуктов для девяти языков. Активные свои записи приоритетны и имеют ещё 128 мест. Несохранённые изменения выделяют кнопку сохранения и напоминают о черновиках других языков. Широкий экран использует соседние панели и горизонтальный статус; узкий и диалоги — одну колонку.
141
+
140
142
  Для каждого языка перевода есть свой глоссарий в настройках и на боковой странице перевода. Введите оригинал => перевод, по одной паре на строку, и сохраните. Одинаковый текст с обеих сторон сохраняет название продукта.
141
143
 
142
144
  ```text
@@ -200,6 +202,10 @@ reasoning => рассуждение
200
202
  <details>
201
203
  <summary><b>Изменения и совместимость</b></summary>
202
204
 
205
+ **1.2.21** Исправляет повторные запросы перевода при быстрых обновлениях задач (#17). Перевод начинается после 500 мс без изменений.
206
+
207
+ **1.2.20** добавляет включаемый одним нажатием технический глоссарий из 60 терминов и названий продуктов для девяти языков. Ваши записи приоритетны и имеют отдельный лимит; просмотр и отключение их не удаляют.
208
+
203
209
  **1.2.19**: глоссарии по языкам, хранение ключей в DSH, кеш по настройкам, взаимное исключение с официальным плагином, усиленная защита технического текста и CI Windows/Linux.
204
210
 
205
211
  **1.2.18** добавляет постоянный элемент в боковой панели для управления переводом (переключается в настройках или на странице перевода, сохраняется для каждого браузера) и перерабатывает страницу перевода и диалог настроек в карточные разделы с адаптивной одноколоночной раскладкой в узких окнах.
package/README.zh-CN.md CHANGED
@@ -1,252 +1,262 @@
1
- <p align="center">
2
- <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/hero.zh-CN.png?v=1.2.19" width="100%" alt="dsh-think-translate:让 AI 的思考,用你的语言呈现" />
3
- </p>
4
-
5
- <p align="center">
6
- <b>为 DeepSeek Harness 提供显示层翻译。</b><br />
7
- 读懂思考,跟上任务,也看清回答。原文完整保留,译文不进入模型上下文。
8
- </p>
9
-
10
- <p align="center">
11
- <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/badge-mit.zh-CN.svg?v=1.2.19" alt="MIT License" />
12
- <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/badge-local.zh-CN.svg?v=1.2.19" alt="支持本地 Ollama" />
13
- <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/badge-original.zh-CN.svg?v=1.2.19" alt="保留原文与模型上下文" />
14
- </p>
15
-
16
- <p align="center">
17
- <b>中文</b> · <a href="https://github.com/UncleK/dsh-think-translate/blob/main/README.md">English</a> · <a href="https://github.com/UncleK/dsh-think-translate/blob/main/README.ja.md">日本語</a> · <a href="https://github.com/UncleK/dsh-think-translate/blob/main/README.ko.md">한국어</a> · <a href="https://github.com/UncleK/dsh-think-translate/blob/main/README.es.md">Español</a> · <a href="https://github.com/UncleK/dsh-think-translate/blob/main/README.fr.md">Français</a> · <a href="https://github.com/UncleK/dsh-think-translate/blob/main/README.de.md">Deutsch</a> · <a href="https://github.com/UncleK/dsh-think-translate/blob/main/README.ru.md">Русский</a> · <a href="README.pt.md">Português</a>
18
- </p>
19
-
20
- <p align="center">
21
- <a href="#quick-start"><img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/nav-quick-start.zh-CN.svg?v=1.2.19" alt="快速安装" height="24" /></a> &nbsp;·&nbsp; <a href="#demo"><img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/nav-demo.zh-CN.svg?v=1.2.19" alt="实际演示" height="24" /></a> &nbsp;·&nbsp; <a href="#features"><img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/nav-features.zh-CN.svg?v=1.2.19" alt="核心能力" height="24" /></a> &nbsp;·&nbsp; <a href="#comparison"><img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/nav-comparison.zh-CN.svg?v=1.2.19" alt="官方对比" height="24" /></a> &nbsp;·&nbsp; <a href="#faq"><img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/nav-faq.zh-CN.svg?v=1.2.19" alt="常见问题" height="24" /></a>
22
- </p>
23
-
24
- ---
25
-
26
- <a id="demo"></a>
27
- ## 看见思考发生
28
-
29
- <table>
30
- <tr>
31
- <td width="50%" align="center" valign="bottom">
32
- <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/demo/demo.gif?v=1.2.19" width="100%" alt="思考链与回答翻译的实际操作演示" />
33
- </td>
34
- <td width="50%" align="center" valign="bottom">
35
- <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/demo/demo2.gif?v=1.2.19" width="100%" alt="dsh-think-translate 第二段实际操作演示" />
36
- </td>
37
- </tr>
38
- <tr>
39
- <td align="center" valign="top">
40
- <sub>演示一 · 思考链与回答翻译</sub>
41
- </td>
42
- <td align="center" valign="top">
43
- <sub>演示二 · 更多实际操作</sub>
44
- </td>
45
- </tr>
46
- </table>
47
-
48
- <a id="comparison"></a>
49
- ## 与官方翻译插件对比
50
-
51
- <p align="center">
52
- <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/translation-comparison.zh-CN.png?v=1.2.19" width="100%" alt="与官方翻译插件的功能和首次上线日期对比" />
53
- </p>
54
-
55
- 本插件与官方思考翻译都接管思考界面,请二选一启用。检测到官方插件启用时,本插件暂停翻译并显示冲突提示;关闭官方插件后自动恢复,不会修改官方插件的启用状态。
56
-
57
- <a id="quick-start"></a>
58
- ## 一条命令,开始使用
59
-
60
- ```bash
61
- dsh plugin --profile web add dsh-think-translate
62
- ```
63
-
64
- 安装后**完整重启 DSH Web**,打开 **设置 → 思考链翻译**,选择目标语言和翻译提供方即可。 开启 **在侧边栏显示翻译入口**,即可把翻译设置固定到左侧全局面板列表。独立页面按翻译偏好、翻译服务和运行状态分成卡片,小窗口自动使用单栏布局;设置弹窗使用紧凑的单栏分区,控件样式与独立页面一致。选择保存在当前浏览器中,刷新页面或重启 DSH 后仍会保留;在设置窗口或翻译页面关闭此开关即可取消固定。
65
-
66
- <details>
67
- <summary>从 GitHub 安装、升级与其他安装方式</summary>
68
-
69
- 从 GitHub 安装:
70
-
71
- ```bash
72
- dsh plugin --profile web add github:UncleK/dsh-think-translate
73
- ```
74
-
75
- 升级 npm 版本:
76
-
77
- ```bash
78
- dsh plugin --profile web add dsh-think-translate@latest
79
- ```
80
-
81
- 安装或升级后均需完整重启 DSH。手动部署可通过目录联接把包链接到 profile,并在 `cordis.patch.yml` 中插入 `dsh-think-translate` 插件行;普通使用建议选择上面的安装命令。
82
-
83
- </details>
84
-
85
- <a id="features"></a>
86
- ## 需要读懂的,不只是思考链
87
-
88
- <table>
89
- <tr>
90
- <td width="50%" valign="top">
91
- <h3>思考链,边想边读</h3>
92
- <p>按段落与句子分批翻译。可选全部预翻译、懒加载历史,或仅在展开后翻译。</p>
93
- </td>
94
- <td width="50%" valign="top">
95
- <h3>任务与回答,一起跟上</h3>
96
- <p>覆盖任务卡片和输入区任务列表;回答正文提供独立翻译开关。</p>
97
- </td>
98
- </tr>
99
- <tr>
100
- <td valign="top">
101
- <h3>审查理由,也能看清</h3>
102
- <p>自动审查拒绝一次调用时,保留原文并追加目标语言的理由,原有操作按钮照常使用。</p>
103
- </td>
104
- <td valign="top">
105
- <h3>原文与代码,完整保留</h3>
106
- <p>代码、路径和命令在翻译前受到保护。译文只用于显示,不进入模型上下文。</p>
107
- </td>
108
- </tr>
109
- <tr>
110
- <td valign="top">
111
- <h3>本地模型,用时再加载</h3>
112
- <p>复用已有 Ollama 和模型,支持手动释放、禁用后释放与空闲自动释放。</p>
113
- </td>
114
- <td valign="top">
115
- <h3>提供方,按你的顺序工作</h3>
116
- <p>拖动排序并逐行启停。失败时尝试下一家,明显串语言的结果也会触发回退。</p>
117
- </td>
118
- </tr>
119
- </table>
120
-
121
- ### 连接你已经在用的提供方
122
-
123
- **Ollama · Google · Bing · OpenAI 兼容端点 · Anthropic Messages API**
124
-
125
- 也可以发现 DSH 已配置的提供方,无需重复填写端点和密钥。每一行都能单独测试,列表顺序就是尝试顺序。
126
-
127
- ```text
128
- 你的首选提供方 → 下一家已启用提供方 → … → 全部失败时保留原文
129
- ```
130
-
131
- <details>
132
- <summary>自定义端点、密钥与自动恢复</summary>
133
-
134
- - 自定义端点支持 OpenAI 兼容的 `/v1/chat/completions` 和原生 Anthropic Messages API。
135
- - 自动发现当前 DSH profile 及覆盖配置中的提供方;可重新扫描并加入翻译链。
136
- - 声明 `apiKeyEnv` 的提供方在请求时解析密钥,解析结果不会写回插件配置。
137
- - 手动输入的密钥通过 DSH 凭据服务保存,插件配置只保存引用;服务可用时自动迁移旧配置中的明文密钥。凭据服务不可用时拒绝保存新的明文密钥,迁移失败保留旧配置。
138
- - 配置接口不返回密钥值。编辑时留空保留旧密钥,勾选“移除已保存的密钥”才会删除;DSH 凭据文件由宿主保护,不代表系统钥匙串加密。
139
- - 成功译文缓存在当前浏览器,按提供方、模型和翻译配置区分;变更配置后不复用旧译文,已开始的旧请求也不会回写到新缓存。缓存版本升级会清理旧译文,但保留语言等首选项。
140
- - 失败结果在 Host 内存冷却 30 秒,之后翻译会恢复重试。
141
- - 已经是目标语言的正文会按语言检测规则跳过;提供方测试仍会真实发起请求。
142
-
143
- </details>
144
-
145
- ### 术语表:让译法保持一致
146
-
147
- 在设置或侧边栏翻译页面编辑当前目标语言的术语表,每行填写“原词 => 译词”,点击“保存术语表”生效。两边写相同内容,可以固定保留产品名。
148
-
149
- ```text
150
- DeepSeek => DeepSeek
151
- agent => 智能体
152
- reasoning => 思考过程
153
- ```
154
-
155
- 每种目标语言独立保存,最多 128 条;英文按完整词匹配且不区分大小写,长词优先。保存会让旧译文缓存失效,关闭术语表会保留已填写的词条。术语只作用于实际翻译的正文,不改写原文、代码、路径或命令。
156
-
157
- ### 本地翻译模型,按需加载与释放
158
-
159
- | 你的操作 | 插件行为 |
160
- |---|---|
161
- | 实际翻译或点击测试 | 按需启动服务、加载所选模型 |
162
- | 点击“释放模型内存” | 当前翻译结束后释放;保留模型文件、开关和排序 |
163
- | 取消勾选本地提供方 | 停用并释放所选模型 |
164
- | 重新勾选或打开设置 | 不预加载;下一次实际翻译时再加载 |
165
- | 设置空闲释放 | 默认 5 分钟,可选 1 / 5 / 10 / 30 / 60 分钟或关闭 |
166
-
167
- 空闲策略从下次使用起生效,由 Ollama 对当前模型计时,不修改全局环境变量。缺少软件或模型时,只有点击准备按钮后才安装或下载,并显示进度。
168
-
169
- <a id="languages"></a>
170
- ### 让语言设置跟着你
171
-
172
- 中文 · English · 日本語 · 한국어 · Español · Français · Deutsch · Русский · Português
173
-
174
- 9 种目标语言、设置面板和任务文案保持一致,现已包含葡萄牙语,选择会在刷新后保留。
175
-
176
- <a id="faq"></a>
177
- ## 遇到问题,先看这里
178
-
179
- <details>
180
- <summary><b>安装或升级后,看不到翻译入口</b></summary>
181
-
182
- 完整重启 `dsh web`。客户端模块图在进程启动时组合,仅刷新页面有时不足以加载新插件。设置页底部会显示实际安装包的版本号。
183
-
184
- </details>
185
-
186
- <details>
187
- <summary><b>本地模型列表为空</b></summary>
188
-
189
- 检查 `ollama list` 或 `/api/tags`,确认运行中的服务使用了正确的模型目录;同时检查该服务生效的 `OLLAMA_MODELS`。不需要重新下载已经存在于其他模型目录中的文件。
190
-
191
- </details>
192
-
193
- <details>
194
- <summary><b>升级 DSH 后,源码启动报 client bundles not found</b></summary>
195
-
196
- 在 DeepSeek Harness 仓库根目录先运行 `pnpm run build`,完成后重新启动 DSH Web。
197
-
198
- </details>
199
-
200
- <details>
201
- <summary><b>翻译失败会影响正常对话吗</b></summary>
202
-
203
- 所有已启用提供方都失败时保留原文,插件不会用失败结果覆盖会话原文。可以在设置中逐行测试提供方,并查看最近错误;冷却后翻译会自动恢复重试。
204
-
205
- </details>
206
-
207
- <details>
208
- <summary><b>最近更新与兼容性</b></summary>
209
-
210
- **1.2.19** 增加按目标语言保存的术语表、DSH 凭据保护、配置感知缓存、官方插件互斥提示、技术文本保护与 Windows/Linux CI。
211
-
212
- **1.2.18** 新增常驻侧边栏翻译入口(可在设置窗口或翻译页面开启,按浏览器保存),并将翻译页面与设置弹窗重构为卡片式分区,窄窗口自动切换为响应式单栏布局。
213
-
214
- **1.2.17** 修复已加载 Ollama 模型保存空闲时长后不生效的问题,本地推理等待延长至 120 秒,并显示服务端剩余空闲时间。修复 issue #17 中已复现的部分,长期内存增长仍在调查。
215
-
216
- **1.2.16** 补齐葡萄牙语翻译目标与界面,同步 9 种语言的 README、横幅和对比图,并声明市场三张展示图。
217
-
218
- **1.2.15** 增加本地模型内存管理,适配 DSH `0.2.2-alpha.2` 的官方图片渲染、整轮思考折叠和正文原文选择。
219
-
220
- **1.2.14** 拒绝明显错误语言的译文并尝试下一提供方,清理旧译文缓存并保留设置。
221
-
222
- **1.2.13** 支持自动审查拒绝理由翻译。感谢 [llg1634](https://github.com/llg1634) 提供问题报告、初始补丁和测试。
223
-
224
- 更早版本与具体变更见 [GitHub Releases](https://github.com/UncleK/dsh-think-translate/releases)。
225
-
226
- </details>
227
-
228
- <details>
229
- <summary><b>开发与工作原理</b></summary>
230
-
231
- ```text
232
- 浏览器 → 同源翻译接口 → 已启用的提供方链 → 译文或原文
233
- ```
234
-
235
- - `lib/index.js`:Host 路由、提供方适配、配置、内存缓存与本地模型管理。
236
- - `lib/client.js`:设置、显示层翻译、流式分批和浏览器缓存。
237
- - `lib/config.json`:运行期配置,已从 Git 和 npm 包排除。
238
- - 无需额外构建,源码即产物;修改 Host 后重启 DSH。
239
- - 检查命令:`npm test`。
240
- - CI 在 push / PR 时执行 `npm ci --ignore-scripts` 和 `npm test`,覆盖 Windows、Linux 与 Node 20/22/24/26;Node 20 用于验证当前声明的最低兼容版本。成为合并必需检查需要仓库另行配置。
241
- - 代码保护覆盖 Markdown 代码、明确可识别的路径、URL、文件名和常见命令片段;有空格的路径请加引号,复杂命令和有歧义的技术内容请使用反引号或代码块。
242
-
243
- 配置发现、凭据处理和维护说明见 [维护笔记](https://github.com/UncleK/dsh-think-translate/blob/main/docs/maintenance-notes.md)。
244
-
245
- </details>
246
-
247
- ---
248
-
249
- <p align="center">
250
- <b>dsh-think-translate</b><br />
251
- <a href="https://github.com/UncleK/dsh-think-translate/issues">反馈问题</a> &nbsp;·&nbsp; <a href="https://github.com/UncleK/dsh-think-translate/releases">版本发布</a> &nbsp;·&nbsp; <a href="https://github.com/UncleK/dsh-think-translate/blob/main/LICENSE">MIT License</a>
252
- </p>
1
+ <p align="center">
2
+ <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/hero.zh-CN.png?v=1.2.21" width="100%" alt="dsh-think-translate:让 AI 的思考,用你的语言呈现" />
3
+ </p>
4
+
5
+ <p align="center">
6
+ <b>为 DeepSeek Harness 提供显示层翻译。</b><br />
7
+ 读懂思考,跟上任务,也看清回答。原文完整保留,译文不进入模型上下文。
8
+ </p>
9
+
10
+ <p align="center">
11
+ <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/badge-mit.zh-CN.svg?v=1.2.21" alt="MIT License" />
12
+ <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/badge-local.zh-CN.svg?v=1.2.21" alt="支持本地 Ollama" />
13
+ <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/badge-original.zh-CN.svg?v=1.2.21" alt="保留原文与模型上下文" />
14
+ </p>
15
+
16
+ <p align="center">
17
+ <b>中文</b> · <a href="https://github.com/UncleK/dsh-think-translate/blob/main/README.md">English</a> · <a href="https://github.com/UncleK/dsh-think-translate/blob/main/README.ja.md">日本語</a> · <a href="https://github.com/UncleK/dsh-think-translate/blob/main/README.ko.md">한국어</a> · <a href="https://github.com/UncleK/dsh-think-translate/blob/main/README.es.md">Español</a> · <a href="https://github.com/UncleK/dsh-think-translate/blob/main/README.fr.md">Français</a> · <a href="https://github.com/UncleK/dsh-think-translate/blob/main/README.de.md">Deutsch</a> · <a href="https://github.com/UncleK/dsh-think-translate/blob/main/README.ru.md">Русский</a> · <a href="README.pt.md">Português</a>
18
+ </p>
19
+
20
+ <p align="center">
21
+ <a href="#quick-start"><img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/nav-quick-start.zh-CN.svg?v=1.2.21" alt="快速安装" height="24" /></a> &nbsp;·&nbsp; <a href="#demo"><img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/nav-demo.zh-CN.svg?v=1.2.21" alt="实际演示" height="24" /></a> &nbsp;·&nbsp; <a href="#features"><img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/nav-features.zh-CN.svg?v=1.2.21" alt="核心能力" height="24" /></a> &nbsp;·&nbsp; <a href="#comparison"><img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/nav-comparison.zh-CN.svg?v=1.2.21" alt="官方对比" height="24" /></a> &nbsp;·&nbsp; <a href="#faq"><img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/nav-faq.zh-CN.svg?v=1.2.21" alt="常见问题" height="24" /></a>
22
+ </p>
23
+
24
+ ---
25
+
26
+ <a id="demo"></a>
27
+ ## 看见思考发生
28
+
29
+ <table>
30
+ <tr>
31
+ <td width="50%" align="center" valign="bottom">
32
+ <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/demo/demo.gif?v=1.2.21" width="100%" alt="思考链与回答翻译的实际操作演示" />
33
+ </td>
34
+ <td width="50%" align="center" valign="bottom">
35
+ <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/demo/demo2.gif?v=1.2.21" width="100%" alt="dsh-think-translate 第二段实际操作演示" />
36
+ </td>
37
+ </tr>
38
+ <tr>
39
+ <td align="center" valign="top">
40
+ <sub>演示一 · 思考链与回答翻译</sub>
41
+ </td>
42
+ <td align="center" valign="top">
43
+ <sub>演示二 · 更多实际操作</sub>
44
+ </td>
45
+ </tr>
46
+ </table>
47
+
48
+ <a id="comparison"></a>
49
+ ## 与官方翻译插件对比
50
+
51
+ <p align="center">
52
+ <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/translation-comparison.zh-CN.png?v=1.2.21" width="100%" alt="与官方翻译插件的功能和首次上线日期对比" />
53
+ </p>
54
+
55
+ 本插件与官方思考翻译都接管思考界面,请二选一启用。检测到官方插件启用时,本插件暂停翻译并显示冲突提示;关闭官方插件后自动恢复,不会修改官方插件的启用状态。
56
+
57
+ <a id="quick-start"></a>
58
+ ## 一条命令,开始使用
59
+
60
+ ```bash
61
+ dsh plugin --profile web add dsh-think-translate
62
+ ```
63
+
64
+ 安装后**完整重启 DSH Web**,打开 **设置 → 思考链翻译**,选择目标语言和翻译提供方即可。 开启 **在侧边栏显示翻译入口**,即可把翻译设置固定到左侧全局面板列表。独立页面按翻译偏好、翻译服务和运行状态分成卡片,小窗口自动使用单栏布局;设置弹窗使用紧凑的单栏分区,控件样式与独立页面一致。选择保存在当前浏览器中,刷新页面或重启 DSH 后仍会保留;在设置窗口或翻译页面关闭此开关即可取消固定。
65
+
66
+ <details>
67
+ <summary>从 GitHub 安装、升级与其他安装方式</summary>
68
+
69
+ 从 GitHub 安装:
70
+
71
+ ```bash
72
+ dsh plugin --profile web add github:UncleK/dsh-think-translate
73
+ ```
74
+
75
+ 升级 npm 版本:
76
+
77
+ ```bash
78
+ dsh plugin --profile web add dsh-think-translate@latest
79
+ ```
80
+
81
+ 安装或升级后均需完整重启 DSH。手动部署可通过目录联接把包链接到 profile,并在 `cordis.patch.yml` 中插入 `dsh-think-translate` 插件行;普通使用建议选择上面的安装命令。
82
+
83
+ </details>
84
+
85
+ <a id="features"></a>
86
+ ## 需要读懂的,不只是思考链
87
+
88
+ <table>
89
+ <tr>
90
+ <td width="50%" valign="top">
91
+ <h3>思考链,边想边读</h3>
92
+ <p>按段落与句子分批翻译。可选全部预翻译、懒加载历史,或仅在展开后翻译。</p>
93
+ </td>
94
+ <td width="50%" valign="top">
95
+ <h3>任务与回答,一起跟上</h3>
96
+ <p>覆盖任务卡片和输入区任务列表;回答正文提供独立翻译开关。</p>
97
+ </td>
98
+ </tr>
99
+ <tr>
100
+ <td valign="top">
101
+ <h3>审查理由,也能看清</h3>
102
+ <p>自动审查拒绝一次调用时,保留原文并追加目标语言的理由,原有操作按钮照常使用。</p>
103
+ </td>
104
+ <td valign="top">
105
+ <h3>原文与代码,完整保留</h3>
106
+ <p>代码、路径和命令在翻译前受到保护。译文只用于显示,不进入模型上下文。</p>
107
+ </td>
108
+ </tr>
109
+ <tr>
110
+ <td valign="top">
111
+ <h3>本地模型,用时再加载</h3>
112
+ <p>复用已有 Ollama 和模型,支持手动释放、禁用后释放与空闲自动释放。</p>
113
+ </td>
114
+ <td valign="top">
115
+ <h3>提供方,按你的顺序工作</h3>
116
+ <p>拖动排序并逐行启停。失败时尝试下一家,明显串语言的结果也会触发回退。</p>
117
+ </td>
118
+ </tr>
119
+ </table>
120
+
121
+ ### 连接你已经在用的提供方
122
+
123
+ **Ollama · Google · Bing · OpenAI 兼容端点 · Anthropic Messages API**
124
+
125
+ 也可以发现 DSH 已配置的提供方,无需重复填写端点和密钥。每一行都能单独测试,列表顺序就是尝试顺序。
126
+
127
+ ```text
128
+ 你的首选提供方 → 下一家已启用提供方 → … → 全部失败时保留原文
129
+ ```
130
+
131
+ <details>
132
+ <summary>自定义端点、密钥与自动恢复</summary>
133
+
134
+ - 自定义端点支持 OpenAI 兼容的 `/v1/chat/completions` 和原生 Anthropic Messages API。
135
+ - 自动发现当前 DSH profile 及覆盖配置中的提供方;可重新扫描并加入翻译链。
136
+ - 声明 `apiKeyEnv` 的提供方在请求时解析密钥,解析结果不会写回插件配置。
137
+ - 手动输入的密钥通过 DSH 凭据服务保存,插件配置只保存引用;服务可用时自动迁移旧配置中的明文密钥。凭据服务不可用时拒绝保存新的明文密钥,迁移失败保留旧配置。
138
+ - 配置接口不返回密钥值。编辑时留空保留旧密钥,勾选“移除已保存的密钥”才会删除;DSH 凭据文件由宿主保护,不代表系统钥匙串加密。
139
+ - 成功译文缓存在当前浏览器,按提供方、模型和翻译配置区分;变更配置后不复用旧译文,已开始的旧请求也不会回写到新缓存。缓存版本升级会清理旧译文,但保留语言等首选项。
140
+ - 失败结果在 Host 内存冷却 30 秒,之后翻译会恢复重试。
141
+ - 已经是目标语言的正文会按语言检测规则跳过;提供方测试仍会真实发起请求。
142
+
143
+ </details>
144
+
145
+ ### 术语表:让译法保持一致
146
+
147
+ “启用内置词表”和“启用自定义词条”分别放在对应区域,独立勾选、立即保存。内置词表默认关闭,含 60 条常用英文 AI、编程术语和产品名,九种目标语言各有对应译法;可展开查看完整列表。关闭其中一个不会影响另一个,也不会删除已填词条。
148
+
149
+ 在“自定义补充”中添加自己的词条即可,无需复制内置内容。已启用的自定义同名词条(不区分大小写)优先覆盖内置译法;每种语言额外 128 条自定义额度不被内置词条占用。输入改动后会显示“未保存”提示并突出保存按钮;切换目标语言保留各语言草稿,并提醒其他语言的未保存项。正在编辑时刷新或离开网页会触发浏览器的未保存确认。
150
+
151
+ 宽屏页面的术语表横跨整行,内置预览与自定义编辑左右排列,运行状态横向展示;窄窗口和设置弹窗使用单列。
152
+
153
+ 在设置或侧边栏翻译页面编辑当前目标语言的术语表,每行填写“原词 => 译词”,点击“保存术语表”生效。两边写相同内容,可以固定保留产品名。
154
+
155
+ ```text
156
+ DeepSeek => DeepSeek
157
+ agent => 智能体
158
+ reasoning => 思考过程
159
+ ```
160
+
161
+ 每种目标语言独立保存,最多 128 条;英文按完整词匹配且不区分大小写,长词优先。保存会让旧译文缓存失效,关闭术语表会保留已填写的词条。术语只作用于实际翻译的正文,不改写原文、代码、路径或命令。
162
+
163
+ ### 本地翻译模型,按需加载与释放
164
+
165
+ | 你的操作 | 插件行为 |
166
+ |---|---|
167
+ | 实际翻译或点击测试 | 按需启动服务、加载所选模型 |
168
+ | 点击“释放模型内存” | 当前翻译结束后释放;保留模型文件、开关和排序 |
169
+ | 取消勾选本地提供方 | 停用并释放所选模型 |
170
+ | 重新勾选或打开设置 | 不预加载;下一次实际翻译时再加载 |
171
+ | 设置空闲释放 | 默认 5 分钟,可选 1 / 5 / 10 / 30 / 60 分钟或关闭 |
172
+
173
+ 空闲策略从下次使用起生效,由 Ollama 对当前模型计时,不修改全局环境变量。缺少软件或模型时,只有点击准备按钮后才安装或下载,并显示进度。
174
+
175
+ <a id="languages"></a>
176
+ ### 让语言设置跟着你
177
+
178
+ 中文 · English · 日本語 · 한국어 · Español · Français · Deutsch · Русский · Português
179
+
180
+ 9 种目标语言、设置面板和任务文案保持一致,现已包含葡萄牙语,选择会在刷新后保留。
181
+
182
+ <a id="faq"></a>
183
+ ## 遇到问题,先看这里
184
+
185
+ <details>
186
+ <summary><b>安装或升级后,看不到翻译入口</b></summary>
187
+
188
+ 完整重启 `dsh web`。客户端模块图在进程启动时组合,仅刷新页面有时不足以加载新插件。设置页底部会显示实际安装包的版本号。
189
+
190
+ </details>
191
+
192
+ <details>
193
+ <summary><b>本地模型列表为空</b></summary>
194
+
195
+ 检查 `ollama list` 或 `/api/tags`,确认运行中的服务使用了正确的模型目录;同时检查该服务生效的 `OLLAMA_MODELS`。不需要重新下载已经存在于其他模型目录中的文件。
196
+
197
+ </details>
198
+
199
+ <details>
200
+ <summary><b>升级 DSH 后,源码启动报 client bundles not found</b></summary>
201
+
202
+ 在 DeepSeek Harness 仓库根目录先运行 `pnpm run build`,完成后重新启动 DSH Web。
203
+
204
+ </details>
205
+
206
+ <details>
207
+ <summary><b>翻译失败会影响正常对话吗</b></summary>
208
+
209
+ 所有已启用提供方都失败时保留原文,插件不会用失败结果覆盖会话原文。可以在设置中逐行测试提供方,并查看最近错误;冷却后翻译会自动恢复重试。
210
+
211
+ </details>
212
+
213
+ <details>
214
+ <summary><b>最近更新与兼容性</b></summary>
215
+
216
+ **1.2.21** 修复 #17 中待办文本频繁更新时重复触发翻译的问题。参数生成期间显示原文,文本稳定 500 毫秒后翻译。
217
+
218
+ **1.2.20** 增加 60 条常用技术术语的九语言内置词表,内置和自定义独立勾选;自定义词条优先、额度独立。新增未保存提醒,并改进宽屏布局。
219
+
220
+ **1.2.19** 增加按目标语言保存的术语表、DSH 凭据保护、配置感知缓存、官方插件互斥提示、技术文本保护与 Windows/Linux CI。
221
+
222
+ **1.2.18** 新增常驻侧边栏翻译入口(可在设置窗口或翻译页面开启,按浏览器保存),并将翻译页面与设置弹窗重构为卡片式分区,窄窗口自动切换为响应式单栏布局。
223
+
224
+ **1.2.17** 修复已加载 Ollama 模型保存空闲时长后不生效的问题,本地推理等待延长至 120 秒,并显示服务端剩余空闲时间。修复 issue #17 中已复现的部分,长期内存增长仍在调查。
225
+
226
+ **1.2.16** 补齐葡萄牙语翻译目标与界面,同步 9 种语言的 README、横幅和对比图,并声明市场三张展示图。
227
+
228
+ **1.2.15** 增加本地模型内存管理,适配 DSH `0.2.2-alpha.2` 的官方图片渲染、整轮思考折叠和正文原文选择。
229
+
230
+ **1.2.14** 拒绝明显错误语言的译文并尝试下一提供方,清理旧译文缓存并保留设置。
231
+
232
+ **1.2.13** 支持自动审查拒绝理由翻译。感谢 [llg1634](https://github.com/llg1634) 提供问题报告、初始补丁和测试。
233
+
234
+ 更早版本与具体变更见 [GitHub Releases](https://github.com/UncleK/dsh-think-translate/releases)。
235
+
236
+ </details>
237
+
238
+ <details>
239
+ <summary><b>开发与工作原理</b></summary>
240
+
241
+ ```text
242
+ 浏览器 → 同源翻译接口 → 已启用的提供方链 → 译文或原文
243
+ ```
244
+
245
+ - `lib/index.js`:Host 路由、提供方适配、配置、内存缓存与本地模型管理。
246
+ - `lib/client.js`:设置、显示层翻译、流式分批和浏览器缓存。
247
+ - `lib/config.json`:运行期配置,已从 Git 和 npm 包排除。
248
+ - 无需额外构建,源码即产物;修改 Host 后重启 DSH。
249
+ - 检查命令:`npm test`。
250
+ - CI 在 push / PR 时执行 `npm ci --ignore-scripts` 和 `npm test`,覆盖 Windows、Linux 与 Node 20/22/24/26;Node 20 用于验证当前声明的最低兼容版本。成为合并必需检查需要仓库另行配置。
251
+ - 代码保护覆盖 Markdown 代码、明确可识别的路径、URL、文件名和常见命令片段;有空格的路径请加引号,复杂命令和有歧义的技术内容请使用反引号或代码块。
252
+
253
+ 配置发现、凭据处理和维护说明见 [维护笔记](https://github.com/UncleK/dsh-think-translate/blob/main/docs/maintenance-notes.md)。
254
+
255
+ </details>
256
+
257
+ ---
258
+
259
+ <p align="center">
260
+ <b>dsh-think-translate</b><br />
261
+ <a href="https://github.com/UncleK/dsh-think-translate/issues">反馈问题</a> &nbsp;·&nbsp; <a href="https://github.com/UncleK/dsh-think-translate/releases">版本发布</a> &nbsp;·&nbsp; <a href="https://github.com/UncleK/dsh-think-translate/blob/main/LICENSE">MIT License</a>
262
+ </p>