dsh-desktop-kit 2.0.1 → 2.1.1

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
@@ -1,17 +1,18 @@
1
- # DSH Desktop Kit 2.0
1
+ # DSH Desktop Kit 2.1
2
2
 
3
3
  **Навыки, которые применяются сами. Контекст, который видно. Интерфейс, который не мешает.**
4
4
 
5
5
  Набор из **7 плагинов и 25 навыков** для DeepSeek Harness 0.2.x: русский интерфейс, автопилот навыков, токен-лаборатория, студия навыков, память проектов, перенос чатов и резервные копии профиля.
6
6
 
7
- ![DSH Desktop Kit 2.0](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.0.1/docs/images/hero.png)
7
+ ![DSH Desktop Kit 2.1](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.1/docs/images/hero.png)
8
8
 
9
- **v2.0.1** · MIT · проверено на DSH `0.2.1-rc.5` (Windows 11) · без внешних зависимостей и телеметрии
9
+ **v2.1.1** · MIT · проверено на DSH `0.2.1-rc.5` (Windows 11) · без внешних зависимостей и телеметрии
10
10
 
11
11
  ---
12
12
 
13
- ## Что нового в 2.0
13
+ ## Что нового
14
14
 
15
+ - **Память проектов 2.1.** Проект распознаётся сам по рабочей папке, локальный автоскан (без LLM и сети) сразу даёт стек, команды, точки входа и тесты; дайджест сам подмешивает фрагменты досье, похожие на текущий запрос. Секреты и PII вычищаются до записи, файлы приватные (`0700/0600`). Новые действия `brief`/`scan` и команда `/memory`.
15
16
  - **Навыки стали в 3–5 раз дешевле.** Ядро `content-writing` — 2,1k токенов вместо 11k, `seo` — 2,0k вместо 11k. Вся библиотека из 25 навыков — ≈37,6k вместо ≈60,6k, а грузятся только нужные ядра.
16
17
  - **`dsh-skill-autopilot`** читает ваш запрос и подсказывает модели 2–3 точных навыка. Подсказка появляется только при совпадении и стоит 80–140 токенов.
17
18
  - **`dsh-token-lab`** — живая лаборатория контекста: состав, топ потребителей, рост и экономия библиотеки навыков.
@@ -40,23 +41,51 @@
40
41
 
41
42
  Подробный разбор и методика замера — [docs/TOKENS.md](docs/TOKENS.md).
42
43
 
44
+ ## Память проектов
45
+
46
+ `dsh-project-memory` работает без ручной настройки:
47
+
48
+ - **Распознаёт проект** по рабочей папке (`.git`, `composer.json`, `package.json`, `artisan`, `wp-config.php`, `pyproject.toml`, `go.mod`, `Cargo.toml`, `bitrix`, compose) и склеивает его после переноса по git-remote.
49
+ - **Сканирует локально** (без LLM и сети): стек, фреймворки, БД, команды запуска/тестов/сборки, точки входа, каталоги, тесты, CI, docker-сервисы, имена переменных из `.env.example`. Лимиты: 1500 файлов, глубина 3, 96 КБ на файл.
50
+ - **Подмешивает дайджест** ≤ 2800 символов: стек и команды, инварианты, грабли, свежесть, последний журнал и строки досье, похожие на текущий запрос (auto-recall).
51
+ - **Даёт `brief` и `scan`**: карточка проекта на один экран или обновление локального скана; `/memory brief|scan|on|off|projects`.
52
+ - **Безопасно хранит**: `.env`, ключи и дампы не читаются; токены, пароли, URL с логином, e-mail и телефоны вычищаются; каталог и файлы — `0700/0600` (best-effort на Windows).
53
+
54
+ Подробности — [plugins/dsh-project-memory/README.md](plugins/dsh-project-memory/README.md).
55
+
43
56
  ## Скриншоты
44
57
 
45
58
  ### Skills Studio: каталог, стоимость и редактор
46
59
 
47
- ![Каталог навыков](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.0.1/plugins/dsh-gkb-ru-ui/screenshots/02-skills-1440-light.png)
60
+ ![Каталог навыков](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.1/plugins/dsh-gkb-ru-ui/screenshots/02-skills-1440-light.png)
48
61
 
