dsh-think-translate 1.2.13 → 1.2.16

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,125 +1,217 @@
1
- <div align="center">
1
+ <p align="center">
2
+ <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/hero.ru.png?v=1.2.16" alt="dsh-think-translate — Мысли ИИ — на вашем языке" width="100%" />
3
+ </p>
2
4
 
3
- # 🐋 dsh-think-translate
5
+ <p align="center">
6
+ <b>Перевод слоя отображения для DeepSeek Harness.</b><br />
7
+ Читайте рассуждения, следите за задачами и понимайте ответы. Оригиналы сохранены; переводы не входят в контекст модели.
8
+ </p>
4
9
 
5
- **Языки:** [English](README.md) · [中文](README.zh-CN.md) · [日本語](README.ja.md) · [한국어](README.ko.md) · [Español](README.es.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Русский](README.ru.md)
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.16" alt="Лицензия MIT" />
12
+ <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/badge-local.ru.svg?v=1.2.16" alt="Локальный Ollama" />
13
+ <img src="https://raw.githubusercontent.com/UncleK/dsh-think-translate/main/docs/assets/badge-original.ru.svg?v=1.2.16" alt="Оригиналы сохранены" />
14
+ </p>
6
15
 
7
- [![npm version](https://img.shields.io/npm/v/dsh-think-translate?color=4D6BFE&label=npm)](https://www.npmjs.com/package/dsh-think-translate)
8
- [![license](https://img.shields.io/npm/l/dsh-think-translate?color=4D6BFE)](LICENSE)
9
- [![dsh](https://img.shields.io/badge/powered_by-dsh-4D6BFE?style=flat-square&logo=deepseek&logoColor=white)](https://github.com/deepseek-ai/deepseek-harness)
16
+ <p align="center">
17
+ <a href="README.zh-CN.md">中文</a> · <a href="README.md">English</a> · <a href="README.ja.md">日本語</a> · <a href="README.ko.md">한국어</a> · <a href="README.es.md">Español</a> · <a href="README.fr.md">Français</a> · <a href="README.de.md">Deutsch</a> · <b>Русский</b> · <a href="README.pt.md">Português</a>
18
+ </p>
10
19
 
11
- <img src="demo/demo.gif?v=2" width="46%" alt="dsh-think-translate demo" style="border:1px solid #4D6BFE;border-radius:8px;margin:4px" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="demo/demo2.gif?v=2" width="41%" alt="dsh-think-translate demo 2" style="border:1px solid #4D6BFE;border-radius:8px;margin:4px" />
12
-
13
- </div>
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.16" 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.16" 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.16" 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.16" 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.16" alt="Вопросы" height="24" /></a>
22
+ </p>
14
23
 
15
24
  ---
16
25
 
17
- Перевод на уровне отображения для веб-интерфейса [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness): **цепочка размышлений (строка Think), карточки задач и текст ответа** отображаются на выбранном целевом языке, а оригиналы полностью сохраняются в истории; переведённый текст **никогда не попадает в контекст модели**.
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.16" alt="Демо 1 · Рассуждения и ответы" width="100%" />
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.16" alt="Демо 2 · Другие операции" width="100%" />
36
+ </td>
37
+ </tr>
38
+ <tr>
39
+ <td align="center" valign="top"><sub>Демо 1 · Рассуждения и ответы</sub></td>
40
+ <td align="center" valign="top"><sub>Демо 2 · Другие операции</sub></td>
41
+ </tr>
42
+ </table>
18
43
 
19
- ## ✨ Возможности
44
+ <a id="comparison"></a>
45
+ ## Сравнение с официальным плагином перевода
20
46
 
21
- Модели семейства DeepSeek часто рассуждают на китайском — или на том языке, на котором им случилось думать. dsh-think-translate показывает строку Think, карточки задач и ответ на *вашем* языке в реальном времени — как субтитры к размышлениям модели.
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.16" alt="Сравнение с официальным плагином перевода" width="100%" />
49
+ </p>
22
50
 
23
- - **Причины отказа Auto review** — перевод добавляется в карточку подтверждения асинхронно, исходный текст сохраняется; доступен отдельный переключатель.
24
- - **🕵️ Читайте любую цепочку рассуждений** — рассуждения, цепочка мыслей, карточки задач и ответы переводятся в реальном времени, потоком по батчам
25
- - **8 целевых языков** — 中文 / English / 日本語 / 한국어 / Español / Français / Deutsch / Русский
26
- - **Одноязычный интерфейс** — панель настроек, строки размышлений и карточки задач следуют целевому языку (без смешения zh/en); выбор сохраняется
27
- - **Локальный Ollama** — используются существующие установка и модели. Если включённый Ollama стоит первым или нажата кнопка проверки, сервис запускается и модель загружается по необходимости. Установка и скачивание отсутствующих компонентов начинаются только после нажатия кнопки подготовки, с отображением прогресса
28
- - **🧠 Нулевая стоимость контекста** — чистый слой отображения: модель по-прежнему видит исходный текст, а переведённый текст никогда не расходует окно контекста
29
- - **Запасной вариант Google / Bing** — автоматическое переключение, если локальная модель недоступна (google идёт через Node CONNECT-туннель с системным прокси)
30
- - **Кодовые артефакты пропускаются** — пути, команды, URL, регулярные выражения и чистые строки кода не переводятся
31
- - **Пакетный перевод по предложениям** — длинные цепочки переводятся небольшими пакетами, чтобы локальные малые модели сохраняли качество
32
- - **🧩 Разбивка по абзацам и предложениям** — длинные цепочки делятся по пустым строкам (структура абзацев сохраняется) и дополнительно по предложениям, чтобы локальные малые модели сохраняли качество
33
- - **Потоковый вывод** — переводы появляются пакет за пакетом во время размышления; разверните строку Think для сравнения с оригиналом
34
- - **🎚️ Настраиваемый момент перевода** — переводить всё / ленивая загрузка старых цепочек (по умолчанию) / только при раскрытии
35
- - **🔗 Динамическая цепочка провайдеров** — порядок списка и есть порядок обращения: перетаскивайте для сортировки, включайте и выключайте каждую строку. Встроенные google gtx / bing / локальный Ollama плюс любые свои эндпоинты
36
- - **🔌 Свои провайдеры (OpenAI и Anthropic)** — из панели можно добавить любой OpenAI-совместимый эндпоинт (`/v1/chat/completions`) или **Anthropic Messages API** (Claude): тип, шаблон, базовый URL, ключ API, модель
37
- - **🪄 Наследование провайдеров из DSH** — читает из `profiles/<profile>/cordis.patch.yml` / прежний `settings.yaml` (`llm-pi-ai.providers`) строки DSH только для чтения; одна кнопка заново сканирует и добавляет их все в цепочку. Ключ разрешается на каждый запрос из `.credentials.yaml` и никогда не попадает в конфиг плагина. Собственный маршрут харнесса тоже учитывается: если `default-model` / `agent-default-model` указывает на `deepseek-official`, официальный API DeepSeek появляется как ещё одна строка DSH
38
- - **⏱️ Восстановление после ошибок** — неудачные переводы сохраняются в памяти на 30 секунд, чтобы избежать частых повторов, затем автоматически повторяются; у каждого провайдера есть кнопка проверки
51
+ Включайте этот плагин или официальный переводчик рассуждений. Оба управляют интерфейсом рассуждений.
39
52
 
40
- ## 📦 Установка
53
+ <a id="quick-start"></a>
54
+ ## Одна команда для начала
41
55
 
42
56
  ```bash
43
- # Способ 1: npm (рекомендуется)
44
57
  dsh plugin --profile web add dsh-think-translate
45
- # затем перезапустите web
58
+ ```
59
+
60
+ После установки полностью перезапустите DSH Web. Откройте **Настройки → Перевод размышлений** и выберите язык и провайдеров.
46
61
 
47
- # Способ 2: GitHub
62
+ <details>
63
+ <summary><b>Установка из GitHub, обновление и другие способы</b></summary>
64
+
65
+ Установить из GitHub:
66
+
67
+ ```bash
48
68
  dsh plugin --profile web add github:UncleK/dsh-think-translate
69
+ ```
70
+
71
+ Обновить из npm:
49
72
 
50
- # Способ 3: вручную (junction + patch)
51
- # 1. свяжите пакет с node_modules профиля
52
- New-Item -ItemType Junction -Path "$HOME\.dsh\profiles\node_modules\dsh-think-translate" `
53
- -Target "<путь к репозиторию>"
54
- # 2. добавьте в "$HOME\.dsh\profiles\web\cordis.patch.yml":
55
- # - insert:
56
- # - id: dsh-think-translate
57
- # name: dsh-think-translate
58
- # 3. перезапустите web
73
+ ```bash
74
+ dsh plugin --profile web add dsh-think-translate@latest
59
75
  ```
60
76
 
61
- ## 🧯 После обновления DSH
77
+ Полностью перезапускайте DSH после установки или обновления. При ручном размещении свяжите пакет с профилем и добавьте запись в `cordis.patch.yml`. Обычно рекомендуются команды выше.
78
+
79
+ </details>
80
+
81
+ <a id="features"></a>
82
+ ## Понимать нужно не только рассуждения
83
+
84
+ <table>
85
+ <tr>
86
+ <td width="50%" valign="top">
87
+ <h3>Читайте рассуждения в реальном времени</h3>
88
+ <p>Предперевод всего, загрузка истории по мере надобности или перевод при раскрытии</p>
89
+ </td>
90
+ <td width="50%" valign="top">
91
+ <h3>Задачи и ответы вместе</h3>
92
+ <p>Рассуждения, карточки и список задач в поле ввода; ответы и причины отказа автопроверки — по выбору</p>
93
+ </td>
94
+ </tr>
95
+ <tr>
96
+ <td width="50%" valign="top">
97
+ <h3>Понимайте причины решений проверки</h3>
98
+ <p>Если автопроверка отклоняет вызов инструмента, рядом с оригиналом появляется перевод причины. Обычные кнопки решения остаются доступны.</p>
99
+ </td>
100
+ <td width="50%" valign="top">
101
+ <h3>Сохраняйте оригиналы и код</h3>
102
+ <p>Оригинал сохранён; перевод не попадает в контекст модели. Компоненты Markdown; защита кода, путей и команд до перевода.</p>
103
+ </td>
104
+ </tr>
105
+ <tr>
106
+ <td width="50%" valign="top">
107
+ <h3>Локальные модели по необходимости</h3>
108
+ <p>Вручную, при снятии флажка или после простоя; загрузка при следующем переводе</p>
109
+ </td>
110
+ <td width="50%" valign="top">
111
+ <h3>Провайдеры в вашем порядке</h3>
112
+ <p>Автопереход по включённым провайдерам; явно неверный язык вызывает следующий; повтор после паузы</p>
113
+ </td>
114
+ </tr>
115
+ </table>
116
+
117
+ ### Подключите знакомых провайдеров
118
+
119
+ **Ollama · Google · Bing · OpenAI · Anthropic Messages API**
120
+
121
+ Обнаруживайте провайдеров DSH без повторного ввода адресов и ключей. Каждую строку можно проверить отдельно; порядок списка определяет попытки.
122
+
123
+ ```text
124
+ Первый выбор → следующий включённый провайдер → … → оригинал, если все не сработали
125
+ ```
62
126
 
63
- Сторонние клиентские плагины загружаются через граф клиентских модулей DSH, а этот граф собирается **один раз на процесс** — неудачная сборка остаётся в памяти до перезапуска. Поэтому сразу после обновления обычно случаются три вещи.
127
+ <details>
128
+ <summary><b>Свои API, ключи и восстановление</b></summary>
64
129
 
65
- - **Запуск из исходного чекаута падает** с `client bundles not found; run \`pnpm run build\` before launch` —— новые клиентские пакеты не собраны: выполните `pnpm run build` в чекауте harness и снова запустите `dsh web`.
66
- - **Интерфейс плагина пропал** (нет перевода в строке Think, нет раздела «Перевод цепочки размышлений» в настройках) —— **перезапустите `dsh web`**; простого обновления страницы иногда недостаточно.
67
- - **Список локальных моделей пуст** —— служба `ollama` не использует этот каталог моделей: проверьте `ollama list` (или `GET /api/tags`) и `OLLAMA_MODELS`, который реально применяет запущенная служба. Если файлы моделей лежат на другом диске, каталог по умолчанию можно направить туда через junction.
130
+ - Поддерживаются совместимый с OpenAI `/v1/chat/completions` и нативный Anthropic Messages API.
131
+ - Обнаружение читает текущий профиль DSH и переопределения. Повторите поиск и добавьте провайдеров в цепочку.
132
+ - `apiKeyEnv` разрешается при запросе; полученные ключи не записываются в конфигурацию плагина.
133
+ - После сбоя действует пауза 30 секунд в памяти host. Затем новые запросы могут повторить попытку. Явно неверный язык вызывает следующего провайдера.
134
+ - Текст, распознанный как целевой язык, пропускается; тест провайдера всегда отправляет настоящий запрос.
68
135
 
69
- На стороне плагина настраивать нечего: он не объявляет зависимостей от порядка загрузки внутренних пакетов DSH (использует только службу `slots` и, опционально, `@deepseek-ai/dsh-client-ui-primitives`), поэтому работает и на старых DSH (≤ 0.1.1-rc), и на текущей линии (≥ 0.1.2-alpha.1, включая 0.1.5-rc.1).
136
+ </details>
70
137
 
71
- Для DSH **0.2.0-rc.2** используйте **dsh-think-translate 1.2.5 или новее**. Версия 1.2.5 исправляет конфликт регистрации slot `todo_write` и объявляет диапазон peer-версий 0.2. Выполните `dsh plugin --profile web add dsh-think-translate@latest`, затем перезапустите DSH; исключение версии не требуется.
138
+ ### Локальные модели перевода: загрузка и освобождение по необходимости
72
139
 
73
- **1.2.6** исправляет двойное отображение рассуждений и ответов в DSH 0.2: основной вывод и исходный текст при ошибке учитывают группы reasoning/response.
140
+ | Ваше действие | Поведение плагина |
141
+ |---|---|
142
+ | Перевести или проверить | Запуск службы и загрузка выбранной модели по необходимости |
143
+ | Освободить память модели | Дождаться текущих переводов, затем выгрузить; сохранить файлы, переключатели и порядок |
144
+ | Снять флажок локального провайдера | Отключить его и выгрузить выбранную модель |
145
+ | Снова включить или открыть настройки | Без предварительной загрузки; загрузка при следующем переводе |
146
+ | Настроить освобождение после простоя | По умолчанию 5 минут; 1 / 5 / 10 / 30 / 60 минут или выкл. |
74
147
 
75
- **1.2.7 локальная подготовка:** включённый Ollama на первом месте или его тест находит существующую установку, запускает сервис и загружает модель. Отсутствующие компоненты устанавливаются после нажатия кнопки подготовки с отображением этапов и прогресса. Автоустановка программы поддерживает Windows; для других ОС доступна официальная инструкция. Текущий провайдер выбирается по приоритету включённых и проверенных провайдеров.
148
+ Время применяется со следующего использования. Ollama отслеживает выбранную модель без изменения глобальных переменных среды. Недостающие программы или модели устанавливаются и скачиваются только после нажатия подготовки, с показом прогресса.
76
149
 
77
- **1.2.8 передача запросов и восстановление:** обычные HTTP/HTTPS-запросы перевода используют сетевые средства Node без запуска curl для каждого пакета текста. Для SOCKS-прокси и установщика Ollama сохранён путь через curl. Ошибки хранятся в памяти 30 секунд, после чего перевод рассуждений и ответов автоматически повторяется. Тайм-ауты учитывают загрузку локальной модели и переход к другим провайдерам.
150
+ <a id="languages"></a>
151
+ ### Ваш язык всегда с вами
78
152
 
79
- **1.2.13:** карточки отказа Auto review сохраняют оригинал и асинхронно добавляют перевод; отдельный переключатель включён по умолчанию. После отключения, смены языка или удаления карточки устаревшие результаты игнорируются. Причины не на английском также переводятся на английский. Спасибо [llg1634](https://github.com/llg1634) за сообщение, первоначальный патч и тесты в [#13](https://github.com/UncleK/dsh-think-translate/issues/13). После обновления полностью перезапустите DSH Web или Desktop.
153
+ 中文 · English · 日本語 · 한국어 · Español · Français · Deutsch · Русский · Português
80
154
 
81
- **1.2.12:** настройки провайдеров соблюдаются: после ошибки Host браузер больше не обращается к Google напрямую. Блочный код, код с отступом и встроенный код исключаются из запросов и сохраняются точно, включая незавершённые потоковые фрагменты. Старый кеш переводов очищается, настройки сохраняются. После обновления полностью перезапустите DSH Web или Desktop: простое обновление страницы может продолжить использовать старые ресурсы клиента.
155
+ Девять языков перевода, настроек и задач, включая португальский. Выбор сохраняется после обновления страницы.
82
156
 
83
- **1.2.11 исправления Bing:** бесплатный провайдер сохранён. Запросы перевода отправляются на конечный origin страницы сеанса, чтобы перенаправление `www.bing.com` → `cn.bing.com` в материковом Китае не удаляло тело POST. SOCKS/curl использует те же заголовки браузера, что и нативный транспорт, устраняя HTTP 401; пустые ответы и ответы не в формате JSON дают понятные ошибки.
157
+ <a id="faq"></a>
158
+ ## Частые вопросы
84
159
 
85
- **1.2.10 совместимость с профилями DSH:** обнаружение следует активному профилю Desktop/Web и читает `profiles/<profile>/cordis.patch.yml` (`id` + `config`), затем патчи домашнего каталога DSH и параметры запуска. Прежний `settings.yaml` поддерживается. Модель по умолчанию использует `default-model`; ключи читаются из `.credentials.yaml` домашнего каталога DSH и остаются только в памяти. Диагностика показывает прочитанный файл.
160
+ <details>
161
+ <summary><b>После установки или обновления нет пункта перевода</b></summary>
86
162
 
87
- **1.2.9 языковые исправления:** подсказки японской лексики применяются только к японскому; OpenAI/Anthropic получают полное название языка. Bing использует `auto-detect` и `zh-Hans`/`zh-Hant`. Определение китайского исключает пути, код и JSON: упрощённая проза пропускается, частые традиционные иероглифы вызывают запрос преобразования, японская/корейская проза переводится. Старый кэш переводов очищается один раз, настройки сохраняются.
163
+ Полностью перезапустите `dsh web`. Граф модулей собирается при старте; обновления страницы может быть недостаточно. Внизу настроек указана версия установленного пакета.
88
164
 
89
- ## 🚀 Использование
165
+ </details>
90
166
 
91
- 1. Откройте **Настройки → Перевод цепочки размышлений**
92
- 2. Выберите **целевой язык** (например, Русский) — панель, строки и карточки переключатся на этот язык
93
- 3. Управляйте **цепочкой провайдеров** (перетаскивание — порядок, галочка — включение):
94
- - Встроенные: **google gtx / bing** (бесплатно, через системный прокси) и **локальный Ollama**. Существующие программа и модели используются повторно; для установки или скачивания недостающих компонентов нужно нажать кнопку подготовки, прогресс отображается (7b/14b или своя модель)
95
- - **Провайдеры DSH**: настроенные в `profiles/<profile>/cordis.patch.yml` / прежний `settings.yaml` эндпоинты появляются сами (только чтение; галочка добавляет их в цепочку). Кнопка **Импортировать из конфигурации DSH** сразу под списком заново сканирует конфигурацию и добавляет их все за один раз — ни baseURL, ни ключ вводить не нужно: ключ берётся из учётных данных DSH
96
- - Ключ вводится вручную или приходит как **`apiKeyEnv`** из шаблона либо строки DSH: у такой строки появляется значок `env:NAME`, а ключ разрешается на каждый запрос и никогда не пишется в `config.json`. В форме редактирования нет поля переменной окружения (значение сохраняется как есть), но очистка поля действительно его удаляет (отправляется как явное удаление)
97
- - Снятая галочка означает, что провайдер пропускается. Подробности — в [README.md](README.md)
98
- 4. Отправьте сообщение и разверните строку Think, чтобы увидеть перевод
167
+ <details>
168
+ <summary><b>Список локальных моделей пуст</b></summary>
99
169
 
100
- ## ⚙️ Как это работает
170
+ Проверьте `ollama list` или `/api/tags`, каталог моделей и `OLLAMA_MODELS` службы. Повторно скачивать имеющиеся файлы не нужно.
101
171
 
102
- ```
103
- браузер → POST /_xlate/translate (тот же origin, без CORS)
104
- → цепочка провайдеров на host (fail-open, с изменяемым порядком):
105
- chain: [provider1, provider2, ...] ← порядок перетаскиванием в настройках
106
- google / bing / OpenAI-совместимый / Anthropic
107
- fallback-цепочка (необязательно, по умолчанию выключена, включается в конфиге)
108
- → исходный текст, если все включённые провайдеры недоступны
109
- ```
172
+ </details>
110
173
 
111
- - **Конфигурация провайдеров** живёт в `config.json` (создаётся во время работы, в gitignore): `chain` (упорядоченные id), `fallback` (enabled + chain, только в файле), `providers` (у каждого `type`/`enabled`/`baseURL`/`apiKey`/`apiKeyEnv`/`model`). Старые конфиги с `priority` мигрируют автоматически; провайдер с `apiKeyEnv` разрешает ключ из этой переменной на каждый запрос (литеральный `apiKey` остаётся запасным), и разрешённый ключ никогда не пишется обратно в `config.json`; `null` в патче удаляет поле — так интерфейс и очищает значения
112
- - **Обнаружение DSH** при загрузке читает `profiles/<profile>/cordis.patch.yml` / прежний `settings.yaml` (`llm-pi-ai.providers`) и `.credentials.yaml` (`refs`) харнесса; найденные провайдеры помечаются `source: "dsh"`, разрешённые ключи остаются в памяти (никогда в `config.json`), а маршрут `/_xlate/dsh-scan` перечитывает их по запросу
113
- - **Host-часть** (`lib/index.js`): адаптеры провайдеров, LRU-кэш (600), `/_xlate/models`, `/_xlate/model/pull` + `pull-status` (автонастройка по завершении)
114
- - **Client-часть** (`lib/client.js`): интерфейс на 8 языках, пакетный перевод, потоковые строки Think, localStorage
115
- - Чистый слой отображения: оригиналы остаются в истории и контексте модели
174
+ <details>
175
+ <summary><b>Client bundles not found после обновления DSH</b></summary>
116
176
 
117
- ## 🛠 Разработка
177
+ Выполните `pnpm run build` в репозитории DeepSeek Harness и перезапустите DSH Web.
118
178
 
119
- - Без сборки: `lib/client.js` — это браузерный бандл (исходник = артефакт); `lib/index.js` — host ESM
120
- - Изменения клиента применяются при обновлении страницы; изменения host требуют перезапуска web
121
- - Строки на 8 языках находятся в словаре `UI_TEXT` в `lib/client.js`
179
+ </details>
122
180
 
123
- ## 📄 Лицензия
181
+ <details>
182
+ <summary><b>Сбой перевода влияет на разговор?</b></summary>
183
+
184
+ Если все включённые провайдеры не сработали, остаётся оригинал. Проверьте отдельные провайдеры и последнюю ошибку в настройках. После паузы новые запросы могут повторить попытку.
185
+
186
+ </details>
187
+
188
+ <details>
189
+ <summary><b>Изменения и совместимость</b></summary>
190
+
191
+ **1.2.16** добавляет португальский для перевода и интерфейса, обновляет все девять README и сравнительных изображений, объявляет три изображения для маркета.
192
+
193
+ **1.2.15** добавляет управление памятью локальных моделей и адаптацию изображений, группового сворачивания и выбора оригинала к DSH `0.2.2-alpha.2`.
194
+
195
+ **1.2.13** переводит причины отказа автопроверки. Спасибо [llg1634](https://github.com/llg1634) за сообщение, первый патч и тесты.
196
+
197
+ Предыдущие версии: [GitHub Releases](https://github.com/UncleK/dsh-think-translate/releases).
198
+
199
+ </details>
200
+
201
+ <details>
202
+ <summary><b>Разработка и устройство</b></summary>
203
+
204
+ - `lib/index.js`: маршруты host, провайдеры, конфигурация, кеш и локальные модели.
205
+ - `lib/client.js`: настройки, перевод отображения, потоковые пакеты и кеш браузера.
206
+ - `lib/config.json`: конфигурация времени выполнения, исключена из Git и npm.
207
+ - Дополнительная сборка не требуется. После изменения host перезапустите DSH.
208
+ - Проверка: `npm test`. Обнаружение и ключи: [заметки по сопровождению](https://github.com/UncleK/dsh-think-translate/blob/main/docs/maintenance-notes.md).
209
+
210
+ </details>
211
+
212
+ ---
124
213
 
125
- MIT
214
+ <p align="center">
215
+ <b>dsh-think-translate</b><br />
216
+ <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</a>
217
+ </p>