Anthropic이 정의하는 에이전트 memory
이 포스트는 에이전트 memory를 좁게 정의합니다. 이는 "Claude가 사용자 및 할당된 작업과의 상호작용을 포함한 경험을 통해 얻은 지식으로, 세션 간에 유지되며 나중에 읽을 수 있는 context로 저장되는 것"을 의미합니다.
또한 제외되는 항목들도 나열합니다: 모델 가중치의 변경, 단일 대화 내에서의 in-context learning, 그리고 Claude가 작업을 계속할 수 있도록 오래된 턴을 대체하는 요약인 compaction 등입니다.
이 증거는 Continual Learning Bench, Pokémon Red를 플레이하는 Claude, 내부 문서 코퍼스, 합병 관련 법률 벤치마크 등 몇 가지 평가에서 도출되었습니다.
Memory는 필요한 것에 대한 예측입니다
포스트의 첫 번째 아이디어는 노트를 작성하는 것이 일종의 베팅이라는 점입니다. Anthropic의 표현을 빌리자면, "Memory는 때때로 예측입니다." 이어지는 설명은 이렇습니다: "규칙을 기록함으로써, 에이전트는 자신이 설명하는 패턴이 다시 관련성을 가질 것이라고 예측하는 것입니다."
Continual Learning Bench 작업에서 Claude는 데이터베이스 질문에 답하고 정답을 들은 뒤, 다음 질문 전 memory를 작성할 수 있었습니다. 각 질문은 새로운 세션에서 시작되었지만, 한 가지 예외로 memory 디렉토리는 그대로 유지되었습니다.
이전 모델들은 검증되지 않은 추측이 담긴 파일들을 흩뿌려 놓았습니다. 포스트에 따르면 "Claude Opus 5는 이러한 모델 중 처음으로 루프를 완성한 모델"로, 규칙과 그 규칙이 사실임을 알게 된 경위, 그리고 함정에 대한 경고를 포함한 항목들을 작성했습니다.
규칙, 그 증거, 그리고 피해야 할 함정은 나중에 확인할 수 있는 유용한 형식입니다.
Claude가 유지하기로 선택하는 것
Pokémon 비교는 포스트에서 가장 명확한 예시입니다. 게임이 약 10,000단계 진행되었을 때, 한 이전 모델은 225개의 폴더에 413개의 memory 파일을 작성하고 배지 하나를 획득했습니다. 반면 최신 모델은 2개의 폴더에 9개의 파일과 global.md라는 최상위 파일 하나를 작성하고 배지 4개를 획득했습니다.
차이점은 각 모델이 무엇을 저장할 가치가 있다고 판단했느냐에 있었습니다. 이전 모델은 모든 전투, 아이템, 캐릭터를 기록했는데, 포스트는 이것이 왜 해로웠는지 설명합니다: "Sonnet 3.7의 상세한 기록은 계속해서 낡은 정보가 되었습니다."
최신 모델은 게임이 보여주지 않는 것을 저장했습니다. 포스트는 이 차이를 다음과 같이 설명합니다: "전략, 계획, 테스트된 규칙에 대한 memory 파일은 Claude가 이를 도출해낼 때만 존재하며, Claude가 기록하지 않으면 사라집니다." 플레이어의 돈이나 지도상의 위치 같은 것들은 매 턴 화면에서 읽을 수 있으므로 이를 저장하는 것은 중복입니다.
Claude Code의 문서도 auto memory에 대해 비슷한 기준을 제시합니다. auto memory를 사용자의 선호도, 수정 사항, 그리고 "Claude가 코드에서 도출할 수 없는 프로젝트 context"를 위한 장소로 설명합니다. 코드, README 또는 빌드 파일에 존재하는 사실들은 필요할 때 직접 읽을 수 있습니다. 이를 복사한 노트는 원본과 달라질 위험이 있습니다.
Claude에게 memory의 용도를 알려주되, 사용법은 지시하지 마세요
스티어링(steering)에 대한 포스트의 지침은 짧습니다: "우리는 Claude에게 memory가 무엇을 위한 것인지 알려주는 것이 도움이 되지만, 어떻게 사용해야 하는지까지 알려주는 것은 그렇지 않다는 것을 발견했습니다."
Anthropic은 무엇을 기록할지에 대한 구체적인 규칙을 테스트했습니다. 규칙이 모델에게 실패 사례만 기록하도록 지시했을 때, 더 강력한 모델들은 memory가 제공했던 이득의 상당 부분을 잃었습니다. 결론은 다음과 같습니다: "강력한 모델의 경우, 사전에 고정된 규칙을 설정하는 것보다 중요도를 판단할 자유를 주는 것이 더 효과적이었으며, 그러한 규칙은 오히려 성능을 약화시킬 수 있었습니다."
이전 모델들은 달랐습니다. memory를 먼저 읽고 이론을 테스트하도록 프롬프트를 주었을 때 점수가 올라갔습니다. 프런티어 모델에 대해 Anthropic은 사람이 요청하거나 명확하게 기억할 가치가 있는 일이 발생했을 때 노트를 생성하도록 하는 간단한 안내를 기본값으로 설명합니다.
이 발견은 에이전트가 memory에 무엇을 작성할지에 대한 규칙에 관한 것입니다. 이는 코딩 작업을 위해 Claude에게 주는 프로젝트 지침(instructions)을 평가한 것은 아닙니다. 만약 CLAUDE.md에 특정 종류의 노트만 저장하도록 한 줄을 추가했다면, 이 연구는 그 줄이 도움이 되는지 테스트해 볼 이유가 될 뿐, 여러분의 설정에서 그것이 해롭다는 증거는 아닙니다.
잘못된 memory 노트가 나중에 신뢰받는 이유
이 발견을 주의 깊게 읽으십시오. 포스트는 위험성을 직접적으로 언급합니다: "Claude는 세션 내에서 중요하다고 판단한 것을 바탕으로 memory를 작성하기 때문에, 처음부터 틀렸거나 환경이 변함에 따라 어긋난 노트가 나중에 다른 세션에서 Claude에 의해 읽히고 신뢰받을 수 있습니다."
Pokémon 실행 중에 Claude는 랜드마크를 위한 산의 방향을 잘못 기록했고, 그 산을 완료된 것으로 표시한 뒤, 일방통행 절벽 아래로 내려가 왔던 길로 되돌아가는 실수를 여러 번 반복했습니다.
Anthropic이 테스트한 해결책은 dreaming이었습니다. 이는 노트를 원래의 세션 트랜스크립트와 대조하여 확인하는 과정입니다. Claude는 잘못된 노트를 트랜스크립트와 비교하여 오류를 찾아내고 노트를 다시 작성했습니다. 수정된 노트를 가지고 Claude는 다시 동굴로 들어가 다음 도시에 도착했습니다. 포스트는 이것이 왜 효과적이었는지 설명합니다: "트랜스크립트가 Claude에게 memory를 검증할 수 있는 ground truth(지상 실측 정보)를 제공했기 때문입니다."
이것이 Claude Code의 auto memory에 의미하는 바
Claude Code의 auto memory는 로컬 머신의 일반 파일입니다. 문서에 따르면 /memory를 실행하여 이를 찾아볼 수 있으며, "모든 것은 사용자가 읽고, 편집하고, 삭제할 수 있는 일반 markdown입니다."
문서에는 연구와 직접 연결되는 한 가지 세부 사항이 있습니다. Claude Code는 cleanupPeriodDays 보관 기간이 지나면 오래된 세션 트랜스크립트를 삭제하지만, "memory 디렉토리의 memory 파일은 해당 삭제 대상에서 제외합니다." memory 파일은 사용자나 Claude가 편집하거나 삭제할 때까지 유지됩니다.
이 두 가지 사실을 나란히 놓아보십시오. 노트는 그것이 생성된 세션 트랜스크립트보다 더 오래 남을 수 있습니다. 만약 노트가 틀렸다면, 그것이 틀렸음을 보여줄 수 있는 기록은 이미 사라졌을 수 있습니다. Anthropic의 dreaming 과정은 그 기록에 의존했습니다. 로컬 auto memory의 경우, 코드 및 프로젝트의 현재 상태와 대조하여 확인하는 몫은 사용자에게 돌아갑니다. why Claude Code forgets your corrections 가이드는 수정 사항이 노트에 전혀 반영되지 않는 반대의 실패 사례를 다룹니다.
왜 memory의 일부만 매 세션 로드되는가
포스트는 계층 구조를 설명합니다. 노트는 최상위 레이어로 승격될 수 있으며, 에이전트의 하네스는 매 세션 시작 시 이를 context에 로드하므로 Claude가 이를 검색할 필요가 없습니다. 포스트는 이 레이어에 제한을 둡니다: "주입된 memory는 귀중한 토큰을 소모하며, 잘못된 노트가 모든 세션에 전달될 수 있습니다."
또한 노트를 로드한다고 해서 Claude가 반드시 그에 따라 행동한다는 보장은 없다고 덧붙이며, 지침 파일이 길어질수록 준수율이 떨어진다는 Claude Code의 자체 문서를 인용합니다. 결론은 다음과 같습니다: "따라서 memory 계층의 최상위 레이어는 상대적으로 작게 유지되어야 합니다."
포스트는 Claude Code의 auto memory를 동일한 설계의 예로 언급합니다. 문서에는 구체적인 수치가 명시되어 있습니다: "MEMORY.md의 처음 200줄 또는 처음 25KB 중 먼저 도달하는 기준까지 매 대화 시작 시 로드됩니다." 이어서 "해당 임계값을 넘는 내용은 세션 시작 시 로드되지 않습니다."
나머지는 주제별 파일(topic files)에 저장되며, Claude는 필요할 때 이를 읽습니다. MEMORY.md는 이들을 가리키는 인덱스 역할을 합니다.
Claude Code는 Claude가 작성할 때도 이 제한을 적용합니다. 만약 MEMORY.md가 제한에 가까워지면, Claude Code는 Claude에게 이를 줄이도록 상기시킵니다. 제한을 초과하더라도 쓰기는 성공하지만, Claude Code는 "제한을 넘는 모든 내용은 다음 로드 시 누락되므로" 인덱스를 다시 작성하라는 오류를 반환합니다.
따라서 모든 노트에 대한 실질적인 질문은 그것이 어디에 위치하느냐입니다. MEMORY.md의 처음 200줄 안에 있는 내용은 세션이 시작될 때 존재합니다. 그보다 아래에 있거나 주제별 파일에 있는 세부 사항은 Claude가 직접 찾아나설 때만 존재합니다. Claude Code auto memory 가이드는 이러한 파일의 위치와 기능 해제 방법을 설명합니다.
사용자가 작성하는 지침 파일에도 동일하게 적용됩니다. 문서는 CLAUDE.md 파일당 200줄 미만을 권장하는데, "파일이 길어지면 더 많은 context를 소모하고 준수율을 낮추기 때문"입니다. 하위 디렉토리 파일에는 별도의 컷오프가 있으며, 이는 subdirectory CLAUDE.md limit 가이드에서 다룹니다.
여러 작성자가 한 페이지를 공유할 때
후반부 실험 중 하나는 놓치기 쉽지만 에이전트나 사람 간에 memory를 공유하는 누구에게나 관련이 있습니다. Claude는 일련의 계약서로부터 위키를 구축했습니다. 여러 에이전트가 동시에 하나의 공유된 계약 조건 테이블에 기록했습니다. Anthropic이 해당 위키로 작성된 브리핑을 평가했을 때, 57개의 평가 사실 중 41개만 살아남았습니다. 포스트는 그 이유를 찾아냈습니다: 공유 테이블이 조건을 제대로 요약하지 못했거나 일부가 누락되었는데, 이는 "에이전트들이 서로의 작업을 덮어썼기 때문"이었습니다.
개선된 지침은 각 계약서에 단일 에이전트가 작성하는 고유 페이지를 부여했고, "공유 테이블로 요약하는 대신 조건을 토씨 하나 틀리지 않고 인용"하도록 했습니다. 이 변경을 통해 57개 사실 모두가 브리핑에 포함되었습니다.
페이지당 한 명의 작성자는 덮어쓰기를 방지하고, 소스를 인용하면 요약 과정에서 누락될 수 있는 세부 사항을 보존할 수 있습니다.
Claude Code의 문서는 "동일한 git 저장소 내의 모든 worktree와 하위 디렉토리는 하나의 auto memory 디렉토리를 공유한다"고 명시합니다. 하나의 저장소에서 여러 worktree로 병렬 세션을 실행하면 해당 디렉토리를 공유하게 됩니다. memory 문서에는 동일 파일에 대한 동시 쓰기가 어떻게 처리되는지 설명되어 있지 않으므로, 병렬 작업 후에는 MEMORY.md를 확인해 보는 것이 좋습니다. Anthropic의 Managed Agents 가이드도 작성자 간의 유사한 분리를 취하고 있으며, 이는 the two memory stores in Claude Managed Agents에서 다룹니다.
위키가 도움이 될 때와 그렇지 않을 때
포스트는 위키를 일반적인 정답으로 제시하지 않습니다. 여러 문서의 사실이 필요한 질문에서 Claude는 검색만 사용할 때보다 위키를 사용할 때 더 잘했습니다. 대부분의 기준이 단일 문서에서 충족될 수 있는 법률 작업에서는 위키가 뚜렷한 이득을 보여주지 못했습니다. 또 다른 작업에서는 위키가 기반이 된 문서보다 더 커지기도 했습니다. 해당 사례에 대한 포스트의 판결은 이렇습니다: "Claude는 사실상 아무것도 추상화하지 못한 극도로 상세한 위키를 만들었습니다." 포스트는 또한 모든 노트를 확인하는 데 계산 비용이 들 때 memory의 정확성을 어떻게 유지할 것인가와 같은 열린 질문들을 나열합니다.
사람들이 흔히 저지르는 실수
혹시 모르니 모든 것을 저장하기. 낡은 정보가 섞인 거대한 memory는 검색 시간을 낭비하게 하고 오해를 불러일으킬 수 있습니다.
무엇을 저장할지에 대해 엄격한 규칙 작성하기. 강력한 모델의 경우, Anthropic은 고정된 규칙이 성능을 약화시킬 수 있음을 발견했습니다.
Memory에 있다는 이유만으로 노트를 신뢰하기. 노트는 처음부터 틀릴 수 있으며, Claude는 나중에 이를 읽고 신뢰할 수 있습니다.
MEMORY.md를 계속 키우기. 처음 200줄 또는 25KB를 넘어서는 내용은 세션 시작 시 로드되지 않습니다.
해결책: 로드되는 레이어를 작고 확인 가능하게 유지하기
1단계: auto memory가 저장한 내용 읽기
/memory를 실행하거나 auto memory 폴더를 열어 MEMORY.md와 주제별 파일들을 읽어보세요. 각 항목을 코드나 프로젝트의 현재 상태와 대조하여 확인하고, 더 이상 사실이 아닌 것은 수정하거나 삭제하세요. 트랜스크립트는 일정에 따라 정리되므로 원래 세션을 찾을 수 있을 거라 기대하지 마세요.
2단계: MEMORY.md를 제한 범위 내의 인덱스로 유지하기
MEMORY.md에는 항목당 한 줄씩만 유지하고, 세부 사항은 주제별 파일로 옮기세요. 매 세션 시작 시 Claude에게 필요한 항목은 상단에 배치하세요. Claude가 코드에서 직접 읽을 수 있는 내용을 복사한 것은 모두 제거하세요.
3단계: 페이지당 한 명의 작성자를 지정하고, 결정을 인용하기
여러 세션이나 팀원이 동일한 노트에 내용을 추가한다면, 각 주제에 고유한 페이지를 부여하세요. 사실이 문서, 티켓 또는 결정 기록에서 온 것이라면 요약하기보다 정확한 문구를 복사하세요.
MemoryLake에서 설정하기
Anthropic의 포스트는 에이전트가 그 순간 중요해 보이는 것을 바탕으로 스스로 작성하는 memory에 관한 것입니다. 다른 성격을 가진 또 다른 종류의 memory가 있습니다: 바로 사용자가 직접 확인한 결정 사항과 컨벤션입니다. 사용자는 작성할 때 해당 항목이 옳다는 것을 알고 있으며, 이를 하나 이상의 도구와 머신에서 사용하고 싶을 수 있습니다. Claude Code의 문서는 auto memory가 머신 로컬(machine-local)이라고 명시합니다.
MemoryLake는 이러한 확인된 항목들을 사용자가 관리하는 한 곳에 보관하여 ChatGPT, Claude Code, Codex 등 연결된 어시스턴트들이 사용할 수 있게 해주는 memory 레이어입니다.
사용자는 자신의 언어로 직접 항목을 작성합니다. 사용자의 MEMORY.md, auto memory 주제별 파일, CLAUDE.md 파일, Claude 채팅 또는 어떤 벤더의 저장소에서도 내용을 읽거나 쓰거나 삭제하지 않습니다. Claude Code의 auto memory는 Anthropic이 설명한 방식 그대로 계속 작동합니다.
1단계: API 키 생성
로그인 후 대시보드에서 키를 생성하세요. 이 키는 MemoryLake 워크스페이스에 속하며 Anthropic 계정과는 별개입니다.

