GEODE . 문서
GitHub
자기개선 루프
레퍼런스

아우터 루프 설정

autoresearch, seed 생성, Petri 역할, auto-trigger 스케줄러가 공유하는 스키마와 로더입니다. 기본은 strict 검증입니다.

왜 아우터 루프 설정이 한 곳에 있나

아우터 루프는 역할이 많습니다. auditor, target, judge, mutator가 각각 모델과 자격 lane을 갖고, seed 풀과 promote 정책과 스케줄러 knob이 더해집니다. 이것이 env, 모듈 상수, 별도 TOML로 흩어지면 "지금 루프가 실제로 무엇으로 도는가"를 답할 수 없게 됩니다. 그래서 전부 ~/.geode/config.toml [self_improving_loop] 섹션 한 곳에 모았고, 로더는 core/config/self_improving.py load_self_improving_loop_config입니다.

스키마 스케치

[self_improving_loop]
fallback_to_payg = false      # subscription 소진 시 PAYG 폴백 차단
warn_threshold = 0.5          # 사용량 경고 임계값
abort_threshold = 0.9         # 사용량 중단 임계값

[self_improving_loop.autoresearch]
budget_minutes = 5            # 실험 1회 벽시계 예산
seed_limit = 10               # 감사 1회당 seed 수
seed_select = "plugins/petri_audit/seeds"
dim_set = "subset"            # 22-dim 루브릭
max_turns = 10
promote_policy = "gate"       # gate / random / never
replicate = 1                 # 감사 반복 M

[self_improving_loop.autoresearch.target]    # judge / auditor 동일 형태
model = "..."
source = "claude_cli"         # 자격 lane

[self_improving_loop.autoresearch.mutator]
default_model = "..."
source = "auto"

[self_improving_loop.seed_generation]
candidates_default = 15
# roles.<role> = { model, source, ... } 바인딩

[self_improving_loop.scheduler]
enabled = false
cron = "0 */6 * * *"
min_interval_minutes = 60

정확한 필드 정의와 docstring은 core/config/self_improving.py가 SoT입니다. 위 값들은 스키마의 기본값입니다.

로드 경로와 strict 검증

해석 순서는 (1) 명시적 path 인자, (2) GEODE_CONFIG_TOML env, (3) ~/.geode/config.toml입니다. 파일이나 섹션이 없으면 기본값으로 채운 모델을 돌려주지만, 섹션이 존재하는데 모르는 필드가 있으면 모든 모델이 extra="forbid"라 즉시 ValueError로 실패합니다. 오타가 조용히 무시되는 것보다 시끄럽게 죽는 쪽이 측정 인프라에서는 옳습니다.

레거시 마이그레이션과 디버깅

  • geode config migrate-petri-toml. 옛 ~/.geode/petri.toml 역할 override를 [self_improving_loop.autoresearch.<role>]로 옮깁니다. 기본은 dry-run입니다.
  • geode config explain. 어떤 레이어(CLI, env, project toml, global toml)가 값을 이기고 있는지 보여줍니다. "설정을 바꿨는데 그대로"의 답입니다.

다음