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

훅 시스템

라이프사이클 이벤트를 카테고리로 분류. 리스너가 관찰, 가로채기, 수정 가능.

세 가지 트리거 모드

  • trigger(event, payload). fire-and-forget. 리스너 오류는 로깅되며 격리됩니다.
  • trigger_with_result(event, payload). 각 핸들러의 반환값을 캡처합니다.
  • trigger_interceptor(event, payload). 핸들러가 이벤트를 차단하거나 수정할 수 있습니다.

구현은 core/hooks/system.py:200 class HookSystem에 있습니다. 동시 실행은 concurrent.futures를 통해 이루어지며, 핸들러 등록 시 재진입 가능한 락으로 보호됩니다.

이벤트 그룹

그룹이벤트
pipelinePIPELINE_START, PIPELINE_END, PIPELINE_ERROR
nodeNODE_ENTER, NODE_EXIT, NODE_ERROR, NODE_RETRY
analysisANALYST_START, ANALYST_COMPLETE, ANALYST_FAILED
verificationVERIFICATION_PASS, VERIFICATION_FAIL
automationDRIFT_DETECTED, MODEL_PROMOTED, OUTCOME_COLLECTED, EXPERT_VOTE_CAST, FEEDBACK_PHASE_CHANGED
memoryMEMORY_SAVED, RULE_CREATED, RULE_UPDATED, RULE_DELETED
toolTOOL_EXEC_START/END/FAILED, TOOL_RECOVERY_START/END, TOOL_APPROVAL_REQUEST/GRANTED/DENIED
sessionSESSION_START, SESSION_END
modelMODEL_SWITCHED
llmLLM_CALL_START, LLM_CALL_END, LLM_CALL_FAILED, LLM_CALL_RETRY
approvalAPPROVAL_REQUEST, APPROVAL_GRANTED
contextCONTEXT_OVERFLOW, CONTEXT_RESET
promptPROMPT_ASSEMBLED
turnTURN_COMPLETE

표에는 주요 항목만 요약했습니다. core/hooks/system.py소스 주석은 이벤트를 더 세분화하여 (subagent 라이프사이클, agentic turn, 세션, LLM 호출, 도구 승인, serve 라이프사이클, MCP 서버) 분류하며, 표에서는 관련 하위 섹션을 묶어서 표시했습니다.

등록

from core.hooks.system import HookSystem, HookEvent

hooks = HookSystem()
hooks.register(
    HookEvent.PROMPT_ASSEMBLED,
    lambda event, data: print(f"assembled hash={data['assembled_hash']}"),
)

매처

핸들러는 dispatch 전에 이벤트를 필터링하는 매처 predicate를 부착할 수 있습니다. 예를 들어 node="analyst"일 때만 발화시키는 방식입니다.core/hooks/system.py:_filter_by_matcher를 참고하세요.

PROMPT_ASSEMBLED payload

유일한 prompt 관련 이벤트. payload 구성:

  • node: “analyst”, “evaluator”, “synthesizer”, “router”
  • role_type: 예) “game_mechanics”, “quality_judge”
  • base_template_hash, assembled_hash (SHA-256[:12])
  • fragment_count, total_chars, fragments_used
  • 조건부 skill_hashes (스킬별 본문 해시)
  • 조건부 truncation_events

payload에는 해시와 카운터만 담깁니다. 프롬프트 텍스트 자체는 포함되지 않습니다.