GEODE . 문서
GitHub
레퍼런스
레퍼런스

프론티어 비교

GEODE를 Hermes, OpenClaw, Claude Code, Codex CLI, Karpathy autoresearch와 나란히 놓습니다. 아키텍처부터 프롬프트 시스템 내부까지 비교합니다.

시스템 수준 포지셔닝

GEODE는 종합입니다. 아래 표의 각 행은 적어도 하나의 frontier 시스템에서 빌려온 패턴입니다. 소스에 명시적으로 인용된 것은 Claude Code의 while(tool_use), Codex CLI의 sandbox-default, OpenClaw의 Policy Chain과 Lane Queue, Karpathy P1-P10입니다.

Claude CodeCodex CLIOpenClawHermesautoresearchGEODE
목적Coding assistCode automationMulti-channel gatewaySelf-learning agentAutonomous ML loop장기 실행 자율 실행
도메인codecodechat routingopen-domainML loop범용. 리서치, 분석, 자동화, 스케줄
주요 기본 단위while(tool_use)sandbox + approvegateway + laneskill loopbranchless dumb platformwhile(tool_use) AgenticLoop + LaneQueue
계층 구조단일 CLI단일 CLIgateway 중심agent + skills3-파일 계약5계층. Model / Runtime / Harness / Agent / Self-Improving
메모리CLAUDE.md 계층 + auto memory (~/.claude)AGENTS.md 계층 + memories 파이프라인채널별 저장소persistent + skill 카탈로그program.md5-tier. Identity / User Profile / Org / Project / Session (core/memory/context.py)
자기 검증없음sandboxpolicy chain없음ratchetPetri 적대 감사 + margin 게이트 + 프롬프트 해시 ratchet
자동화 트리거훅 + scheduled cloud agentslifecycle 훅 (cron 없음)cron + standing orderskill auto-generateovernight 루프훅 이벤트 + 스케줄러 + auto-trigger 사이드카
멀티 LLMAnthropic 모델 전용 (API/Bedrock/Vertex 백엔드)OpenAI 중심 + model_providers 확장 (Bedrock 포함)9개 model API 계열Anthropic-centric(single)3-프로바이더 라우팅 (Anthropic / OpenAI+Codex / GLM), PAYG·OAuth·CLI 어댑터 레인
서브에이전트Task toolthread fork (spawn_subagent)spawn + announcedelegate 병렬 spawn없음차용. Task tool + OpenClaw Spawn+Announce (core/agent/sub_agent.py)
샌드박스bash 샌드박스 (opt-in)OS 수준gateway 격리없음제약 루프6계층 PolicyChain (core/tools/policy.py)

GEODE만의 조합

  • 명시적 자기개선 계층. 다섯 번째 계층이 일곱 behaviour kinds의 스캐폴드를 변이하고, Petri 22-dim 감사와 margin 게이트로 선택하며, 계보를 git champion chain으로 보존합니다(core/self_improving/). 가중치나 파라미터 갱신은 없습니다. 메커니즘은 선택입니다.
  • MCP 양방향. core/mcp/가 외부 MCP 서버를 붙이는 클라이언트이고, geode-mcp(core/mcp_server.py)가 GEODE 자체를 외부 호스트의 도구로 노출하는 1급 서버입니다. Codex CLI도 양방향을 출하합니다(mcp-server + mcp_servers). 차이는 GEODE가 자기개선 루프 상태(self_improving_*)까지 도구로 노출한다는 점입니다.
  • 폴백 없는 기본값. [model.fallbacks]의 기본값은 전부 빈 배열입니다. 프라이머리 실패는 조용한 교차-프로바이더 스왑 대신 정직한 오류로 표면화되고, 체인은 ~/.geode/routing.toml에서 opt-in합니다 (core/llm/router/calls/_failover.py).
  • ChatGPT Plus JWT 검증. OAuth 시점에 access token의 chatgpt_plan_type claim을 추출해 플랜 레코드에 임베드합니다(core/auth/oauth_login.py). 엔타이틀먼트 확인에 별도 API 호출이 없습니다.

프롬프트 정의 계층

