AI 코딩 에이전트는 세션이 종료되면 이전의 작업 맥락을 모두 잊는다. 개발자는 새로운 세션을 시작할 때마다 프로젝트의 스택과 아키텍처를 다시 설명해야 하는 비효율을 겪는다. 내장 메모리 파일인 CLAUDE.md를 활용하는 방법이 있으나, 이는 200줄이라는 물리적 한계가 명확하며 시간이 지남에 따라 정보가 노후화되는 stale 문제가 발생한다.

이러한 제약을 해결하기 위해 등장한 것이 agentmemory다. 이 시스템은 에이전트의 도구 사용 내역을 백그라운드에서 자동으로 캡처하고 압축하여, 다음 세션 시작 시 최적화된 컨텍스트를 주입한다. Claude Code, Cursor, Codex CLI, Gemini CLI 등 MCP(Model Context Protocol)나 REST를 지원하는 모든 에이전트와 호환되는 단일 서버 구조를 갖췄다. 단순한 저장소를 넘어 인간의 기억 메커니즘을 모사한 계층적 구조를 통해 토큰 효율과 회상 정확도를 동시에 높인 점이 특징이다.

LongMemEval-S R@5 95.2% 기록, 51개 MCP 도구 탑재

개발팀이 공개한 수치는 벤치마크 지표에서 명확히 갈린다. LongMemEval-S(장기 기억 평가 벤치마크)의 R@5(상위 5개 결과 내 정답 포함 확률) 지표에서 95.2%라는 수치를 기록했다. 반면 기존의 주요 메모리 솔루션인 mem0는 68.5%, Letta(레타, 메모리 계층 구조 기반 에이전트 프레임워크)는 83.2%에 그쳤다. 주목할 점은 단순한 성능 향상이 아니라 경쟁 모델들과의 격차가 12%p에서 최대 26%p 이상 벌어졌다는 사실이다. 이는 에이전트가 방대한 과거 데이터 속에서 필요한 맥락을 정확히 찾아내는 복원 정밀도가 정량적으로 유의미한 수준까지 올라왔음을 입증한다.

실제 구현 단계에서의 확장성은 MCP(Model Context Protocol, 모델 컨텍스트 프로토콜) 도구의 탑재 규모에서 드러난다. 총 51개의 MCP 도구를 제공하며, 그중 핵심인 `memory_recall`, `memory_save`, `memory_smart_search`, `memory_patterns`를 통해 기억의 저장과 검색, 패턴 추출을 자동화한다. 그러나 이번 설계의 핵심은 단일 에이전트의 기억력을 넘어선 멀티 에이전트 환경의 호환성 확보에 있다. `memory_lease`를 통해 특정 메모리 영역의 점유권을 제어하고, `memory_signal_send/read`로 에이전트 간 신호를 주고받으며, `memory_mesh_sync`로 분산된 메모리 상태를 동기화한다. 이는 개별 에이전트가 파편화된 기억을 갖는 것이 아니라, 공유된 메모리 망을 통해 협업하는 구조를 가능하게 한다.

데이터 제어권과 운영 비용 측면에서도 구체적인 장치를 마련했다. `memory_audit`을 통해 메모리 접근 및 수정 이력을 정밀하게 추적하고, `memory_governance_delete`로 데이터 생명주기를 관리하며, `memory_snapshot_create`를 통해 Git 버전 관리 방식의 스냅샷을 생성할 수 있다. 이는 메모리 오염이나 잘못된 학습이 발생했을 때 특정 시점으로 상태를 되돌릴 수 있는 안전장치를 제공한다. 반면 운영 비용은 극도로 낮췄다. 연간 예상 토큰 사용량은 약 170K 수준이며, 이에 따른 비용은 약 10달러로 추산된다. 특히 로컬 임베딩(텍스트를 수치 벡터로 변환하는 과정)을 사용할 경우 비용은 0달러가 된다. 라이선스는 Apache-2.0을 채택하여 오픈 소스 생태계 내에서의 자유로운 수정과 상용 배포를 보장한다.

4-Tier 메모리 통합과 트리플 스트림 검색 구조

메모리 저장 과정은 워킹(Working), 에피소딕(Episodic), 시맨틱(Semantic), 프로시저럴(Procedural)의 4단계 계층으로 구분되어 작동한다. 도구 사용 내역을 즉각적으로 기록하는 워킹 메모리가 단기 기억을 담당하며, 이후 세션 요약을 거쳐 에피소딕 메모리로 전이된다. 반면 시맨틱 메모리는 반복되는 사실과 패턴을 추출해 저장하고, 최종적으로 프로시저럴 메모리가 최적의 워크플로우와 결정 경로를 정형화한다. 이러한 구조는 인간 뇌가 수면 중 기억을 정리하는 수면 공고화(Sleep Consolidation) 원리를 시스템적으로 구현한 결과다.

검색 단계에서는 BM25(전통적 키워드 검색), 벡터(Vector, 의미론적 검색), 그래프(Graph, 관계 기반 검색) 세 가지 경로를 동시에 사용하는 트리플 스트림 방식을 채택했다. 주목할 점은 이 세 가지 검색 결과의 순위를 통합하는 RRF(Reciprocal Rank Fusion, 상호 순위 융합) 알고리즘의 적용이다. 단순한 점수 합산이 아니라 각 검색 엔진이 도출한 순위의 역수를 합산해 최종 순위를 결정함으로써, 특정 검색 방식에 치우치지 않고 정밀한 컨텍스트를 추출한다. 키워드 일치와 의미적 유사성, 그리고 개체 간의 논리적 연결성을 동시에 고려하는 구조다.

