Handbooks
Справочник

Справочник конфигурации

Каждая настройка Handbooks — её флаг, переменная окружения, ключ в файле конфигурации, тип и значение по умолчанию — сгенерировано из реестра.

Эта страница — перевод сгенерированной страницы. Английский оригинал генерируется командой pnpm run config:docs из реестра настроек и защищён тестом на дрейф; перевод поддерживается вручную — когда меняется оригинал, обновите и его.

Приоритет

Каждая настройка разрешается через одни и те же слои, в порядке убывания приоритета: флаг > окружение шелла > .env > handbook.config.yaml > значение по умолчанию. Побеждает первый слой, который даёт значение, и все нижележащие слои для этой настройки игнорируются. Запустите handbook config — или handbook config --command <name>, чтобы увидеть только одну подкоманду, — чтобы проверить, что на самом деле разрешилось и из какого слоя это пришло.

Именование

Один ключ key в camelCase из реестра управляет всеми тремя поверхностями сразу: флагом, переменной окружения и ключом в файле конфигурации. Префикс с именем команды у любой из них ограничивает эту поверхность одной подкомандой, и это одно и то же преобразование для всех трёх — HANDBOOK_<KEY> становится HANDBOOK_<COMMAND>_<KEY>, а key становится <command>Key, записан ли он плоско или вложенно на один уровень под <command>:. Настройка, помеченная ниже как (с областью видимости), принимает только префиксное имя переменной окружения, потому что её смысл меняется от команды к команде (--out, --lang в пакете skill).

Начальная загрузка

Три настройки верхнего уровня указывают на слои выше и сами находятся вне реестра, разрешаясь один раз до всех остальных настроек — именно поэтому ни одну из них нельзя задать тем, что она загружает: ключ --env внутри handbook.config.yaml, строка --env-file внутри .env или ключ --config внутри того же файла остались бы просто некому прочитать.

  • --env <name> (или HANDBOOK_ENV) выбирает каскад для конкретного окружения — единственная из трёх, у которой есть и флаг, и форма переменной окружения, поскольку она называет окружение, а не указывает на один конкретный файл.
  • --env-file <path> загружает ровно этот один файл, минуя каскад ниже.
  • --config <path> называет один конкретный файл конфигурации, минуя поиск с учётом окружения, описанный ниже (по умолчанию: ближайший файл семейства handbook.config.yaml, найденный подъёмом вверх от рабочей директории с остановкой на границе репозитория).

Каскад .env

Без --env-file CLI загружает каскад файлов .env* вместо одного фиксированного файла, в порядке убывания приоритета. Существующее правило applyEnvFile — никогда не перекрывать уже заданный ключ — это и есть то, что превращает каскад просто в «вызови их в таком порядке, побеждает первый файл, задавший ключ»:

#файлктообластьв коммите?
1окружение шеллавсегда побеждает
2.env.<name>.localличноетолько это окружениенет (в gitignore)
3.env.<name>командноетолько это окружениеда
4.env.localличноекаждое окружениенет (в gitignore)
5.envкомандноебазовый уровеньда

Строки 2 и 3 применяются только тогда, когда --env/HANDBOOK_ENV называет окружение. Если не задано ни то ни другое, загружаются только строки 4 и 5 — ровно то, что загружалось до появления этого каскада, поэтому существующая настройка без .env.local не увидит вообще никаких изменений.

Поиск файла конфигурации с окружением

Если не считать --config, поиск по-прежнему поднимается вверх от рабочей директории и останавливается на границе репозитория, но в каждой посещённой директории он теперь сначала проверяет handbook.config.<name>.{yaml,yml,json} (только когда окружение названо), а уже потом обычный handbook.config.yaml и прочие — поэтому именованный файл всегда побеждает обычный файл, лежащий в той же директории, даже если обычный файл есть на уровне, более близком к рабочей директории. Если окружение не названо, поиск не меняется.

Запустите handbook config, чтобы увидеть, какое окружение активно и какие именно файлы оно загрузило, в порядке приоритета — каскад поверх четырёх слоёв значений — это слишком много возможных источников, чтобы держать их в голове, а слой, который эта команда не может показать, ничем не отличается от слоя, который не работает.

Разобранный пример для readWorkers (флаг --read-workers <n>, по умолчанию 12):

поверхностьплоскаяс областью видимости generate
envHANDBOOK_READ_WORKERSHANDBOOK_GENERATE_READ_WORKERS
ключ handbook.config.yamlreadWorkersgenerateReadWorkers