49
- ![Редактор навыка](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.0.1/plugins/dsh-gkb-ru-ui/screenshots/03-skills-editor-1440-light.png)
62
+ ![Редактор навыка](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.1/plugins/dsh-gkb-ru-ui/screenshots/03-skills-editor-1440-light.png)
50
63
 
51
64
  ### Token Lab: куда уходит контекст
52
65
 
53
- ![Токен-лаборатория](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.0.1/plugins/dsh-token-lab/screenshots/01-token-lab-1440-light.png)
66
+ ![Токен-лаборатория](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.1/plugins/dsh-token-lab/screenshots/01-token-lab-1440-light.png)
54
67
 
55
68
  ### Тёмная тема и мобильный
56
69
 
57
- ![Тёмная тема](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.0.1/plugins/dsh-gkb-ru-ui/screenshots/04-skills-1440-dark.png)
70
+ ![Тёмная тема](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.1/plugins/dsh-gkb-ru-ui/screenshots/04-skills-1440-dark.png)
71
+
72
+ <img src="https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.1/plugins/dsh-gkb-ru-ui/screenshots/05-skills-390-light.png" alt="Каталог навыков на 390 px" width="390">
73
+
74
+ ## Окно-напоминание: пиковый тариф
75
+
76
+ DeepSeek включает двойной тариф в пиковые часы (04:00–07:00 и 09:00–13:00 МСК). Плагин `dsh-peak-guard` показывает это прямо в чате, а не в документации:
77
+
78
+ - **за 5 минут до окна** — жёлтая карточка «скоро ×2» с обратным отсчётом;
79
+ - **в окне** — красная карточка: причина, границы окна в местном времени и UTC, живой отсчёт до конца и рекомендация, когда вернуться;
80
+ - **после окна** — карточка исчезает; состояние всегда доступно через `window.__DSH_PEAK_GUARD__.state()`.
81
+
82
+ ![Окно-напоминание: светлая тема](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.1/plugins/dsh-peak-guard/screenshots/03-peak-card-1440-light.png)
83
+
84
+ ![Окно-напоминание: тёмная тема](https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.1/plugins/dsh-peak-guard/screenshots/04-peak-card-1440-dark.png)
85
+
86
+ <img src="https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.1/plugins/dsh-peak-guard/screenshots/05-peak-card-390-light.png" alt="Окно-напоминание на 390 px" width="390">
58
87
 
59
- <img src="https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.0.1/plugins/dsh-gkb-ru-ui/screenshots/05-skills-390-light.png" alt="Каталог навыков на 390 px" width="390">
88
+ Подробности и настройки — [plugins/dsh-peak-guard/README.md](plugins/dsh-peak-guard/README.md).
60
89
 
61
90
  ## Что внутри
62
91
 
@@ -66,7 +95,7 @@
66
95
  | `dsh-skill-autopilot` | Читает последнее сообщение и добавляет в промпт точный маршрут навыков. Нет совпадения — нет накладных расходов. |
67
96
  | `dsh-token-lab` | Живой замер контекста: состав по типам, топ-6 узлов, рост, давление на окно, цена библиотеки навыков. |
68
97
  | `dsh-peak-guard` | Красная карточка в чате, когда действует пиковый тариф ×2: причина, окно, живой отсчёт и совет, когда вернуться. |
69
- | `dsh-project-memory` | Локальная память проектов: досье, дайджест в контексте, инструмент `project_memory`, автожурнал, `/remember`. |
98
+ | `dsh-project-memory` | Локальная память проектов: авто-распознавание, локальный автоскан, дайджест с recall, `brief`/`scan`, автожурнал, `/remember` и `/memory`. |
70
99
  | `dsh-session-move` | Drag & drop чатов между рабочими областями и пункт меню «Переместить в рабочую область…». |
71
100
  | `dsh-profile-transfer` | Настройки → «Перенос и резервные копии»: экспорт и импорт профиля, плагинов, навыков, памяти и сессий. |
72
101
  | `skills/` | 25 навыков: `wow-design`, `design-critique`, `seo`, `content-writing`, `context-economy`, `database-safety`, `testing-strategy`, `debugging-playbook`, `service-desk-*` и другие. |
@@ -56,6 +56,15 @@ RPC `/api/dsh-skill-autopilot/state|set|route` отдаёт состояние,
56
56
 