데이터 효율성 측면에서 이 구조는 극명한 수치 차이를 만든다. 240개의 관찰 데이터(observations)를 처리할 때 기존 방식은 22K개 이상의 토큰을 소모했으나, 계층화된 메모리 압축을 통해 이를 1,900개 토큰 수준으로 낮췄다. 결과적으로 토큰 사용량을 92% 절감하며 컨텍스트 윈도우의 낭비를 최소화했다. 이는 단순히 텍스트를 요약하는 수준을 넘어, 정보의 성격에 따라 저장 위치와 검색 가중치를 다르게 설정한 설계의 결과로 분석된다.

인프라 구성은 iii 엔진(경량 런타임 엔진) 기반으로 설계되어 운영 복잡도를 낮췄다. 기존의 메모리 시스템 구축에 필수적이었던 Postgres(관계형 데이터베이스), Redis(인메모리 데이터 구조 저장소), Express(웹 프레임워크), pm2(프로세스 매니저), Prometheus(모니터링 시스템) 등의 별도 설치 과정이 전혀 필요 없다. 확장성 또한 명령어를 통해 제어하며, 다음과 같은 방식으로 기능을 추가한다.

bash
iii worker add

위 명령어를 통해 pubsub(발행-구독 모델), cron(예약 작업), queue(작업 큐), sandbox(격리 실행 환경), SQL adapter(데이터베이스 어댑터) 등을 유연하게 추가할 수 있는 구조를 갖췄다. 이는 무거운 외부 의존성을 제거하고 엔진 내부에서 워커 단위로 기능을 확장하는 전략을 취한 것이다.

CJK 분절 최적화와 한국어 코딩 에이전트의 실무 적용

한국어와 같은 CJK(한중일) 언어권 개발자가 코딩 에이전트를 사용할 때 가장 먼저 마주하는 문제는 토큰 분절의 비효율성이다. 일반적인 영어 중심 모델은 한국어를 음절 단위로 쪼개어 컨텍스트 윈도우를 빠르게 소모하지만, 이번 구현에서는 외부 라이브러리를 통해 이를 보완한다. 구체적으로 bash npm install @node-rs/jieba tiny-segmenter 명령어로 관련 패키지를 설치하면 단어 단위의 정교한 분할이 가능해진다. 반면 임베딩 단계에서는 사용자의 환경에 따라 유연한 선택지를 제공한다. 오프라인 환경이나 비용 절감이 필요한 경우 Local all-MiniLM-L6-v2(무료/오프라인 임베딩 모델)를 사용할 수 있으며, 고성능이 필요한 경우에는 Gemini, OpenAI, Voyage, Cohere, OpenRouter 등의 프로바이더를 자동 감지하여 연결한다. 주목할 점은 로컬 임베딩을 사용할 때 단순 BM25 검색 대비 리콜(Recall, 재현율) 수치가 8pp 상승한다는 사실이다. 이는 한국어 쿼리의 의미적 유사성을 더 정확하게 포착할 수 있음을 의미한다.

에이전트의 내부 추론 과정을 확인하는 방식도 기존의 로그 텍스트 분석에서 시각적 스트림으로 전환되었다. 개발자는 포트 3113을 통해 라이브 observation(관찰) 스트림에 접속하여 에이전트가 현재 어떤 데이터를 참조하고 있는지 실시간으로 확인할 수 있다. 특히 지식 그래프(Knowledge Graph) 시각화 도구는 파편화된 메모리 간의 연결 관계를 직관적으로 보여주어 복잡한 프로젝트 구조 내에서 에이전트가 길을 잃지 않았는지 검증하게 한다. 그러나 실시간 모니터링만으로는 복잡한 에러 발생 시점의 인과관계를 파악하기 어렵다. 이를 해결하기 위해 도입된 Session Replay 기능은 0.5배속에서 4배속까지 재생 속도를 조절하며 에이전트의 사고 과정을 다시 복기할 수 있게 한다. 이는 블랙박스 형태로 작동하던 기존 코딩 에이전트의 불투명성을 제거하고 디버깅 효율을 높이는 실질적인 제어 장치로 작동한다.

기존에 사용하던 작업 이력을 새로운 시스템으로 옮기는 마이그레이션 과정의 허들도 낮췄다. Claude Code(클로드 코드, 앤스로픽의 CLI 코딩 도구)에서 생성된 JSONL 형식의 transcripts(전사 기록) 파일을 bash import-jsonl 명령어로 즉시 가져올 수 있다. 이는 새로운 메모리 서버를 구축할 때 과거의 컨텍스트를 처음부터 다시 학습시키거나 입력해야 하는 수고를 덜어준다. 반면 대다수의 메모리 솔루션이 독자적인 포맷을 고집하며 벤더 록인(Vendor Lock-in, 특정 업체 기술 종속)을 유도하는 것과 대조적이다. 한국어 특화 분절 최적화부터 데이터 이관 편의성까지 고려한 설계는 단순히 벤치마크 수치를 높이는 것이 아니라 실제 개발 워크플로우에서의 마찰 계수를 줄이는 데 집중하고 있다. 결과적으로 개발자는 인프라 설정보다 코드 구현이라는 본연의 작업에 더 많은 시간을 할애할 수 있게 된다.