
Claude Code에 장기 기억을 부여하는 OSS를 만들었습니다
요약
본 글은 Claude Code 사용 시 발생하는 대화 기록의 휘발성 문제를 해결하기 위해 'memcp'라는 오픈소스 툴을 개발한 내용을 다룹니다. memcp는 Claude Code 세션 로그를 로컬 SQLite 데이터베이스에 자동으로 축적하고, 이를 통해 Claude가 과거 논의와 코드를 검색하여 활용할 수 있도록 하는 메모리 기능을 제공합니다.
핵심 포인트
- Claude Code 세션 종료 시 대화 기억이 사라지는 문제를 해결함.
- memcp는 로그를 로컬 SQLite DB에 저장하며 외부 전송이나 텔레메트리가 없음.
- MCP(Memory Context Provider) 툴을 통해 과거 작업을 검색하고 특정 세션을 불러올 수 있음.
- 향후 Cursor, Codex 등 다른 코딩 에이전트로의 확장성을 고려하여 설계됨.
Claude Code를 매일 사용하다 보면, '같은 설명을 반복하고 있다'는 느낌을 받을 때가 있습니다.
- 왜 이 아키텍처를 선택했는지
- 왜 다른 구현 방안을 기각했는지
- 장기적으로 어디를 개선할 계획인지
Claude Code는 같은 프로젝트에서도 세션이 끝나면 대화의 기억이 사라집니다. 로그 자체는 ~/.claude/projects/에 JSONL 형식으로 남아 있지만, 다음 세션에서는 참조되지 않습니다. 즉, 기억은 존재하지만 Claude 자신이 그것을 사용할 수 없는 상태입니다.
코드는 Git에서 확인할 수 있지만, 설계 판단이나 논의 과정, 기각된 안건들은 Git에는 남지 않습니다. 가장 중요한, AI와 토론했던 설계 판단이나 논의를 재사용할 수 없다는 점이 매우 아깝습니다.
이를 해결하기 위해 memcp라는 OSS 툴을 만들었습니다.
한마디로 말하면, Claude Code의 세션 로그를 로컬에 축적하고, MCP를 통해 Claude 자신에게 검색하게 하는 도구입니다.
세션이 끝나면 로그가 자동으로 SQLite에 통합되고, 다음 세션에서 Claude가 search_memory와 같은 MCP 툴을 호출하여 과거 작업을 검색할 수 있게 됩니다.
Before
User:
이 인증 서비스, 왜 Redis로 리프레시 토큰을 관리하는 설계로 했었지?
Claude:
...
After
User:
이 인증 서비스, 왜 Redis로 리프레시 토큰을 관리하는 설계로 했었지?
Claude:
...
과거에 자신(Claude)이 작성했던 코드나 논의를 스스로 검색하여 떠올리는 경험을 목표로 하고 있습니다.
진행하는 것은 간단합니다.
세션 종료
│ (자동으로)
▼
...
데이터는 모두 로컬 SQLite에 저장되며, 외부로는 일절 전송되지 않습니다. 클라우드 동기화도 텔레메트리도 없습니다.
현재 구현된 MCP 툴은 4가지입니다.
| Tool | 설명 |
|---|---|
search_memory(query, limit) | 과거의 모든 세션을 전문 검색 |
read_session(session_id, query, max_messages) | 특정 세션의 로그 읽기 (query로 필터링 가능) |
list_recent_sessions(limit) | 최근 세션 목록 |
ingest_session(path) | 특정 JSONL 로그 수동 통합 |
Claude는 사용자가
현재는 Claude Code의 로그만 읽을 수 있지만, 향후 Cursor나 Codex CLI 등 다른 에이전트에도 대응하고 싶습니다. 따라서 파서는 아래 시그니처를 가진 순수 함수로 구현하는 것만으로 추가할 수 있는 구조로 만들었습니다.
ParseFn = Callable[[Path], tuple[Session, list[Message], list[ToolCall]]]
아직 MVP 단계이므로 현재 가능한 것과 불가능한 것을 정리하겠습니다.
가능 기능
- Claude Code 세션 로그 자동 통합
- SQLite FTS5를 이용한 전문 검색
- MCP를 통한 세션 간 검색 및 특정 세션 로드
불가능 기능 (향후 과제)
-
Claude Code 외의 에이전트(Cursor, Codex 등) 미지원
-
의미 검색(Paraphrase에 대한 내성) 부재
-
세션에서 '사실/결정 사항' 자동 추출 미실시 (생 로그를 그대로 검색하는 형태)
-
Windows 미지원 (macOS / Linux만 지원)
memcp status
— 통합 현황 시각화 (세션 수, 최종 통합 일시, DB 크기) - Cursor / Codex / Cline 등 여러 코딩 에이전트 대응
- 하이브리드 검색 (FTS + embedding)
- 세션에서 메모 추출 (요점/결정 사항 압축 저장)
memcp search <query>
— Claude Code를 열지 않고 CLI에서 검색
'AI 에이전트가 세션을 넘나들며 기억을 갖는 것'은 향후 코딩 에이전트에 표준적으로 요구되는 기능이 될 것이라고 생각합니다. memcp는 그 최소 구성의 구현입니다.
아직 태어난 지 얼마 안 된 프로젝트라 피드백을 환영합니다.
- 실제로 사용해 본 소감
- '여기가 불편하다', '여기는 편리하다'와 같은 의견
- Cursor 등 다른 에이전트 대응에 대한 PR
GitHub의 Star, Issue, PR을 기다리겠습니다🙏
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기