Формы для файла конфигурации взаимозаменяемы: плоский readWorkers: ... и вложенный generate: { readWorkers: ... } означают одно и то же, потому что файл уплощается тем же camelCase-склеиванием, прежде чем его прочитают.

analyze

ключфлагenvтиппо умолчаниюописание
logLevelHANDBOOK_LOG_LEVELenum (debug|info|warn|error|silent)infoдетализация логов; -v/--verbose и -q/--quiet — сокращения для debug/error
source--source <dir>HANDBOOK_SOURCEpathобязательнокорень исходников; обязателен для analyze/generate/plan/apply, в остальных случаях необязателен (свежесть хешей для validate/skill и дерево, которому принадлежит резервная копия, для rollback)
work--work <dir>HANDBOOK_WORKpathобязательнорабочий каталог с артефактами pipeline; необязателен для skill, где он добавляет coverage.json
lang--lang <lang>HANDBOOK_LANGenum (auto, плюс любой зарегистрированный язык)autoязык исходников; auto определяет и объединяет все зарегистрированные языки

generate

ключфлагenvтиппо умолчаниюописание
logLevelHANDBOOK_LOG_LEVELenum (debug|info|warn|error|silent)infoдетализация логов; -v/--verbose и -q/--quiet — сокращения для debug/error
llmApiKeyHANDBOOK_LLM_API_KEY, OPENAI_API_KEYstring"" (пусто)ключ API для конечной точки LLM; используйте EMPTY для локальных конечных точек без ключа. Никогда не флаг и никогда не допускается в файле конфигурации
llmProvider--provider <name>HANDBOOK_LLM_PROVIDER, OPENAI_PROVIDERenum (openai|anthropic|gemini)openaiформат обмена с LLM; 'openai' покрывает любую OpenAI-совместимую конечную точку (то есть большинство из них)
llmModel--model <id>HANDBOOK_LLM_MODEL, OPENAI_MODELstringgpt-4o-miniидентификатор модели
llmBaseUrl--base-url <url>HANDBOOK_LLM_BASE_URL, OPENAI_BASE_URLstringhttps://api.openai.com/v1любая OpenAI-совместимая конечная точка (хостинг, vLLM, LiteLLM, прокси); URL со встроенными учётными данными отклоняется в файле конфигурации, который попадает в коммиты
llmMaxTokens--max-tokens <n>HANDBOOK_LLM_MAX_TOKENS, OPENAI_MAX_TOKENSint16000максимум выходных токенов на запрос
llmTimeout--timeout <sec>HANDBOOK_LLM_TIMEOUT, OPENAI_TIMEOUTint300дедлайн на запрос в секундах; зависший вызов повторяется, а не держит фазу в заложниках
llmMaxRetries--llm-retries <n>HANDBOOK_LLM_MAX_RETRIESint6число повторных попыток на запрос; 0 означает единственную попытку
llmRetryBackoff--llm-retry-backoff <sec>HANDBOOK_LLM_RETRY_BACKOFFint3базовая задержка между повторами, в секундах
llmConcurrency--llm-concurrency <n>HANDBOOK_LLM_CONCURRENCYint16глобальный предел одновременных запросов через одного клиента
llmExtraBodyHANDBOOK_LLM_EXTRA_BODY, OPENAI_EXTRA_BODYjsonвендорские поля, подмешиваемые в тело каждого запроса; поля model/messages/token переопределить нельзя. Форма произвольная, поэтому трактуется как секрет: никогда не флаг и никогда не допускается в файле конфигурации
source--source <dir>HANDBOOK_SOURCEpathобязательнокорень исходников; обязателен для analyze/generate/plan/apply, в остальных случаях необязателен (свежесть хешей для validate/skill и дерево, которому принадлежит резервная копия, для rollback)
work--work <dir>HANDBOOK_WORKpathобязательнорабочий каталог с артефактами pipeline; необязателен для skill, где он добавляет coverage.json
lang--lang <lang>HANDBOOK_LANGenum (auto, плюс любой зарегистрированный язык)autoязык исходников; auto определяет и объединяет все зарегистрированные языки
phase--phase <spec>HANDBOOK_PHASEstringallall | 1 | 2 | 2a | 2b | 2c | 3 или список через запятую
strategy--strategy <s>HANDBOOK_STRATEGYenum (file|member)file (по умолчанию) или member; незаданное сохраняет стратегию, записанную в рабочем каталоге
skeleton--skeleton <path>HANDBOOK_SKELETONpathнаписанный пользователем skeleton.yaml, обязателен для стратегии member
narrateLang--narrate-lang <l>HANDBOOK_NARRATE_LANGenum (en|zh)enязык прозы
detail--detail <d>HANDBOOK_DETAILenum (brief|deep)briefглубина карточек
synthMode--synth-mode <m>HANDBOOK_SYNTH_MODEenum (oneshot|doctor)oneshotрежим синтеза скелета
maxDoctorRounds--max-doctor-rounds <n>HANDBOOK_MAX_DOCTOR_ROUNDSint6раунды сходимости доктора
readWorkers--read-workers <n>HANDBOOK_READ_WORKERSint12параллельные пакеты карточек
readBatchSize--read-batch-size <n>HANDBOOK_READ_BATCH_SIZEintфайлов на пакет карточек; незаданное означает 1 для --detail deep и 8 для brief
maxCharsPerFile--max-chars-per-file <n>HANDBOOK_MAX_CHARS_PER_FILEint0обрезать каждый файл до n символов; 0 означает без ограничения
assignBatchSize--assign-batch-size <n>HANDBOOK_ASSIGN_BATCH_SIZEint25карточек на пакет назначения
assignWorkers--assign-workers <n>HANDBOOK_ASSIGN_WORKERSint12параллельные пакеты назначения
organizeWorkers--organize-workers <n>HANDBOOK_ORGANIZE_WORKERSint8параллельные вызовы организации этапов
narrateWorkers--narrate-workers <n>HANDBOOK_NARRATE_WORKERSint8параллельные вызовы повествования
resume--resumeHANDBOOK_RESUMEboolfalseпропускать файлы, у которых уже есть готовая карточка
refresh--refreshHANDBOOK_REFRESHboolfalseигнорировать кеши phase 3
llmCache--llm-cacheHANDBOOK_LLM_CACHEboolfalseкешировать сырые ответы LLM в /phase3/cache; отключается флагом --refresh