57
57
  Подписи tool-результатов берутся из `tool/call` (`callId → name + hint`), поэтому в панели видно `Результат · read · src/app.ts`, а не сырой JSON. Клиент — плитка в общем стеке сайдбара и оверлей-панель.
58
58
 
59
+ ## Память проектов
60
+
61
+ `dsh-project-memory` — два слоя:
62
+
63
+ 1. **Хост-плагин** (`index.js`): определяет проект по `workingDirectory` (вверх до маркера, с guard от home/drive), регистрирует и склеивает по git-remote, ведёт `registry.json`, досье и журнал, отдаёт `systemPrompt.context` с дайджестом и инструмент `project_memory` (`status/brief/read/search/scan/append_journal/update_section/register`), команды `/remember` и `/memory`.
64
+ 2. **Сканер** (`scan.js`): чистые функции `detectProject`, `scanProject`, `redactText`, `renderAutoSections`, `mergeAutoBlock`, `scanSummary`, `renderBrief`. Читает только allowlist манифестов/README, не открывает `.env`/ключи, ограничен 1500 файлами и глубиной 3.
65
+
66
+ Дайджест кэшируется по mtime секций, `scan.json`, git-head и хэшу последнего сообщения; auto-recall ищет до трёх релевантных строк досье по ключевым словам запроса. Блоки `AUTO-SCAN` обновляются заменой между маркерами, поэтому ручной текст секций не теряется. Записи проходят `redactText`; на POSIX каталог и файлы получают `0700/0600`.
67
+
59
68
  ## Skills Studio
60
69
 
61
70
  Хост-часть `dsh-gkb-ru-ui`:
@@ -4,11 +4,11 @@
4
4
 
5
5
  | DSH | Состояние | Что проверено |
6
6
  |---|---|---|
7
- | `0.2.1-rc.5` | работает | **2.0 проверена вживую**: 7 плагинов, Skills Studio (редактирование/создание/корзина), Token Lab на `tokenMeter`, автопилот в промпте, 25 навыков, скриншоты 1440/390 light/dark |
8
- | `0.2.2-rc.1` | работает (1.x) | хост-часть монтируется, клиентский бандл грузится, ошибок в консоли нет, навыки копируются; 2.0 на этой сборке ещё не прогонялась |
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 на этой сборке ещё не прогонялась |
9
9
  | новее `0.2.2` | не проверено | API плагинов в 0.2.x ещё меняется; см. «Если сломалось» |
10
10
 
11
- ## Что использует 2.0
11
+ ## Что использует 2.x
12
12
 
13
13
  | Возможность DSH | Где используется | Проверено |
14
14
  |---|---|---|
@@ -18,6 +18,10 @@
18
18
  | `ctx.systemPrompt.context()` + `assemblyContext.agent.session` | автопилот навыков | да |
19
19
  | `ctx.sessions.get/list` | выбор живой сессии | да |
20
20
  | `ctx.skills` / `~/.dsh/skills` | каталог и загрузка навыков | да |
21
+ | `ctx.workingDirectory.get(session)` | корень проекта для памяти | да |
22
+ | `ctx.systemPrompt.context()` (дайджест) | память проектов | да |
23
+ | `ctx.commands.register` | `/remember`, `/memory` | да |
24
+ | `session/event` (`user/message`, `turn/end`) | автожурнал и recall | да |
21
25
  | `connection.rpc.call` + `connection.fetch.register` | RPC плагинов | да |
22
26
  | `window.__ModuleLoader__.load({id, factory})` | клиентский бандл | да |
23
27
 
@@ -52,6 +56,7 @@ DSH 0.2.2 при старте проверяет `engines.dsh` и peer-диап
52
56
  6. Headless Chromium + CDP: `EXCEPTIONS []`, ни одной неактивированной записи, `window.__DSH_PEAK_GUARD__` и `window.__DSH_SESSION_MOVE__` — объекты, режим пика `peak` (09:0x МСК).
53
57
  7. После старта хоста в `DSH_HOME/skills` появились все 25 навыков.
54
58
  8. **2.0:** пакет поставлен в живой профиль `desktop` через Plugin Manager (локальная папка), хост применился без перезапуска; Skills Studio сохранила и откатила навык (бэкап в `.dsh-kit-backups`), Token Lab показал фактический замер 402k токенов, автопилот выдал маршрут по сообщению; `node tools/smoke-tests.mjs` — 2/2, `skill-cost --check` — все ядра в бюджете.
