Configuration संदर्भ
Handbooks की हर setting, उसके flag, environment variable, config-फ़ाइल key, प्रकार और डिफ़ॉल्ट के साथ — registry से जनरेट की गई।
यह पृष्ठ एक जनरेटेड पेज का अनुवाद है। अंग्रेज़ी मूल pnpm run config:docs द्वारा settings registry से जनरेट होता है और drift test से सुरक्षित है; यह अनुवाद हाथ से बनाए रखा जाता है — अंग्रेज़ी मूल बदलने पर इसे भी अपडेट करें।
प्राथमिकता
हर setting उन्हीं परतों से होकर हल होती है, सबसे ऊँची प्राथमिकता पहले: flag > shell env > .env > handbook.config.yaml > डिफ़ॉल्ट। जो पहली परत मान देती है वही जीतती है और उस setting के लिए उसके नीचे की हर परत अनदेखी कर दी जाती है। यह देखने के लिए कि असल में क्या हल हुआ और वह किस परत से आया, handbook config चलाएँ — या केवल एक subcommand देखने के लिए handbook config --command <name>।
नामकरण
registry में एक camelCase key एक साथ तीनों सतहों को चलाती है: एक flag, एक environment variable, और एक config-फ़ाइल key। इनमें से किसी के आगे कमांड का नाम लगाने से वह सतह एक subcommand तक सीमित हो जाती है, और तीनों पर यह वही रूपांतरण है — HANDBOOK_<KEY> बनता है HANDBOOK_<COMMAND>_<KEY>, और key बनता है <command>Key, चाहे वह सपाट लिखा हो या <command>: के नीचे एक स्तर nested। नीचे (scoped) चिह्नित setting केवल उपसर्ग वाला env नाम स्वीकार करती है, क्योंकि उसका अर्थ हर कमांड पर बदलता है (--out, skill पैकेज में --lang)।
Bootstrap
तीन शीर्ष-स्तरीय settings ऊपर की परतों की ओर इशारा करती हैं, और खुद registry के बाहर हैं, बाकी हर setting से पहले एक बार हल होती हैं — यही वजह भी है कि इनमें से कोई उसी चीज़ से सेट नहीं की जा सकती जिसे वह लोड करती है: handbook.config.yaml के भीतर एक --env key, .env के भीतर एक --env-file पंक्ति, या उसी फ़ाइल के भीतर एक --config key — इन्हें पढ़ने वाला कोई बचता ही नहीं।
--env <name>(याHANDBOOK_ENV) प्रति-environment cascade चुनती है — तीनों में अकेली जिसके पास flag और environment-variable दोनों रूप हैं, क्योंकि यह किसी एक ठीक फ़ाइल की ओर इशारा करने के बजाय एक environment का नाम लेती है।--env-file <path>ठीक वही एक फ़ाइल लोड करती है, नीचे की cascade को छोड़कर।--config <path>ठीक एक config फ़ाइल का नाम लेती है, नीचे बताई environment-सजग खोज को छोड़कर (डिफ़ॉल्ट: working directory से ऊपर चलकर मिली निकटतमhandbook.config.yaml-परिवार की फ़ाइल, repo सीमा पर रुकते हुए)।
.env cascade
--env-file न हो तो CLI एक तय फ़ाइल के बजाय .env* फ़ाइलों की cascade लोड करती है, सबसे ऊँची प्राथमिकता पहले। मौजूदा applyEnvFile नियम — पहले से सेट key को कभी override न करना — ही वह चीज़ है जो cascade को इससे ज़्यादा कुछ नहीं बनाती कि "इन्हें इसी क्रम में बुलाओ, key सेट करने वाली पहली फ़ाइल जीतती है":
| # | फ़ाइल | कौन | दायरा | committed? |
|---|---|---|---|---|
| 1 | shell environment | — | — | हमेशा जीतता है |
| 2 | .env.<name>.local | निजी | केवल यह environment | नहीं (gitignored) |
| 3 | .env.<name> | टीम | केवल यह environment | हाँ |
| 4 | .env.local | निजी | हर environment | नहीं (gitignored) |
| 5 | .env | टीम | आधार रेखा | हाँ |
पंक्ति 2 और 3 तभी लागू होती हैं जब --env/HANDBOOK_ENV किसी environment का नाम ले। दोनों में से कोई सेट न हो तो केवल पंक्ति 4 और 5 लोड होती हैं — ठीक वही जो इस cascade के आने से पहले लोड होता था, इसलिए बिना .env.local वाले किसी मौजूदा सेटअप में कोई बदलाव दिखता ही नहीं।
environment के साथ config-फ़ाइल खोज
--config को छोड़ दें तो खोज अब भी working directory से ऊपर चलती है और repo सीमा पर रुकती है, पर हर विज़िट की गई directory में वह अब पहले handbook.config.<name>.{yaml,yml,json} देखती है (केवल तब जब कोई environment नामित हो), उसके बाद सादी handbook.config.yaml वगैरह — इसलिए नामित फ़ाइल उसी directory में पड़ी सादी फ़ाइल को हमेशा हरा देती है, भले ही सादी फ़ाइल working directory के ज़्यादा पास वाले स्तर पर मौजूद हो। कोई environment नामित न हो तो खोज अपरिवर्तित रहती है।
यह देखने के लिए कि कौन-सा environment सक्रिय है और उसने ठीक कौन-सी फ़ाइलें लोड कीं, प्राथमिकता क्रम में, handbook config चलाएँ — चार मान-परतों के ऊपर एक cascade इतने संभावित स्रोत बना देती है कि उन्हें याद से ट्रैक नहीं किया जा सकता, और जिस परत को यह कमांड दिखा न सके वह उस परत से अलग नहीं जो काम ही न करे।
readWorkers के लिए हल किया उदाहरण (flag --read-workers <n>, डिफ़ॉल्ट 12):
| सतह | सपाट | generate तक scoped |
|---|---|---|
| env | HANDBOOK_READ_WORKERS | HANDBOOK_GENERATE_READ_WORKERS |
handbook.config.yaml key | readWorkers | generateReadWorkers |
config-फ़ाइल के रूप आपस में बदले जा सकते हैं: सपाट readWorkers: ... और nested generate: { readWorkers: ... } का मतलब एक ही है, क्योंकि पढ़े जाने से पहले फ़ाइल उसी camelCase जोड़ से सपाट कर दी जाती है।
analyze
| key | flag | env | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | log की विस्तार-मात्रा; -v/--verbose और -q/--quiet debug/error के संक्षिप्त रूप हैं |
source | --source <dir> | HANDBOOK_SOURCE | path | आवश्यक | स्रोत मूल; analyze/generate/plan/apply के लिए आवश्यक, बाकी जगह वैकल्पिक (validate/skill के लिए hash ताज़गी, और rollback के लिए वह वृक्ष जिसका बैकअप है) |
work | --work <dir> | HANDBOOK_WORK | path | आवश्यक | pipeline artifacts रखने वाली work directory; skill के लिए वैकल्पिक, जहाँ यह coverage.json जोड़ती है |
lang | --lang <lang> | HANDBOOK_LANG | enum (auto, और कोई भी पंजीकृत भाषा) | auto | स्रोत भाषा; auto हर पंजीकृत भाषा पहचानकर मिला देता है |
generate
| key | flag | env | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | log की विस्तार-मात्रा; -v/--verbose और -q/--quiet debug/error के संक्षिप्त रूप हैं |
llmApiKey | — | HANDBOOK_LLM_API_KEY, OPENAI_API_KEY | string | "" (खाली) | LLM endpoint के लिए API key; बिना key वाले स्थानीय endpoints के लिए EMPTY इस्तेमाल करें। कभी flag नहीं और config फ़ाइल में कभी अनुमत नहीं |
llmProvider | --provider <name> | HANDBOOK_LLM_PROVIDER, OPENAI_PROVIDER | enum (openai|anthropic|gemini) | openai | LLM का wire प्रारूप; 'openai' हर OpenAI-संगत endpoint को कवर करता है (यानी अधिकांश को) |
llmModel | --model <id> | HANDBOOK_LLM_MODEL, OPENAI_MODEL | string | gpt-4o-mini | model पहचानकर्ता |
llmBaseUrl | --base-url <url> | HANDBOOK_LLM_BASE_URL, OPENAI_BASE_URL | string | https://api.openai.com/v1 | कोई भी OpenAI-संगत endpoint (होस्टेड, vLLM, LiteLLM, कोई proxy); जिस URL में credentials बैठे हों वह config फ़ाइल में अस्वीकार कर दिया जाता है, क्योंकि वह commit होती है |
llmMaxTokens | --max-tokens <n> | HANDBOOK_LLM_MAX_TOKENS, OPENAI_MAX_TOKENS | int | 16000 | प्रति request अधिकतम आउटपुट tokens |
llmTimeout | --timeout <sec> | HANDBOOK_LLM_TIMEOUT, OPENAI_TIMEOUT | int | 300 | प्रति request समय-सीमा सेकंड में; अटके कॉल को दोबारा आज़माया जाता है, उसे किसी phase को बंधक बनाने नहीं दिया जाता |
llmMaxRetries | --llm-retries <n> | HANDBOOK_LLM_MAX_RETRIES | int | 6 | प्रति request पुनः प्रयास; 0 का मतलब एक ही प्रयास |
llmRetryBackoff | --llm-retry-backoff <sec> | HANDBOOK_LLM_RETRY_BACKOFF | int | 3 | पुनः प्रयासों के बीच आधार प्रतीक्षा, सेकंड में |
llmConcurrency | --llm-concurrency <n> | HANDBOOK_LLM_CONCURRENCY | int | 16 | एक client से होकर समवर्ती requests की वैश्विक सीमा |
llmExtraBody | — | HANDBOOK_LLM_EXTRA_BODY, OPENAI_EXTRA_BODY | json | — | हर request body में मिलाए जाने वाले vendor फ़ील्ड; model/messages/token फ़ील्ड override नहीं किए जा सकते। free-form होने के कारण इसे secret माना जाता है: कभी flag नहीं और config फ़ाइल में कभी अनुमत नहीं |
source | --source <dir> | HANDBOOK_SOURCE | path | आवश्यक | स्रोत मूल; analyze/generate/plan/apply के लिए आवश्यक, बाकी जगह वैकल्पिक (validate/skill के लिए hash ताज़गी, और rollback के लिए वह वृक्ष जिसका बैकअप है) |
work | --work <dir> | HANDBOOK_WORK | path | आवश्यक | pipeline artifacts रखने वाली work directory; skill के लिए वैकल्पिक, जहाँ यह coverage.json जोड़ती है |
lang | --lang <lang> | HANDBOOK_LANG | enum (auto, और कोई भी पंजीकृत भाषा) | auto | स्रोत भाषा; auto हर पंजीकृत भाषा पहचानकर मिला देता है |
phase | --phase <spec> | HANDBOOK_PHASE | string | all | all | 1 | 2 | 2a | 2b | 2c | 3, या अल्पविराम सूची |
strategy | --strategy <s> | HANDBOOK_STRATEGY | enum (file|member) | — | file (डिफ़ॉल्ट) या member; अनसेट रहने पर work directory में दर्ज strategy बनी रहती है |
skeleton | --skeleton <path> | HANDBOOK_SKELETON | path | — | उपयोगकर्ता की लिखी skeleton.yaml, member strategy के लिए आवश्यक |
narrateLang | --narrate-lang <l> | HANDBOOK_NARRATE_LANG | enum (en|zh) | en | गद्य की भाषा |
detail | --detail <d> | HANDBOOK_DETAIL | enum (brief|deep) | brief | card की गहराई |
synthMode | --synth-mode <m> | HANDBOOK_SYNTH_MODE | enum (oneshot|doctor) | oneshot | skeleton संश्लेषण मोड |
maxDoctorRounds | --max-doctor-rounds <n> | HANDBOOK_MAX_DOCTOR_ROUNDS | int | 6 | doctor अभिसरण राउंड |
readWorkers | --read-workers <n> | HANDBOOK_READ_WORKERS | int | 12 | समवर्ती card बैच |
readBatchSize | --read-batch-size <n> | HANDBOOK_READ_BATCH_SIZE | int | — | प्रति card बैच फ़ाइलें; अनसेट का मतलब --detail deep के लिए 1 और brief के लिए 8 |
maxCharsPerFile | --max-chars-per-file <n> | HANDBOOK_MAX_CHARS_PER_FILE | int | 0 | हर फ़ाइल को n अक्षरों पर काटें; 0 का मतलब कोई सीमा नहीं |
assignBatchSize | --assign-batch-size <n> | HANDBOOK_ASSIGN_BATCH_SIZE | int | 25 | प्रति assignment बैच cards |
assignWorkers | --assign-workers <n> | HANDBOOK_ASSIGN_WORKERS | int | 12 | समवर्ती assignment बैच |
organizeWorkers | --organize-workers <n> | HANDBOOK_ORGANIZE_WORKERS | int | 8 | समवर्ती stage-organize कॉल |
narrateWorkers | --narrate-workers <n> | HANDBOOK_NARRATE_WORKERS | int | 8 | समवर्ती narration कॉल |
resume | --resume | HANDBOOK_RESUME | bool | false | जिन फ़ाइलों का card पहले से पूरा है उन्हें छोड़ दें |
refresh | --refresh | HANDBOOK_REFRESH | bool | false | phase 3 के caches अनदेखा करें |
llmCache | --llm-cache | HANDBOOK_LLM_CACHE | bool | false | कच्चे LLM उत्तर /phase3/cache के नीचे cache करें; --refresh से निष्क्रिय |
render
| key | flag | env | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | log की विस्तार-मात्रा; -v/--verbose और -q/--quiet debug/error के संक्षिप्त रूप हैं |
work | --work <dir> | HANDBOOK_WORK | path | आवश्यक | pipeline artifacts रखने वाली work directory; skill के लिए वैकल्पिक, जहाँ यह coverage.json जोड़ती है |
title | --title <title> | HANDBOOK_TITLE | string | System Handbook | रेंडर किए आउटपुट के लिए handbook शीर्षक |
out | --out <dir> | HANDBOOK_RENDER_OUT (scoped) | path | — | आउटपुट स्थान; render डिफ़ॉल्ट रूप से /handbook, plan एक फ़ाइल लिखता है, skill एक directory लिखता है |
html | --html | HANDBOOK_HTML | bool | false | साथ में बहु-पृष्ठ HTML साइट /html के नीचे रेंडर करें |
htmlSingle | --html-single | HANDBOOK_HTML_SINGLE | bool | false | साथ में एक स्वयं-निहित HTML पृष्ठ रेंडर करें |
agentSite | --agent-site | HANDBOOK_AGENT_SITE | bool | false | साथ में agent locator index /agent के नीचे रेंडर करें |
llmsTxt | --llms-txt | HANDBOOK_LLMS_TXT | bool | false | साथ में markdown के बगल में llms.txt और llms-full.txt लिखें |
sourceBaseUrl | --source-base-url <url> | HANDBOOK_SOURCE_BASE_URL | string | — | file cards को / पर स्रोत से जोड़ें |
skill
| key | flag | env | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | log की विस्तार-मात्रा; -v/--verbose और -q/--quiet debug/error के संक्षिप्त रूप हैं |
source | --source <dir> | HANDBOOK_SOURCE | path | — | स्रोत मूल; analyze/generate/plan/apply के लिए आवश्यक, बाकी जगह वैकल्पिक (validate/skill के लिए hash ताज़गी, और rollback के लिए वह वृक्ष जिसका बैकअप है) |
work | --work <dir> | HANDBOOK_WORK | path | — | pipeline artifacts रखने वाली work directory; skill के लिए वैकल्पिक, जहाँ यह coverage.json जोड़ती है |
out | --out <dir> | HANDBOOK_SKILL_OUT (scoped) | path | आवश्यक | आउटपुट स्थान; render डिफ़ॉल्ट रूप से /handbook, plan एक फ़ाइल लिखता है, skill एक directory लिखता है |
handbook | --handbook <dir> | HANDBOOK_SKILL_HANDBOOK (scoped) | path | आवश्यक | रेंडर किए handbook की directory; skill के लिए आवश्यक, plan के लिए वैकल्पिक संदर्भ |
name | --name <slug> | HANDBOOK_NAME | string | आवश्यक | skill slug (छोटे अक्षर-हाइफ़न) |
project | --project <name> | HANDBOOK_PROJECT | string | — | गद्य के लिए मानवीय प्रोजेक्ट नाम |
agentDir | --agent-dir <dir> | HANDBOOK_AGENT_DIR | path | — | रेंडर की गई agent locator साइट; references/agent/ के नीचे भेजी जाती है |
bodyLang | --lang <l> | HANDBOOK_SKILL_BODY_LANG (scoped) | enum (en|zh) | en | SKILL.md मुख्य भाग की भाषा; रूटिंग के लिए frontmatter अंग्रेज़ी ही रहता है |
validate
| key | flag | env | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | log की विस्तार-मात्रा; -v/--verbose और -q/--quiet debug/error के संक्षिप्त रूप हैं |
source | --source <dir> | HANDBOOK_SOURCE | path | — | स्रोत मूल; analyze/generate/plan/apply के लिए आवश्यक, बाकी जगह वैकल्पिक (validate/skill के लिए hash ताज़गी, और rollback के लिए वह वृक्ष जिसका बैकअप है) |
skill | --skill <dir> | HANDBOOK_SKILL | path | आवश्यक | जाँचने के लिए skill directory |
plan
| key | flag | env | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | log की विस्तार-मात्रा; -v/--verbose और -q/--quiet debug/error के संक्षिप्त रूप हैं |
llmApiKey | — | HANDBOOK_LLM_API_KEY, OPENAI_API_KEY | string | "" (खाली) | LLM endpoint के लिए API key; बिना key वाले स्थानीय endpoints के लिए EMPTY इस्तेमाल करें। कभी flag नहीं और config फ़ाइल में कभी अनुमत नहीं |
llmProvider | --provider <name> | HANDBOOK_LLM_PROVIDER, OPENAI_PROVIDER | enum (openai|anthropic|gemini) | openai | LLM का wire प्रारूप; 'openai' हर OpenAI-संगत endpoint को कवर करता है (यानी अधिकांश को) |
llmModel | --model <id> | HANDBOOK_LLM_MODEL, OPENAI_MODEL | string | gpt-4o-mini | model पहचानकर्ता |
llmBaseUrl | --base-url <url> | HANDBOOK_LLM_BASE_URL, OPENAI_BASE_URL | string | https://api.openai.com/v1 | कोई भी OpenAI-संगत endpoint (होस्टेड, vLLM, LiteLLM, कोई proxy); जिस URL में credentials बैठे हों वह config फ़ाइल में अस्वीकार कर दिया जाता है, क्योंकि वह commit होती है |
llmMaxTokens | --max-tokens <n> | HANDBOOK_LLM_MAX_TOKENS, OPENAI_MAX_TOKENS | int | 16000 | प्रति request अधिकतम आउटपुट tokens |
llmTimeout | --timeout <sec> | HANDBOOK_LLM_TIMEOUT, OPENAI_TIMEOUT | int | 300 | प्रति request समय-सीमा सेकंड में; अटके कॉल को दोबारा आज़माया जाता है, उसे किसी phase को बंधक बनाने नहीं दिया जाता |
llmMaxRetries | --llm-retries <n> | HANDBOOK_LLM_MAX_RETRIES | int | 6 | प्रति request पुनः प्रयास; 0 का मतलब एक ही प्रयास |
llmRetryBackoff | --llm-retry-backoff <sec> | HANDBOOK_LLM_RETRY_BACKOFF | int | 3 | पुनः प्रयासों के बीच आधार प्रतीक्षा, सेकंड में |
llmConcurrency | --llm-concurrency <n> | HANDBOOK_LLM_CONCURRENCY | int | 16 | एक client से होकर समवर्ती requests की वैश्विक सीमा |
llmExtraBody | — | HANDBOOK_LLM_EXTRA_BODY, OPENAI_EXTRA_BODY | json | — | हर request body में मिलाए जाने वाले vendor फ़ील्ड; model/messages/token फ़ील्ड override नहीं किए जा सकते। free-form होने के कारण इसे secret माना जाता है: कभी flag नहीं और config फ़ाइल में कभी अनुमत नहीं |
source | --source <dir> | HANDBOOK_SOURCE | path | आवश्यक | स्रोत मूल; analyze/generate/plan/apply के लिए आवश्यक, बाकी जगह वैकल्पिक (validate/skill के लिए hash ताज़गी, और rollback के लिए वह वृक्ष जिसका बैकअप है) |
out | --out <dir> | HANDBOOK_PLAN_OUT (scoped) | path | — | आउटपुट स्थान; render डिफ़ॉल्ट रूप से /handbook, plan एक फ़ाइल लिखता है, skill एक directory लिखता है |
handbook | --handbook <dir> | HANDBOOK_PLAN_HANDBOOK (scoped) | path | — | रेंडर किए handbook की directory; skill के लिए आवश्यक, plan के लिए वैकल्पिक संदर्भ |
request | --request <text> | HANDBOOK_REQUEST | string | आवश्यक | प्राकृतिक भाषा में परिवर्तन का अनुरोध |
maxTurns | --max-turns <n> | HANDBOOK_MAX_TURNS | int | 30 | agent का turn बजट |
apply
| key | flag | env | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | log की विस्तार-मात्रा; -v/--verbose और -q/--quiet debug/error के संक्षिप्त रूप हैं |
source | --source <dir> | HANDBOOK_SOURCE | path | आवश्यक | स्रोत मूल; analyze/generate/plan/apply के लिए आवश्यक, बाकी जगह वैकल्पिक (validate/skill के लिए hash ताज़गी, और rollback के लिए वह वृक्ष जिसका बैकअप है) |
plan | --plan <file> | HANDBOOK_PLAN | path | आवश्यक | handbook plan से बनी plan फ़ाइल |
dryRun | --dry-run | HANDBOOK_DRY_RUN | bool | false | केवल सत्यापन, कभी न लिखें |
backupRoot | --backup-root <dir> | HANDBOOK_BACKUP_ROOT | path | — | बैकअप कहाँ जाते हैं; डिफ़ॉल्ट /.handbook-patches |
rollback
| key | flag | env | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | log की विस्तार-मात्रा; -v/--verbose और -q/--quiet debug/error के संक्षिप्त रूप हैं |
source | --source <dir> | HANDBOOK_SOURCE | path | — | स्रोत मूल; analyze/generate/plan/apply के लिए आवश्यक, बाकी जगह वैकल्पिक (validate/skill के लिए hash ताज़गी, और rollback के लिए वह वृक्ष जिसका बैकअप है) |
backup | --backup <dir> | HANDBOOK_BACKUP | path | आवश्यक | manifest.json वाली बैकअप directory |
force | --force | HANDBOOK_FORCE | bool | false | patch के बाद बदली फ़ाइलें भी बहाल करें |
resync
| key | flag | env | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | log की विस्तार-मात्रा; -v/--verbose और -q/--quiet debug/error के संक्षिप्त रूप हैं |
llmApiKey | — | HANDBOOK_LLM_API_KEY, OPENAI_API_KEY | string | "" (खाली) | LLM endpoint के लिए API key; बिना key वाले स्थानीय endpoints के लिए EMPTY इस्तेमाल करें। कभी flag नहीं और config फ़ाइल में कभी अनुमत नहीं |
llmProvider | --provider <name> | HANDBOOK_LLM_PROVIDER, OPENAI_PROVIDER | enum (openai|anthropic|gemini) | openai | LLM का wire प्रारूप; 'openai' हर OpenAI-संगत endpoint को कवर करता है (यानी अधिकांश को) |
llmModel | --model <id> | HANDBOOK_LLM_MODEL, OPENAI_MODEL | string | gpt-4o-mini | model पहचानकर्ता |
llmBaseUrl | --base-url <url> | HANDBOOK_LLM_BASE_URL, OPENAI_BASE_URL | string | https://api.openai.com/v1 | कोई भी OpenAI-संगत endpoint (होस्टेड, vLLM, LiteLLM, कोई proxy); जिस URL में credentials बैठे हों वह config फ़ाइल में अस्वीकार कर दिया जाता है, क्योंकि वह commit होती है |
llmMaxTokens | --max-tokens <n> | HANDBOOK_LLM_MAX_TOKENS, OPENAI_MAX_TOKENS | int | 16000 | प्रति request अधिकतम आउटपुट tokens |
llmTimeout | --timeout <sec> | HANDBOOK_LLM_TIMEOUT, OPENAI_TIMEOUT | int | 300 | प्रति request समय-सीमा सेकंड में; अटके कॉल को दोबारा आज़माया जाता है, उसे किसी phase को बंधक बनाने नहीं दिया जाता |
llmMaxRetries | --llm-retries <n> | HANDBOOK_LLM_MAX_RETRIES | int | 6 | प्रति request पुनः प्रयास; 0 का मतलब एक ही प्रयास |
llmRetryBackoff | --llm-retry-backoff <sec> | HANDBOOK_LLM_RETRY_BACKOFF | int | 3 | पुनः प्रयासों के बीच आधार प्रतीक्षा, सेकंड में |
llmConcurrency | --llm-concurrency <n> | HANDBOOK_LLM_CONCURRENCY | int | 16 | एक client से होकर समवर्ती requests की वैश्विक सीमा |
llmExtraBody | — | HANDBOOK_LLM_EXTRA_BODY, OPENAI_EXTRA_BODY | json | — | हर request body में मिलाए जाने वाले vendor फ़ील्ड; model/messages/token फ़ील्ड override नहीं किए जा सकते। free-form होने के कारण इसे secret माना जाता है: कभी flag नहीं और config फ़ाइल में कभी अनुमत नहीं |
work | --work <dir> | HANDBOOK_WORK | path | आवश्यक | pipeline artifacts रखने वाली work directory; skill के लिए वैकल्पिक, जहाँ यह coverage.json जोड़ती है |
title | --title <title> | HANDBOOK_TITLE | string | System Handbook | रेंडर किए आउटपुट के लिए handbook शीर्षक |
case | --case <dir> | HANDBOOK_CASE | path | आवश्यक | case directory: edited/ + plan.md + change.diff |
useLlm | --no-llm | HANDBOOK_USE_LLM | bool | true | केवल संरचनात्मक ताज़गी के लिए false करें, गद्य बासी चिह्नित होगा |
refreshRendered | --no-render | HANDBOOK_REFRESH_RENDERED | bool | true | /handbook के नीचे पहले से रेंडर किए आउटपुट ताज़ा करना छोड़ने के लिए false करें |
corrections | --corrections <file> | HANDBOOK_CORRECTIONS | path | — | agent द्वारा बताई corrections.jsonl; उसकी फ़ाइलें refresh सेट को चौड़ा करती हैं |
cardDetail | --detail <d> | HANDBOOK_RESYNC_CARD_DETAIL (scoped) | enum (brief|deep) | — | दोबारा बने cards की गहराई; अनसेट मौजूदा handbook से मेल खाता है |
proseLang | --narrate-lang <l> | HANDBOOK_RESYNC_PROSE_LANG (scoped) | enum (en|zh) | — | दोबारा बने cards के गद्य की भाषा; अनसेट मौजूदा handbook से मेल खाता है |
studio
| key | flag | env | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | log की विस्तार-मात्रा; -v/--verbose और -q/--quiet debug/error के संक्षिप्त रूप हैं |
llmApiKey | — | HANDBOOK_LLM_API_KEY, OPENAI_API_KEY | string | "" (खाली) | LLM endpoint के लिए API key; बिना key वाले स्थानीय endpoints के लिए EMPTY इस्तेमाल करें। कभी flag नहीं और config फ़ाइल में कभी अनुमत नहीं |
llmProvider | --provider <name> | HANDBOOK_LLM_PROVIDER, OPENAI_PROVIDER | enum (openai|anthropic|gemini) | openai | LLM का wire प्रारूप; 'openai' हर OpenAI-संगत endpoint को कवर करता है (यानी अधिकांश को) |
llmModel | --model <id> | HANDBOOK_LLM_MODEL, OPENAI_MODEL | string | gpt-4o-mini | model पहचानकर्ता |
llmBaseUrl | --base-url <url> | HANDBOOK_LLM_BASE_URL, OPENAI_BASE_URL | string | https://api.openai.com/v1 | कोई भी OpenAI-संगत endpoint (होस्टेड, vLLM, LiteLLM, कोई proxy); जिस URL में credentials बैठे हों वह config फ़ाइल में अस्वीकार कर दिया जाता है, क्योंकि वह commit होती है |
llmMaxTokens | --max-tokens <n> | HANDBOOK_LLM_MAX_TOKENS, OPENAI_MAX_TOKENS | int | 16000 | प्रति request अधिकतम आउटपुट tokens |
llmTimeout | --timeout <sec> | HANDBOOK_LLM_TIMEOUT, OPENAI_TIMEOUT | int | 300 | प्रति request समय-सीमा सेकंड में; अटके कॉल को दोबारा आज़माया जाता है, उसे किसी phase को बंधक बनाने नहीं दिया जाता |
llmMaxRetries | --llm-retries <n> | HANDBOOK_LLM_MAX_RETRIES | int | 6 | प्रति request पुनः प्रयास; 0 का मतलब एक ही प्रयास |
llmRetryBackoff | --llm-retry-backoff <sec> | HANDBOOK_LLM_RETRY_BACKOFF | int | 3 | पुनः प्रयासों के बीच आधार प्रतीक्षा, सेकंड में |
llmConcurrency | --llm-concurrency <n> | HANDBOOK_LLM_CONCURRENCY | int | 16 | एक client से होकर समवर्ती requests की वैश्विक सीमा |
llmExtraBody | — | HANDBOOK_LLM_EXTRA_BODY, OPENAI_EXTRA_BODY | json | — | हर request body में मिलाए जाने वाले vendor फ़ील्ड; model/messages/token फ़ील्ड override नहीं किए जा सकते। free-form होने के कारण इसे secret माना जाता है: कभी flag नहीं और config फ़ाइल में कभी अनुमत नहीं |
port | --port <n> | HANDBOOK_PORT | int | 4860 | जिस पोर्ट पर सुनना है |
host | --host <addr> | HANDBOOK_HOST | string | 127.0.0.1 | bind पता; जब तक आप इसे सेट न करें यह loopback पर ही रहता है (containers को 0.0.0.0 चाहिए)। CSRF guard फिर भी loopback Host हेडर माँगता है |
stateDir | --state-dir <dir> | HANDBOOK_STATE_DIR | path | — | studio.json और प्रबंधित work directories कहाँ रहती हैं; डिफ़ॉल्ट $HOME/.handbook-studio |
config
| key | flag | env | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|---|---|
logLevel | — | HANDBOOK_LOG_LEVEL | enum (debug|info|warn|error|silent) | info | log की विस्तार-मात्रा; -v/--verbose और -q/--quiet debug/error के संक्षिप्त रूप हैं |
forCommand | --command <name> | HANDBOOK_FOR_COMMAND | string | — | केवल वे settings दिखाएँ जो इस subcommand पर लागू होती हैं; उसकी env/फ़ाइल/डिफ़ॉल्ट परतें यहाँ देखी जा सकती हैं, पर उस कमांड के अपने flags नहीं (वे कमांड को ही दें) |
json | --json | HANDBOOK_JSON | bool | false | मशीन-पठनीय आउटपुट |
check | --check | HANDBOOK_CHECK | bool | false | केवल सत्यापन; कुछ भी अमान्य या गायब हो तो गैर-शून्य exit |
CLI संदर्भ
हर subcommand, हर flag, उसका environment variable और उसका डिफ़ॉल्ट — साथ ही यह भी कि हर कमांड क्या लिखती है और किस exit code के साथ खत्म होती है।
एनवायरनमेंट वेरिएबल्स
Handbooks जो भी variable पढ़ता है, उन्हें बनाने वाला नामकरण नियम, .env cascade, और वे जिन्हें कभी config फ़ाइल में नहीं जाना चाहिए।