Установка
Node 20.11 и pnpm — вот и весь список. Никакой нативной компиляции, никакого Python, никакого node-gyp — парсеры представляют собой WebAssembly.
Требования
| Node.js | ≥ 20.11 |
| pnpm | ≥ 9 |
| Конечная точка LLM | Только для Phase 2 и Phase 3. Любая OpenAI-совместимая. |
Это действительно весь список. Здесь нет шага нативной компиляции — языковые парсеры
поставляются как WebAssembly, поэтому никакого node-gyp, никакого компиляторного
тулчейна, никакого Python.
Проверьте версию Node командой node --version. Если вы используете nvm, в репозитории есть .nvmrc, так
что nvm use выберет нужную версию.
Вариант 1 — из клона репозитория (рекомендуется на этапе оценки)
git clone <this repo>
cd handbooks
pnpm install
pnpm buildЗатем сделайте вызов CLI удобным:
alias handbook="node $(pwd)/packages/cli/dist/main.js"
handbook --helpИли вовсе пропустите алиас и используйте pnpm-шорткаты, которые сначала выполняют инкрементальную сборку (около 0,4 с на прогретом кеше) и пробрасывают флаги напрямую:
pnpm analyze --source ~/code/myrepo --work work/myrepo
pnpm handbook --helpПочему шорткаты сначала собирают
Каждый pnpm <command> запускает tsc -b перед CLI. Это разница между отладкой вашего
кода и отладкой устаревшего dist/ — которая в первый раз стоит часа времени.
Вариант 2 — как глобальный CLI
npm i -g @handbooks/cli
handbook --helpВариант 3 — Docker, совсем без локального Node
docker build -t handbook:local .
# HANDBOOK_SOURCE=/src and HANDBOOK_WORK=/work are baked into the image,
# so you only mount volumes — no --source/--work needed:
docker run --rm -v "$PWD:/src:ro" -v handbook-work:/work handbook:local analyzeО Studio, окружениях и оговорке про доступ только с localhost см.
руководство по Docker.
Вариант 4 — как библиотеки
Каждая возможность — это опубликованный пакет, который можно использовать отдельно. Анализатор, рендерер, упаковщик skill и патчер никогда не касаются LLM, поэтому работают автономно:
pnpm add @handbooks/analyzer # static call graphs, 18 languages
pnpm add @handbooks/renderer # a HandbookModel → markdown / HTML / agent index
pnpm add @handbooks/patcher # apply byte-exact edit plans with rollbackСм. индекс пакетов.
Настройка конечной точки LLM
Phase 1 — статический анализ — никогда не требует ключа. Всё остальное требует.
export OPENAI_API_KEY=sk-... # required for phases 2 and 3
export OPENAI_MODEL=gpt-4o-mini # default: gpt-4o-mini
export OPENAI_BASE_URL=https://api.openai.com/v1 # or your own endpointЛокальные конечные точки и точки без ключа
Используйте OPENAI_API_KEY=EMPTY для конечных точек без аутентификации — vLLM, OpenAI-совместимая
прослойка Ollama, локальный LiteLLM. Клиенту нужно что-то в этом поле; EMPTY — согласованный способ
сказать «намеренно ничего», и он даёт понятную ошибку вместо сбивающего с толку 401, если вы по ошибке
направите его на реального провайдера.
Предпочитайте файл экспортам в шелле
CLI автоматически загружает ./.env из каталога, в котором вы его запускаете. Переменные
шелла всегда побеждают, так что .env — это значение по умолчанию, а не переопределение.
OPENAI_API_KEY=sk-...
OPENAI_MODEL=gpt-4o-mini
OPENAI_BASE_URL=https://api.openai.com/v1Скопируйте .env.example — он генерируется из реестра настроек, поэтому перечисляет
каждую реально существующую переменную с её значением по умолчанию, и каждая строка
изначально закомментирована, так что копировать его безопасно.
О нескольких окружениях, переопределениях для отдельных команд и handbook.config.yaml
см. Конфигурацию.
Проверка установки
Две команды, именно в этом порядке.
1. Запускается ли тулчейн вообще?
pnpm demoПолный конвейер, офлайн, на встроенном образце проекта и встроенном mock-LLM. Если это проходит, с вашей установкой всё в порядке.
2. Доступна ли и настроена ли моя конечная точка?
handbook config --command generateЭта команда печатает каждую настройку, её итоговое значение и из какого слоя оно пришло — флаг, переменная окружения, файл конфигурации или значение по умолчанию. Секреты маскируются.
handbook config --check # exit code 2 if anything is invalid or missingСделайте это перед длинным запуском
Опечатка в переменной окружения раньше означала «молча отработали на значении по умолчанию». --check
превращает её в ошибку с именем переменной в сообщении — обнаружить это сейчас куда дешевле, чем через сорок
минут генерации.
Дальше
Что такое Handbooks?
Один код на входе, два справочника на выходе — повествовательный сайт документации для команды и индекс местоположений для кодинг-агента. Из одной распарсенной карты, всегда в ногу с кодом.
Быстрый старт
Прогоните весь тулчейн от начала до конца примерно за тридцать секунд — офлайн, без API-ключа и не потратив ни одного токена.