에이전트 메모리의 구성 요소: 노트, dreaming, 위키
The Components of Agent Memory
TL;DR Highlight
Claude에 메모리 폴더와 dreaming을 붙였더니 문서 질의 점수가 13%→48%로 올랐다
Who Should Read
장기 실행 에이전트에 세션 간 메모리를 붙이려는데 노트가 쌓이기만 해서 고민인 백엔드 개발자
Core Mechanics
- 메모리는 미래에 대한 예측이다
- 규칙을 적는 건 그 패턴이 다시 쓰일 거라고 예측하는 일이다.
- 검증된 사실을 적는 건 다음 세션이 재확인 없이 믿어도 된다고 예측하는 일이다.
- 모델이 새 걸수록 학습 루프를 닫는다
- CL-Bench 데이터베이스 과제에서 Sonnet 4.6은 가설만 적고 검증은 못 했다.
- Opus 5는 규칙, 근거, 함정 경고까지 적어 처음으로 루프를 닫았다.
- 포켓몬: 413개 파일보다 9개 파일이 낫다
- Sonnet 3.7은 파일 413개를 쓰고 배지 1개를 얻었다.
- Fable 5는 파일 9개와 global.md로 배지 4개를 얻었다.
- 돈이나 위치처럼 화면에서 읽을 수 있는 정보는 저장할 필요가 없었다.
- 규칙보다 용도만 알려주는 편이 낫다
- 메모리 폴더가 있다고만 알려도 Opus 4.7과 Opus 5 성능이 눈에 띄게 올랐다.
- '실패만 기록하라'는 규칙을 주자 두 모델 모두 메모리 이득의 상당 부분을 잃었다.
- 반면 Sonnet 4.6은 답 전에 메모리를 읽고 가설을 검증하라고 시키자 점수가 거의 두 배가 됐다.
- dreaming(세션 사이에 로그를 되짚어 메모리를 정리하는 작업)으로 틀린 노트를 고친다
- Claude가 PokéCenter 위치를 잘못 적어 Mt. Moon 함정에 세 번 빠졌다.
- dreaming으로 트랜스크립트와 대조해 노트를 고치자 곧바로 동굴로 돌아가 Cerulean City에 도착했다.
- dreaming으로 위키를 만들면 질의 성능이 오른다
- Stainless 문서 약 350,000개(약 420M 토큰)로 25문항을 평가했다.
- dreaming을 2세션에서 128세션으로 늘리자 채점 기준 충족률이 13%에서 48%가 됐다.
- 단일 문서로 풀리는 과제에선 위키 이득이 없었고, 한 과제에선 위키가 원본보다 커졌다.
Community Reactions
- 메모리가 현재 프로젝트에 묶인다는 불만
- 프로젝트를 자주 옮겨 다녀서 이전 세션 트랜스크립트를 에이전트 간·프로젝트 간에 읽는 스킬을 만들었다는 경험이 있었다.
- 무엇을 적어둘지 미리 알 수 없으니 사후에 찾는 편이 낫다는 의견이었다.
- Claude가 트랜스크립트를 30일 뒤 지워서 보관 기간을 늘렸다고 한다.
- 자동 메모리는 대부분 지운다는 경험
- 자동 메모리 생성을 꺼 뒀고 Claude Code가 만든 것의 95%쯤은 지운다는 경험이 있었다.
- 대부분 당장의 작업에만 쓸모 있는 내용이라 컨텍스트만 어지럽힌다고 한다.
- memory-prune 스킬로 코드 주석, 규칙, AGENTS.md로 옮기거나 삭제한다는 사례도 있었다.
- 위키+검색이 dreaming보다 싸고 낫다는 지적
- Fig. 10을 보면 위키+검색이 dreaming을 이기고, dreaming은 그 위에 소폭만 더한다는 의견이 있었다.
- 검색이 dreaming보다 훨씬 싸다면 중요한 점이라는 의견이었다.
- 메모리 품질과 용어에 대한 회의론
- 모델이 메모리를 과일반화하고 점진적 작업에 약하다는 경험이 여럿 있었다.
- 출처(provenance)가 남지 않고 덮어써진다는 지적도 있었다.
- '.md 파일을 컨텍스트에 다시 넣는 것'을 dreaming이라 부르는 건 의인화라는 비판도 많았다.
How to Apply
- 에이전트 트랜스크립트로 기존 메모리 감사하기
- 오늘 쓰는 에이전트의 메모리 폴더를 열고 화면·로그에서 바로 읽을 수 있는 정보를 가려내 지워라.
- 아래 프롬프트로 어떤 노트를 남기고 지울지 판정시켜라.
- 시스템 프롬프트에는 메모리 용도만 한 줄 쓰기
- '메모리 폴더가 있고 세션 간 유지된다'는 정도만 알려라.
- '실패만 기록' 같은 고정 규칙은 넣지 마라.
- 약한 모델에는 답 전에 메모리를 읽고 가설을 검증하라는 지시를 추가하라.
- 주기적 dreaming 작업으로 노트와 트랜스크립트 대조하기
- 세션 종료 후 별도 에이전트로 노트의 주장을 트랜스크립트와 대조해 틀린 항목을 고치게 하라.
- 확인된 규칙과 미확인 가설을 구분해 표시하게 하라.
- 주입되는 최상위 메모리는 작게 유지하기
- MEMORY.md 같은 인덱스 파일은 200줄·25KB 안쪽으로 관리하라.
- 세부 내용은 하위 파일로 내리고 링크만 남겨라.
Try It
# Claude Code 또는 Claude/ChatGPT에 붙여넣기 (원문 방법의 간이 버전: dreaming 흉내)
아래는 에이전트의 메모리 노트들과 세션 트랜스크립트다.
[메모리 노트]
{{메모리 노트 내용}}
[트랜스크립트]
{{세션 트랜스크립트}}
다음을 수행해라.
1. 각 노트의 주장을 트랜스크립트와 대조해 '확인됨/틀림/미확인'으로 표시해라.
2. 틀린 노트는 근거와 함께 수정본을 써라.
3. 화면이나 도구로 매번 바로 읽을 수 있는 정보는 삭제 후보로 표시해라.
4. 남길 노트 중 매 세션 로드할 핵심은 20줄 이내 index로, 나머지는 하위 파일 링크로 정리해라.
이어서 해 볼 것: 결과 index를 MEMORY.md에 넣고 다음 세션에서 같은 작업의 성능이 달라지는지 비교해 봐라.Terminology
관련 논문
AI Brain Fry 이겨내기: git 기반 우선순위 큐로 에이전트 작업 관리
티켓을 git에 두고 결정만 한 곳에서 처리했더니 20개 스레드 혼란이 줄었다
Goldman Sachs, 트레이더·뱅커의 Claude Code 접근을 제한하다
Goldman이 코딩 에이전트를 엔지니어에게만 허용하고 트레이더·뱅커는 막았다
Agent memory에도 OpenTelemetry 같은 공통 규격이 필요하다는 주장
에이전트 메모리 포맷이 제각각이라 OpenTelemetry식 공통 규격을 제안한 글
Claude Code를 접고 Pi로 갈아탄 이유
Claude Code의 잦은 시스템 프롬프트 변경에 지쳐 Pi로 갈아탔다
ChatGPT가 커넥터 사이로 조용히 데이터를 넘긴다는 보안 제보
커넥터 2개를 켜자 후속 툴 호출이 다른 커넥터로 조용히 넘어갔다
Claude Code가 User-Agent 헤더에 이메일을 실어 웹사이트로 보낸다
Claude Code가 curl 요청 User-Agent에 사용자 이메일을 넣어 스팸 피해 제보가 나왔다
Rivet: S3 위에서 에이전트를 확장·오케스트레이션하는 Actor 플랫폼
에이전트마다 Actor를 띄웠더니 콜드스타트 4.99ms, 메모리 72KB가 됐다
Stroq: 코딩 에이전트가 한 일과 이유를 로컬에서 감사하는 도구
Stroq는 에이전트 세션에서 유출된 키를 찾고 위험 명령을 출처까지 추적해 막는다