Referência de configuração
Cada configuração do Handbooks, com sua flag, variável de ambiente, chave de arquivo de configuração, tipo e padrão — gerada a partir do registro.
Esta página é a tradução de uma página gerada. O original em inglês é gerado por pnpm run config:docs a partir do registro de configurações e é protegido por um teste de deriva; esta tradução é mantida à mão — quando o original mudar, atualize-a também.
Precedência
Cada configuração é resolvida através das mesmas camadas, da maior prioridade para a menor: flag > env do shell > .env > handbook.config.yaml > padrão. A primeira camada que fornece um valor vence e todas as camadas abaixo dela são ignoradas para aquela configuração. Execute handbook config — ou handbook config --command <name> para ver apenas um subcomando — para verificar o que de fato foi resolvido e de qual camada veio.
Nomenclatura
Uma única key em camelCase no registro controla as três superfícies de uma vez: uma flag, uma variável de ambiente e uma chave de arquivo de configuração. Prefixar qualquer uma delas com o nome de um comando restringe aquela superfície a um único subcomando, e é a mesma transformação nas três — HANDBOOK_<KEY> vira HANDBOOK_<COMMAND>_<KEY>, e key vira <command>Key, seja escrita de forma plana ou aninhada um nível abaixo de <command>:. Uma configuração marcada como (com escopo) abaixo aceita apenas o nome de env prefixado, porque seu significado muda conforme o comando (--out, --lang no pacote skill).
Inicialização
Três configurações de nível superior apontam para as camadas acima e estão, elas próprias, fora do registro, sendo resolvidas uma única vez antes de qualquer outra configuração — que é também o motivo pelo qual nenhuma delas pode ser definida por aquilo que carregam: uma chave --env dentro de handbook.config.yaml, uma linha --env-file dentro de .env ou uma chave --config dentro desse mesmo arquivo não teriam mais ninguém para lê-las.
--env <name>(ouHANDBOOK_ENV) seleciona uma cascata por ambiente — a única das três que tem tanto a forma de flag quanto a de variável de ambiente, já que nomeia um ambiente em vez de apontar para um arquivo exato.--env-file <path>carrega exatamente aquele único arquivo, contornando a cascata abaixo.--config <path>nomeia um arquivo de configuração exato, contornando a descoberta sensível ao ambiente descrita abaixo (padrão: o arquivo mais próximo da famíliahandbook.config.yaml, encontrado subindo a partir do diretório de trabalho e parando na fronteira do repositório).
A cascata .env
Sem --env-file, a CLI carrega uma cascata de arquivos .env* em vez de um único arquivo fixo, da maior precedência para a menor. A regra existente de applyEnvFile — nunca sobrescrever uma chave já definida — é o que faz de uma cascata nada mais que "chame na ordem, o primeiro arquivo a definir uma chave vence":
| # | arquivo | quem | escopo | versionado? |
|---|---|---|---|---|
| 1 | ambiente do shell | — | — | sempre vence |
| 2 | .env.<name>.local | pessoal | apenas este ambiente | não (no gitignore) |
| 3 | .env.<name> | equipe | apenas este ambiente | sim |
| 4 | .env.local | pessoal | todos os ambientes | não (no gitignore) |
| 5 | .env | equipe | linha de base | sim |
As linhas 2 e 3 só se aplicam quando --env/HANDBOOK_ENV nomeia um ambiente. Sem nenhum dos dois definido, apenas as linhas 4 e 5 são carregadas — exatamente o que era carregado antes de esta cascata existir, de modo que uma instalação existente sem .env.local não vê mudança alguma.
Descoberta do arquivo de configuração com um ambiente
--config à parte, a descoberta continua subindo a partir do diretório de trabalho e parando na fronteira do repositório, mas em cada diretório visitado ela agora procura primeiro por handbook.config.<name>.{yaml,yml,json} (somente quando um ambiente é nomeado) antes do simples handbook.config.yaml e afins — de modo que um arquivo nomeado sempre vence um arquivo simples que esteja nesse mesmo diretório, mesmo quando existe um arquivo simples em um nível mais próximo do diretório de trabalho. Sem nenhum ambiente nomeado, a descoberta permanece inalterada.
Execute handbook config para ver qual ambiente está ativo e exatamente quais arquivos ele carregou, em ordem de precedência — uma cascata sobre quatro camadas de valores são fontes possíveis demais para acompanhar de memória, e uma camada que este comando não consegue mostrar não é diferente de uma camada que não funciona.
Exemplo prático para readWorkers (flag --read-workers <n>, padrão 12):
| superfície | plana | com escopo em generate |
|---|---|---|
| env | HANDBOOK_READ_WORKERS | HANDBOOK_GENERATE_READ_WORKERS |
chave de handbook.config.yaml | readWorkers | generateReadWorkers |
As formas do arquivo de configuração são intercambiáveis: um readWorkers: ... plano e um generate: { readWorkers: ... } aninhado significam a mesma coisa, porque o arquivo é achatado pela mesma junção camelCase antes de ser lido.
analyze
| key | flag | env | tipo | padrão | descrição |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | verbosidade do log; -v/--verbose e -q/--quiet são atalhos para debug/error |
source | --source <dir> | HANDBOOK_SOURCE | path | obrigatório | raiz do código-fonte; obrigatória para analyze/generate/plan/apply, opcional nos demais (atualidade do hash para validate/skill, e a árvore à qual um backup pertence para rollback) |
work | --work <dir> | HANDBOOK_WORK | path | obrigatório | diretório de trabalho que guarda os artefatos do pipeline; opcional para skill, onde acrescenta coverage.json |
lang | --lang <lang> | HANDBOOK_LANG | enum (auto, mais qualquer linguagem registrada) | auto | linguagem do código-fonte; auto detecta e mescla todas as linguagens registradas |
generate
| key | flag | env | tipo | padrão | descrição |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | verbosidade do log; -v/--verbose e -q/--quiet são atalhos para debug/error |
llmApiKey | — | HANDBOOK_LLM_API_KEY, OPENAI_API_KEY | string | "" (vazia) | chave de API para o endpoint do LLM; use EMPTY para endpoints locais sem chave. Nunca é uma flag e nunca é permitida no arquivo de configuração |
llmProvider | --provider <name> | HANDBOOK_LLM_PROVIDER, OPENAI_PROVIDER | enum (openai|anthropic|gemini) | openai | formato de transporte do LLM; 'openai' cobre qualquer endpoint compatível com OpenAI (a maioria é) |
llmModel | --model <id> | HANDBOOK_LLM_MODEL, OPENAI_MODEL | string | gpt-4o-mini | identificador do modelo |
llmBaseUrl | --base-url <url> | HANDBOOK_LLM_BASE_URL, OPENAI_BASE_URL | string | https://api.openai.com/v1 | qualquer endpoint compatível com OpenAI (hospedado, vLLM, LiteLLM, um proxy); uma URL com credenciais embutidas é recusada no arquivo de configuração, que acaba commitado |
llmMaxTokens | --max-tokens <n> | HANDBOOK_LLM_MAX_TOKENS, OPENAI_MAX_TOKENS | int | 16000 | máximo de tokens de saída por requisição |
llmTimeout | --timeout <sec> | HANDBOOK_LLM_TIMEOUT, OPENAI_TIMEOUT | int | 300 | prazo por requisição, em segundos; uma chamada travada é retentada em vez de poder manter uma fase refém |
llmMaxRetries | --llm-retries <n> | HANDBOOK_LLM_MAX_RETRIES | int | 6 | tentativas de repetição por requisição; 0 significa uma única tentativa |
llmRetryBackoff | --llm-retry-backoff <sec> | HANDBOOK_LLM_RETRY_BACKOFF | int | 3 | backoff base entre as tentativas, em segundos |
llmConcurrency | --llm-concurrency <n> | HANDBOOK_LLM_CONCURRENCY | int | 16 | limite global de requisições concorrentes através de um cliente |
llmExtraBody | — | HANDBOOK_LLM_EXTRA_BODY, OPENAI_EXTRA_BODY | json | — | campos do fornecedor mesclados ao corpo de toda requisição; os campos model/messages/token não podem ser sobrescritos. De formato livre, por isso é tratado como segredo: nunca é uma flag e nunca é permitido no arquivo de configuração |
source | --source <dir> | HANDBOOK_SOURCE | path | obrigatório | raiz do código-fonte; obrigatória para analyze/generate/plan/apply, opcional nos demais (atualidade do hash para validate/skill, e a árvore à qual um backup pertence para rollback) |
work | --work <dir> | HANDBOOK_WORK | path | obrigatório | diretório de trabalho que guarda os artefatos do pipeline; opcional para skill, onde acrescenta coverage.json |
lang | --lang <lang> | HANDBOOK_LANG | enum (auto, mais qualquer linguagem registrada) | auto | linguagem do código-fonte; auto detecta e mescla todas as linguagens registradas |
phase | --phase <spec> | HANDBOOK_PHASE | string | all | all | 1 | 2 | 2a | 2b | 2c | 3, ou uma lista separada por vírgulas |
strategy | --strategy <s> | HANDBOOK_STRATEGY | enum (file|member) | — | file (padrão) ou member; não definida mantém a estratégia registrada no diretório de trabalho |
skeleton | --skeleton <path> | HANDBOOK_SKELETON | path | — | skeleton.yaml escrito pelo usuário, obrigatório para a estratégia member |
narrateLang | --narrate-lang <l> | HANDBOOK_NARRATE_LANG | enum (en|zh) | en | idioma da prosa |
detail | --detail <d> | HANDBOOK_DETAIL | enum (brief|deep) | brief | profundidade da ficha |
synthMode | --synth-mode <m> | HANDBOOK_SYNTH_MODE | enum (oneshot|doctor) | oneshot | modo de síntese do esqueleto |
maxDoctorRounds | --max-doctor-rounds <n> | HANDBOOK_MAX_DOCTOR_ROUNDS | int | 6 | rodadas de convergência do doctor |
readWorkers | --read-workers <n> | HANDBOOK_READ_WORKERS | int | 12 | lotes de fichas concorrentes |
readBatchSize | --read-batch-size <n> | HANDBOOK_READ_BATCH_SIZE | int | — | arquivos por lote de fichas; não definido significa 1 para --detail deep e 8 para brief |
maxCharsPerFile | --max-chars-per-file <n> | HANDBOOK_MAX_CHARS_PER_FILE | int | 0 | trunca cada arquivo em n caracteres; 0 significa sem limite |
assignBatchSize | --assign-batch-size <n> | HANDBOOK_ASSIGN_BATCH_SIZE | int | 25 | fichas por lote de atribuição |
assignWorkers | --assign-workers <n> | HANDBOOK_ASSIGN_WORKERS | int | 12 | lotes de atribuição concorrentes |
organizeWorkers | --organize-workers <n> | HANDBOOK_ORGANIZE_WORKERS | int | 8 | chamadas concorrentes de organização de etapas |
narrateWorkers | --narrate-workers <n> | HANDBOOK_NARRATE_WORKERS | int | 8 | chamadas de narração concorrentes |
resume | --resume | HANDBOOK_RESUME | bool | false | pula os arquivos que já têm uma ficha concluída |
refresh | --refresh | HANDBOOK_REFRESH | bool | false | ignora os caches da Phase 3 |
llmCache | --llm-cache | HANDBOOK_LLM_CACHE | bool | false | armazena em cache as respostas brutas do LLM em /phase3/cache; desativado por --refresh |
render
| key | flag | env | tipo | padrão | descrição |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | verbosidade do log; -v/--verbose e -q/--quiet são atalhos para debug/error |
work | --work <dir> | HANDBOOK_WORK | path | obrigatório | diretório de trabalho que guarda os artefatos do pipeline; opcional para skill, onde acrescenta coverage.json |
title | --title <title> | HANDBOOK_TITLE | string | System Handbook | título do handbook para as saídas renderizadas |
out | --out <dir> | HANDBOOK_RENDER_OUT (com escopo) | path | — | local de saída; render usa /handbook por padrão, plan escreve um arquivo, skill escreve um diretório |
html | --html | HANDBOOK_HTML | bool | false | também renderiza o site HTML de várias páginas em /html |
htmlSingle | --html-single | HANDBOOK_HTML_SINGLE | bool | false | também renderiza uma única página HTML autocontida |
agentSite | --agent-site | HANDBOOK_AGENT_SITE | bool | false | também renderiza o índice localizador para agentes em /agent |
llmsTxt | --llms-txt | HANDBOOK_LLMS_TXT | bool | false | também escreve llms.txt e llms-full.txt ao lado do markdown |
sourceBaseUrl | --source-base-url <url> | HANDBOOK_SOURCE_BASE_URL | string | — | vincula as fichas de arquivo ao código-fonte em / |
skill
| key | flag | env | tipo | padrão | descrição |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | verbosidade do log; -v/--verbose e -q/--quiet são atalhos para debug/error |
source | --source <dir> | HANDBOOK_SOURCE | path | — | raiz do código-fonte; obrigatória para analyze/generate/plan/apply, opcional nos demais (atualidade do hash para validate/skill, e a árvore à qual um backup pertence para rollback) |
work | --work <dir> | HANDBOOK_WORK | path | — | diretório de trabalho que guarda os artefatos do pipeline; opcional para skill, onde acrescenta coverage.json |
out | --out <dir> | HANDBOOK_SKILL_OUT (com escopo) | path | obrigatório | local de saída; render usa /handbook por padrão, plan escreve um arquivo, skill escreve um diretório |
handbook | --handbook <dir> | HANDBOOK_SKILL_HANDBOOK (com escopo) | path | obrigatório | diretório do handbook renderizado; obrigatório para skill, contexto opcional para plan |
name | --name <slug> | HANDBOOK_NAME | string | obrigatório | slug da skill (minúsculas-com-hífen) |
project | --project <name> | HANDBOOK_PROJECT | string | — | nome humano do projeto para a prosa |
agentDir | --agent-dir <dir> | HANDBOOK_AGENT_DIR | path | — | site localizador para agentes renderizado; é entregue em references/agent/ |
bodyLang | --lang <l> | HANDBOOK_SKILL_BODY_LANG (com escopo) | enum (en|zh) | en | idioma do corpo do SKILL.md; o frontmatter permanece em inglês para o roteamento |
validate
| key | flag | env | tipo | padrão | descrição |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | verbosidade do log; -v/--verbose e -q/--quiet são atalhos para debug/error |
source | --source <dir> | HANDBOOK_SOURCE | path | — | raiz do código-fonte; obrigatória para analyze/generate/plan/apply, opcional nos demais (atualidade do hash para validate/skill, e a árvore à qual um backup pertence para rollback) |
skill | --skill <dir> | HANDBOOK_SKILL | path | obrigatório | diretório da skill a validar |
plan
| key | flag | env | tipo | padrão | descrição |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | verbosidade do log; -v/--verbose e -q/--quiet são atalhos para debug/error |
llmApiKey | — | HANDBOOK_LLM_API_KEY, OPENAI_API_KEY | string | "" (vazia) | chave de API para o endpoint do LLM; use EMPTY para endpoints locais sem chave. Nunca é uma flag e nunca é permitida no arquivo de configuração |
llmProvider | --provider <name> | HANDBOOK_LLM_PROVIDER, OPENAI_PROVIDER | enum (openai|anthropic|gemini) | openai | formato de transporte do LLM; 'openai' cobre qualquer endpoint compatível com OpenAI (a maioria é) |
llmModel | --model <id> | HANDBOOK_LLM_MODEL, OPENAI_MODEL | string | gpt-4o-mini | identificador do modelo |
llmBaseUrl | --base-url <url> | HANDBOOK_LLM_BASE_URL, OPENAI_BASE_URL | string | https://api.openai.com/v1 | qualquer endpoint compatível com OpenAI (hospedado, vLLM, LiteLLM, um proxy); uma URL com credenciais embutidas é recusada no arquivo de configuração, que acaba commitado |
llmMaxTokens | --max-tokens <n> | HANDBOOK_LLM_MAX_TOKENS, OPENAI_MAX_TOKENS | int | 16000 | máximo de tokens de saída por requisição |
llmTimeout | --timeout <sec> | HANDBOOK_LLM_TIMEOUT, OPENAI_TIMEOUT | int | 300 | prazo por requisição, em segundos; uma chamada travada é retentada em vez de poder manter uma fase refém |
llmMaxRetries | --llm-retries <n> | HANDBOOK_LLM_MAX_RETRIES | int | 6 | tentativas de repetição por requisição; 0 significa uma única tentativa |
llmRetryBackoff | --llm-retry-backoff <sec> | HANDBOOK_LLM_RETRY_BACKOFF | int | 3 | backoff base entre as tentativas, em segundos |
llmConcurrency | --llm-concurrency <n> | HANDBOOK_LLM_CONCURRENCY | int | 16 | limite global de requisições concorrentes através de um cliente |
llmExtraBody | — | HANDBOOK_LLM_EXTRA_BODY, OPENAI_EXTRA_BODY | json | — | campos do fornecedor mesclados ao corpo de toda requisição; os campos model/messages/token não podem ser sobrescritos. De formato livre, por isso é tratado como segredo: nunca é uma flag e nunca é permitido no arquivo de configuração |
source | --source <dir> | HANDBOOK_SOURCE | path | obrigatório | raiz do código-fonte; obrigatória para analyze/generate/plan/apply, opcional nos demais (atualidade do hash para validate/skill, e a árvore à qual um backup pertence para rollback) |
out | --out <dir> | HANDBOOK_PLAN_OUT (com escopo) | path | — | local de saída; render usa /handbook por padrão, plan escreve um arquivo, skill escreve um diretório |
handbook | --handbook <dir> | HANDBOOK_PLAN_HANDBOOK (com escopo) | path | — | diretório do handbook renderizado; obrigatório para skill, contexto opcional para plan |
request | --request <text> | HANDBOOK_REQUEST | string | obrigatório | a solicitação de mudança em linguagem natural |
maxTurns | --max-turns <n> | HANDBOOK_MAX_TURNS | int | 30 | orçamento de turnos do agente |
apply
| key | flag | env | tipo | padrão | descrição |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | verbosidade do log; -v/--verbose e -q/--quiet são atalhos para debug/error |
source | --source <dir> | HANDBOOK_SOURCE | path | obrigatório | raiz do código-fonte; obrigatória para analyze/generate/plan/apply, opcional nos demais (atualidade do hash para validate/skill, e a árvore à qual um backup pertence para rollback) |
plan | --plan <file> | HANDBOOK_PLAN | path | obrigatório | arquivo de plano produzido por handbook plan |
dryRun | --dry-run | HANDBOOK_DRY_RUN | bool | false | apenas verifica, nunca escreve |
backupRoot | --backup-root <dir> | HANDBOOK_BACKUP_ROOT | path | — | onde ficam os backups; o padrão é /.handbook-patches |
rollback
| key | flag | env | tipo | padrão | descrição |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | verbosidade do log; -v/--verbose e -q/--quiet são atalhos para debug/error |
source | --source <dir> | HANDBOOK_SOURCE | path | — | raiz do código-fonte; obrigatória para analyze/generate/plan/apply, opcional nos demais (atualidade do hash para validate/skill, e a árvore à qual um backup pertence para rollback) |
backup | --backup <dir> | HANDBOOK_BACKUP | path | obrigatório | diretório de backup contendo manifest.json |
force | --force | HANDBOOK_FORCE | bool | false | restaura até mesmo os arquivos que mudaram depois do patch |
resync
| key | flag | env | tipo | padrão | descrição |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | verbosidade do log; -v/--verbose e -q/--quiet são atalhos para debug/error |
llmApiKey | — | HANDBOOK_LLM_API_KEY, OPENAI_API_KEY | string | "" (vazia) | chave de API para o endpoint do LLM; use EMPTY para endpoints locais sem chave. Nunca é uma flag e nunca é permitida no arquivo de configuração |
llmProvider | --provider <name> | HANDBOOK_LLM_PROVIDER, OPENAI_PROVIDER | enum (openai|anthropic|gemini) | openai | formato de transporte do LLM; 'openai' cobre qualquer endpoint compatível com OpenAI (a maioria é) |
llmModel | --model <id> | HANDBOOK_LLM_MODEL, OPENAI_MODEL | string | gpt-4o-mini | identificador do modelo |
llmBaseUrl | --base-url <url> | HANDBOOK_LLM_BASE_URL, OPENAI_BASE_URL | string | https://api.openai.com/v1 | qualquer endpoint compatível com OpenAI (hospedado, vLLM, LiteLLM, um proxy); uma URL com credenciais embutidas é recusada no arquivo de configuração, que acaba commitado |
llmMaxTokens | --max-tokens <n> | HANDBOOK_LLM_MAX_TOKENS, OPENAI_MAX_TOKENS | int | 16000 | máximo de tokens de saída por requisição |
llmTimeout | --timeout <sec> | HANDBOOK_LLM_TIMEOUT, OPENAI_TIMEOUT | int | 300 | prazo por requisição, em segundos; uma chamada travada é retentada em vez de poder manter uma fase refém |
llmMaxRetries | --llm-retries <n> | HANDBOOK_LLM_MAX_RETRIES | int | 6 | tentativas de repetição por requisição; 0 significa uma única tentativa |
llmRetryBackoff | --llm-retry-backoff <sec> | HANDBOOK_LLM_RETRY_BACKOFF | int | 3 | backoff base entre as tentativas, em segundos |
llmConcurrency | --llm-concurrency <n> | HANDBOOK_LLM_CONCURRENCY | int | 16 | limite global de requisições concorrentes através de um cliente |
llmExtraBody | — | HANDBOOK_LLM_EXTRA_BODY, OPENAI_EXTRA_BODY | json | — | campos do fornecedor mesclados ao corpo de toda requisição; os campos model/messages/token não podem ser sobrescritos. De formato livre, por isso é tratado como segredo: nunca é uma flag e nunca é permitido no arquivo de configuração |
work | --work <dir> | HANDBOOK_WORK | path | obrigatório | diretório de trabalho que guarda os artefatos do pipeline; opcional para skill, onde acrescenta coverage.json |
title | --title <title> | HANDBOOK_TITLE | string | System Handbook | título do handbook para as saídas renderizadas |
case | --case <dir> | HANDBOOK_CASE | path | obrigatório | diretório do caso: edited/ + plan.md + change.diff |
useLlm | --no-llm | HANDBOOK_USE_LLM | bool | true | defina como false para apenas uma atualização estrutural, com a prosa marcada como desatualizada |
refreshRendered | --no-render | HANDBOOK_REFRESH_RENDERED | bool | true | defina como false para pular a atualização das saídas já renderizadas em /handbook |
corrections | --corrections <file> | HANDBOOK_CORRECTIONS | path | — | corrections.jsonl reportado pelo agente; seus arquivos ampliam o conjunto a ser atualizado |
cardDetail | --detail <d> | HANDBOOK_RESYNC_CARD_DETAIL (com escopo) | enum (brief|deep) | — | profundidade das fichas regeneradas; não definida acompanha o handbook existente |
proseLang | --narrate-lang <l> | HANDBOOK_RESYNC_PROSE_LANG (com escopo) | enum (en|zh) | — | idioma da prosa das fichas regeneradas; não definido acompanha o handbook existente |
studio
| key | flag | env | tipo | padrão | descrição |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | verbosidade do log; -v/--verbose e -q/--quiet são atalhos para debug/error |
llmApiKey | — | HANDBOOK_LLM_API_KEY, OPENAI_API_KEY | string | "" (vazia) | chave de API para o endpoint do LLM; use EMPTY para endpoints locais sem chave. Nunca é uma flag e nunca é permitida no arquivo de configuração |
llmProvider | --provider <name> | HANDBOOK_LLM_PROVIDER, OPENAI_PROVIDER | enum (openai|anthropic|gemini) | openai | formato de transporte do LLM; 'openai' cobre qualquer endpoint compatível com OpenAI (a maioria é) |
llmModel | --model <id> | HANDBOOK_LLM_MODEL, OPENAI_MODEL | string | gpt-4o-mini | identificador do modelo |
llmBaseUrl | --base-url <url> | HANDBOOK_LLM_BASE_URL, OPENAI_BASE_URL | string | https://api.openai.com/v1 | qualquer endpoint compatível com OpenAI (hospedado, vLLM, LiteLLM, um proxy); uma URL com credenciais embutidas é recusada no arquivo de configuração, que acaba commitado |
llmMaxTokens | --max-tokens <n> | HANDBOOK_LLM_MAX_TOKENS, OPENAI_MAX_TOKENS | int | 16000 | máximo de tokens de saída por requisição |
llmTimeout | --timeout <sec> | HANDBOOK_LLM_TIMEOUT, OPENAI_TIMEOUT | int | 300 | prazo por requisição, em segundos; uma chamada travada é retentada em vez de poder manter uma fase refém |
llmMaxRetries | --llm-retries <n> | HANDBOOK_LLM_MAX_RETRIES | int | 6 | tentativas de repetição por requisição; 0 significa uma única tentativa |
llmRetryBackoff | --llm-retry-backoff <sec> | HANDBOOK_LLM_RETRY_BACKOFF | int | 3 | backoff base entre as tentativas, em segundos |
llmConcurrency | --llm-concurrency <n> | HANDBOOK_LLM_CONCURRENCY | int | 16 | limite global de requisições concorrentes através de um cliente |
llmExtraBody | — | HANDBOOK_LLM_EXTRA_BODY, OPENAI_EXTRA_BODY | json | — | campos do fornecedor mesclados ao corpo de toda requisição; os campos model/messages/token não podem ser sobrescritos. De formato livre, por isso é tratado como segredo: nunca é uma flag e nunca é permitido no arquivo de configuração |
port | --port <n> | HANDBOOK_PORT | int | 4860 | porta em que escutar |
host | --host <addr> | HANDBOOK_HOST | string | 127.0.0.1 | endereço de bind; permanece no loopback a menos que você o defina (contêineres precisam de 0.0.0.0). A proteção CSRF continua exigindo um cabeçalho Host de loopback |
stateDir | --state-dir <dir> | HANDBOOK_STATE_DIR | path | — | onde ficam o studio.json e os diretórios de trabalho gerenciados; o padrão é $HOME/.handbook-studio |
config
| key | flag | env | tipo | padrão | descrição |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | verbosidade do log; -v/--verbose e -q/--quiet são atalhos para debug/error |
forCommand | --command <name> | HANDBOOK_FOR_COMMAND | string | — | mostra apenas as configurações que se aplicam a este subcomando; suas camadas de env/arquivo/padrão são inspecionáveis aqui, mas as flags do próprio comando não são (passe-as ao próprio comando) |
json | --json | HANDBOOK_JSON | bool | false | saída legível por máquina |
check | --check | HANDBOOK_CHECK | bool | false | apenas valida; sai com código diferente de zero se algo for inválido ou estiver faltando |
Referência da CLI
Cada subcomando, cada flag, sua variável de ambiente e seu padrão — além do que cada comando escreve e com o que ele sai.
Variáveis de ambiente
Cada variável que o Handbooks lê, a regra de nomenclatura que as gera, a cascata de .env e quais delas jamais podem entrar em um arquivo de configuração.