Installation
Node 20.11 und pnpm — das ist die ganze Liste. Keine native Kompilierung, kein Python, kein node-gyp: die Parser sind WebAssembly.
Voraussetzungen
| Node.js | ≥ 20.11 |
| pnpm | ≥ 9 |
| Ein LLM-Endpunkt | Nur für die Phasen 2 und 3. Jeder OpenAI-kompatible. |
Das ist tatsächlich die ganze Liste. Es gibt keinen nativen Kompilierschritt — die
Sprachparser werden als WebAssembly ausgeliefert, also kein node-gyp, keine
Compiler-Toolchain, kein Python.
Die Node-Version mit node --version prüfen. Wer nvm nutzt: Das Repo bringt eine .nvmrc mit, nvm use
wählt also die richtige Version.
Option 1 — aus einem Klon (empfohlen zum Evaluieren)
git clone <this repo>
cd handbooks
pnpm install
pnpm buildDanach die CLI bequem aufrufbar machen:
alias handbook="node $(pwd)/packages/cli/dist/main.js"
handbook --helpOder den Alias ganz weglassen und die pnpm-Shortcuts verwenden: Sie bauen zuerst inkrementell (etwa 0,4 s, sobald warm) und reichen Flags direkt durch:
pnpm analyze --source ~/code/myrepo --work work/myrepo
pnpm handbook --helpWarum die Shortcuts zuerst bauen
Jedes pnpm <command> führt vor der CLI tsc -b aus. Das ist der Unterschied zwischen
dem Debuggen des eigenen Codes und dem Debuggen eines veralteten dist/ — was beim
ersten Mal eine Stunde kostet.
Option 2 — als globale CLI
npm i -g @handbooks/cli
handbook --helpOption 3 — Docker, ganz ohne lokales 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 analyzeSiehe den Docker-Leitfaden für Studio, Umgebungen und die
Einschränkung, dass nur localhost funktioniert.
Option 4 — als Bibliotheken
Jede Fähigkeit ist ein veröffentlichtes Paket, das sich einzeln nutzen lässt. Analyzer, Renderer, Skill-Packager und Patcher berühren nie ein LLM und funktionieren daher eigenständig:
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 rollbackSiehe den Paketindex.
Den LLM-Endpunkt konfigurieren
Phase 1 — die statische Analyse — braucht nie einen Schlüssel. Alles andere schon.
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 endpointLokale und schlüssellose Endpunkte
Für Endpunkte ohne Authentifizierung — vLLM, Ollamas OpenAI-kompatibler Shim, ein lokales LiteLLM —
OPENAI_API_KEY=EMPTY setzen. Der Client braucht dort irgendetwas; EMPTY ist die vereinbarte Art,
„absichtlich keiner“ zu sagen, und erzeugt einen klaren Fehler statt eines verwirrenden 401, falls
versehentlich ein echter Anbieter angesprochen wird.
Lieber eine Datei als Shell-Exporte
Die CLI lädt automatisch ./.env aus dem Verzeichnis, in dem sie ausgeführt wird.
Shell-Variablen gewinnen immer — eine .env ist also ein Standardwert, kein Override.
OPENAI_API_KEY=sk-...
OPENAI_MODEL=gpt-4o-mini
OPENAI_BASE_URL=https://api.openai.com/v1.env.example kopieren — sie wird aus der Einstellungs-Registry generiert, listet also
jede Variable, die tatsächlich existiert, samt Standardwert, und jede Zeile beginnt
auskommentiert, sodass das Kopieren gefahrlos ist.
Für mehrere Umgebungen, Overrides pro Befehl und handbook.config.yaml siehe
Konfiguration.
Die Installation prüfen
Zwei Befehle, in dieser Reihenfolge.
1. Läuft die Toolchain überhaupt?
pnpm demoDie volle Pipeline, offline, gegen ein mitgeliefertes Beispielprojekt und ein mitgeliefertes Mock-LLM. Wenn das durchläuft, ist die Installation in Ordnung.
2. Ist der Endpunkt erreichbar und konfiguriert?
handbook config --command generateDas gibt jede Einstellung aus, ihren aufgelösten Wert und aus welcher Schicht er stammt — Flag, Umgebungsvariable, Konfigurationsdatei oder Standardwert. Geheimnisse werden maskiert.
handbook config --check # exit code 2 if anything is invalid or missingVor einem langen Lauf ausführen
Eine vertippte Umgebungsvariable bedeutete früher „lief stillschweigend mit dem Standardwert“. --check
macht daraus einen Fehler, der die Variable beim Namen nennt — was jetzt deutlich billiger zu entdecken ist
als vierzig Minuten tief in einer Generierung.
Weiter
Was ist Handbooks?
Eine Codebasis rein, zwei Handbücher raus — eine erzählte Doku-Site für dein Team und ein Orts-Index, mit dem dein Coding-Agent navigiert. Aus derselben geparsten Karte, immer aktuell zum Code.
Schnellstart
Die gesamte Toolchain in rund dreißig Sekunden von Anfang bis Ende — offline, ohne API-Schlüssel und ohne einen einzigen Token.