2단계: 첫 번째 memory 업로드
위의 1단계에서 확인하고 여전히 사실임을 보장하는 항목들부터 시작하세요. 항목당 하나의 결정을 담고, 소스를 토씨 하나 틀리지 않고 인용하며 확인한 날짜를 포함하세요.

3단계: AI 및 에이전트 연결
Claude Code 및 사용하는 다른 어시스턴트들을 연결하세요. 동일하게 확인된 항목들을 각 머신과 도구에서 사용할 수 있습니다.

실제로 바뀌는 점
첫 번째 차이점은 더 짧아진 인덱스입니다. MEMORY.md는 포인터와 모든 세션에 필요한 몇 가지 사항만 담을 수 있고, 확인된 결정 사항은 필요할 때 찾아볼 수 있는 곳에 위치합니다.
두 번째는 더 명확한 진실의 원천(source of truth)입니다. auto memory 노트와 확인된 항목이 충돌할 때, 사용자는 자신이 직접 확인 후 작성한 것이 무엇인지 알 수 있습니다.
세 번째는 중요한 내용에 대해 단 한 명의 작성자만 존재한다는 것입니다: 사용자가 확인한 결정 사항은 단일 저자를 가집니다.
Claude memory 파일을 위한 베스트 프랙티스
Claude가 다른 곳에서 읽을 수 없는 것을 저장하세요. 전략, 결정, 테스트된 규칙은 memory에 속합니다. 코드에 있는 사실은 그렇지 않습니다.
규칙을 증거와 함께 작성하세요. 규칙, 그것이 사실임을 알게 된 경위, 그리고 피해야 할 함정은 나중에 확인하기 쉽습니다.
노트를 소스와 대조하여 확인하세요. 잘못된 노트는 나중 세션에서 신뢰받을 수 있습니다.
최상위 레이어를 작게 유지하세요. MEMORY.md의 처음 200줄 또는 25KB만 세션 시작 시 로드됩니다.
페이지당 한 명의 작성자를 선호하세요. 여러 작성자가 공유하는 페이지는 사실을 잃어버릴 수 있습니다.
중요한 용어는 요약하지 말고 인용하세요. 정확한 문구는 세부 사항을 온전히 보존합니다.
결론
Anthropic의 포스트는 자체 평가를 통해 Claude가 무엇을 기억할지 결정하는 방식을 설명합니다. 노트는 예측입니다. 강력한 모델은 고정된 규칙을 주는 것보다 memory의 용도를 알려줄 때 더 잘 작동합니다. 처음부터 틀린 노트가 나중 세션에서 읽히고 신뢰받을 수 있으며, 이것이 Anthropic이 원래 트랜스크립트와 대조하는 dreaming을 테스트한 이유입니다. 그리고 매 세션 로드되는 레이어는 의도적으로 작게 유지되는데, 이는 Claude Code에서 MEMORY.md의 처음 200줄 또는 25KB를 의미합니다.
본인의 설정에 적용하자면 세 가지 습관으로 요약됩니다: auto memory가 저장한 내용을 소스와 대조하여 확인하고, MEMORY.md를 중요한 항목이 상단에 있는 짧은 인덱스로 유지하며, 중요한 사실에는 단일 작성자와 정확한 문구를 부여하는 것입니다.