Одна кодовая база на входе. Два руководства на выходе — одно читает команда, по другому ориентируется агент.
Ваш кодинг-агент делает grep по символу, находит три из семи важных мест и отдаёт половину изменения. Это сбой не рассуждения, а маршрутизации. Handbooks даёт ему карту.
# весь конвейер, офлайн, без API-ключа, ~30 с
pnpm install && pnpm build
pnpm demoВстроенный образец проекта, встроенный mock-сервер LLM. Ни одного потраченного токена.
Семь команд, один цикл
Бирюзовые шаги детерминированы — без LLM и без сети, их можно бесплатно перезапускать в CI. Янтарные шаги обращаются к вашей конечной точке и кешируют то, что узнали.
- 1
analyzeБЕЗ LLMРазбирает каждый файл в типизированный граф вызовов.
- 2
generateLLMКарточки, этапы, проза, межэтапное состояние.
- 3
renderБЕЗ LLMMarkdown, HTML, индекс для агентов, llms.txt.
- 4
skillБЕЗ LLMУпаковывает всё для вашего кодинг-агента.
- 5
planLLMСводит правку к байт-точным изменениям.
- 6
applyБЕЗ LLMПатч «всё или ничего», с откатом.
- 7
resyncLLMПрокатывает руководство вперёд. Без пересборки.
- Как работает каждая фаза →
Почему прочитанному можно доверять
Факты берутся из парсера
tree-sitter строит граф вызовов: функции, разрешённые рёбра, граничные вызовы и вызовы, которые разрешить не удалось, — они помещаются в карантин и никогда не угадываются. Этот слой никогда не касается LLM, поэтому он одинаков в каждом запуске.
Проза ложится сверху — и говорит об этом
LLM пишет, для чего нужен файл и как устроена подсистема, всегда привязываясь к графу. Там, где она не получилась, структура всё равно выпускается — с пустым описанием. Отсутствующее предложение лучше выдуманного.
Построено для маршрутизации, а не для чтения
Результат отвечает на вопрос «какие файлы, функции и состояние должно затронуть это изменение?» — включая разбросанные и неочевидные, которые текстовый поиск пропускает. Затем планировщик читает реальные исходники по каждому адресу.
Применение скучно намеренно
Якорь должен совпадать байт в байт и ровно один раз. Всё проверяется до того, как что-либо будет записано. Каждый затронутый файл сохраняется вместе с хешем до патча, поэтому откат может доказать, что именно он восстанавливает.
Оно остаётся актуальным инкрементально
Resync сравнивает старый граф вызовов с новым и перегенерирует только то, что действительно изменилось. Тронули три файла — платите за три файла. Документация перестаёт гнить, потому что её обновление перестало быть дорогим.
И раскрывает собственные границы
Языки, которые читает анализатор на основе конфигурации, названы в обзоре, поэтому «отношения вызовов по мере возможностей» невозможно прочитать как «точные».
Достоверность анализа →Один запуск. Шесть готовых форматов.
Генерация — дорогая часть, и она выполняется один раз. Всё ниже — детерминированный ре-рендер, который можно запускать на каждом коммите.
Markdown-руководство
обзор · индекс · страница на каждый этап · таблица регистров состояния
Многостраничный HTML-сайт
липкое оглавление, хлебные крошки, смена темы — работает по file://
Одна автономная страница
один .html, который можно отправить почтой или приложить к тикету
Индекс-локатор для агентов
назначение · понятия входа · состояние · образцы · со-правки
llms.txt + llms-full.txt
конвенция llms.txt плюс всё то же самое одним полотном
Агентный SKILL-пакет
SKILL.md + references/ + хеш содержимого на каждый файл
Начните с бесплатной команды
handbook analyze никогда не требует API-ключа. Запустите её на своём репозитории, посмотрите на число файлов и функций и решите, стоит ли остальное хотя бы одного токена.