AI 에이전트의 장기 기억 상실을 방지하는 3단계 컨텍스트 관리자 구축기
How we built a 3-level context manager to stop our AI agents from losing memory in long sessions
핵심 요약
AI 에이전트의 기억력 문제를 해결하기 위해 작업 메모리, 요약, 영구 저장소를 결합한 3단계 컨텍스트 관리 시스템을 구축함.
- 작업 메모리 — 최근 6개 메시지를 전체 모델에 전달하여 즉각적인 대화 맥락 유지
- 압축 요약 — 로컬 모델을 활용해 이전 메시지를 핵심 정보 위주로 요약하여 비용 절감
- 영구 저장소 — SQLite를 사용하여 세션 간에도 유지되는 핵심 사실을 자동 추출 및 저장
- 비용 효율성 — 로컬 모델과 API 모델을 적절히 라우팅하여 전체 운영 비용을 극도로 낮춤
저희는 여러 에이전트가 자율적으로 의사결정을 내리는 AI 기반 트레이딩 랩을 운영하고 있습니다. 가장 큰 문제 중 하나는 에이전트가 장기 실행 세션에서 컨텍스트를 잃어버린다는 점입니다. LLM은 10개 메시지 전에 무슨 일이 있었는지 잊어버립니다.
표준적인 접근 방식(그리고 실패하는 이유):
대부분의 구현 방식은 단순히 메시지 기록을 자릅니다: messages = messages[-8:]. 이는 에이전트가 5분 전에 내린 결정조차 말 그대로 잊어버린다는 것을 의미합니다.
대신 저희가 구축한 3단계 메모리:
- 작업 메모리 — 최근 6개 메시지를 모델에 전체 전달
- 압축 요약 — 이전 메시지를 작은 로컬 모델이 자동으로 요약(비용: $0). 결정 사항, 수치, 핵심 사실 보존
- 영구적 핵심 사실 — 자동으로 추출되어 SQLite에 저장. 세션 간에도 유지됨
요약은 대화가 작업 메모리 창을 초과하면 자동으로 트리거됩니다. 로컬 모델은 3,000개의 토큰을 약 500개로 압축하며, 결정 사항, 수치 데이터, 실행 항목만 유지합니다.
ctx = ContextManager(session_id="trading_session")
ctx.add_message("user", "Set profit factor threshold to 1.25")
ctx.add_message("assistant", "Done. PF threshold set to 1.25")
# 40 messages later, the system still knows:
context = ctx.get_context()
# → [KEY FACTS] PF threshold = 1.25
# → [SUMMARY] User configured trading parameters...
# → [RECENT] last 6 messages
핵심 사실은 SQLite에 영구적으로 저장되므로, 에이전트가 내일 다시 시작되어도 PF 임계값이 1.25라는 것을 기억합니다.
비용 아키텍처:
저희는 중앙 라우터를 사용하여 다양한 작업을 다른 모델로 라우팅합니다. 요약은 작은 로컬 모델에서 실행됩니다(무료). 복잡한 추론은 더 큰 API 모델로 전달됩니다(약 $0.003/호출). 분류 작업은 로컬에서 처리됩니다.
어제 전체 시스템의 모든 AI 호출에 대한 총 비용: $0.005.
혹시 다단계 컨텍스트 시스템을 구축하고 계신 분 계신가요? 요약에서 핵심 사실 추출 파이프라인을 어떻게 처리하고 계신가요?