59
+ 9. **2.1:** `node tools/memory-tests.mjs` — распознавание, скан, redaction, дайджест, `brief`/`scan`, авто-блок; живой профиль перезагружен, для проекта `dsh` создан `scan.json` и блоки `AUTO-SCAN`.
55
60
 
56
61
  ## Если сломалось на новой версии
57
62
 
package/docs/INSTALL.md CHANGED
@@ -11,7 +11,7 @@
11
11
  В DSH: **Плагины → Add plugin** → вставьте:
12
12
 
13
13
  ```
14
- dsh-desktop-kit@2.0.0
14
+ dsh-desktop-kit@2.1.1
15
15
  ```
16
16
 
17
17
  Либо локально: `npm i dsh-desktop-kit@2.0.0` — но для GUI всё равно нужен Add plugin/bundle.
@@ -72,10 +72,11 @@ powershell -ExecutionPolicy Bypass -File .\install.ps1
72
72
  3. **Skills Studio**: плитка «Навыки» → карточки со стоимостью ядра → «Редактировать»; `Ctrl+S` сохраняет, копия — в `~/.dsh/skills/.dsh-kit-backups`.
73
73
  4. **Token Lab**: плитка «Токены» → состав контекста, топ-6 узлов, давление на окно.
74
74
  5. **Автопилот**: напишите «свёрстай лендинг» — в промпт добавится маршрут `wow-design` (+ `seo`); статус виден в шапке каталога.
75
- 6. **Пиковый тариф**: если сейчас 04:00–07:00 или 09:00–13:00 МСК — над композером красная карточка; за 5 минут до окна — жёлтая.
76
- 7. **Навыки**: `~/.dsh/skills` содержит 25 папок, каждое ядро ≤ 6k токенов.
77
- 8. **Перенос**: Настройки → «Перенос и резервные копии».
78
- 9. **Перемещение чатов**: правый клик по чату → «Переместить в рабочую область…».
75
+ 6. **Память проектов**: откройте папку проекта — в первом же ответе появится `project_memory`-дайджест с автосканом (стек, команды, точки входа). `/memory brief` — карточка, `/memory scan` — обновить, `/memory projects` — список. Файлы: `~/.dsh/projects-memory/<slug>/`.
76
+ 7. **Пиковый тариф**: если сейчас 04:00–07:00 или 09:00–13:00 МСК — над композером красная карточка; за 5 минут до окна — жёлтая.
77
+ 8. **Навыки**: `~/.dsh/skills` содержит 25 папок, каждое ядро ≤ 6k токенов.
78
+ 9. **Перенос**: Настройки → «Перенос и резервные копии».
79
+ 10. **Перемещение чатов**: правый клик по чату → «Переместить в рабочую область…».
79
80
 
80
81
  Диагностика: `powershell -ExecutionPolicy Bypass -File .\doctor.ps1`.
81
82
 
package/docs/PRIVACY.md CHANGED
@@ -33,6 +33,10 @@
33
33
  | `~/.dsh/dsh-autopilot.json` | режим автопилота и лимит навыков | да, вернётся к значениям по умолчанию |
34
34
  | `~/.dsh/skills/.dsh-kit-backups/*.md` | резервные копии `SKILL.md` перед сохранением в Studio | да, это только копии |
35
35
  | `~/.dsh/skills/.dsh-kit-trash/<дата>-<навык>/` | навыки, удалённые через Studio | да, после проверки |
36
+ | `~/.dsh/projects-memory/` | локальные досье проектов, журнал, `scan.json`, реестр | да, но потеряется память проектов |
37
+ | `~/.dsh/projects-memory/_access.log` | диагностика обращений (300 строк) | да |
38
+
39
+ Память проектов **не читает** `.env`, ключи, `credentials*`, `wp-config.php`, дампы и бинарники; из `.env.example` берутся только имена переменных. Перед записью строки проходят redaction (ключи, JWT, токены, URL с паролем, `*_PASSWORD/_SECRET/_TOKEN/_KEY`, e-mail, телефоны). На POSIX каталог и файлы получают `0700/0600`.
36
40
 
37
41
  Token Lab ничего не пишет: он читает `ctx.tokenMeter` и отдаёт отчёт в интерфейс. Ни один плагин набора не отправляет данные в сеть.
