Konfigurationsreferenz
Jede Handbooks-Einstellung mit ihrem Flag, ihrer Umgebungsvariable, ihrem Konfigurationsdatei-Schlüssel, Typ und Standardwert — generiert aus der Registry.
Diese Seite ist die Übersetzung einer generierten Seite. Das englische Original wird von pnpm run config:docs aus der Einstellungs-Registry generiert und durch einen Drift-Test geschützt; diese Übersetzung wird von Hand gepflegt — ändert sich das Original, aktualisiere sie mit.
Vorrang
Jede Einstellung wird über dieselben Schichten aufgelöst, höchste Priorität zuerst: Flag > Shell-Umgebung > .env > handbook.config.yaml > Standardwert. Die erste Schicht, die einen Wert liefert, gewinnt, und jede darunterliegende Schicht wird für diese Einstellung ignoriert. Führe handbook config aus — oder handbook config --command <name>, um nur einen Unterbefehl zu sehen —, um zu prüfen, was tatsächlich aufgelöst wurde und aus welcher Schicht es kam.
Benennung
Ein einziger camelCase-key in der Registry steuert alle drei Oberflächen zugleich: ein Flag, eine Umgebungsvariable und einen Konfigurationsdatei-Schlüssel. Stellt man einer davon einen Befehlsnamen voran, beschränkt das diese Oberfläche auf einen Unterbefehl, und es ist bei allen dreien dieselbe Transformation — HANDBOOK_<KEY> wird zu HANDBOOK_<COMMAND>_<KEY>, und key wird zu <command>Key, ob flach geschrieben oder eine Ebene unter <command>: verschachtelt. Eine unten mit (befehlsbezogen) markierte Einstellung akzeptiert nur den präfixierten Env-Namen, weil sich ihre Bedeutung je Befehl ändert (--out, --lang im skill-Paket).
Bootstrap
Drei Einstellungen auf oberster Ebene zeigen auf die Schichten oben und stehen selbst außerhalb der Registry; sie werden einmal vor allen anderen Einstellungen aufgelöst — weshalb auch keine von ihnen von dem gesetzt werden kann, was sie lädt: ein --env-Schlüssel in handbook.config.yaml, eine --env-file-Zeile in .env oder ein --config-Schlüssel in eben dieser Datei hätten niemanden mehr, der sie liest.
--env <name>(oderHANDBOOK_ENV) wählt eine umgebungsspezifische Kaskade — als einzige der drei mit sowohl einer Flag- als auch einer Umgebungsvariablen-Form, da sie eine Umgebung benennt, statt auf genau eine Datei zu zeigen.--env-file <path>lädt genau diese eine Datei und umgeht die Kaskade unten.--config <path>benennt genau eine Konfigurationsdatei und umgeht die umgebungsbewusste Suche unten (Standard: die nächstgelegene Datei derhandbook.config.yaml-Familie, gefunden durch Hochlaufen vom Arbeitsverzeichnis, mit Halt an einer Repository-Grenze).
Die .env-Kaskade
Ohne --env-file lädt die CLI statt einer festen Datei eine Kaskade von .env*-Dateien, höchster Vorrang zuerst. Die bestehende applyEnvFile-Regel — einen bereits gesetzten Schlüssel nie überschreiben — ist es, die aus einer Kaskade nicht mehr macht als „rufe sie in dieser Reihenfolge auf, die erste Datei, die einen Schlüssel setzt, gewinnt“:
| # | Datei | wer | Geltungsbereich | committet? |
|---|---|---|---|---|
| 1 | Shell-Umgebung | — | — | gewinnt immer |
| 2 | .env.<name>.local | persönlich | nur diese Umgebung | nein (gitignored) |
| 3 | .env.<name> | Team | nur diese Umgebung | ja |
| 4 | .env.local | persönlich | jede Umgebung | nein (gitignored) |
| 5 | .env | Team | Basislinie | ja |
Zeilen 2 und 3 gelten nur, wenn --env/HANDBOOK_ENV eine Umgebung benennt. Ist keines von beiden gesetzt, laden nur die Zeilen 4 und 5 — genau das, was auch vor dieser Kaskade geladen wurde, sodass ein bestehendes Setup ohne .env.local überhaupt keine Änderung sieht.
Konfigurationsdatei-Suche mit einer Umgebung
Von --config abgesehen läuft die Suche weiterhin vom Arbeitsverzeichnis nach oben und hält an einer Repository-Grenze, prüft aber in jedem besuchten Verzeichnis nun zuerst auf handbook.config.<name>.{yaml,yml,json} (nur wenn eine Umgebung benannt ist), bevor die schlichte handbook.config.yaml usw. an die Reihe kommt — eine benannte Datei schlägt also stets eine schlichte Datei im selben Verzeichnis, selbst wenn eine schlichte Datei auf einer Ebene näher am Arbeitsverzeichnis existiert. Ist keine Umgebung benannt, bleibt die Suche unverändert.
Führe handbook config aus, um zu sehen, welche Umgebung aktiv ist und welche Dateien sie genau geladen hat, in Vorrangreihenfolge — eine Kaskade über vier Wertschichten sind zu viele mögliche Quellen, um sie aus dem Kopf zu verfolgen, und eine Schicht, die dieser Befehl nicht zeigen kann, unterscheidet sich nicht von einer Schicht, die nicht funktioniert.
Durchgerechnetes Beispiel für readWorkers (Flag --read-workers <n>, Standard 12):
| Oberfläche | flach | bezogen auf generate |
|---|---|---|
| env | HANDBOOK_READ_WORKERS | HANDBOOK_GENERATE_READ_WORKERS |
handbook.config.yaml-Schlüssel | readWorkers | generateReadWorkers |
Die Konfigurationsdatei-Formen sind austauschbar: ein flaches readWorkers: ... und ein verschachteltes generate: { readWorkers: ... } bedeuten dasselbe, weil die Datei vor dem Lesen durch dieselbe camelCase-Verkettung flachgeklopft wird.
analyze
| Schlüssel | Flag | env | Typ | Standard | Beschreibung |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | Log-Ausführlichkeit; -v/--verbose und -q/--quiet sind Kurzformen für debug/error |
source | --source <dir> | HANDBOOK_SOURCE | path | erforderlich | Quell-Wurzel; erforderlich für analyze/generate/plan/apply, sonst optional (Hash-Frische für validate/skill und der Baum, zu dem eine Sicherung gehört, für rollback) |
work | --work <dir> | HANDBOOK_WORK | path | erforderlich | Arbeitsverzeichnis mit den Pipeline-Artefakten; optional für skill, wo es coverage.json ergänzt |
lang | --lang <lang> | HANDBOOK_LANG | enum (auto, plus jede registrierte Sprache) | auto | Quellsprache; auto erkennt und verschmilzt jede registrierte Sprache |
generate
| Schlüssel | Flag | env | Typ | Standard | Beschreibung |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | Log-Ausführlichkeit; -v/--verbose und -q/--quiet sind Kurzformen für debug/error |
llmApiKey | — | HANDBOOK_LLM_API_KEY, OPENAI_API_KEY | string | "" (leer) | API-Schlüssel für den LLM-Endpunkt; nutze EMPTY für lokale Endpunkte ohne Schlüssel. Nie ein Flag und nie in der Konfigurationsdatei erlaubt |
llmProvider | --provider <name> | HANDBOOK_LLM_PROVIDER, OPENAI_PROVIDER | enum (openai|anthropic|gemini) | openai | LLM-Übertragungsformat; 'openai' deckt jeden OpenAI-kompatiblen Endpunkt ab (also die meisten) |
llmModel | --model <id> | HANDBOOK_LLM_MODEL, OPENAI_MODEL | string | gpt-4o-mini | Modellkennung |
llmBaseUrl | --base-url <url> | HANDBOOK_LLM_BASE_URL, OPENAI_BASE_URL | string | https://api.openai.com/v1 | jeder OpenAI-kompatible Endpunkt (gehostet, vLLM, LiteLLM, ein Proxy); eine URL mit eingebetteten Zugangsdaten wird in der Konfigurationsdatei abgelehnt, denn die wird committet |
llmMaxTokens | --max-tokens <n> | HANDBOOK_LLM_MAX_TOKENS, OPENAI_MAX_TOKENS | int | 16000 | maximale Ausgabe-Tokens pro Anfrage |
llmTimeout | --timeout <sec> | HANDBOOK_LLM_TIMEOUT, OPENAI_TIMEOUT | int | 300 | Frist pro Anfrage in Sekunden; ein hängender Aufruf wird wiederholt, statt eine Phase als Geisel zu halten |
llmMaxRetries | --llm-retries <n> | HANDBOOK_LLM_MAX_RETRIES | int | 6 | Wiederholungsversuche pro Anfrage; 0 bedeutet ein einziger Versuch |
llmRetryBackoff | --llm-retry-backoff <sec> | HANDBOOK_LLM_RETRY_BACKOFF | int | 3 | Basis-Wartezeit zwischen Wiederholungen, in Sekunden |
llmConcurrency | --llm-concurrency <n> | HANDBOOK_LLM_CONCURRENCY | int | 16 | globale Obergrenze für gleichzeitige Anfragen über einen Client |
llmExtraBody | — | HANDBOOK_LLM_EXTRA_BODY, OPENAI_EXTRA_BODY | json | — | Hersteller-Felder, die in jeden Anfrage-Body gemischt werden; Modell-/Nachrichten-/Token-Felder lassen sich nicht überschreiben. Frei formulierbar und daher als Geheimnis behandelt: nie ein Flag und nie in der Konfigurationsdatei erlaubt |
source | --source <dir> | HANDBOOK_SOURCE | path | erforderlich | Quell-Wurzel; erforderlich für analyze/generate/plan/apply, sonst optional (Hash-Frische für validate/skill und der Baum, zu dem eine Sicherung gehört, für rollback) |
work | --work <dir> | HANDBOOK_WORK | path | erforderlich | Arbeitsverzeichnis mit den Pipeline-Artefakten; optional für skill, wo es coverage.json ergänzt |
lang | --lang <lang> | HANDBOOK_LANG | enum (auto, plus jede registrierte Sprache) | auto | Quellsprache; auto erkennt und verschmilzt jede registrierte Sprache |
phase | --phase <spec> | HANDBOOK_PHASE | string | all | all | 1 | 2 | 2a | 2b | 2c | 3, oder eine Komma-Liste |
strategy | --strategy <s> | HANDBOOK_STRATEGY | enum (file|member) | — | file (Standard) oder member; ungesetzt behält die im Arbeitsverzeichnis vermerkte Strategie |
skeleton | --skeleton <path> | HANDBOOK_SKELETON | path | — | selbst verfasste skeleton.yaml, erforderlich für die member-Strategie |
narrateLang | --narrate-lang <l> | HANDBOOK_NARRATE_LANG | enum (en|zh) | en | Sprache des Fließtextes |
detail | --detail <d> | HANDBOOK_DETAIL | enum (brief|deep) | brief | Kartentiefe |
synthMode | --synth-mode <m> | HANDBOOK_SYNTH_MODE | enum (oneshot|doctor) | oneshot | Modus der Skelett-Synthese |
maxDoctorRounds | --max-doctor-rounds <n> | HANDBOOK_MAX_DOCTOR_ROUNDS | int | 6 | Doctor-Konvergenzrunden |
readWorkers | --read-workers <n> | HANDBOOK_READ_WORKERS | int | 12 | gleichzeitige Kartenstapel |
readBatchSize | --read-batch-size <n> | HANDBOOK_READ_BATCH_SIZE | int | — | Dateien pro Kartenstapel; ungesetzt bedeutet 1 bei --detail deep und 8 bei brief |
maxCharsPerFile | --max-chars-per-file <n> | HANDBOOK_MAX_CHARS_PER_FILE | int | 0 | jede Datei bei n Zeichen abschneiden; 0 bedeutet kein Limit |
assignBatchSize | --assign-batch-size <n> | HANDBOOK_ASSIGN_BATCH_SIZE | int | 25 | Karten pro Zuordnungsstapel |
assignWorkers | --assign-workers <n> | HANDBOOK_ASSIGN_WORKERS | int | 12 | gleichzeitige Zuordnungsstapel |
organizeWorkers | --organize-workers <n> | HANDBOOK_ORGANIZE_WORKERS | int | 8 | gleichzeitige Etappen-Organisationsaufrufe |
narrateWorkers | --narrate-workers <n> | HANDBOOK_NARRATE_WORKERS | int | 8 | gleichzeitige Erzähltext-Aufrufe |
resume | --resume | HANDBOOK_RESUME | bool | false | Dateien überspringen, die schon eine fertige Karte haben |
refresh | --refresh | HANDBOOK_REFRESH | bool | false | Phase-3-Caches ignorieren |
llmCache | --llm-cache | HANDBOOK_LLM_CACHE | bool | false | rohe LLM-Antworten unter /phase3/cache cachen; von --refresh deaktiviert |
render
| Schlüssel | Flag | env | Typ | Standard | Beschreibung |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | Log-Ausführlichkeit; -v/--verbose und -q/--quiet sind Kurzformen für debug/error |
work | --work <dir> | HANDBOOK_WORK | path | erforderlich | Arbeitsverzeichnis mit den Pipeline-Artefakten; optional für skill, wo es coverage.json ergänzt |
title | --title <title> | HANDBOOK_TITLE | string | System Handbook | Handbuch-Titel für die gerenderten Ausgaben |
out | --out <dir> | HANDBOOK_RENDER_OUT (befehlsbezogen) | path | — | Ausgabeort; render verwendet standardmäßig /handbook, plan schreibt eine Datei, skill schreibt ein Verzeichnis |
html | --html | HANDBOOK_HTML | bool | false | zusätzlich die mehrseitige HTML-Site unter /html rendern |
htmlSingle | --html-single | HANDBOOK_HTML_SINGLE | bool | false | zusätzlich eine einzelne, in sich geschlossene HTML-Seite rendern |
agentSite | --agent-site | HANDBOOK_AGENT_SITE | bool | false | zusätzlich den Agent-Locator-Index unter /agent rendern |
llmsTxt | --llms-txt | HANDBOOK_LLMS_TXT | bool | false | zusätzlich llms.txt und llms-full.txt neben dem Markdown schreiben |
sourceBaseUrl | --source-base-url <url> | HANDBOOK_SOURCE_BASE_URL | string | — | Dateikarten unter / auf die Quelle verlinken |
skill
| Schlüssel | Flag | env | Typ | Standard | Beschreibung |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | Log-Ausführlichkeit; -v/--verbose und -q/--quiet sind Kurzformen für debug/error |
source | --source <dir> | HANDBOOK_SOURCE | path | — | Quell-Wurzel; erforderlich für analyze/generate/plan/apply, sonst optional (Hash-Frische für validate/skill und der Baum, zu dem eine Sicherung gehört, für rollback) |
work | --work <dir> | HANDBOOK_WORK | path | — | Arbeitsverzeichnis mit den Pipeline-Artefakten; optional für skill, wo es coverage.json ergänzt |
out | --out <dir> | HANDBOOK_SKILL_OUT (befehlsbezogen) | path | erforderlich | Ausgabeort; render verwendet standardmäßig /handbook, plan schreibt eine Datei, skill schreibt ein Verzeichnis |
handbook | --handbook <dir> | HANDBOOK_SKILL_HANDBOOK (befehlsbezogen) | path | erforderlich | Verzeichnis des gerenderten Handbuchs; erforderlich für skill, optionaler Kontext für plan |
name | --name <slug> | HANDBOOK_NAME | string | erforderlich | Skill-Slug (Kleinbuchstaben mit Bindestrichen) |
project | --project <name> | HANDBOOK_PROJECT | string | — | menschenlesbarer Projektname für den Fließtext |
agentDir | --agent-dir <dir> | HANDBOOK_AGENT_DIR | path | — | gerenderte Agent-Locator-Site; wird unter references/agent/ ausgeliefert |
bodyLang | --lang <l> | HANDBOOK_SKILL_BODY_LANG (befehlsbezogen) | enum (en|zh) | en | Sprache des SKILL.md-Rumpfs; das Frontmatter bleibt fürs Routing englisch |
validate
| Schlüssel | Flag | env | Typ | Standard | Beschreibung |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | Log-Ausführlichkeit; -v/--verbose und -q/--quiet sind Kurzformen für debug/error |
source | --source <dir> | HANDBOOK_SOURCE | path | — | Quell-Wurzel; erforderlich für analyze/generate/plan/apply, sonst optional (Hash-Frische für validate/skill und der Baum, zu dem eine Sicherung gehört, für rollback) |
skill | --skill <dir> | HANDBOOK_SKILL | path | erforderlich | zu prüfendes Skill-Verzeichnis |
plan
| Schlüssel | Flag | env | Typ | Standard | Beschreibung |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | Log-Ausführlichkeit; -v/--verbose und -q/--quiet sind Kurzformen für debug/error |
llmApiKey | — | HANDBOOK_LLM_API_KEY, OPENAI_API_KEY | string | "" (leer) | API-Schlüssel für den LLM-Endpunkt; nutze EMPTY für lokale Endpunkte ohne Schlüssel. Nie ein Flag und nie in der Konfigurationsdatei erlaubt |
llmProvider | --provider <name> | HANDBOOK_LLM_PROVIDER, OPENAI_PROVIDER | enum (openai|anthropic|gemini) | openai | LLM-Übertragungsformat; 'openai' deckt jeden OpenAI-kompatiblen Endpunkt ab (also die meisten) |
llmModel | --model <id> | HANDBOOK_LLM_MODEL, OPENAI_MODEL | string | gpt-4o-mini | Modellkennung |
llmBaseUrl | --base-url <url> | HANDBOOK_LLM_BASE_URL, OPENAI_BASE_URL | string | https://api.openai.com/v1 | jeder OpenAI-kompatible Endpunkt (gehostet, vLLM, LiteLLM, ein Proxy); eine URL mit eingebetteten Zugangsdaten wird in der Konfigurationsdatei abgelehnt, denn die wird committet |
llmMaxTokens | --max-tokens <n> | HANDBOOK_LLM_MAX_TOKENS, OPENAI_MAX_TOKENS | int | 16000 | maximale Ausgabe-Tokens pro Anfrage |
llmTimeout | --timeout <sec> | HANDBOOK_LLM_TIMEOUT, OPENAI_TIMEOUT | int | 300 | Frist pro Anfrage in Sekunden; ein hängender Aufruf wird wiederholt, statt eine Phase als Geisel zu halten |
llmMaxRetries | --llm-retries <n> | HANDBOOK_LLM_MAX_RETRIES | int | 6 | Wiederholungsversuche pro Anfrage; 0 bedeutet ein einziger Versuch |
llmRetryBackoff | --llm-retry-backoff <sec> | HANDBOOK_LLM_RETRY_BACKOFF | int | 3 | Basis-Wartezeit zwischen Wiederholungen, in Sekunden |
llmConcurrency | --llm-concurrency <n> | HANDBOOK_LLM_CONCURRENCY | int | 16 | globale Obergrenze für gleichzeitige Anfragen über einen Client |
llmExtraBody | — | HANDBOOK_LLM_EXTRA_BODY, OPENAI_EXTRA_BODY | json | — | Hersteller-Felder, die in jeden Anfrage-Body gemischt werden; Modell-/Nachrichten-/Token-Felder lassen sich nicht überschreiben. Frei formulierbar und daher als Geheimnis behandelt: nie ein Flag und nie in der Konfigurationsdatei erlaubt |
source | --source <dir> | HANDBOOK_SOURCE | path | erforderlich | Quell-Wurzel; erforderlich für analyze/generate/plan/apply, sonst optional (Hash-Frische für validate/skill und der Baum, zu dem eine Sicherung gehört, für rollback) |
out | --out <dir> | HANDBOOK_PLAN_OUT (befehlsbezogen) | path | — | Ausgabeort; render verwendet standardmäßig /handbook, plan schreibt eine Datei, skill schreibt ein Verzeichnis |
handbook | --handbook <dir> | HANDBOOK_PLAN_HANDBOOK (befehlsbezogen) | path | — | Verzeichnis des gerenderten Handbuchs; erforderlich für skill, optionaler Kontext für plan |
request | --request <text> | HANDBOOK_REQUEST | string | erforderlich | der Änderungswunsch in natürlicher Sprache |
maxTurns | --max-turns <n> | HANDBOOK_MAX_TURNS | int | 30 | Zugbudget des Agenten |
apply
| Schlüssel | Flag | env | Typ | Standard | Beschreibung |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | Log-Ausführlichkeit; -v/--verbose und -q/--quiet sind Kurzformen für debug/error |
source | --source <dir> | HANDBOOK_SOURCE | path | erforderlich | Quell-Wurzel; erforderlich für analyze/generate/plan/apply, sonst optional (Hash-Frische für validate/skill und der Baum, zu dem eine Sicherung gehört, für rollback) |
plan | --plan <file> | HANDBOOK_PLAN | path | erforderlich | Plandatei, erzeugt von handbook plan |
dryRun | --dry-run | HANDBOOK_DRY_RUN | bool | false | nur prüfen, nie schreiben |
backupRoot | --backup-root <dir> | HANDBOOK_BACKUP_ROOT | path | — | wohin die Sicherungen kommen; standardmäßig /.handbook-patches |
rollback
| Schlüssel | Flag | env | Typ | Standard | Beschreibung |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | Log-Ausführlichkeit; -v/--verbose und -q/--quiet sind Kurzformen für debug/error |
source | --source <dir> | HANDBOOK_SOURCE | path | — | Quell-Wurzel; erforderlich für analyze/generate/plan/apply, sonst optional (Hash-Frische für validate/skill und der Baum, zu dem eine Sicherung gehört, für rollback) |
backup | --backup <dir> | HANDBOOK_BACKUP | path | erforderlich | Sicherungsverzeichnis mit manifest.json |
force | --force | HANDBOOK_FORCE | bool | false | auch Dateien wiederherstellen, die sich nach dem Patch geändert haben |
resync
| Schlüssel | Flag | env | Typ | Standard | Beschreibung |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | Log-Ausführlichkeit; -v/--verbose und -q/--quiet sind Kurzformen für debug/error |
llmApiKey | — | HANDBOOK_LLM_API_KEY, OPENAI_API_KEY | string | "" (leer) | API-Schlüssel für den LLM-Endpunkt; nutze EMPTY für lokale Endpunkte ohne Schlüssel. Nie ein Flag und nie in der Konfigurationsdatei erlaubt |
llmProvider | --provider <name> | HANDBOOK_LLM_PROVIDER, OPENAI_PROVIDER | enum (openai|anthropic|gemini) | openai | LLM-Übertragungsformat; 'openai' deckt jeden OpenAI-kompatiblen Endpunkt ab (also die meisten) |
llmModel | --model <id> | HANDBOOK_LLM_MODEL, OPENAI_MODEL | string | gpt-4o-mini | Modellkennung |
llmBaseUrl | --base-url <url> | HANDBOOK_LLM_BASE_URL, OPENAI_BASE_URL | string | https://api.openai.com/v1 | jeder OpenAI-kompatible Endpunkt (gehostet, vLLM, LiteLLM, ein Proxy); eine URL mit eingebetteten Zugangsdaten wird in der Konfigurationsdatei abgelehnt, denn die wird committet |
llmMaxTokens | --max-tokens <n> | HANDBOOK_LLM_MAX_TOKENS, OPENAI_MAX_TOKENS | int | 16000 | maximale Ausgabe-Tokens pro Anfrage |
llmTimeout | --timeout <sec> | HANDBOOK_LLM_TIMEOUT, OPENAI_TIMEOUT | int | 300 | Frist pro Anfrage in Sekunden; ein hängender Aufruf wird wiederholt, statt eine Phase als Geisel zu halten |
llmMaxRetries | --llm-retries <n> | HANDBOOK_LLM_MAX_RETRIES | int | 6 | Wiederholungsversuche pro Anfrage; 0 bedeutet ein einziger Versuch |
llmRetryBackoff | --llm-retry-backoff <sec> | HANDBOOK_LLM_RETRY_BACKOFF | int | 3 | Basis-Wartezeit zwischen Wiederholungen, in Sekunden |
llmConcurrency | --llm-concurrency <n> | HANDBOOK_LLM_CONCURRENCY | int | 16 | globale Obergrenze für gleichzeitige Anfragen über einen Client |
llmExtraBody | — | HANDBOOK_LLM_EXTRA_BODY, OPENAI_EXTRA_BODY | json | — | Hersteller-Felder, die in jeden Anfrage-Body gemischt werden; Modell-/Nachrichten-/Token-Felder lassen sich nicht überschreiben. Frei formulierbar und daher als Geheimnis behandelt: nie ein Flag und nie in der Konfigurationsdatei erlaubt |
work | --work <dir> | HANDBOOK_WORK | path | erforderlich | Arbeitsverzeichnis mit den Pipeline-Artefakten; optional für skill, wo es coverage.json ergänzt |
title | --title <title> | HANDBOOK_TITLE | string | System Handbook | Handbuch-Titel für die gerenderten Ausgaben |
case | --case <dir> | HANDBOOK_CASE | path | erforderlich | Fall-Verzeichnis: edited/ + plan.md + change.diff |
useLlm | --no-llm | HANDBOOK_USE_LLM | bool | true | auf false setzen für einen rein strukturellen Refresh, mit als veraltet markiertem Fließtext |
refreshRendered | --no-render | HANDBOOK_REFRESH_RENDERED | bool | true | auf false setzen, um das Auffrischen bereits gerenderter Ausgaben unter /handbook zu überspringen |
corrections | --corrections <file> | HANDBOOK_CORRECTIONS | path | — | vom Agenten gemeldete corrections.jsonl; ihre Dateien erweitern die Refresh-Menge |
cardDetail | --detail <d> | HANDBOOK_RESYNC_CARD_DETAIL (befehlsbezogen) | enum (brief|deep) | — | Kartentiefe für neu erzeugte Karten; ungesetzt entspricht dem bestehenden Handbuch |
proseLang | --narrate-lang <l> | HANDBOOK_RESYNC_PROSE_LANG (befehlsbezogen) | enum (en|zh) | — | Sprache des Fließtextes für neu erzeugte Karten; ungesetzt entspricht dem bestehenden Handbuch |
studio
| Schlüssel | Flag | env | Typ | Standard | Beschreibung |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | Log-Ausführlichkeit; -v/--verbose und -q/--quiet sind Kurzformen für debug/error |
llmApiKey | — | HANDBOOK_LLM_API_KEY, OPENAI_API_KEY | string | "" (leer) | API-Schlüssel für den LLM-Endpunkt; nutze EMPTY für lokale Endpunkte ohne Schlüssel. Nie ein Flag und nie in der Konfigurationsdatei erlaubt |
llmProvider | --provider <name> | HANDBOOK_LLM_PROVIDER, OPENAI_PROVIDER | enum (openai|anthropic|gemini) | openai | LLM-Übertragungsformat; 'openai' deckt jeden OpenAI-kompatiblen Endpunkt ab (also die meisten) |
llmModel | --model <id> | HANDBOOK_LLM_MODEL, OPENAI_MODEL | string | gpt-4o-mini | Modellkennung |
llmBaseUrl | --base-url <url> | HANDBOOK_LLM_BASE_URL, OPENAI_BASE_URL | string | https://api.openai.com/v1 | jeder OpenAI-kompatible Endpunkt (gehostet, vLLM, LiteLLM, ein Proxy); eine URL mit eingebetteten Zugangsdaten wird in der Konfigurationsdatei abgelehnt, denn die wird committet |
llmMaxTokens | --max-tokens <n> | HANDBOOK_LLM_MAX_TOKENS, OPENAI_MAX_TOKENS | int | 16000 | maximale Ausgabe-Tokens pro Anfrage |
llmTimeout | --timeout <sec> | HANDBOOK_LLM_TIMEOUT, OPENAI_TIMEOUT | int | 300 | Frist pro Anfrage in Sekunden; ein hängender Aufruf wird wiederholt, statt eine Phase als Geisel zu halten |
llmMaxRetries | --llm-retries <n> | HANDBOOK_LLM_MAX_RETRIES | int | 6 | Wiederholungsversuche pro Anfrage; 0 bedeutet ein einziger Versuch |
llmRetryBackoff | --llm-retry-backoff <sec> | HANDBOOK_LLM_RETRY_BACKOFF | int | 3 | Basis-Wartezeit zwischen Wiederholungen, in Sekunden |
llmConcurrency | --llm-concurrency <n> | HANDBOOK_LLM_CONCURRENCY | int | 16 | globale Obergrenze für gleichzeitige Anfragen über einen Client |
llmExtraBody | — | HANDBOOK_LLM_EXTRA_BODY, OPENAI_EXTRA_BODY | json | — | Hersteller-Felder, die in jeden Anfrage-Body gemischt werden; Modell-/Nachrichten-/Token-Felder lassen sich nicht überschreiben. Frei formulierbar und daher als Geheimnis behandelt: nie ein Flag und nie in der Konfigurationsdatei erlaubt |
port | --port <n> | HANDBOOK_PORT | int | 4860 | Port, auf dem gelauscht wird |
host | --host <addr> | HANDBOOK_HOST | string | 127.0.0.1 | Bind-Adresse; bleibt auf Loopback, solange du sie nicht setzt (Container brauchen 0.0.0.0). Der CSRF-Schutz verlangt weiterhin einen Loopback-Host-Header |
stateDir | --state-dir <dir> | HANDBOOK_STATE_DIR | path | — | wo studio.json und die verwalteten Arbeitsverzeichnisse liegen; standardmäßig $HOME/.handbook-studio |
config
| Schlüssel | Flag | env | Typ | Standard | Beschreibung |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | Log-Ausführlichkeit; -v/--verbose und -q/--quiet sind Kurzformen für debug/error |
forCommand | --command <name> | HANDBOOK_FOR_COMMAND | string | — | nur die Einstellungen zeigen, die für diesen Unterbefehl gelten; seine env-/Datei-/Standard-Schichten sind hier einsehbar, die eigenen Flags dieses Befehls jedoch nicht (die übergibt man dem Befehl selbst) |
json | --json | HANDBOOK_JSON | bool | false | maschinenlesbare Ausgabe |
check | --check | HANDBOOK_CHECK | bool | false | nur validieren; Exit-Code ungleich null, wenn etwas ungültig ist oder fehlt |
CLI-Referenz
Jeder Unterbefehl, jedes Flag, seine Umgebungsvariable und sein Standardwert — dazu, was jeder Befehl schreibt und mit welchem Exit-Code er endet.
Umgebungsvariablen
Jede Variable, die Handbooks liest, die Benennungsregel, die sie erzeugt, die .env-Kaskade und die, die nie in eine Konfigurationsdatei gehören.