Генерация handbook
Выбор детализации, режима синтеза и стратегии; запуск фаз по отдельности; возобновление; и что делать, когда результат неверен.
handbook generate --source <repo> --work <workdir> [options]Это единственная дорогая команда. Всё на этой странице — о том, как тратить на неё меньше и получать от неё больше.
Начните дёшево, затем углубляйте
Убедитесь, что сканирование корректно — бесплатно
handbook analyze --source $REPO --work $WORKПроверьте количество файлов. Если оно неверно, исправьте это, прежде чем потратить хоть один токен.
Сгенерируйте с дешёвыми настройками по умолчанию
handbook generate --source $REPO --work $WORK--detail brief и --synth-mode oneshot. Прочитайте $WORK/phase2/skeleton.yaml.
Исправьте ту половину, которая неверна
Проза слишком скудная? Углубите только карточки, сохранив скелет, который вы уже проверили:
handbook generate --source $REPO --work $WORK --phase 2a --detail deep --resumeСтруктура неверна? Перезапустите 2b с циклом починки, сохранив карточки:
handbook generate --source $REPO --work $WORK --phase 2b,2c,3 --synth-mode doctorТакой порядок означает, что вы никогда не платите за глубокие карточки поверх скелета, который вот-вот выбросите.
--detail brief против deep
brief (по умолчанию) | deep | |
|---|---|---|
| На файл | назначение, роль, жизненный цикл | + разбор на 120–300 слов |
| На функцию | — | назначение, поток данных, связи |
| Размер пакета | 8 файлов на запрос | 1 файл на запрос |
| Стоимость | примерно 1× | в несколько раз больше |
Режим deep оправдан, когда handbook будет использовать агент, потому что именно заметки по функциям превращают страницу этапа в адресную книгу. Режим brief подходит для первого прохода, для очень большого репозитория или когда вам в основном нужна структура.
Режимы можно смешивать: сгенерируйте brief везде, затем перезапустите
--phase 2a --detail deep --resume, направив --source на подкаталог, который важнее
всего.
--synth-mode oneshot против doctor
oneshot синтезирует скелет за один проход. Быстро, дёшево, обычно разумно.
doctor запускает цикл починки «актор–критик»: предложить не более трёх структурных
изменений, рассмотреть их тремя критиками (инженер, архитектор, читатель), проверить
выживших механически по реальному графу, применить, переназначить, повторить.
Когда doctor окупается
Используйте его, когда oneshot выдал перекошенные этапы (один этап с 200 файлами и три по два файла),
этапы с ничего не значащими названиями или много неназначенных файлов. --max-doctor-rounds по умолчанию
равен 6; цикл также останавливается раньше при сходимости или после двух раундов без прогресса.
--strategy file против member
file (по умолчанию) — скелет синтезирует LLM; листовой единицей является исходный
файл. Масштабируется на большие репозитории. Используйте эту стратегию, если нет причин
поступить иначе.
member — skeleton.yaml пишете вы; отдельные функции и методы классифицируются
по вашим этапам, а артефакты уровня файлов выводятся из этого.
metadata:
version: 1
archetype: HTTP API server
stages:
- id: stage-1
title: Request intake
description: Accepting connections, parsing requests, and routing them.
parent: null
children: []
crosscut: false
- id: stage-2
title: Business logic
description: What the service actually does with a validated request.
parent: null
children: []
crosscut: false
- id: crosscut-1
title: Configuration and logging
description: Cross-cutting infrastructure used by every stage.
parent: null
children: []
crosscut: truehandbook generate --source $REPO --work $WORK --strategy member --skeleton skeleton.yamlСтратегия member стоит дороже — классифицируется каждая функция, — но даёт более точную прозу, а phase 2c становится бесплатной, потому что организация выводится детерминированно.
Стратегия записывается в phase2/strategy.json. Частичный перезапуск с другой --strategy без --phase 2b
будет отклонён, поэтому стратегия file по умолчанию не может незаметно перезаписать организацию,
выведенную из member.
Запуск фаз по отдельности
--phase 1 # just the graph (same as `handbook analyze`)
--phase 2a # just the cards
--phase 2b # just skeleton + assignment
--phase 2c # just the grouping
--phase 3 # just narration + registers
--phase 2 # 2a + 2b + 2c
--phase 2c,3 # a comma listКаждая фаза читает только свои артефакты, лежащие выше по потоку, поэтому это всегда безопасно. Типичные случаи:
| Ситуация | Команда |
|---|---|
| Карточки в порядке, скелет неверен | --phase 2b,2c,3 --synth-mode doctor |
| Всё в порядке, но проза читается плохо | --phase 3 --refresh |
| Нужны более глубокие карточки, и только | --phase 2a --detail deep --resume |
| Вы сменили язык повествования | --phase 3 --narrate-lang zh --refresh |
Возобновление и кэширование
--resumeпропускает файлы, у которых уже есть полная карточка на запрошенной глубине. Карточки записываются по мере готовности, так чтоCtrl-Cвсегда безопасен.--llm-cacheкэширует сырые ответы в<work>/phase3/cacheс ключом по модели, промпту и опциям. Повторные запуски во время итераций становятся почти бесплатными.--refreshигнорирует кэши phase 3. Используйте его, когда вы изменили входные данные промпта, а ключ кэша этого не заметил — например, после ручного редактированияskeleton.yaml.
--refresh отключает --llm-cache для этого запуска — так задумано.
Наблюдение за работой
handbook generate --source $REPO --work $WORK -v[scan] auto root=/Users/me/code/api
[scan] typescript: 284 files
[2a] batch 12/36 · 96 cards
[2b] 9 stages; 0 files unassigned
[3] narrating stage-4 (2 children)Использование токенов записывается в run-manifest.json по завершении запуска.
Когда результат неверен
| Симптом | Вероятная причина | Исправление |
|---|---|---|
| Этапы перекошены или бессмысленны | одношаговый синтез на необычной структуре | --phase 2b,2c,3 --synth-mode doctor |
| Много неназначенных файлов | скелет не покрывает часть репозитория | режим doctor, либо напишите скелет сами и передайте --skeleton |
| У карточек пустые описания | ответы модели не удалось разобрать | прочитайте phase2/cards/_rejected/; попробуйте более сильную модель или --detail brief |
| Проза шаблонная и бесполезная | модель слишком мала для этой кодовой базы | смените --model; эта фаза вознаграждает более сильную модель больше любой другой |
| В обзоре упоминается «generic analyzer» | у вас есть языки generic-уровня | ожидаемо — см. Достоверность анализа |
| Запуск очень медленный | слишком мало воркеров или медленный эндпоинт | повысьте --read-workers и --llm-concurrency |
| Ошибки ограничения частоты (rate limit) | слишком высокая конкурентность | понизьте --llm-concurrency; повысьте --llm-retries |
Подробнее в разделе Устранение неполадок.
Чему можно доверять
Какие части руководства — разобранные парсером факты, какие — вывод модели, что покидает вашу машину и что инструмент отказывается делать.
Рендеринг результатов
Markdown, HTML-сайт, одна самодостаточная страница, локаторный индекс для агентов и llms.txt — всё детерминировано и бесплатно для повторного запуска.