38
42
 
package/docs/TOKENS.md CHANGED
@@ -1,6 +1,6 @@
1
- # Экономия токенов в DSH Desktop Kit 2.0
1
+ # Экономия токенов в DSH Desktop Kit 2.1
2
2
 
3
- Документ отвечает на три вопроса: **куда уходили токены раньше**, **что изменилось в 2.0** и **как измерить эффект** на своей сессии.
3
+ Документ отвечает на три вопроса: **куда уходили токены раньше**, **что изменилось в 2.x** и **как измерить эффект** на своей сессии.
4
4
 
5
5
  ## 1. Откуда берётся расход
6
6
 
@@ -79,9 +79,16 @@ node tools/skill-cost.mjs --check # падает, если ядро > 6k ток
79
79
  - резервная копия перед каждой записью в `~/.dsh/skills/.dsh-kit-backups`;
80
80
  - предупреждение, если ядро выходит за бюджет 6k токенов.
81
81
 
82
- ### 2.5. Память проекта
82
+ ### 2.5. Память проекта (2.1)
83
83
 
84
- Дайджест памяти ограничен 2 800 символами (≈900 токенов) и обновляется по сигнатуре проекта. В 2.0 добавлено правило: при 60–70% окна сначала записать handoff, потом сжимать.
84
+ Дайджест ограничен 2 800 символами (≈900 токенов) и обновляется по сигнатуре досье, `scan.json`, git-head и хэшу последнего сообщения. В него входят стек и команды из **локального автоскана**, инварианты, грабли, последний журнал и до трёх строк досье, похожих на текущий запрос (auto-recall).
85
+
86
+ Экономия:
87
+
88
+ - автоскан заменяет первичную разведку манифестов и структуры — модель не тратит шаги на `read`/`grep`;
89
+ - `brief` — карточка на один экран вместо чтения пяти секций;
90
+ - `scan` обновляет только авто-блоки, не переписывая досье;
91
+ - при 60–70% окна сначала запишите handoff в журнал, потом сжимайте.
85
92
 
86
93
  ## 3. Как измерить эффект
87
94
 
Binary file
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dsh-desktop-kit",
3
- "version": "2.0.1",
4
- "description": "DeepSeek Harness desktop kit 2.0: self-applying skills, live token lab, Skills Studio, Russian UI, project memory, peak guard, chat move and profile transfer.",
3
+ "version": "2.1.1",
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",
7
7
  "dsh",
@@ -48,7 +48,7 @@
48
48
  "scripts": {
49
49
  "build:client": "node tools/build-client.mjs",
50
50
  "check:client": "node tools/check-client.mjs client.js",
51
- "test": "node tools/smoke-tests.mjs",
51
+ "test": "node tools/smoke-tests.mjs && node tools/memory-tests.mjs",
52
52
  "skills:cost": "node tools/skill-cost.mjs",
53
53
  "skills:check": "node tools/skill-cost.mjs --check"
54
54
  },
@@ -1,71 +1,84 @@
1
1
  # dsh-project-memory — локальная долговременная память по проектам
2
2
 
3
- Плагин для DeepSeek Harness: превращает «разберись и запомни проект» в постоянную
4
- локальную базу знаний, которая сама подгружается в новые чаты.
3
+ Плагин для DeepSeek Harness: сам распознаёт проект по рабочей папке, делает **локальный
4
+ автоскан** (без LLM и сети), ведёт досье и подмешивает в промпт компактный дайджест.
5
+ Ставится один раз — работает у любого пользователя без ручной настройки.
5
6
 
6
7
  ## Что делает
7
8
 
