dsh-desktop-kit 2.0.0 → 2.1.0
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 +39 -10
- package/docs/ARCHITECTURE.md +9 -0
- package/docs/COMPATIBILITY.md +8 -3
- package/docs/INSTALL.md +22 -8
- package/docs/PRIVACY.md +4 -0
- package/docs/TOKENS.md +17 -10
- package/docs/images/hero.png +0 -0
- package/package.json +3 -3
- package/plugins/dsh-project-memory/README.md +67 -54
- package/plugins/dsh-project-memory/index.js +314 -71
- package/plugins/dsh-project-memory/package.json +3 -2
- package/plugins/dsh-project-memory/scan.js +607 -0
- package/skills/project-deep-dive/SKILL.md +12 -11
- package/skills/project-memory-maintenance/SKILL.md +11 -11
package/README.md
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
# DSH Desktop Kit 2.
|
|
1
|
+
# DSH Desktop Kit 2.1
|
|
2
2
|
|
|
3
3
|
**Навыки, которые применяются сами. Контекст, который видно. Интерфейс, который не мешает.**
|
|
4
4
|
|
|
5
5
|
Набор из **7 плагинов и 25 навыков** для DeepSeek Harness 0.2.x: русский интерфейс, автопилот навыков, токен-лаборатория, студия навыков, память проектов, перенос чатов и резервные копии профиля.
|
|
6
6
|
|
|
7
|
-

|
|
8
8
|
|
|
9
|
-
**v2.
|
|
9
|
+
**v2.1.0** · MIT · проверено на DSH `0.2.1-rc.5` (Windows 11) · без внешних зависимостей и телеметрии
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
-
## Что нового
|
|
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
|
-

|
|
48
61
|
|
|
49
|
-

|
|
50
63
|
|
|
51
64
|
### Token Lab: куда уходит контекст
|
|
52
65
|
|
|
53
|
-

|
|
54
67
|
|
|
55
68
|
### Тёмная тема и мобильный
|
|
56
69
|
|
|
57
|
-

|
|
71
|
+
|
|
72
|
+
<img src="https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.0/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
|
+

|
|
83
|
+
|
|
84
|
+