render

ключфлагenvтиппо умолчаниюописание
logLevelHANDBOOK_LOG_LEVELenum (debug|info|warn|error|silent)infoдетализация логов; -v/--verbose и -q/--quiet — сокращения для debug/error
work--work <dir>HANDBOOK_WORKpathобязательнорабочий каталог с артефактами pipeline; необязателен для skill, где он добавляет coverage.json
title--title <title>HANDBOOK_TITLEstringSystem Handbookзаголовок руководства для отрендеренных результатов
out--out <dir>HANDBOOK_RENDER_OUT (с областью видимости)pathрасположение результата; render по умолчанию использует /handbook, plan пишет файл, skill пишет каталог
html--htmlHANDBOOK_HTMLboolfalseдополнительно отрендерить многостраничный HTML-сайт в /html
htmlSingle--html-singleHANDBOOK_HTML_SINGLEboolfalseдополнительно отрендерить одну самодостаточную HTML-страницу
agentSite--agent-siteHANDBOOK_AGENT_SITEboolfalseдополнительно отрендерить локаторный индекс для агентов в /agent
llmsTxt--llms-txtHANDBOOK_LLMS_TXTboolfalseдополнительно записать llms.txt и llms-full.txt рядом с markdown
sourceBaseUrl--source-base-url <url>HANDBOOK_SOURCE_BASE_URLstringсвязывать карточки файлов с исходником по адресу /

skill

ключфлагenvтиппо умолчаниюописание
logLevelHANDBOOK_LOG_LEVELenum (debug|info|warn|error|silent)infoдетализация логов; -v/--verbose и -q/--quiet — сокращения для debug/error
source--source <dir>HANDBOOK_SOURCEpathкорень исходников; обязателен для analyze/generate/plan/apply, в остальных случаях необязателен (свежесть хешей для validate/skill и дерево, которому принадлежит резервная копия, для rollback)
work--work <dir>HANDBOOK_WORKpathрабочий каталог с артефактами pipeline; необязателен для skill, где он добавляет coverage.json
out--out <dir>HANDBOOK_SKILL_OUT (с областью видимости)pathобязательнорасположение результата; render по умолчанию использует /handbook, plan пишет файл, skill пишет каталог
handbook--handbook <dir>HANDBOOK_SKILL_HANDBOOK (с областью видимости)pathобязательнокаталог отрендеренного руководства; обязателен для skill, необязательный контекст для plan
name--name <slug>HANDBOOK_NAMEstringобязательноslug скилла (строчные буквы и дефисы)
project--project <name>HANDBOOK_PROJECTstringчеловекочитаемое имя проекта для текста
agentDir--agent-dir <dir>HANDBOOK_AGENT_DIRpathотрендеренный сайт-локатор для агентов; поставляется в references/agent/
bodyLang--lang <l>HANDBOOK_SKILL_BODY_LANG (с областью видимости)enum (en|zh)enязык тела SKILL.md; фронтматтер остаётся английским для маршрутизации

