← /geode/portfolioGEODE . 문서
GitHub
핵심 개념
레퍼런스

컨텍스트 시스템

5계층 메모리 + 5층 프롬프트 어셈블리 + 200K 토큰 가드. 모든 LLM 호출의 컨텍스트가 여기서 조립됩니다.

Reference: GEODE의 컨텍스트 시스템은 4개의 분리된 메커니즘이 합쳐진 결과입니다. 메모리 계층(5-tier), 프롬프트 어셈블리(5-layer), 토큰 예산 가드(200K), Clean Context 패턴(anchoring 방지). 모든 LLM 호출 직전에 이 4개가 차례로 작동해 단일 AssembledPrompt를 만들어 모델에 전달합니다.

1. 메모리 계층 (5-tier)

하위 tier가 상위 tier를 override합니다. Claude Code의 3-tier memory를 5-tier로 일반화한 형태.

Tier이름위치역할
0Agent IdentityGEODE.md에이전트 정체성, 제약, 도메인 규칙. 항상 첫머리에 들어감.
1User Profile~/.geode/profile.md사용자 역할, 전문성, 학습된 패턴. bidirectional learning이 갱신.
2Organization~/.geode/org/cross-project 공유 데이터. 다수 프로젝트가 공통 참조.
3Project./.geode/memory/PROJECT.md현 프로젝트의 50개 insight. LRU 회전.
4Sessionin-memory현재 대화 history. 200-turn sliding window.

토큰 예산 (default): Identity 10%, Profile 5%, Org 25%, Project 25%, Session 35%. 합 100%, 200K 컨텍스트 윈도 기준.

2. 프롬프트 어셈블리 (5-layer)

core/llm/prompt_assembler.py:PromptAssembler.assemble()이 6 단계로 프롬프트를 조립합니다. 결과는 불변(frozen=True) AssembledPrompt 객체.

@dataclass(frozen=True)
class AssembledPrompt:
    system: str                 # 최종 시스템 프롬프트
    user: str                   # 최종 사용자 프롬프트
    assembled_hash: str         # SHA-256[:12] of (system + user)
    base_template_hash: str     # SHA-256[:12] of original base_system
    fragment_count: int
    total_chars: int
    fragments_used: list[str]   # 추적용 식별자
Layer내용출처
L1Agent base personanode-specific base_system (analyst, evaluator, ...)
L2Memory injection5-tier memory 위 표
L3Skill injectionSkillRegistry의 활성 스킬
L4Tool definitionscore/tools/definitions.json (deferred 도구 제외)
L5Cache boundary marker__GEODE_PROMPT_CACHE_BOUNDARY__ 또는 <dynamic_context> XML (v0.93+)

어셈블 직후 PROMPT_ASSEMBLED hook이 발화되어 어셈블된 프롬프트의 fingerprint(hash, fragment_count, total_chars)가 관측 stack에 흐릅니다.

3. 200K 절대 토큰 가드 (v0.40+)

200K 윈도 모델이라도 percent 기반 threshold (80%, 95%) 와 별도로 절대 200K ceiling을 둡니다. GLM처럼 정확 윈도가 202_752인 경우에도 200_000 cap을 적용해 rate-limit pool 분리 회피.

  • 80% threshold: Phase 1 compaction. 도구 결과를 요약 텍스트로 압축.
  • 95% threshold: Phase 2 compaction. 70% adaptive prune (oldest 메시지 우선).
  • 200K 절대 cap: graceful drain. 진행 중 도구 호출 마감 후 종료.
  • 25K MCP 결과 가드: 한 도구 호출의 결과가 25K 토큰 넘으면 HTML→Markdown 폴백.

v0.94.0에서 GLM context window를 200_000 flat → 정확 202_752로 정정. 200K guard는 그대로 유지되며 절대 ceiling으로 동작합니다.

4. Clean Context (anchoring 방지)

병렬 Analyst들이 같은 입력으로 동시 호출될 때, 한 Analyst의 결과를 다른 Analyst의 컨텍스트에 노출하면anchoring bias가 발생합니다. GEODE는 병렬 분석에 들어가는 컨텍스트에서 analyses 필드를 제외합니다.

구현: core/agent/loop.py의 Send API 호출 시 state.copy(exclude=analyses)로 노드 입력을 정제. 검증: verify_independence 가드가 Analyst 결과의 cross-correlation (CV < 0.05) 을 확인하고 anchoring 의심 시 RESCORE.

5. 캐싱 인터페이스

어셈블된 프롬프트의 STATIC 영역(L1+L2+L3+L4)과 DYNAMIC 영역(L5 이후 turn별 변경분)을 경계로 분리해 cache_control을 적용.

  • Anthropic. system 블록 cache_control: ephemeral + 직전 3개 non-system 메시지의 apply_messages_cache_control(). 4-breakpoint.
  • OpenAI. 서버 측 자동 캐싱. v0.94+ prompt_cache_key 자동 도출.
  • GLM, Codex. 프로바이더 관리.

자세히: Prompt Caching.

다른 시스템 비교

시스템memory tierprompt 조립토큰 가드
GEODE5-tier (Identity → Profile → Org → Project → Session)5-layer + Hook 관측200K 절대 + 80/95% phase + 25K MCP
Claude Code4-tier (managed → user → project → local) CLAUDE.md도구 정의 + system prompt 직접 조립200K window 안의 자동 compaction
LangChain MemoryBufferMemory / ConversationBufferWindowMemory 등 9종수동 prompt templatetoken_limit 옵션 (수동)
LlamaIndex ContextIndex → Retriever → Synthesizerresponse_synthesizer로 promptchunk_size + chunk_overlap 수동

관련 문서