Claude Code를 위해 의도적으로 오래된 사실을 잊게 만드는 로컬 메모리 서버를 구축했습니다
요약
Claude Code의 메모리 관리 문제를 해결하기 위해 유효 기간이 있는 로컬 MCP 서버를 구축했습니다. 기존 RAG 방식과 달리 모순되는 정보를 대체하고 Markdown 기반의 진실의 원천을 유지하여 정확도를 높였습니다.
핵심 포인트
- 사실에 유효 기간을 부여하여 모순되는 정보 자동 대체
- Markdown 기반의 사람이 읽을 수 있는 메모리 저장 방식
- Qdrant, Neo4j, SQLite를 활용한 100% 로컬 아키텍처
- 기존 메모리 에이전트(A-MEM) 대비 우수한 벤치마크 성능
Claude Code의 메모리(어떤 RAG 방식의 설정이든)가 모든 것을 영원히 축적하기만 해서 짜증 났던 분 계신가요? 제가 "우리는 Redis에서 벗어났다"라고 말하면, 그 사실이 실제로 폐기되지 않고 새로운 임베딩(embeddings)들 사이에서 희석될 뿐이라서 세션이 세 번 지나도 여전히 예전 Redis 설정을 인용하곤 했습니다. 이를 제대로 처리하는 MCP 서버(Ultimate Memory)를 만들었습니다:
- 사실(Facts)에 유효 기간(validity windows)이 있습니다. 이전 사실과 모순되는 새로운 내용을 말하면, 이전 사실은 벡터 스토어(vector store)에 그냥 떠도는 것이 아니라 대체(superseded)된 것으로 표시됩니다.
- 불투명한 DB 행(rows)이 아니라, 실제 진실의 원천(source of truth)으로서 사람이 읽을 수 있는 Markdown 볼트(Obsidian/Basic Memory)를 유지합니다.
- 100% 로컬 — Qdrant + Neo4j + SQLite를 사용하여 클라우드 의존성이 없으며, Docker 서비스를 전혀 실행하지 않더라도 (성능은 저하되지만) 여전히 작동합니다.
- MCP 도구: 세션 시작 시 memory_bootstrap, 진행 중에는 memory_search / memory_atoms, 세션 종료 시에는 memory_reflect (트랜스크립트를 자동 수집하기 위한 SessionEnd hook 예시도 있습니다).
LoCoMo에서 벤치마크를 수행한 결과, 4가지 질문 카테고리 중 3가지에서 A-MEM(잘 알려진 메모리 에이전트 베이스라인)을 능가했습니다. 다만 멀티홉 추론(multi-hop reasoning) 질문에서는 여전히 뒤처져 있는데, 이 부분은 현재 적극적으로 작업 중이며 수치를 선별적으로 제시하기보다 리포지토리(repo)에 솔직하게 기록하고 있습니다. https://github.com/Cookie-Cat21/ultimate-memory
아키텍처에 대한 질문에 답변하거나 제안을 받는 것은 언제든 환영합니다. 여전히 매우 활발하게 진행 중인 프로젝트입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 r/ClaudeAI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기