이 페이지는 설정 키의 단일 목록입니다. 키가 어디서 어떤 순서로 읽히는지는 설정 기초가 다룹니다. 키는 세 무리로 나뉩니다. Settings 필드 (core/config/_settings.py), 라우팅 매니페스트 (core/config/routing.toml), self-improving 루프 섹션(core/config/self_improving.py).
모든 Settings 필드는 GEODE_ 접두사를 붙인 env 변수로 덮을 수 있습니다. model은GEODE_MODEL, agentic_effort는GEODE_AGENTIC_EFFORT가 됩니다. toml 키 열이 비어 있으면 그 필드는 env 또는 코드 기본값으로만 설정합니다. toml 매핑의 SoT는 core/config/__init__.py의_TOML_TO_SETTINGS이고, 매핑에 없는 toml 키는 조용히 무시됩니다.
Settings: toml 매핑 필드
[llm]
| 필드 | toml 키 | 타입 / 기본값 | 용도 |
|---|
model | llm.primary_model | str = "claude-opus-4-8" | 기본 모델. 기본값은 routing.toml의 anthropic 기본값을 따라갑니다. |
act_model | llm.act_model | str = "" | 액션 루프 모델. 비우면 model로 폴백합니다. |
judge_model | llm.judge_model | str = "" | 턴 단위 verify judge 모델. 비우면 model로 폴백합니다. |
learning_extract_model | llm.learning_extract_model | str = "glm-4.7-flash" | learning 추출 훅용 무료 티어 GLM 모델. |
anthropic_credential_source | llm.anthropic_credential_source | str = "auto" | Anthropic 자격 경로. CredentialSource 값 + oauth 별칭 + none. |
openai_credential_source | llm.openai_credential_source | str = "auto" | OpenAI 자격 경로. 같은 검증을 거칩니다. |
[agentic]
| 필드 | toml 키 | 타입 / 기본값 | 용도 |
|---|
agentic_effort | agentic.effort | str = "high" | low/medium/high/max/xhigh. Anthropic output_config.effort, OpenAI reasoning.effort로 전달됩니다. xhigh는 Opus 4.7 이상과 Fable 5 전용. |
agentic_loop_time_budget | agentic.time_budget | float = 0.0 | 벽시계 초 단위 예산. 0이면 무제한. |
agentic_thinking_budget | agentic.thinking_budget | int = 0 | 레거시 thinking 토큰 예산. 0이면 비활성. |
[replan]
| 필드 | toml 키 | 타입 / 기본값 | 용도 |
|---|
replan_enabled | replan.enabled | bool = true | 리플랜 활성화. |
replan_interval | replan.interval | int = 5 | 리플랜 주기. 0이면 주기 비활성. |
replan_max_attempts | replan.max_attempts | int = 3 | 리플랜 시도 상한. |
[cognitive]
| 필드 | toml 키 | 타입 / 기본값 | 용도 |
|---|
cognitive_reflection_enabled | cognitive.reflection_enabled | bool = true | 인지 리플렉션 활성화. |
cognitive_reflection_model | cognitive.reflection_model | str = "" | 비워두면 현재 agentic loop 모델/소스를 상속하고, 값이 있으면 별도 reflection 모델로 사용한다. |
cognitive_reflection_max_tokens | cognitive.reflection_max_tokens | int = 512 | 리플렉션 출력 토큰 상한. |
cognitive_reflection_interval | cognitive.reflection_interval | int = 1 | 몇 라운드마다 리플렉션할지. 1이면 매 라운드. |
[sandbox]
| 필드 | toml 키 | 타입 / 기본값 | 용도 |
|---|
sandbox_max_file_size_bytes | sandbox.max_file_size_bytes | int = 262144 | 파일 읽기 바이트 상한. |
sandbox_max_read_tokens | sandbox.max_read_tokens | int = 25000 | 읽기 결과 토큰 상한. |
sandbox_max_glob_results | sandbox.max_glob_results | int = 100 | glob 결과 개수 상한. |
sandbox_max_grep_results | sandbox.max_grep_results | int = 50 | grep 결과 개수 상한. |
sandbox_max_grep_line_chars | sandbox.max_grep_line_chars | int = 200 | grep 라인 문자 상한. |
[output]
| 필드 | toml 키 | 타입 / 기본값 | 용도 |
|---|
verbose | output.verbose | bool = false | 상세 출력. /verbose로 세션 중 토글합니다. |
Settings: env 전용 필드
아래 무리는 toml 매핑이 없습니다. GEODE_* env 변수나 .env로만 설정합니다.
시크릿과 프로바이더
| 필드 | 타입 / 기본값 | 용도 |
|---|
anthropic_api_key / openai_api_key / zai_api_key | str = "" | ANTHROPIC_API_KEY / OPENAI_API_KEY / ZAI_API_KEY로 별칭됩니다. 시크릿이므로 .env 층에 둡니다. |
ensemble_mode | str = "single" | single 또는 cross 멀티 LLM 모드. |
forced_login_method | dict = {} | 프로바이더별 인증 방식 강제({"openai": "apikey"}). 기본은 구독 우선. |
Temperature (0.0-2.0)
| 필드 | 기본값 | 용도 |
|---|
temperature_agent_loop | 1.0 | 에이전트 루프 호출. |
temperature_reflection | 1.0 | 리플렉션 호출. |
temperature_verification | 0.0 | verify 호출. cross-LLM 합의를 위한 결정성. |
temperature_commentary | 1.0 | 커멘터리 호출. |
temperature_self_improving_mutation | 1.0 | 변이 제안 호출. |
서브에이전트
| 필드 | 기본값 | 용도 |
|---|
max_subagent_depth | 1 | 중첩 위임 깊이 상한. |
max_total_subagents | 15 | 총 서브에이전트 상한. |
subagent_max_rounds | 0 | 서브에이전트 라운드 상한. 0이면 무제한. |
subagent_max_tokens | 32768 | 서브에이전트 출력 토큰 상한. |
토큰 가드와 오프로딩
| 필드 | 기본값 | 용도 |
|---|
max_tool_result_tokens | 25000 | 도구 결과 토큰 상한. 0이면 무제한. |
tool_offload_threshold | 15000 | 이 토큰을 넘는 결과는 디스크로 오프로드됩니다. 0이면 비활성. |
tool_offload_ttl_hours | 4.0 | 오프로드 보관 시간. |
observation_mask_keep_rounds | 3 | 관측 마스킹 전 유지 라운드. |
compact_keep_recent | 10 | 컴팩션 시 보존할 최근 메시지 수. |
스케줄러와 트리거
| 필드 | 기본값 | 용도 |
|---|
trigger_scheduler_interval_s | 60.0 | 트리거 스케줄러 폴 간격. |
scheduler_interval_s | 1.0 | 스케줄러 틱 간격. |
scheduler_auto_start | true | serve와 함께 스케줄러 자동 시작. |
scheduler_jitter_enabled | true | 예약 실행에 지터 적용. |
scheduler_max_jitter_ms | 900000.0 | 지터 상한. 15분입니다. |
메모리와 세션
| 필드 | 기본값 | 용도 |
|---|
session_ttl_hours | 4.0 | 세션 보존 시간. |
session_storage_dir | "" | 세션 저장 디렉터리. 비우면 인메모리. |
organization_fixture_dir | "" | 조직 메모리 픽스처 경로. |
user_profile_dir | "" | 비우면 ~/.geode/user_profile. |
checkpoint_db | "geode_checkpoints.db" | 체크포인트 DB 파일명. |
게이트웨이, 알림, 웹훅
| 필드 | 기본값 | 용도 |
|---|
gateway_enabled | false | 메신저 게이트웨이. geode serve의 전제 조건입니다. |
gateway_poll_interval_s | 3.0 | 게이트웨이 폴 간격. |
gateway_max_concurrent | 4 | 동시 처리 상한. |
gateway_allow_computer_use | false | 바운드 채널의 원격 desktop control 명시적 옵트인. |
notification_channel | "slack" | 알림 채널 종류. |
notification_recipient | "#geode-alerts" | 알림 수신처. |
webhook_enabled | false | 웹훅 HTTP 엔드포인트. |
webhook_port | 8765 | 웹훅 포트. |
HITL, 플랜, 비용, 데스크탑
| 필드 | 기본값 | 용도 |
|---|
hitl_level | 2 | 2면 모두 확인, 1이면 쓰기만 확인, 0이면 자율. |
plan_auto_execute | false | 플랜 자동 실행. |
cost_limit_usd | 0.0 | 비용 상한. 0이면 무제한, 80%에서 경고. |
computer_use_enabled | true | 데스크탑 자동화 도구. |
LLM 커넥션 풀
| 필드 | 기본값 | 용도 |
|---|
llm_max_connections | 20 | 최대 연결 수. |
llm_max_keepalive_connections | 5 | keepalive 연결 상한. |
llm_keepalive_expiry | 30.0 | keepalive 만료 초. |
llm_connect_timeout | 5.0 | 연결 타임아웃. |
llm_read_timeout | 300.0 | 읽기 타임아웃. |
llm_write_timeout | 30.0 | 쓰기 타임아웃. |
llm_pool_timeout | 10.0 | 풀 대기 타임아웃. |
llm_retry_base_delay | 2.0 | 재시도 기본 지연. |
llm_retry_max_delay | 30.0 | 재시도 최대 지연. |
llm_max_retries | 3 | 재시도 횟수. |
llm_max_fallback_cost_ratio | 0.0 | 폴백 비용 비율 상한. 0이면 무제한. |
routing.toml
출하본은 core/config/routing.toml이고, 사용자 override ~/.geode/routing.toml이 섹션 단위로 병합됩니다(core/config/routing_manifest.py).
| 섹션 | 키 | 내용 |
|---|
[model.defaults] | anthropic, anthropic_secondary, anthropic_budget, openai, codex, glm | claude-opus-4-8 / claude-sonnet-4-6 / claude-haiku-4-5-20251001 / gpt-5.5 / gpt-5.5 / glm-5.2. core.config.ANTHROPIC_PRIMARY 등으로 export됩니다. |
[model.fallbacks] | 프로바이더별 리스트 4개 | 기본은 전부 빈 리스트입니다. 같은 프로바이더 묵시적 폴백 체인은 출하되지 않고, 기본 모델 실패는 예외를 던지며 사용자가 /model로 고릅니다. 폴백은 ~/.geode/routing.toml에서 옵트인합니다. |
[routing.prefixes] | claude-, glm-, gpt-, o3-, o3, o4-, o4-mini | 모델 id 접두사를 프로바이더로 매핑합니다(내장 어댑터가 있는 anthropic / openai / glm만). 첫 매치가 이깁니다. 매치되는 접두사가 없는 계열(gemini-, deepseek-, llama-, qwen- 등)은 모델당 한 번 경고를 남기고 fallback_provider(OpenAI 호환 엔드포인트)로 흘러갑니다. 해당 id를 서빙하는 OpenAI 호환 프록시에는 정상 경로입니다. |
[routing] | codex_only_models, codex_suffixes, fallback_provider | gpt-5.5/gpt-5.5-pro는 접두사보다 먼저 검사되어 openai-codex로 라우팅됩니다(gpt-5.6 계열은 듀얼 레인이라 미등재). -codex/-codex-max/-codex-mini 접미사도 codex. 미해석 시 openai. |
[nodes] | analyst, evaluator, scoring, synthesizer | 파이프라인 노드 모델. 전부 claude-opus-4-8 고정이라 노드가 REPL 모델을 상속하지 않습니다. 조회 순서는 프로젝트 .geode/routing.toml, 매니페스트, 없으면 settings.model. |
[credentials.patterns] | sk-ant-, sk-proj-, sk- | 키 모양에서 프로바이더를 추정합니다. GLM 키({id}.{secret} 모양)는 core.config.env_io.is_glm_key가 감지합니다. |
[credentials.env_vars] | 3개 | anthropic은 ANTHROPIC_API_KEY, openai는 OPENAI_API_KEY, glm은 ZAI_API_KEY. |
[credentials.keychain] | 1개 | anthropic은 "Claude Code-credentials"(macOS). 프로세스 단위 override는 GEODE_<PROVIDER>_KEYCHAIN_SERVICE. |
[self_improving_loop.*]
~/.geode/config.toml(또는GEODE_CONFIG_TOML)에서load_self_improving_loop_config가 읽습니다. Settings와 분리된 별도 로더입니다. 옵트인 기능이라 lazy하게 두어 cold start를 가볍게 유지합니다. 파일이나 섹션이 없으면 전부 기본값으로 동작하고, 섹션이 있는데 키가 틀리면 큰 소리로 ValueError를 냅니다(extra="forbid").
[self_improving_loop]
| 키 | 타입 / 기본값 | 용도 |
|---|
fallback_to_payg | bool = false | 구독 소진 시 소스 해석이 api_key로 흘러내릴 수 있는지. |
openai_source | None | "openai-codex" 또는 "api_key"만 허용. autoresearch의 source, target.source, mutator.source로 팬아웃되는 단일 노브. 충돌 시 UserWarning과 함께 이 키가 권위입니다. |
warn_threshold | float = 0.5 | 예산 경고 임계. |
abort_threshold | float = 0.9 | 중단 임계. warn보다 커야 합니다. |
[self_improving_loop.autoresearch]
| 키 | 타입 / 기본값 | 용도 |
|---|
budget_minutes | int = 5 (1-600) | 사이클 시간 예산. |
mutator_feedback_window | int = 20 (0-200) | 변이 제안에 주는 최근 이력 창. |
mutator_dedup_window | int = 20 | 중복 변이 검사 창. |
mutator_dedup_threshold | float = 0.85 | 중복 판정 유사도. |
anchor_confidence_mode | bool = false | anchor 신뢰도 모드. |
source | claude-cli | 역할 공통 기본 자격 소스. |
seed_limit | int = 10 (5-1000) | 감사당 seed 수. |
seed_select | "plugins/petri_audit/seeds" | 공진화 seed 풀 경로. |
held_out_bench | None | 고정 자 역할의 frozen seed 디렉터리. |
promote_policy | "gate" | gate / random / never. |
promote_policy_seed | int = 0 | random 정책의 시드. |
replicate | int = 1 (1-20) | 감사 반복 횟수. |
target_effect_size | float = 0.02 | 승격에 요구하는 효과 크기. |
dim_set | "subset" | 측정 dim 세트. |
max_turns | int = 10 (1-200) | 감사당 턴 상한. |
target_model / judge_model | deprecated | no-op 슬롯. 역할 서브섹션을 쓰세요. |
역할 서브섹션[self_improving_loop.autoresearch.target|judge|auditor]는model(기본 "")과source(기본 claude-cli)를 받고, mutator 서브섹션은 default_model(None이면Settings.model 상속),source(auto),max_tokens(1024)를 받습니다. 레거시[self_improving_loop.petri.*]와[self_improving_loop.mutator]는 DeprecationWarning과 함께 자동 이전됩니다. geode audit의 역할 해석 순서는 argv, 역할 서브섹션, 매니페스트 기본값 순입니다.
env 사이드 채널이 키 몇 개에 붙어 있습니다.GEODE_HELD_OUT_BENCH,GEODE_PROMOTE_POLICY,GEODE_AUDIT_REPLICATE,GEODE_TARGET_EFFECT_SIZE이고 각각AUTORESEARCH_* 별칭을 동반합니다. 해석 순서는 env, CLI 플래그, config 필드, 기본값 순입니다.
[self_improving_loop.seed_generation]
| 키 | 타입 / 기본값 | 용도 |
|---|
candidates_default | int = 15 (1-100) | 세대당 후보 수 기본값. |
default_gen_tag | "gen1" | 기본 세대 태그. |
roles | dict | 역할별 서브섹션마다 model, source, num_turns(0 또는 2-6), max_papers(0-20), queries_per_run(1-10). |
[self_improving_loop.scheduler]
| 키 | 타입 / 기본값 | 용도 |
|---|
enabled | bool = false | auto-trigger 옵트인. |
cron | "0 */6 * * *" | 발화 cron. |
min_interval_minutes | int = 60 (1-1440) | 최소 발화 간격. |
max_generation | int = 0 | 세대 상한. 0이면 무제한. |
다음