TL;DR
- 대화 조각을 검색 증강 생성(RAG)으로 불러오는 메모리 플러그인 대신, 에이전트가 프로젝트 지식을 읽고 갱신할 수 있는 문서 기반 메모리가 필요함.
- 기존 메모리 플러그인은 대화 기록에서 기억 조각을 만들고 매 프롬프트마다 유사도 상위 5개를 검색해 삽입하는 구조임.
- 유사도 검색은 기억의 정확성·최신성·누락 여부를 보장하지 못하고, 맥락이 사라지며 과거 기록을 현재의 진실처럼 취급하는 문제임.
- 해결책은 에이전트가 참고할 지침·명세·결정·조사 자료·색인을 구조화된 작업 공간에 기록하고 작업 전후로 갱신하는 방식임.
- Operator Memory는 벡터 데이터베이스나 임베딩 없이 마크다운 문서로 지식을 관리하는 무료 오픈 소스 플러그인임.
모두 RAG일 뿐임
- 시중의 메모리 플러그인은 세션 기록에서 기억 조각을 추출해 RAG 데이터베이스에 넣고, 매 프롬프트마다 상위 5개를 검색해 삽입하는 방식임.
- 더 많은 정보가 필요하면 에이전트에 RAG 데이터베이스 검색 도구를 제공하는 것이 기본 구조임.
- 일부 도구는 과거 대화 기록을 단어 단위로 검색하거나, 단기·장기 기억을 구분하는 다계층 기억 시스템을 구현함.
- 기억을 검토·병합·중복 제거하는 백그라운드 데몬, 밤새 기억을 다시 쓰는 ‘드리머’, 지속적인 문맥 압축, 재순위화 기능도 추가됨.
- 이러한 플러그인은 근본적으로 결함이 있는 같은 구조를 고치려 토큰을 소비하는 기능을 계속 더하며, 그 결과 안정적으로 작동하지 못함.
회상의 문제
- 기억은 유사도에 따라 노출됨. 유사도 검색은 임베딩 공간에서 두 조각이 얼마나 가까운지 순위를 매길 뿐, 어떤 내용이 정확하고 최신인지 또는 무엇이 빠졌는지는 알려주지 못함.
- 기억은 맥락 없이 저장됨. RAG 조각에는 담을 수 있는 정보가 제한적이므로 맥락, 동기, 교훈, 환경 등이 사라짐.
- 과거 기록이 진실처럼 취급됨. 대화 기록이나 벡터 데이터베이스를 검색하는 방식에 의존하지만 코드베이스는 매일 바뀌므로 인증에 관한 500개 조각이 얼마나 정확한지 알 수 없음.
- 에이전트는 자신이 모르는 것을 검색할 수 없음. 검색 도구를 제공하더라도 에이전트가 언제 검색해야 하는지 알기 어려우며, 모르는 사실 자체를 모를 수 있음.
- 저장소를 감사하기 어려움. SQLite에 임베딩 10,000개가 있어도 어떤 기억이 존재하는지, 오래됐는지, 한 번도 검색되지 않았는지, 부정확한 기억이 에이전트에 몰래 영향을 미치는지 파악하기 어려움.
- 이는 메모리 플러그인이 겪고 해결하려다 실패하는 여러 문제 중 다섯 가지이며, 모두 ‘에이전트가 잊어버리는 것이 문제이므로 기억하게 해야 한다’는 같은 가정에서 비롯됨.
- 더 많이 수집하고, 더 잘 색인하며, 더 똑똑하게 검색하는 방식은 과거를 저장하고 회상하는 데 초점을 둠.
- 사람들은 기능의 제약을 기억하려고 3년 전 팀 회의를 다시 보는 대신 기록을 작성하고 활용함. 에이전트에도 과거 대화 1,000만 토큰을 검색해 사건의 조각을 재구성하게 하는 대신 문서 기반 메모리가 필요함.
- AI로 제품과 기능, 저품질 콘텐츠를 빠르게 만들어내면서 코드 한 줄도 읽거나 이해하지 않는 상황에서는 문서화가 뒷전이 되기 쉬우나, 문서화는 어느 때보다 중요함.
회상보다 문서화
- 에이전트가 코드베이스에 맥락 없이 뛰어들지 않도록 AGENTS.md 파일이 만들어졌으며, 이 방식은 작동함.
- 그러나 프로젝트에 문서가 AGENTS.md 파일 하나뿐인 경우가 많으며, 파일 하나만으로는 충분하지 않음.
- 에이전트에는 지침, 명세, 결정, 조사, 색인 등을 요청을 기다리지 않고 기록할 수 있는 구조화된 작업 공간, 즉 전체적인 ‘두뇌’가 필요함.
- 코드 리뷰 절차에 관한 지침, 사용자와 논의한 내용을 담은 명세, 익숙하지 않은 라이브러리나 API에 관한 재사용 가능한 조사 자료 등을 기록할 수 있음.
- 작업 전에는 에이전트가 두뇌의 파일을 읽어 관련성 있고 완전한 맥락을 확보함. 작업 후에는 전체 상황을 여전히 파악하는 동안 오래된 문서를 갱신하고 필요한 문서를 추가함.
- 이에 따라 에이전트 작업 흐름은
프롬프트 → 구축 → 잊기에서프롬프트 → 참고 → 구축 → 갱신으로 바뀜. - 메모리는 에이전트에 덧붙이는 RAG 데이터베이스가 아니라 읽고 갱신하며 공유할 수 있는 작업 공간이 됨.
실제 적용
- AI로 프로그래밍을 시작한 지 1년 넘게 전에 세션을 넘어 작업 내용을 기억하게 할 방법을 찾으며
internal/폴더를 만들고, 에이전트에 명세·계획·색인을 모두 기록하도록 요청함. - 작업 전 적절한 문서와 색인을 반드시 읽고, 작업 후 갱신하도록 에이전트에 지시함.
- 이 기초적인 지침은 정식 시스템으로 발전했고, 여러 프로젝트에서 정기적으로 사용하는 Operator Memory 플러그인으로 이어짐.
- Operator Memory는 앞서 설명한 모델을 바탕으로 문서 기반 메모리를 제공함. 에이전트가 지침·명세·조사·색인을 보존할 수 있는 마크다운 두뇌를 제공함.
- 작업 전 에이전트는 관련 문서를 확인하고, 작업 후에는 오래된 문서를 다시 검토하며 빠진 문서를 추가함.
- 벡터 데이터베이스, 임베딩, 요약기, 큐레이터, 갱신기, 드리머 등 토큰을 소비하는 백그라운드 데몬과 블랙박스 검색은 사용하지 않음.
- 모든 내용은 읽고 갱신하고 커밋하며 팀과 공유할 수 있는 일반 마크다운 문서임.
- 1년 넘게 이 시스템을 사용하고 있으며, 무료 오픈 소스 저장소는 GitHub의 Operator Memory임.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요