dsh-desktop-kit 2.1.3 → 2.1.4

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.md CHANGED
@@ -4,14 +4,15 @@
4
4
 
5
5
  Набор из **7 плагинов и 25 навыков** для DeepSeek Harness 0.2.x: русский интерфейс, автопилот навыков, токен-лаборатория, студия навыков, память проектов, перенос чатов и резервные копии профиля.
6
6
 
7
- ![DSH Desktop Kit 2.1](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.3/docs/images/hero.png)
7
+ ![DSH Desktop Kit 2.1](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.4/docs/images/hero.png)
8
8
 
9
- **v2.1.3** · MIT · проверено на DSH `0.2.1-rc.5` (Windows 11) · без внешних зависимостей и телеметрии
9
+ **v2.1.4** · MIT · проверено на DSH `0.2.1-rc.5` (Windows 11) · без внешних зависимостей и телеметрии
10
10
 
11
11
  ---
12
12
 
13
13
  ## Что нового
14
14
 
15
+ - **Проверено на DSH `0.2.2-rc.1` (win-x64).** Установка из репозитория, все 7 плагинов, 25 навыков, Skills Studio, Token Lab, Peak Guard, перенос чатов/профиля и память проектов. Найден и исправлен сдвиг формата `user/message` в 0.2.2, из-за которого автопилот молчал. Отчёт: [docs/TEST-0.2.2.md](docs/TEST-0.2.2.md).
15
16
  - **Русский интерфейс 2.1.3.** Исправлены машинные переводы: «Этот повтор не удался» → «Не удалось выполнить запрос», ошибка потока DeepSeek, «Кэш попаданий», очередь сообщений и ещё 18 формулировок — в словаре и на живом экране.
16
17
  - **Память проектов 2.1.** Проект распознаётся сам по рабочей папке, локальный автоскан (без LLM и сети) сразу даёт стек, команды, точки входа и тесты; дайджест сам подмешивает фрагменты досье, похожие на текущий запрос. Секреты и PII вычищаются до записи, файлы приватные (`0700/0600`). Новые действия `brief`/`scan` и команда `/memory`.
17
18
  - **Навыки стали в 3–5 раз дешевле.** Ядро `content-writing` — 2,1k токенов вместо 11k, `seo` — 2,0k вместо 11k. Вся библиотека из 25 навыков — ≈37,6k вместо ≈60,6k, а грузятся только нужные ядра.
@@ -58,19 +59,19 @@
58
59
 
59
60
  ### Skills Studio: каталог, стоимость и редактор
60
61
 
61
- ![Каталог навыков](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.3/plugins/dsh-gkb-ru-ui/screenshots/02-skills-1440-light.png)
62
+ ![Каталог навыков](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.4/plugins/dsh-gkb-ru-ui/screenshots/02-skills-1440-light.png)
62
63
 
63
- ![Редактор навыка](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.3/plugins/dsh-gkb-ru-ui/screenshots/03-skills-editor-1440-light.png)
64
+ ![Редактор навыка](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.4/plugins/dsh-gkb-ru-ui/screenshots/03-skills-editor-1440-light.png)
64
65
 
65
66
  ### Token Lab: куда уходит контекст
66
67
 
67
- ![Токен-лаборатория](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.3/plugins/dsh-token-lab/screenshots/01-token-lab-1440-light.png)
68
+ ![Токен-лаборатория](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.4/plugins/dsh-token-lab/screenshots/01-token-lab-1440-light.png)
68
69
 
69
70
  ### Тёмная тема и мобильный
70
71
 
71
- ![Тёмная тема](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.3/plugins/dsh-gkb-ru-ui/screenshots/04-skills-1440-dark.png)
72
+ ![Тёмная тема](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.4/plugins/dsh-gkb-ru-ui/screenshots/04-skills-1440-dark.png)
72
73
 
73
- <img src="https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.3/plugins/dsh-gkb-ru-ui/screenshots/05-skills-390-light.png" alt="Каталог навыков на 390 px" width="390">
74
+ <img src="https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.4/plugins/dsh-gkb-ru-ui/screenshots/05-skills-390-light.png" alt="Каталог навыков на 390 px" width="390">
74
75
 
75
76
  ## Окно-напоминание: пиковый тариф
76
77
 