validate

ключфлагenvтиппо умолчаниюописание
logLevelHANDBOOK_LOG_LEVELenum (debug|info|warn|error|silent)infoдетализация логов; -v/--verbose и -q/--quiet — сокращения для debug/error
source--source <dir>HANDBOOK_SOURCEpathкорень исходников; обязателен для analyze/generate/plan/apply, в остальных случаях необязателен (свежесть хешей для validate/skill и дерево, которому принадлежит резервная копия, для rollback)
skill--skill <dir>HANDBOOK_SKILLpathобязательнокаталог скилла для проверки

plan

ключфлагenvтиппо умолчаниюописание
logLevelHANDBOOK_LOG_LEVELenum (debug|info|warn|error|silent)infoдетализация логов; -v/--verbose и -q/--quiet — сокращения для debug/error
llmApiKeyHANDBOOK_LLM_API_KEY, OPENAI_API_KEYstring"" (пусто)ключ API для конечной точки LLM; используйте EMPTY для локальных конечных точек без ключа. Никогда не флаг и никогда не допускается в файле конфигурации
llmProvider--provider <name>HANDBOOK_LLM_PROVIDER, OPENAI_PROVIDERenum (openai|anthropic|gemini)openaiформат обмена с LLM; 'openai' покрывает любую OpenAI-совместимую конечную точку (то есть большинство из них)
llmModel--model <id>HANDBOOK_LLM_MODEL, OPENAI_MODELstringgpt-4o-miniидентификатор модели
llmBaseUrl--base-url <url>HANDBOOK_LLM_BASE_URL, OPENAI_BASE_URLstringhttps://api.openai.com/v1любая OpenAI-совместимая конечная точка (хостинг, vLLM, LiteLLM, прокси); URL со встроенными учётными данными отклоняется в файле конфигурации, который попадает в коммиты
llmMaxTokens--max-tokens <n>HANDBOOK_LLM_MAX_TOKENS, OPENAI_MAX_TOKENSint16000максимум выходных токенов на запрос
llmTimeout--timeout <sec>HANDBOOK_LLM_TIMEOUT, OPENAI_TIMEOUTint300дедлайн на запрос в секундах; зависший вызов повторяется, а не держит фазу в заложниках
llmMaxRetries--llm-retries <n>HANDBOOK_LLM_MAX_RETRIESint6число повторных попыток на запрос; 0 означает единственную попытку
llmRetryBackoff--llm-retry-backoff <sec>HANDBOOK_LLM_RETRY_BACKOFFint3базовая задержка между повторами, в секундах
llmConcurrency--llm-concurrency <n>HANDBOOK_LLM_CONCURRENCYint16глобальный предел одновременных запросов через одного клиента
llmExtraBodyHANDBOOK_LLM_EXTRA_BODY, OPENAI_EXTRA_BODYjsonвендорские поля, подмешиваемые в тело каждого запроса; поля model/messages/token переопределить нельзя. Форма произвольная, поэтому трактуется как секрет: никогда не флаг и никогда не допускается в файле конфигурации
source--source <dir>HANDBOOK_SOURCEpathобязательнокорень исходников; обязателен для analyze/generate/plan/apply, в остальных случаях необязателен (свежесть хешей для validate/skill и дерево, которому принадлежит резервная копия, для rollback)
out--out <dir>HANDBOOK_PLAN_OUT (с областью видимости)pathрасположение результата; render по умолчанию использует /handbook, plan пишет файл, skill пишет каталог
handbook--handbook <dir>HANDBOOK_PLAN_HANDBOOK (с областью видимости)pathкаталог отрендеренного руководства; обязателен для skill, необязательный контекст для plan
request--request <text>HANDBOOK_REQUESTstringобязательнозапрос на изменение на естественном языке
maxTurns--max-turns <n>HANDBOOK_MAX_TURNSint30бюджет ходов агента

apply

