AI 에이전트가 사용자 취향, 프로젝트 규칙, 지난 작업 경험을 저장해 두었다가 다음 세션에서 꺼내 쓰게 하는 기술로, 대화가 끝나면 모든 걸 잊는 LLM의 한계를 메운다. 같은 설명을 매번 반복하기 싫을 때나 오래 이어지는 작업을 맡길 때 쓴다.
사람의 기억처럼 여러 종류로 나뉜다.
| 종류 | 무엇을 기억하나 | 예시 |
|---|---|---|
| 단기 메모리 | 지금 대화의 맥락 | 컨텍스트 윈도우 |
| 의미 메모리 | 사실·선호 | "이 사용자는 TypeScript를 선호한다" |
| 에피소드 메모리 | 겪었던 일 | "지난 배포 때 환경 변수를 빠뜨려 롤백했다" |
| 절차 메모리 | 일하는 방법 | 문제를 푼 과정을 정리한 스킬 문서 |
컨텍스트 윈도우는 아무리 커도 세션이 끝나면 비워진다. 대화가 길어질수록 비용이 늘고 앞부분 내용을 놓치기도 쉽다.
그래서 중요한 것만 골라 바깥에 저장하고, 필요할 때 관련된 것만 다시 넣는다. 저장하고, 검색하고, 컨텍스트에 넣는 순서로 돌아간다.
| 방식 | 어떻게 | 이럴 때 |
|---|---|---|
| 파일 메모리 | CLAUDE.md 같은 파일에 규칙을 적어 둔다 | 프로젝트 규칙, 코딩 컨벤션 |
| 자동 추출 | Mem0처럼 대화에서 중요한 정보를 뽑아 벡터 DB·그래프에 저장한다 | 사용자별 개인화 서비스 |
| 자기 편집 | Letta(MemGPT)처럼 에이전트가 직접 메모리를 읽고 고친다 | 오래 도는 에이전트 |
| 스킬 저장 | Hermes Agent처럼 문제를 푼 과정을 스킬 문서로 남긴다 | 비슷한 복잡한 작업이 반복될 때 |
가장 쉬운 시작은 파일이다. Claude Code는 세션을 시작할 때 CLAUDE.md를 자동으로 읽는다. 빌드 명령어, 금지 사항, 아키텍처 결정을 여기에 적어 두면 된다. 직접 서비스를 만든다면 Mem0 같은 메모리 레이어를 붙여 사용자별 기억을 관리한다.
한 번 묻고 끝나는 질문이나 매번 같은 결과가 나와야 하는 작업에는 메모리가 오히려 방해가 된다. 예전 기억이 답에 섞이면 결과가 달라질 수 있기 때문이다. 여러 사람이 같은 에이전트를 쓴다면 사용자끼리 기억이 섞이지 않게 나눠 둬야 한다.
기억이 많다고 좋은 건 아니다. 오래되거나 틀린 기억을 꺼내 쓰면 성능이 오히려 떨어진다. 무엇을 저장하고 언제 고치거나 지울지 정하는 관리 전략이 저장 자체보다 어렵다.
메모리를 가끔 열어 보고 낡은 항목은 지운다. 비밀번호나 개인정보 같은 민감한 내용은 처음부터 저장하지 않도록 막아 둔다.
가장 흔한 건 코딩 에이전트에 프로젝트 규칙을 기억시키는 방식이다. 매번 같은 지시를 입력하는 대신 한 번 적어 두고, 에이전트가 세션마다 알아서 읽게 한다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| 코딩 에이전트 | CLAUDE.md 같은 파일에 빌드 명령어·컨벤션·금지 사항을 적어 두고 세션마다 자동으로 읽게 한다 |
| AI 챗봇 | 메모리 기능을 켜 두고 직업, 선호하는 답변 스타일 같은 정보를 기억시켜 매번 자기소개를 하지 않는다 |
| 직접 만드는 서비스 | Mem0 같은 메모리 레이어를 붙여 사용자별 취향과 지난 대화를 따로 저장하고 꺼내 쓴다 |
| 오래 도는 에이전트 | 지난 작업에서 배운 점과 해결 과정을 기록해 두고, 비슷한 일이 오면 그 기록부터 찾아 쓴다 |