docs(secretary): гайд — раздел 11 про секретаря; хэндофф — следующий шаг (разблокировка линз)
- router-mentor-wall-GUIDE.md: новый раздел 11 «Секретарь» (включение/выключение/снос) + пункт оглавления - 2026-06-25-secretary-fluffy-EPIC-status-handoff.md: раздел «на чём остановились 26.06» — разблокировка линз - содержание.md: убрано закрытое пробное дело «развитие-секретаря» Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,3 +1,2 @@
|
||||
- [создание-секретаря](создание-секретаря/protocol.md) — Создание фонового секретаря протокола работ · открыто · 2026-06-22 12:40
|
||||
- [строительство-секретаря](строительство-секретаря/protocol.md) — Доработка секретаря: двойники дел (№2), выдачи инструментов (№3), надёжность reconcile, целостность «Шагов» · открыто · 2026-06-22 15:50
|
||||
- [мета-секретарь](мета-секретарь/protocol.md) — Спроектировать «умного» секретаря: фоновый аудитор скрытых вопросов с отслеживанием мутации и тихого закрытия · открыто · 2026-06-22 12:43
|
||||
- [протокол-наставника](протокол-наставника/protocol.md) — Протокол работы с наставником (роутер-наставник) · открыто · 2026-06-24 01:44
|
||||
- [секретарь-лидерра](секретарь-лидерра/protocol.md) — секретарь-лидерра · открыто · 2026-06-25 12:41
|
||||
@@ -54,6 +54,7 @@
|
||||
8. [Частые ошибки и тупики](#s8)
|
||||
9. [Только владелец (штатный режим, снятие печати)](#s9)
|
||||
10. [Что под капотом (хуки + env)](#s10)
|
||||
11. [Секретарь (фоновый протоколист дел)](#s11)
|
||||
|
||||
---
|
||||
|
||||
@@ -236,6 +237,54 @@ Claude обязан **запросить** подтверждение. В шта
|
||||
|
||||
---
|
||||
|
||||
<a id="s11"></a>
|
||||
## 11. Секретарь (фоновый протоколист дел) — включение/выключение/снос
|
||||
|
||||
> Сверено с кодом 2026-06-26 (`tools/secretary-*.mjs`, `.claude/settings.json`). **Это АВТОМАТ — не ищи код, не запускай руками.** Хук `secretary-prompt-hook.mjs` (UserPromptSubmit, [settings.json:323](../../.claude/settings.json#L323)) ловит фразу в промпте владельца и всё делает сам.
|
||||
|
||||
**Включить дело:** владелец пишет «**включи секретаря <имя-дела>**». Хук пишет флажок сессии
|
||||
`~/.claude/runtime/secretary-mode-<session>.json` (`mode:on`, `work=имя`) и заводит/активирует дело. Имя
|
||||
выдирается regex'ом; **похожее** на существующее → хук переспрашивает (анти-двойник, `resolveCaseActivation`
|
||||
в [secretary-flag.mjs](../../tools/secretary-flag.mjs)). Контроллеру делать **НИЧЕГО** — только знать, что включилось.
|
||||
|
||||
**Выключить дело:** «**выключи секретаря**» → флажок `mode:closing`; ближайший стоп-хук добивает финальный
|
||||
спан и ставит `mode:off`. ⚠️ слово строго «**секретар**…» — опечатка («секреторя») НЕ ловится
|
||||
(`detectSecretaryCommand`).
|
||||
|
||||
**Что происходит, пока включено:** на КАЖДОМ ходу стоп-хук (`secretary-stop-hook.mjs`) ставит закрытые спаны
|
||||
в очередь дела и «выстреливает» фоновый воркер `tools/secretary-worker.mjs <папка-дела>` (detached, на флэше,
|
||||
**единственный писатель** протокола). Пишет только ВПЕРЁД от хода включения, не задним числом.
|
||||
|
||||
**Где что лежит:**
|
||||
- Дело: `docs/secretary/<имя>/` — `protocol.md` (пульт-ёлочка) · `protocol.json` (источник) · `архив.md`
|
||||
(полный леджер, только под флагом fluffy) · `_sessions.json` · `_worker/` (очередь+курсор воркера).
|
||||
- Оглавление дел: `docs/secretary/содержание.md` (его показывает SessionStart-хук в начале сессии).
|
||||
- ⚠️ **Сырьё `docs/secretary/raw/<session>.log` пишется ВСЕГДА**, каждый стоп, для ЛЮБОЙ сессии (стоп-хук
|
||||
строки 40-45 — ДО проверки флажка). Это зеркало сессии, **НЕ часть дела**. Удалять бессмысленно — возродится
|
||||
следующим стопом. Не трогай.
|
||||
|
||||
**Пушистый конвейер v2** (две грядки + мост + ёлочка + `архив.md`): флаг `SECRETARY_FLUFFY=1` (env) ИЛИ
|
||||
рантайм-файл `~/.claude/runtime/secretary-fluffy` (`fluffyPipelineOn`, [secretary-flag.mjs:66](../../tools/secretary-flag.mjs#L66)).
|
||||
Без флага — классический рендер (fallback). На 2026-06-26 ВКЛЮЧЁН.
|
||||
|
||||
**СНЕСТИ дело под ноль** (как будто не включали) — порядок важен, иначе воскресает:
|
||||
1. **Удали флажок** `~/.claude/runtime/secretary-mode-<session>.json` ПЕРВЫМ — без него стоп-хук на строке 49
|
||||
выходит и новых воркеров не спавнит. (Read рантайма закрыт — просто удаляй.)
|
||||
2. **Убей ВСЕХ воркеров дела и дождись смерти.** Поздний воркер закрытия делает длинный LLM-проход и
|
||||
**дописывает дело уже ПОСЛЕ удаления папки** → дело «воскресает». Перечисли pid'ы
|
||||
(`Get-CimInstance Win32_Process | ? { $_.Name -eq 'node.exe' -and $_.CommandLine -like '*secretary-worker*' }`),
|
||||
`process.kill(pid)` в цикле, **повторно проверь, что их нет**, и только потом удаляй.
|
||||
3. **Удали папку дела** `docs/secretary/<имя>/` (рекурсивно). Сырьё `raw/<session>.log` НЕ трогай (п. выше).
|
||||
4. **Edit** убери строку дела из `docs/secretary/содержание.md`.
|
||||
|
||||
⚠️ Пол режет `rm` / `Stop-Process` напрямую — всё это делай **node-скриптом-файлом** (`node x.mjs` с
|
||||
`process.kill` + `fs.rmSync`; пол пускает запуск скрипта, §3). Шаги 1-3 — в одном скрипте (kill → ждать →
|
||||
rm); шаг 4 — отдельным Edit.
|
||||
|
||||
[↑ наверх](#top)
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Урок 2026-06-19 — как НЕ работать со стеной (косяки контроллера)
|
||||
|
||||
> Записано после сессии, где контроллер потратил почти весь ход на толкание со стеной вместо дела. ВСЕ причины — недоработки контроллера, НЕ стена: стена ловила реальные дефекты планов.
|
||||
|
||||
@@ -139,3 +139,40 @@ follow-up тема-калибровка.
|
||||
`git commit`/`git merge --ff-only`/`git push gitea main` в свой терминал** (`-m` ДО `--`; на unlink-pack
|
||||
отвечать `n`). docs-only коммиты проходят сами, смешанные — нужна расписка. Несколько мелких коммитов одной
|
||||
строкой: `git commit -m "…" -- путь1 путь2 …` (один прогон хуков).
|
||||
|
||||
---
|
||||
|
||||
## ⏭️ НА ЧЁМ ОСТАНОВИЛИСЬ 26.06.2026 — следующий шаг: РАЗБЛОКИРОВКА ЛИНЗ
|
||||
|
||||
Эпик v2 закрыт (в main). Владелец открыл новую задачу — пока ОБСУЖДЕНИЕ, код НЕ начат. Дело секретаря
|
||||
«развитие-секретаря» включалось на пробу и **выключено** (mode:closing) — заново не включать без команды.
|
||||
|
||||
**Две проблемы конвейера (владелец назвал их парой — тянут в разные стороны):**
|
||||
1. **Линзы диагноста зажаты одним ответом.** Каждая из 8 линз возвращает РОВНО ОДНУ находку за ход. Места
|
||||
зажима в `tools/secretary-harvest.mjs`: (а) `SYS_11` Л1 «назови **САМОЕ** рисковое» (строка ~47);
|
||||
(б) правило отчёта «8 линз = 8 вердиктов, по ОДНОМУ» (строки ~56-59); (в) схема `{"lenses":[{...,"text"}]}`
|
||||
— один `text` на линзу (строка ~64). На многоголовом ходу (4 допущения) ловится 1, остальные теряются —
|
||||
и ровно на жирных стартовых ходах.
|
||||
2. **Дикий рост объёма протокола.**
|
||||
|
||||
**Почему просто «разблокировать» нельзя:** у брейншторма щедрость безопасна — кандидаты ЭФЕМЕРНЫ (слабое
|
||||
тонет само). У линз НЕТ: находки = ПОСТОЯННЫЕ ветки `hidden[]`, каждая лишняя растёт навсегда → разблок №1
|
||||
усиливает №2. Нужен разблок С ПОВОДКОМ.
|
||||
|
||||
**Предложенный дизайн (на согласовании у владельца, НЕ закрыт):**
|
||||
- Переформулировать Л1 (и по аналогии Л4 доказательность, Л9 хвосты — они многоголовые): «несколько
|
||||
по-настоящему РАЗНЫХ — назови каждое, сначала острейшее; одно размазанное на три — НЕ дроби».
|
||||
- Вердикт линзы: `clean` ИЛИ `findings:[…]` (пустой список = clean). Схема — массив `findings` на линзу.
|
||||
Сохранить «8 линз, ни одной пропущенной» (критик полноты — находка №16).
|
||||
- **Поводок против №2 (обязателен, оба):** в промпт — «лучше 1 острая, чем 3 размазанные; по умолчанию 0-1»;
|
||||
в КОД — жёсткий стоп-кран: **≤3 на линзу** и **≤6 новых веток за ход всего** (truncate в `diagFindings`,
|
||||
оставляя острейшие по тяжести).
|
||||
- **Тронуть:** `tools/secretary-harvest.mjs` (`SYS_11`, Л1, схема выхода, `diagFindings` — разложить
|
||||
`findings[]` в плоский список + потолок) и `tools/secretary-apply.mjs` (`applyHarvest` сейчас читает один
|
||||
`text` на линзу → переучить на массив).
|
||||
|
||||
**ОТКРЫТЫЙ ВОПРОС к владельцу (не закрывать без него):** берём подход «массив + потолок ≤6 веток/ход»?
|
||||
Число 6 — норм, или свободнее/жёстче?
|
||||
|
||||
**Дальше по правилам:** это feature-правка → через `brainstorming`/`writing-plans` → TDD → коммит через
|
||||
терминал владельца. Сперва владелец подтверждает потолок, потом план, потом код.
|
||||
|
||||
Reference in New Issue
Block a user