ключфлагenvтиппо умолчаниюописание
logLevelHANDBOOK_LOG_LEVELenum (debug|info|warn|error|silent)infoдетализация логов; -v/--verbose и -q/--quiet — сокращения для debug/error
source--source <dir>HANDBOOK_SOURCEpathобязательнокорень исходников; обязателен для analyze/generate/plan/apply, в остальных случаях необязателен (свежесть хешей для validate/skill и дерево, которому принадлежит резервная копия, для rollback)
plan--plan <file>HANDBOOK_PLANpathобязательнофайл плана, созданный командой handbook plan
dryRun--dry-runHANDBOOK_DRY_RUNboolfalseтолько проверка, никогда не записывать
backupRoot--backup-root <dir>HANDBOOK_BACKUP_ROOTpathкуда попадают резервные копии; по умолчанию /.handbook-patches

rollback

ключфлагenvтиппо умолчаниюописание
logLevelHANDBOOK_LOG_LEVELenum (debug|info|warn|error|silent)infoдетализация логов; -v/--verbose и -q/--quiet — сокращения для debug/error
source--source <dir>HANDBOOK_SOURCEpathкорень исходников; обязателен для analyze/generate/plan/apply, в остальных случаях необязателен (свежесть хешей для validate/skill и дерево, которому принадлежит резервная копия, для rollback)
backup--backup <dir>HANDBOOK_BACKUPpathобязательнокаталог резервной копии, содержащий manifest.json
force--forceHANDBOOK_FORCEboolfalseвосстанавливать даже файлы, изменившиеся после патча

resync

ключфлагenvтиппо умолчаниюописание
logLevelHANDBOOK_LOG_LEVELenum (debug|info|warn|error|silent)infoдетализация логов; -v/--verbose и -q/--quiet — сокращения для debug/error
llmApiKeyHANDBOOK_LLM_API_KEY, OPENAI_API_KEYstring"" (пусто)ключ API для конечной точки LLM; используйте EMPTY для локальных конечных точек без ключа. Никогда не флаг и никогда не допускается в файле конфигурации
llmProvider--provider <name>HANDBOOK_LLM_PROVIDER, OPENAI_PROVIDERenum (openai|anthropic|gemini)openaiформат обмена с LLM; 'openai' покрывает любую OpenAI-совместимую конечную точку (то есть большинство из них)
llmModel--model <id>HANDBOOK_LLM_MODEL, OPENAI_MODELstringgpt-4o-miniидентификатор модели
llmBaseUrl--base-url <url>HANDBOOK_LLM_BASE_URL, OPENAI_BASE_URLstringhttps://api.openai.com/v1любая OpenAI-совместимая конечная точка (хостинг, vLLM, LiteLLM, прокси); URL со встроенными учётными данными отклоняется в файле конфигурации, который попадает в коммиты
llmMaxTokens--max-tokens <n>HANDBOOK_LLM_MAX_TOKENS, OPENAI_MAX_TOKENSint16000максимум выходных токенов на запрос
llmTimeout--timeout <sec>HANDBOOK_LLM_TIMEOUT, OPENAI_TIMEOUTint300дедлайн на запрос в секундах; зависший вызов повторяется, а не держит фазу в заложниках
llmMaxRetries--llm-retries <n>HANDBOOK_LLM_MAX_RETRIESint6число повторных попыток на запрос; 0 означает единственную попытку
llmRetryBackoff--llm-retry-backoff <sec>HANDBOOK_LLM_RETRY_BACKOFFint3базовая задержка между повторами, в секундах
llmConcurrency--llm-concurrency <n>HANDBOOK_LLM_CONCURRENCYint16глобальный предел одновременных запросов через одного клиента
llmExtraBodyHANDBOOK_LLM_EXTRA_BODY, OPENAI_EXTRA_BODYjsonвендорские поля, подмешиваемые в тело каждого запроса; поля model/messages/token переопределить нельзя. Форма произвольная, поэтому трактуется как секрет: никогда не флаг и никогда не допускается в файле конфигурации
work--work <dir>HANDBOOK_WORKpathобязательнорабочий каталог с артефактами pipeline; необязателен для skill, где он добавляет coverage.json
title--title <title>HANDBOOK_TITLEstringSystem Handbookзаголовок руководства для отрендеренных результатов
case--case <dir>HANDBOOK_CASEpathобязательнокаталог кейса: edited/ + plan.md + change.diff
useLlm--no-llmHANDBOOK_USE_LLMbooltrueзадайте false для только структурного обновления, с прозой, помеченной устаревшей
refreshRendered--no-renderHANDBOOK_REFRESH_RENDEREDbooltrueзадайте false, чтобы не обновлять уже отрендеренные результаты в /handbook
corrections--corrections <file>HANDBOOK_CORRECTIONSpathсообщённый агентом corrections.jsonl; его файлы расширяют набор для обновления
cardDetail--detail <d>HANDBOOK_RESYNC_CARD_DETAIL (с областью видимости)enum (brief|deep)глубина для перегенерированных карточек; незаданное соответствует существующему руководству
proseLang--narrate-lang <l>HANDBOOK_RESYNC_PROSE_LANG (с областью видимости)enum (en|zh)язык прозы для перегенерированных карточек; незаданное соответствует существующему руководству