@@ -80,11 +81,11 @@ DeepSeek включает двойной тариф в пиковые часы (
80
81
  - **в окне** — красная карточка: причина, границы окна в местном времени и UTC, живой отсчёт до конца и рекомендация, когда вернуться;
81
82
  - **после окна** — карточка исчезает; состояние всегда доступно через `window.__DSH_PEAK_GUARD__.state()`.
82
83
 
83
- ![Окно-напоминание: светлая тема](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.3/plugins/dsh-peak-guard/screenshots/03-peak-card-1440-light.png)
84
+ ![Окно-напоминание: светлая тема](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.4/plugins/dsh-peak-guard/screenshots/03-peak-card-1440-light.png)
84
85
 
85
- ![Окно-напоминание: тёмная тема](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.3/plugins/dsh-peak-guard/screenshots/04-peak-card-1440-dark.png)
86
+ ![Окно-напоминание: тёмная тема](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.4/plugins/dsh-peak-guard/screenshots/04-peak-card-1440-dark.png)
86
87
 
87
- <img src="https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.3/plugins/dsh-peak-guard/screenshots/05-peak-card-390-light.png" alt="Окно-напоминание на 390 px" width="390">
88
+ <img src="https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.4/plugins/dsh-peak-guard/screenshots/05-peak-card-390-light.png" alt="Окно-напоминание на 390 px" width="390">
88
89
 
89
90
  Подробности и настройки — [plugins/dsh-peak-guard/README.md](plugins/dsh-peak-guard/README.md).
90
91
 
@@ -158,7 +159,7 @@ powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\dsh-desktop-kit\insta
158
159
  ## Совместимость
159
160
 
160
161
  - DSH `0.2.1-rc.5` — проверено вживую: хост-часть, клиентские плагины, Skills Studio, Token Lab, автопилот.
161
- - DSH `0.2.2` — API совместим, но набор ещё не прогонялся на этой сборке; в 0.2.2 русская локаль встроена, поэтому пакет её не перезаписывает.
162
+ - DSH `0.2.2-rc.1` (win-x64) — проверено 2026-11-06: установка из репозитория, 4 плитки, 25 навыков, редактор, Token Lab, Peak Guard, Session Move, Profile Transfer, память проектов и автопилот. Подробности и ограничения — [docs/TEST-0.2.2.md](docs/TEST-0.2.2.md).
162
163
  - Пакет **не тянет** версии `@deepseek-ai/*`: обновление клиента не ломает плагины.
163
164
 
164
165
  Подробности — [docs/COMPATIBILITY.md](docs/COMPATIBILITY.md).
@@ -171,6 +172,7 @@ powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\dsh-desktop-kit\insta
171
172
 
172
173
  ## Документация
173
174
 
175
+ - [docs/TEST-0.2.2.md](docs/TEST-0.2.2.md) — отчёт тестирования на DSH 0.2.2-rc.1.
174
176
  - [docs/TOKENS.md](docs/TOKENS.md) — экономика токенов, бюджеты, как измерять.
175
177
  - [docs/ROADMAP.md](docs/ROADMAP.md) — развитие плагинов и навыков.
176
178
  - [docs/INSTALL.md](docs/INSTALL.md) — все способы установки и проверка.
@@ -5,9 +5,15 @@
5
5
  | DSH | Состояние | Что проверено |
6
6
  |---|---|---|
7
7
  | `0.2.1-rc.5` | работает | **2.1 проверена вживую**: память проектов (авто-распознавание, автоскан, `brief`/`scan`, `/memory`, redaction), Skills Studio, Token Lab, автопилот, 25 навыков |
8
- | `0.2.2-rc.1` | работает (1.x) | хост-часть монтируется, клиентский бандл грузится, ошибок в консоли нет, навыки копируются; 2.x на этой сборке ещё не прогонялась |
8
+ | `0.2.2-rc.1` | работает (2.1.4+) | **проверено 2026-11-06**: установка из репозитория, 4 плитки, 25 навыков, редактор с бэкапом, Token Lab (27 217 токенов / 24 узла), Peak Guard (карточка + бейдж), Session Move, Profile Transfer, память проектов (`/memory`, `scan.json`, дайджест), автопилот после фикса формата `user/message`. Отчёт: [TEST-0.2.2.md](TEST-0.2.2.md) |
9
9
  | новее `0.2.2` | не проверено | API плагинов в 0.2.x ещё меняется; см. «Если сломалось» |
10
10
 
11
+ ### 0.2.2-rc.1: что отличается
12
+
13
+ - `user/message` storing: Message лежит в `event.data`, а не в `event.data.message`; автопилот теперь читает оба формата и дополнительно смотрит `session.snapshotEvents()`.
14
+ - Путь рабочей области по умолчанию на русской Windows создаётся с битой кодировкой (`Документы`) и не существует — это дефект 0.2.2, не пакета; для теста путь заменён.
15
+ - Headless-профиль по умолчанию использует `deepseek-official` API-key route; без `DEEPSEEK_API_KEY` ход падает `MISSING_CREDENTIAL`. Web-профиль с `deepseek-account` работает.
16
+
11
17
  ## Что использует 2.x
12
18
 
13
19
  | Возможность DSH | Где используется | Проверено |
package/docs/INSTALL.md CHANGED
@@ -11,7 +11,7 @@
11
11
  В DSH: **Плагины → Add plugin** → вставьте:
12
12
 
13
13
  ```
14
- dsh-desktop-kit@2.1.3
14
+ dsh-desktop-kit@2.1.4
15
15
  ```
16
16
 
17
17
  Либо локально: `npm i dsh-desktop-kit@2.0.0` — но для GUI всё равно нужен Add plugin/bundle.
@@ -0,0 +1,47 @@
1
+ # Тест на DeepSeek Harness 0.2.2-rc.1 (win-x64)
2
+
3
+ Дата: **2026-11-06** · пакет: **dsh-desktop-kit 2.1.3** (исправление автопилота вошло в 2.1.4) · ОС: Windows 11.
4
+
5
+ ## Стенд
6
+
7
+ - Установщик: `deepseek-harness-0.2.2-rc.1-win-x64.exe` (293 425 336 байт), распакован в `C:\Users\bulav\dsh-022-runtime` (7-Zip, без установки поверх рабочего DSH).
8
+ - Версия рантайма: `0.2.2-rc.1`, Node `24.21.0`, pnpm `11.28.5`.
9
+ - Изолированный `DSH_HOME`: `C:\Users\bulav\dsh-022-home` — рабочий профиль пользователя не тронут.
10
+ - Профиль `probe` создан из шаблона `web`:
11
+ ```powershell
12
+ $env:DSH_HOME = 'C:\Users\bulav\dsh-022-home'
13
+ dsh --profile probe --from-default-profile web --dump-config
14
+ dsh plugin --profile probe add C:\Users\bulav\OneDrive\Desktop\Projects\dsh
15
+ ```
16
+ Установка из репозитория прошла как `link:...\Projects\dsh`; `--dump-config` показывает ряд `dsh-desktop-kit`.
17
+ - Для UI-проверок скопирован локальный `.credentials.yaml`, модель переключена на `provider: deepseek-account` (иначе web-профиль 0.2.2 по умолчанию идёт в `deepseek-official` без API-ключа).
18
+
19
+ ## Результаты
20
+
21
+ | Плагин / сценарий | Результат | Доказательство |
22
+ |---|---|---|
23
+ | Хост-часть, 7 плагинов | монтируется, ошибок в stderr нет | профиль, 25 навыков в `DSH_HOME/skills`, `_access.log` памяти |
24
+ | Сайдбар: 4 плитки | «Навыки / Токены / Баланс / Расход» | скриншот `docs/images/022-skills-studio.png` (фон) |
25
+ | `dsh-gkb-ru-ui` | 25 карточек, категории, поиск, редактор | 25 `.gkb-sk-card`; сохранение навыка + бэкап `.dsh-kit-backups` |
26
+ | Skills Studio save | `Сохранили`, файл обновлён, резервная копия создана | `code-review-checklist-…md` в бэкапах |
27
+ | `dsh-token-lab` | панель, живой замер 27 217 токенов / 24 узла / 3% | `docs/images/022-token-lab.png` |
28
+ | `dsh-peak-guard` | карточка «Пиковый тариф ×2» + бейдж в шапке (после активной сессии) | `docs/images/022-peak-guard.png` |
29
+ | `dsh-session-move` | пункт «Переместить в рабочую область…» в меню сессии | меню сессии, `window.__DSH_SESSION_MOVE__` |
30
+ | `dsh-profile-transfer` | раздел «Перенос и резервные копии», экспорт 7/11 | `docs/images/022-transfer.png` |
31
+ | `dsh-project-memory` | авто-регистрация проекта, `scan.json`, досье, `/memory status` | `projects-memory/dsh`, `command/done` в сессии |
32
+ | Дайджест памяти в промпте | `<project-memory slug="dsh">` | session log, user/runtime context |
33
+ | `dsh-skill-autopilot` | `<skill-autopilot>` с wow-design/ui-design-system/seo | session log после фикса 2.1.4 |
34
+ | Переводы RU | «Этот повтор не удался» → «Не удалось выполнить запрос», поток/кэш/очередь | DOM-probe на 0.2.2 |
35
+ | Консоль | только `[deepseek-account] account read failed {field: profile}` | как и на 0.2.1, к плагинам не относится |
36
+
37
+ ## Найденные отличия 0.2.2
38
+
39
+ 1. **Автопилот не видел сообщение.** В 0.2.2 `user/message` хранит Message в `event.data`, а не в `event.data.message`; старый код возвращал пустой текст, и подсказка не появлялась. Исправлено в 2.1.4: поддержаны оба формата + fallback на `session.snapshotEvents()`. После фикса `<skill-autopilot>` присутствует в системном контексте.
40
+ 2. **Путь рабочей области по умолчанию.** На русской Windows 0.2.2 создаёт `C:\Users\<user>\OneDrive\Документы\deepseek-harness\default-workspace` — битая кодировка «Документы», каталог не существует. Это поведение самого 0.2.2, не пакета; для теста путь рабочей области заменён на репозиторий.
41
+ 3. **Headless-профиль** по умолчанию использует API-key route `deepseek-official`; без `DEEPSEEK_API_KEY` ход падает `MISSING_CREDENTIAL`. Web-профиль с `deepseek-account` работает; это ограничение окружения, не плагинов.
42
+
43
+ ## Ограничения теста
44
+
45
+ - Проверялся профиль `web` и UI через Playwright; отдельный `desktop`-шелл 0.2.2 не запускался (он использует тот же рантайм).
46
+ - Модель работала через аккаунт; часть запросов в тесте была короткой, чтобы не тратить токены.
47
+ - Скриншоты 0.2.2 лежат в `docs/images/022-*.png`; полный набор — в `qa/022/` (локально, вне npm).
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-desktop-kit",
3
- "version": "2.1.3",
3
+ "version": "2.1.4",
4
4
  "description": "DeepSeek Harness desktop kit 2.1: self-applying skills, live token lab, Skills Studio, self-scanning project memory, Russian UI, peak guard, chat move and profile transfer.",
5
5
  "keywords": [
6
6
  "deepseek-harness",
@@ -215,18 +215,19 @@ function latestUserMessage(session) {
215
215
  const cached = lastMessageCache.get(id);
216
216
  let lastSeq = 0;
217
217
  try {
218
- lastSeq = Number(session.seq) || 0;
218
+ lastSeq = Number(session.seq) || Number(session.logRevision) || 0;
219
219
  } catch {
220
220
  lastSeq = 0;
221
221
  }
222
- if (cached && cached.seq === lastSeq) return cached.value;
222
+ if (lastSeq > 0 && cached && cached.seq === lastSeq) return cached.value;
223
223
  let value = null;
224
224
  try {
225
225
  const nodes = session.surface?.nodes ?? [];
226
226
  for (let index = nodes.length - 1; index >= 0; index -= 1) {
227
227
  const event = session.eventAt(nodes[index]);
228
228
  if (!event || event.type !== "user/message") continue;
229
- const text = messageText(event.data?.message);
229
+ /* DSH 0.2.1 keeps the Message under data.message; 0.2.2 stores it as data. */
230
+ const text = messageText(event.data?.message ?? event.data);
230
231
  if (text.length > 0) {
231
232
  value = { seq: Number(event.seq), text };
232
233
  break;
@@ -235,7 +236,23 @@ function latestUserMessage(session) {
235
236
  } catch {
236
237
  value = null;
237
238
  }
238
- lastMessageCache.set(id, { seq: lastSeq, value });
239
+ if (!value) {
240
+ try {
241
+ const events = session.snapshotEvents?.() ?? [];
242
+ for (let index = events.length - 1; index >= 0; index -= 1) {
243
+ const event = events[index];
244
+ if (!event || event.type !== "user/message") continue;
245
+ const text = messageText(event.data?.message ?? event.data);
246
+ if (text.length > 0) {
247
+ value = { seq: Number(event.seq), text };
248
+ break;
249
+ }
250
+ }
251
+ } catch {
252
+ value = null;
253
+ }
254
+ }
255
+ if (lastSeq > 0) lastMessageCache.set(id, { seq: lastSeq, value });
239
256
  return value;
240
257
  }
241
258
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-skill-autopilot",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Skill autopilot for DSH: reads the current user message and injects a ~80-token routing hint naming the exact skills to load, so skills apply themselves without bloating the context.",
5
5
  "type": "module",
6
6
  "main": "index.js",