GEODEHermesOpenClawClaude Code
소스 위치core/llm/prompts/*.md (외부 markdown)agent/prompt_builder.py (Python const)src/agents/system-prompt.ts (TS const)src/core/system-prompt.ts (TS 조립)
빌드 시점모듈 임포트 시 해시, 턴마다 조립세션 시작 (캐시)호출별 모듈식턴별 동적
사용자 메모리5-tier ~/.geode/memory/Frozen JSON 스냅샷Workspace HEARTBEAT.mdCLAUDE.md 4계층 + auto MEMORY.md
스킬 포맷XML <available_skills> (core/skills/skills.py, {skill_context} 치환)XML <available_skills>XML <available_skills>SKILL.md markdown + JSON manifest

해싱과 무결성

GEODEHermesOpenClawClaude Code
알고리즘SHA-256[:12]없음SHA-256 (전체)없음 (소스에서 미확인)
핀 / CI 게이트. _PINNED_HASHES + verify_prompt_integrity (core/llm/prompts/__init__.py)없음탐지만없음
정규화UTF-8 / json sort_keysmtime + size manifestCRLF strip + sort + lowercase해당 없음

프롬프트 캐싱

GEODEHermesOpenClawClaude Code
Anthropic ephemeral예. static/dynamic 경계 분할예. system_and_3예. 경계 마커
경계 마커PROMPT_CACHE_BOUNDARY = <dynamic_context> (core/agent/system_prompt.py)없음<!-- OPENCLAW_CACHE_BOUNDARY -->SYSTEM_PROMPT_DYNAMIC_BOUNDARY
메시지 히스토리 캐시예. 최근 user 메시지 rolling breakpoint (apply_messages_cache_control, core/llm/providers/anthropic.py)예. 직전 3예. 직전 user 메시지예. 직전 user 블록

캐시 안정성의 나머지 반쪽은 시스템 리마인더 위치입니다. GEODE는 리마인더를 요청별 사본의 마지막 메시지로 append합니다 (core/agent/system_injection.py). 공유 히스토리를 건드리지 않아 prefix가 라운드 간 바이트 단위로 안정됩니다.

비동기 런타임 규율

2026-06-12 이벤트 루프 오염 사건(v0.99.183~185) 이후 워크스페이스 소스를 직접 실측한 비교입니다. 세 시스템의 수렴점은 하나입니다. 런타임에 일회용 이벤트 루프를 만들지 않는다. 루프에 귀속되는 자원(httpx 연결 풀)은 만든 루프 안에서만 쓴다.

GEODEHermesOpenClaw
루프 토폴로지다중 영속 루프. 메인 serve + CLI 포러 + 채널 포러별 (asyncio.Runner 스레드)단일 게이트웨이 루프. 채널 어댑터는 그 위의 async task (gateway/run.py)Node 단일 루프 + lane 동시성 (command-queue.ts)
스레드 → 루프 브리지run_coroutine_threadsafe. 웹훅 스레드가 메인 serve 루프로 마샬링 (core/cli/typer_serve.py)run_coroutine_threadsafe. cron 스레드가 메인 루프로 마샬링해당 없음. 단일 루프
sync 브리지의 루프일회용 0. 진짜 프로세스 경계만 asyncio.run, 위반은 run_process_coroutine 카나리아가 WARNING (core/async_runtime.py)영속 per-thread 루프 캐시. 일회용 금지 (model_tools.py _run_async)해당 없음
SDK 클라이언트 스코프루프별. LoopAffineClientCache가 루프를 약참조 키로 클라이언트를 분리 (core/llm/loop_affinity.py)생성 루프 귀속. 영속 루프와 수명을 같이함전역. 단일 루프라 안전
행(hang) 방어도구·MCP wall-clock deadline (asyncio.wait_for) + 시간상수 정합 부등식 가드개별 도구 timeoutlane 동시성 한도
회귀 가드25-테스트 가드레일 (핸들러 async 핀, 클라이언트 캐시 ratchet, deadline 정합) + 런타임 카나리아없음없음

GEODE만 다중 루프를 유지합니다. 채널별 스레드 격리는 설계 선택이고, 그 대가였던 루프 귀속 자원의 교차 공유 문제(도구 호출별 일회용 루프 × 전역 클라이언트 캐시가 만든 web_search 즉사·무한 행)는 v0.99.183~185에서 핸들러 async화, 루프별 클라이언트, deadline의 3겹으로 닫았습니다. 일회용 루프 잔재는 도구 경로, 웹훅, verify judge에서 전부 제거됐고 가드레일 테스트가 재발을 막습니다.

관측성

GEODEHermesOpenClawClaude Code
주 채널PROMPT_ASSEMBLED 훅 payload (core/agent/loop/agent_loop.py)툴 라인 preview 로그 (가변 길이)cache-trace.ts JSONLlogEvent('tengu_*') 텔레메트리
외부 트레이싱OTLP optional (core/observability/otel_export.py)Langfuse 플러그인자체 JSONL자체 텔레메트리

보안

GEODEHermesOpenClawClaude Code
프롬프트 인젝션 스캔없음 (열린 GAP)10 패턴 + invisible Unicode 10종경로 / URL 정화사용자 의도 신뢰
오버라이드 정책append-only (호출자 system_suffix)append-onlyappend-only우선순위 체인

왜 GEODE만 ratchet으로 갈 수 있었나

GEODE의 프롬프트는 markdown 파일에 삽니다. Hermes, OpenClaw, Claude Code는 프롬프트를 TypeScript나 Python 소스의 인라인 문자열로 유지합니다. 인라인 문자열은 자동 포맷터, IDE 리네임, 머지 충돌 해소 과정에서 해시 기반 ratchet과 싸우게 됩니다. 외부 markdown은 파일을 변경 단위로 만들고, 그래서 해시가 의미를 갖습니다.

비용도 분명합니다. 의도된 프롬프트 변경마다 재핀 커밋 한 단계를 더 지불합니다. 그 대가로 의도하지 않은 변경이 출시되지 않는다는 CI 강제 보장을 얻습니다. 자세한 형태는 왜 ratchet 규율인가에 있습니다.