How to Build Memory into AI Agents
Quick Summary
AI 에이전트의 메모리는 과거 실행에서 얻은 교훈을 장기 컨텍스트로 저장하고 다음 실행에 다시 읽혀 행동을 개선하게 만드는 순환 구조입니다.
🖼️ 인포그래픽
🖼️ 4컷 인포그래픽
💡 한 줄 요약
AI 에이전트의 메모리는 과거 실행에서 얻은 교훈을 장기 컨텍스트로 저장하고 다음 실행에 다시 읽혀 행동을 개선하게 만드는 순환 구조입니다.
📌 핵심 요약
- 메모리는 에이전트가 매번 같은 correction을 다시 요구하지 않고, 한 번 배운 선호·규칙·작업 방식·성공 패턴을 이후 실행에서 활용하도록 만드는 지속 가능한 컨텍스트입니다.
- 원문은 트레이스나 로그 자체를 메모리로 보지 않고, 그 안의 유용한 교훈이 나중에 검색·주입되어 행동을 바꿀 수 있는 형태로 변환될 때 비로소 메모리가 된다고 설명합니다.
- 메모리는 현재 작업에 쓰이는 단기·작업 메모리와 실행을 넘어 지속되는 장기 메모리로 나뉘며, 장기 메모리는 다시 의미적·일화적·절차적 메모리로 구분됩니다.
- 실용적인 메모리 루프는 실행 트레이스를 수집하고, 반복 문제나 피드백에서 신호를 분석한 뒤, 지침·라우팅·스킬·예시·사용자 선호 같은 지속 컨텍스트를 업데이트하는 흐름으로 구성됩니다.
- LangSmith에서는 Observability가 트레이스를 저장하고, Engine이 트레이스를 분석해 개선 신호를 찾으며, Context Hub가 버전 관리되는 메모리 저장소 역할을 하면서 다음 실행에 업데이트된 컨텍스트를 되돌려줍니다.
🧩 주요 포인트
- 메모리는 에이전트가 매번 같은 correction을 다시 요구하지 않고, 한 번 배운 선호·규칙·작업 방식·성공 패턴을 이후 실행에서 활용하도록 만드는 지속 가능한 컨텍스트입니다.
- 원문은 트레이스나 로그 자체를 메모리로 보지 않고, 그 안의 유용한 교훈이 나중에 검색·주입되어 행동을 바꿀 수 있는 형태로 변환될 때 비로소 메모리가 된다고 설명합니다.
- 메모리는 현재 작업에 쓰이는 단기·작업 메모리와 실행을 넘어 지속되는 장기 메모리로 나뉘며, 장기 메모리는 다시 의미적·일화적·절차적 메모리로 구분됩니다.
- 실용적인 메모리 루프는 실행 트레이스를 수집하고, 반복 문제나 피드백에서 신호를 분석한 뒤, 지침·라우팅·스킬·예시·사용자 선호 같은 지속 컨텍스트를 업데이트하는 흐름으로 구성됩니다.
- LangSmith에서는 Observability가 트레이스를 저장하고, Engine이 트레이스를 분석해 개선 신호를 찾으며, Context Hub가 버전 관리되는 메모리 저장소 역할을 하면서 다음 실행에 업데이트된 컨텍스트를 되돌려줍니다.
🧠 상세 정리
1. 문제의식: 사용자가 같은 correction을 반복하지 않게 하기
원문은 좋은 에이전트 경험을 만들기 위해 에이전트가 이전 행동에서 학습하는 루프가 필요하다고 설명합니다. 사용자가 한 번 알려준 수정 사항을 에이전트가 기억하지 못하면, 사용자는 같은 correction을 계속 반복해야 합니다. 반대로 메모리가 있으면 에이전트는 처음 지적받은 뒤 다음 실행에서 더 올바르게 행동할 수 있습니다. 이 글은 아직 구현 방식은 진화 중이지만, 핵심 추상화는 단순하다고 전제하고, 실행 기록을 분석해 배울 만한 내용을 구조화된 데이터로 바꾸는 구체적 구현 흐름을 제시합니다.
2. 메모리의 정의: 로그가 아니라 재사용 가능한 지속 컨텍스트
원문에서 메모리는 에이전트가 실행을 넘어 검색하고 활용할 수 있는 지속 가능한 컨텍스트로 정의됩니다. 여기에는 사실, 선호, 과거 상호작용, 지침, 스킬, 예시, 학습된 패턴이 포함될 수 있습니다. 중요한 구분은 트레이스·대화록·로그가 그 자체로 메모리는 아니라는 점입니다. 그런 기록은 무슨 일이 있었는지 보여주는 증거이지만, 그중 관련 있는 교훈이 이후 실행에서 검색되어 행동을 바꾸는 컨텍스트로 변환되어야 메모리가 됩니다.
3. 단기 메모리와 장기 메모리의 읽기·쓰기 순환
글은 메모리를 단기 또는 작업 메모리와 장기 메모리로 나누어 설명합니다. 단기 메모리는 현재 작업을 수행하는 동안 필요한 현재 스레드, 최근 메시지, 도구 결과, 검색 문서, 중간 추론 산출물, 임시 파일이나 상태를 뜻합니다. 장기 메모리는 현재 실행이 끝난 뒤에도 남아 이후 행동을 형성하는 사실, 선호, 예시, 워크플로, 정책, 지침, 스킬입니다. 실행 중에는 관련 장기 메모리가 프롬프트 조립, 저장소 검색, 도구 접근, 파일, 런타임 상태 등을 통해 작업 메모리로 읽혀 들어오고, 실행 후에는 트레이스에서 일부 신호만 골라 장기 컨텍스트로 다시 쓰는 순환이 일어납니다.
4. 장기 메모리의 세 유형과 절차적 메모리의 중요성
원문은 장기 메모리를 인지과학에서 빌린 분류에 따라 의미적, 일화적, 절차적 메모리로 나눕니다. 의미적 메모리는 에이전트가 아는 사실, 선호, 일반 지식에 해당하고, 일화적 메모리는 과거 상호작용, 예시, 행동, 결과처럼 에이전트가 경험한 내용을 가리킵니다. 절차적 메모리는 에이전트가 어떻게 행동해야 하는지를 정하는 지침, 워크플로, 정책, 스킬, 도구 사용 규칙입니다. 특히 출력 형식 오류, 잘못된 도구 호출 순서, 잘못된 하위 에이전트 위임, 톤 규칙 무시 같은 문제는 절차적 수정으로 개선되는 경우가 많다고 설명합니다.
5. 고수준 메모리 루프: 수집, 분석, 업데이트
원문이 제시하는 메모리 루프는 트레이스 수집, 트레이스 분석, 메모리 업데이트라는 세 단계로 구성됩니다. 먼저 트레이스는 사용자 입력, 모델 호출, 도구 입력과 출력, 검색 문서, 라우팅 결정, 지연 시간, 오류, 사용자 피드백을 기록하는 증거 계층입니다. 에이전트는 전통적인 결정론적 소프트웨어와 달리 실제 경로를 보기 전까지 왜 그렇게 행동했는지 알기 어려우므로, 트레이스 검토가 원인 분리에 중요합니다. 다음으로 명시적 피드백, 평가 실패, 반복되는 나쁜 출력, 잘못된 도구 호출, 반복 라우팅 오류 같은 신호를 찾아야 합니다. 마지막으로 그 신호가 지침 명확화, 라우팅 규칙 변경, 사용자 선호 저장, 성공 예시 보존, 재사용할 패턴 기록 중 무엇으로 이어져야 하는지 판단합니다.
6. LangSmith 구현과 실무 설계 원칙
원문은 LangSmith로 이 루프를 구현하는 방식을 설명합니다. Observability는 에이전트가 어떤 경로를 거쳤는지 보여주는 트레이스 저장소 역할을 하고, Engine은 모든 실행을 사람이 직접 확인하지 않아도 반복 이슈와 가능한 원인을 분석해 개선 신호를 표면화합니다. Context Hub는 지침, 도구, 스킬을 버전 관리되는 지속 컨텍스트로 관리해 메모리가 애플리케이션 코드 속 임시 프롬프트 수정에 머물지 않게 합니다. 글은 또한 모든 트레이스 데이터를 메모리로 만들지 말고, 일부는 데이터셋 예시, 평가, 코드 변경, 도구 스키마 수정으로 남겨야 한다고 강조합니다. 메모리 업데이트 후에는 실제 다음 실행이 그 업데이트를 읽도록 캐시 갱신 경로를 마련하고, 중요한 행동은 회귀를 감지할 수 있도록 평가로 보호해야 합니다.
🧾 핵심 주장 / 시사점
- 메모리의 핵심은 기록을 많이 쌓는 것이 아니라, 기록에서 이후 행동을 바꿀 만한 교훈만 골라 검색 가능한 컨텍스트로 바꾸는 것입니다.
- 에이전트 품질 개선은 단순히 프롬프트를 길게 만드는 방식보다, 트레이스 기반으로 문제 원인을 진단하고 절차적 메모리를 정리하는 방식에서 크게 나타날 수 있습니다.
- 메모리 시스템은 저장소만으로 완성되지 않으며, 업데이트된 컨텍스트가 실제 런타임에 다시 읽히는 경로와 회귀를 잡는 평가 체계까지 함께 필요합니다.
✅ 액션 아이템
- 과거 실행 트레이스로부터 유용한 교훈만 추출해 장기 메모리에 저장하고, 동일한 correction 반복을 줄이는 방식으로 지속 컨텍스트를 갱신한다.
- 단기·작업 메모리와 장기 메모리를 분리해, 장기 메모리는 의미적·일화적·절차적 항목으로 구조화해 검색·주입 동선을 점검한다.
- LangSmith의 흐름에 맞춰 실행 트레이스 수집, 반복 문제 신호 분석, 지침·라우팅·스킬·예시·사용자 선호 업데이트를 반복해 다음 실행 반응을 정기적으로 점검한다.
❓ 열린 질문
- 반복 문제와 피드백에서 어느 빈도와 조건을 충족하면 학습 신호를 장기 메모리로 승격할 것인가?
- 트레이스와 로그를 어떤 규칙으로 가공해 검색 가능한 교훈으로 바꾸면 행동을 바꾸는 메모리로 작동할 수 있는가?
- Observability 수집분석이 Engine을 거쳐 Context Hub에 반영될 때 버전 충돌 없이 최신 장기 메모리를 유지할 기준은 무엇인가?