studio

ключфлагenvтиппо умолчаниюописание
logLevelHANDBOOK_LOG_LEVELenum (debug|info|warn|error|silent)infoдетализация логов; -v/--verbose и -q/--quiet — сокращения для debug/error
llmApiKeyHANDBOOK_LLM_API_KEY, OPENAI_API_KEYstring"" (пусто)ключ API для конечной точки LLM; используйте EMPTY для локальных конечных точек без ключа. Никогда не флаг и никогда не допускается в файле конфигурации
llmProvider--provider <name>HANDBOOK_LLM_PROVIDER, OPENAI_PROVIDERenum (openai|anthropic|gemini)openaiформат обмена с LLM; 'openai' покрывает любую OpenAI-совместимую конечную точку (то есть большинство из них)
llmModel--model <id>HANDBOOK_LLM_MODEL, OPENAI_MODELstringgpt-4o-miniидентификатор модели
llmBaseUrl--base-url <url>HANDBOOK_LLM_BASE_URL, OPENAI_BASE_URLstringhttps://api.openai.com/v1любая OpenAI-совместимая конечная точка (хостинг, vLLM, LiteLLM, прокси); URL со встроенными учётными данными отклоняется в файле конфигурации, который попадает в коммиты
llmMaxTokens--max-tokens <n>HANDBOOK_LLM_MAX_TOKENS, OPENAI_MAX_TOKENSint16000максимум выходных токенов на запрос
llmTimeout--timeout <sec>HANDBOOK_LLM_TIMEOUT, OPENAI_TIMEOUTint300дедлайн на запрос в секундах; зависший вызов повторяется, а не держит фазу в заложниках
llmMaxRetries--llm-retries <n>HANDBOOK_LLM_MAX_RETRIESint6число повторных попыток на запрос; 0 означает единственную попытку
llmRetryBackoff--llm-retry-backoff <sec>HANDBOOK_LLM_RETRY_BACKOFFint3базовая задержка между повторами, в секундах
llmConcurrency--llm-concurrency <n>HANDBOOK_LLM_CONCURRENCYint16глобальный предел одновременных запросов через одного клиента
llmExtraBodyHANDBOOK_LLM_EXTRA_BODY, OPENAI_EXTRA_BODYjsonвендорские поля, подмешиваемые в тело каждого запроса; поля model/messages/token переопределить нельзя. Форма произвольная, поэтому трактуется как секрет: никогда не флаг и никогда не допускается в файле конфигурации
port--port <n>HANDBOOK_PORTint4860порт для прослушивания
host--host <addr>HANDBOOK_HOSTstring127.0.0.1адрес привязки; остаётся на loopback, пока вы его не зададите (контейнерам нужен 0.0.0.0). Защита от CSRF всё равно требует заголовок Host с loopback
stateDir--state-dir <dir>HANDBOOK_STATE_DIRpathгде живут studio.json и управляемые рабочие каталоги; по умолчанию $HOME/.handbook-studio

config

ключфлагenvтиппо умолчаниюописание
logLevelHANDBOOK_LOG_LEVELenum (debug|info|warn|error|silent)infoдетализация логов; -v/--verbose и -q/--quiet — сокращения для debug/error
forCommand--command <name>HANDBOOK_FOR_COMMANDstringпоказать только настройки, применимые к этой подкоманде; её слои env/файл/умолчание здесь доступны для осмотра, а собственные флаги этой команды — нет (передавайте их самой команде)
json--jsonHANDBOOK_JSONboolfalseмашиночитаемый вывод
check--checkHANDBOOK_CHECKboolfalseтолько проверка; ненулевой код возврата, если что-то неверно или отсутствует

На этой странице