8
- 1. **Определяет проект по рабочей директории сессии.** Если каталог не зарегистрирован,
9
- но в нём (или выше) есть маркеры проекта (`.git`, `AGENTS.md`, `composer.json`,
10
- `package.json`, `artisan`, `wp-config.php`, …), проект регистрируется самозаранее
11
- и для него создаётся скелет досье.
12
- 2. **Подмешивает компактный дайджест** (≤ ~2.8 К символов) в контекст каждого запроса
13
- модели: название, корень, стек, статус свежести (git), главные инварианты, известные
14
- грабли, последняя запись журнала и напоминание, если в прошлом ходе проект менялся,
15
- а память не обновлялась. Для подагентов дайджест не подмешивается.
16
- 3. **Даёт модели инструмент `project_memory`**: `status`, `list`, `read`, `search`,
17
- `append_journal`, `update_section`, `register`.
18
- 4. **Автоматически пишет журнал.** После каждого хода, в котором проект правился или
19
- выполнялись команды, в `JOURNAL/YYYY-MM.md` добавляется детерминированная запись:
20
- время, ход, сессия, изменённые файлы, команды, ошибки, признак «память обновлена
21
- моделью». Это работает даже если модель не успела ничего записать.
22
- 5. **Команда `/remember`** — просит агента загрузить скилл `project-deep-dive`,
23
- проанализировать проект и заполнить досье.
9
+ 1. **Распознаёт проект.** Идёт вверх по рабочей директории до ближайшего маркера
10
+ (`.git`, `composer.json`, `package.json`, `artisan`, `wp-config.php`, `pyproject.toml`,
11
+ `go.mod`, `Cargo.toml`, `Gemfile`, `bitrix`, compose) и регистрирует его. Одинаковый
12
+ git-remote склеивает проект после переноса/переименования папки.
13
+ 2. **Сканирует локально.** Читает только allowlist манифестов и документации: стек,
14
+ фреймворки, БД, команды запуска/тестов/сборки, точки входа, ключевые каталоги, тесты,
15
+ CI, docker-сервисы, имена переменных из `.env.example`. Скан ограничен 1500 файлами,
16
+ глубиной 3 и 96 КБ на файл.
17
+ 3. **Подмешивает дайджест** (≤ 2800 символов): стек, команды, точки входа, инварианты,
18
+ грабли, свежесть, последний журнал и **фрагменты досье, похожие на текущий запрос**
19
+ (auto-recall). Для подагентов дайджест не подмешивается.
20
+ 4. **Даёт инструмент `project_memory`:** `status`, `brief`, `list`, `read`, `search`,
21
+ `scan`, `append_journal`, `update_section`, `register`.
22
+ 5. **Пишет журнал автоматически.** После хода с правками/командами в `JOURNAL/YYYY-MM.md`
23
+ добавляется детерминированная запись: файлы, команды, ошибки, признак «память обновлена».
24
+ 6. **Команды:** `/remember` — глубокий анализ с `project-deep-dive`; `/memory brief|scan|on|off|projects`
25
+ — карточка, обновление скана, включение/выключение и список проектов.
24
26
 
25
- ## Где хранится
27
+ ## Безопасность и приватность
28
+
29
+ - Всё лежит локально в `<DSH_HOME>/projects-memory`; сетевых вызовов нет.
30
+ - Секреты не читаются: `.env`, ключи, `credentials*`, `wp-config.php`, дампы и бинарники
31
+ исключены. Из `.env.example` берутся **только имена** переменных.
32
+ - Перед записью каждая строка проходит redaction: приватные ключи, JWT, токены GitHub/
33
+ Slack/AWS/Google/Stripe, URL с логином/паролем, `*_PASSWORD/_SECRET/_TOKEN/_KEY`,
34
+ e-mail и телефоны. Это последняя линия защиты: в досье всё равно не должно быть секретов.
35
+ - На POSIX каталог и файлы получают права `0700/0600`; на Windows — best-effort.
36
+ - Блоки `<!-- AUTO-SCAN:START … END -->` в секциях обновляются только сканером; текст
37
+ модели вокруг них не трогается.
26
38
 
