Быстрый старт
Прогоните весь тулчейн от начала до конца примерно за тридцать секунд — офлайн, без API-ключа и не потратив ни одного токена.
Самый быстрый способ понять, что делает Handbooks, — посмотреть, как он это делает. Здесь запускается весь конвейер — анализ, генерация, рендеринг, упаковка, валидация — на встроенном образце проекта с использованием встроенного mock-сервера LLM.
Без API-ключа. Без сети. Ноль токенов.
Шаг 1 — Запустите
git clone <this repo> && cd handbooks
pnpm install
pnpm build
pnpm demoШаг 2 — Прочитайте, что он напечатал
== build ==
== start mock LLM (offline; prose will be placeholder text) ==
== 1. analyze (no LLM) ==
{ "language": "multi", "files": 5, "functions": 23, "edgesKept": 31, "edgesDropped": 4, "filesUnparsed": 0 }
== 2. generate (phases 2+3) ==
{ "phasesRun": ["2a","2b","2c","3"], "nCards": 5, "nStages": 4, "nRegisters": 2 }
== 3. render markdown + HTML site + agent index + llms.txt ==
== 4. package as an agent SKILL (with the agent locator pages) ==
== 5. validate the SKILL ==
validate: OKПроза будет бессмыслицей — так и задумано
Mock-LLM возвращает текст-заглушку. Структура при этом полностью настоящая — этапы, распределение файлов, факты о вызовах, диапазоны строк, таблица регистров, каждая ссылка. Фальшивы только предложения. Это ровно то разделение, на котором построен весь проект: факты берутся из парсера, проза — из модели.
Шаг 3 — Откройте результаты
open examples/work/demo/handbook/overview.md # the markdown handbook
open examples/work/demo/handbook/html/overview.html # the multi-page HTML site
open examples/work/demo/handbook/handbook.html # the whole thing in one file
open examples/work/demo/skill/SKILL.md # the agent SKILL packageНа что стоит обратить внимание особо:
| Откройте это | И заметьте |
|---|---|
handbook/overview.md | Карта этапов в формате mermaid, сгенерированная из графа вызовов |
handbook/index.md | Каждый этап, с вложенностью, у каждого — свой абзац |
handbook/register.md | Межэтапное состояние, с этапами, которые касаются каждого его элемента |
handbook/agent/index.md | Индекс для агента — рецепты поиска, таблица этапов, покрытие. Читается целиком |
handbook/agent/symbols.tsv | Каждый символ → path:startLine-endLine. Ровно то, чего у страниц с прозой никогда не было |
skill/references/coverage.json | Хеш содержимого для каждого файла. Это сигнал дрейфа. |
work/demo/phase1/dropped-calls.json | Вызовы, которые анализатор не смог разрешить: сохранены и категоризированы, а не угаданы |
work/demo/phase1/scan-coverage.json | Файлы, которые анализатор не смог прочитать или разобрать целиком. [] здесь означает, что разобрались все пять |
Шаг 4 — Загляните под капот
Всё, что произвёл конвейер, — это обычный JSON и YAML в рабочем каталоге:
ls examples/work/demo/
# phase1/ phase2/ phase3/ handbook/ skill/ run-manifest.json
cat examples/work/demo/phase1/graph.json | head -40
cat examples/work/demo/phase2/skeleton.yaml
cat examples/work/demo/run-manifest.json # model, phases, timings, token usageКаждый из этих файлов проходит валидацию по схеме при чтении. Если вы вручную приведёте один из них в невалидное состояние, следующая команда скажет, какой файл и почему — ошибка не распространяется дальше.
Остальные демо
pnpm demo:self # this repo as its own input, against the mock LLM
pnpm demo:self:real # same, but against the real endpoint from .env
pnpm mock-llm # just the mock server, on port 8099pnpm demo:self интереснее для чтения: он анализирует одиннадцать настоящих
TypeScript-пакетов, поэтому получаемая структура этапов — это подлинная карта подлинной
кодовой базы.
Что только что произошло
analyzeразобрал с помощью tree-sitter каждый файл, который смог прочитать, в типизированный граф вызовов, а то, что прочитать не удалось, записал вphase1/scan-coverage.json. Без LLM.generateнаписал карточку на каждый файл, синтезировал скелет этапов, назначил каждый файл на этап, сгруппировал и упорядочил их, затем построил повествование снизу вверх и извлёк межэтапные регистры состояния.renderпревратил это в markdown, HTML-сайт, одну самодостаточную страницу, индекс-локатор для агентов иllms.txt. Без LLM.skillпереупаковал это в агентский SKILL с хешем содержимого для каждого файла. Без LLM.validateпроверил структуру, контракт frontmatter, ссылки «индекс ↔ страница этапа» и свежесть хешей. Без LLM.
Демо на этом останавливается. Вторая половина — plan → apply → rollback →
resync — разбирается в Вашем первом руководстве
и в Планировании изменений.
Дальше
Установка
Node 20.11 и pnpm — вот и весь список. Никакой нативной компиляции, никакого Python, никакого node-gyp — парсеры представляют собой WebAssembly.
Ваше первое настоящее руководство
Восемь шагов от репозитория, который вы никогда не читали, до плана изменений, который можно применить — с дешёвыми контрольными точками в правильных местах.