|
|
85
|
+
|
|
86
|
+
<img src="https://cdn.jsdelivr.net/npm/dsh-desktop-kit@2.1.0/plugins/dsh-peak-guard/screenshots/05-peak-card-390-light.png" alt="Окно-напоминание на 390 px" width="390">
|
|
58
87
|
|
|
59
|
-
|
|
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` | Локальная память проектов:
|
|
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-*` и другие. |
|
package/docs/ARCHITECTURE.md
CHANGED
|
@@ -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`:
|
package/docs/COMPATIBILITY.md
CHANGED
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
| DSH | Состояние | Что проверено |
|
|
6
6
|
|---|---|---|
|
|
7
|
-
| `0.2.1-rc.5` | работает | **2.
|
|
8
|
-
| `0.2.2-rc.1` | работает (1.x) | хост-часть монтируется, клиентский бандл грузится, ошибок в консоли нет, навыки копируются; 2.
|
|
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.
|
|
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
|
@@ -3,10 +3,20 @@
|
|
|
3
3
|
## Требования
|
|
4
4
|
|
|
5
5
|
- Windows 10/11.
|
|
6
|
-
- DeepSeek Harness **0.2.1-rc.5** или новее (`0.2.2-rc.1` проверен).
|
|
6
|
+
- DeepSeek Harness **0.2.1-rc.5** или новее (`0.2.2-rc.1` проверен на 1.x).
|
|
7
7
|
- Профиль `desktop` уже создан: запустите DSH один раз и закройте окно.
|
|
8
8
|
|
|
9
|
-
## Способ
|
|
9
|
+
## Способ 0. Пакет из npm (быстрее всего)
|
|
10
|
+
|
|
11
|
+
В DSH: **Плагины → Add plugin** → вставьте:
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
dsh-desktop-kit@2.1.0
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Либо локально: `npm i dsh-desktop-kit@2.0.0` — но для GUI всё равно нужен Add plugin/bundle.
|
|
18
|
+
|
|
19
|
+
## Способ 1. Интерфейс «Плагины» (локальная папка)
|
|
10
20
|
|
|
11
21
|
1. Скопируйте репозиторий себе:
|
|
12
22
|
|
|
@@ -32,7 +42,7 @@
|
|
|
32
42
|
|
|
33
43
|
Плагин сам:
|
|
34
44
|
- добавит один bundle `dsh-desktop-kit` в профиль;
|
|
35
|
-
- смонтирует
|
|
45
|
+
- смонтирует семь плагинов как дочерние;
|
|
36
46
|
- скопирует недостающие навыки в `~/.dsh/skills`.
|
|
37
47
|
|
|
38
48
|
## Способ 2. Скрипт
|
|
@@ -58,11 +68,15 @@ powershell -ExecutionPolicy Bypass -File .\install.ps1
|
|
|
58
68
|
## Проверка после установки
|
|
59
69
|
|
|
60
70
|
1. **Плагины**: в списке появился `dsh-desktop-kit` (или отдельные плагины), переключатель включён.
|
|
61
|
-
2. **Сайдбар**: внизу — плитки «Навыки», «Баланс», «Расход» (нужен вход в аккаунт DeepSeek; на экране входа сайдбар скрыт).
|
|
62
|
-
3.
|
|
63
|
-
4.
|
|
64
|
-
5.
|
|
65
|
-
6.
|
|
71
|
+
2. **Сайдбар**: внизу — плитки «Навыки», «Токены», «Баланс», «Расход» (нужен вход в аккаунт DeepSeek; на экране входа сайдбар скрыт). На узком окне плитки скрыты, каталог открывает кнопка «Навыки» внизу справа.
|
|
72
|
+
3. **Skills Studio**: плитка «Навыки» → карточки со стоимостью ядра → «Редактировать»; `Ctrl+S` сохраняет, копия — в `~/.dsh/skills/.dsh-kit-backups`.
|
|
73
|
+
4. **Token Lab**: плитка «Токены» → состав контекста, топ-6 узлов, давление на окно.
|
|
74
|
+
5. **Автопилот**: напишите «свёрстай лендинг» — в промпт добавится маршрут `wow-design` (+ `seo`); статус виден в шапке каталога.
|
|
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. **Перемещение чатов**: правый клик по чату → «Переместить в рабочую область…».
|
|
66
80
|
|
|
67
81
|
Диагностика: `powershell -ExecutionPolicy Bypass -File .\doctor.ps1`.
|
|
68
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.
|
|
1
|
+
# Экономия токенов в DSH Desktop Kit 2.1
|
|
2
2
|
|
|
3
|
-
Документ отвечает на три вопроса: **куда уходили токены раньше**, **что изменилось в 2.
|
|
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
|
-
Дайджест
|
|
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
|
|
|
@@ -100,12 +107,12 @@ node tools/skill-cost.mjs --json > skill-cost.json
|
|
|
100
107
|
|
|
101
108
|
| Показатель | До | После |
|
|
102
109
|
|---|---|---|
|
|
103
|
-
| `content-writing` ядро | ≈11 000 токенов | ≈
|
|
104
|
-
| `seo` ядро | ≈11 000 токенов | ≈
|
|
105
|
-
| `wow-design` ядро | ≈5 000 токенов | ≈1
|
|
106
|
-
| `skills-router` ядро | ≈2 900 токенов | ≈1
|
|
107
|
-
| Библиотека из 25 навыков | ≈60
|
|
108
|
-
| Типовая задача (3
|
|
110
|
+
| `content-writing` ядро | ≈11 000 токенов | ≈2 100 |
|
|
111
|
+
| `seo` ядро | ≈11 000 токенов | ≈2 000 |
|
|
112
|
+
| `wow-design` ядро | ≈5 000 токенов | ≈1 900 |
|
|
113
|
+
| `skills-router` ядро | ≈2 900 токенов | ≈1 700 |
|
|
114
|
+
| Библиотека из 25 навыков | ≈60 600 токенов | ≈37 600 |
|
|
115
|
+
| Типовая задача (3 ядра) | 15 000–30 000 | ≈4 500 |
|
|
109
116
|
| Подсказка автопилота | — | 80–140 |
|
|
110
117
|
|
|
111
118
|
Цифры — оценка `байты / 3.2`; фактический расход зависит от модели и языка.
|
package/docs/images/hero.png
CHANGED
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-desktop-kit",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "DeepSeek Harness desktop kit 2.
|
|
3
|
+
"version": "2.1.0",
|
|
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
|
-
|
|
10
|
-
`
|
|
11
|
-
|
|
12
|
-
2.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
3.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
39
|
+
## Где хранится
|
|
28
40
|
|
|
29
41
|
```
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
<slug>/
|
|
35
|
-
<slug>/
|
|
36
|
-
<slug>/
|
|
37
|
-
<slug>/
|
|
38
|
-
<slug>/
|
|
39
|
-
<slug>/
|
|
40
|
-
<slug>/
|
|
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
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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
|
-
##
|
|
70
|
+
## Экономия контекста
|
|
57
71
|
|
|
58
|
-
-
|
|
59
|
-
- `
|
|
60
|
-
- `
|
|
61
|
-
-
|
|
72
|
+
- Автоскан заменяет первичную разведку файлов: модель получает стек и команды сразу.
|
|
73
|
+
- `brief` — карточка на один экран вместо чтения пяти секций.
|
|
74
|
+
- `search`/`read` — точечно; дайджест сам подсказывает релевантные строки.
|
|
75
|
+
- Дайджест кэшируется по файлам, git-head и тексту запроса; повторно не пересобирается.
|
|
62
76
|
|
|
63
77
|
## Ограничения
|
|
64
78
|
|
|
65
|
-
-
|
|
66
|
-
|
|
67
|
-
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
или куратора.
|
|
79
|
+
- Распознавание эвристическое (маркеры + git). Для нестандартных раскладок —
|
|
80
|
+
`project_memory action=register name=... root=...`.
|
|
81
|
+
- Скан не заменяет глубокий анализ: он даёт факты «что за проект и как запускать»,
|
|
82
|
+
смысловые выводы пишет модель через `update_section` или `/remember`.
|
|
83
|
+
- Куратор по умолчанию выключен: это субагент, он расходует токены. Включайте, если
|
|
84
|
+
нужна автоматическая смысловая запись после каждого хода.
|