27
- `<DSH_HOME>/projects-memory/` (по умолчанию `C:\Users\<user>\.dsh\projects-memory\`):
39
+ ## Где хранится
28
40
 
29
41
  ```
30
- registry.json проекты и настройки
31
- _state.json служебное состояние сессий
32
- _access.log диагностика (ограничен 300 строками)
33
- <slug>/PROJECT.md паспорт проекта
34
- <slug>/ARCHITECTURE.md архитектура
35
- <slug>/CODE-MAP.md карта кода
36
- <slug>/INVARIANTS.md инварианты и запреты
37
- <slug>/GOTCHAS.md грабли и решения
38
- <slug>/RUNBOOK.md запуск/тесты/деплой/откат
39
- <slug>/JOURNAL/YYYY-MM.md журнал по месяцам
40
- <slug>/INDEX.json машинный индекс/свежесть
42
+ <DSH_HOME>/projects-memory/
43
+ registry.json проекты и настройки
44
+ _state.json состояние сессий (7 дней)
45
+ _access.log диагностика (300 строк)
46
+ <slug>/PROJECT.md паспорт + автоскан
47
+ <slug>/ARCHITECTURE.md структура + автоскан
48
+ <slug>/CODE-MAP.md карта кода + автоскан
49
+ <slug>/INVARIANTS.md инварианты и запреты
50
+ <slug>/GOTCHAS.md грабли и решения
51
+ <slug>/RUNBOOK.md запуск/тесты/деплой + автоскан
52
+ <slug>/JOURNAL/YYYY-MM.md журнал
53
+ <slug>/INDEX.json машинный индекс
54
+ <slug>/scan.json кэш последнего скана
41
55
  ```
42
56
 
43
- Ничего не отправляется в сеть: наружу уходит только обычный промпт модели, в который
44
- попадает дайджест. Секреты/PII при записи вычищаются регулярками (и это последняя
45
- линия защиты — в досье их быть не должно).
57
+ ## Настройки (`registry.json → settings`)
46
58
 
47
- ## Установка
48
-
49
- ```
50
- plugin_manager install_bundle target = <этот каталог>
51
- ```
52
- После установки хост-кода достаточно перезагрузки конфига (`set_bundle`), клиентская
53
- часть и скиллы подхватываются без перезапуска приложения (страницу достаточно
54
- обновить, чтобы увидеть изменения клиентских плагинов).
59
+ | Ключ | По умолчанию | Назначение |
60
+ |---|---|---|
61
+ | `digestBudgetChars` | `2800` | бюджет дайджеста в символах |
62
+ | `autoRegister` | `true` | регистрировать проект по маркерам |
63
+ | `autoScan` | `true` | локальный скан при первом входе и устаревании |
64
+ | `autoRecall` | `true` | подмешивать фрагменты досье по текущему запросу |
65
+ | `maxProjects` | `200` | предохранитель авто-регистрации |
66
+ | `scanTtlHours` | `24` | как часто пересканировать без изменений git |
67
+ | `injectSubagents` | `false` | дайджест подагентам |
68
+ | `curator.enabled` | `false` | фоновый LLM-куратор (включается осознанно, стоит токенов) |
55
69
 
56
- ## Настройки (registry.json → settings)
70
+ ## Экономия контекста
57
71
 
58
- - `digestBudgetChars` — бюджет дайджеста в символах (по умолчанию 2800);
59
- - `injectSubagents` — подмешивать ли дайджест подагентам (по умолчанию `false`);
60
- - `autoRegister` — авто-регистрация проектов по маркерам (по умолчанию `true`);
61
- - `curator.enabled`, `curator.idleMs` — фоновый куратор-субагент (если подключён мост).
72
+ - Автоскан заменяет первичную разведку файлов: модель получает стек и команды сразу.
73
+ - `brief` — карточка на один экран вместо чтения пяти секций.
74
+ - `search`/`read` — точечно; дайджест сам подсказывает релевантные строки.
75
+ - Дайджест кэшируется по файлам, git-head и тексту запроса; повторно не пересобирается.
62
76
 
63
77
  ## Ограничения
64
78
 
65
- - Признак «проект» выводится из путей; для нестандартных раскладок регистрируйте проект
66
- вручную (`project_memory action=register name=... root=...`).
67
- - Дайджест — сжатая выжимка; полную информацию агент читает инструментом.
68
- - Плагин использует внутренние сервисы Harness (`systemPrompt.context`, `tools`,
69
- `session/event`); после крупного обновления DSH возможна адаптация.
70
- - Автожурнал пишет факты, но не литературные выводы: смысловое резюме — задача модели
71
- или куратора.
79
+ - Распознавание эвристическое (маркеры + git). Для нестандартных раскладок —
80
+ `project_memory action=register name=... root=...`.
81
+ - Скан не заменяет глубокий анализ: он даёт факты «что за проект и как запускать»,
82
+ смысловые выводы пишет модель через `update_section` или `/remember`.
83
+ - Куратор по умолчанию выключен: это субагент, он расходует токены. Включайте, если
84
+ нужна автоматическая смысловая запись после каждого хода.