
AI 에이전트의 '컨텍스트 리셋' 문제를 영속 메모리 계층으로 해결하기
요약
AI 에이전트가 매 세션마다 컨텍스트를 잃는 문제를 해결하기 위해 영속 메모리 계층(SSOT)을 구축하는 아키텍처를 제안합니다. 색인과 상세 파일을 분리하여 컨텍스트 효율을 높이고, 에이전트가 직접 지식을 기록하게 하여 지식의 최신성을 유지하는 것이 핵심입니다.
핵심 포인트
- 에이전트의 컨텍스트 리셋 문제를 해결하기 위한 영속 지식 계층 설계
- 컨텍스트 효율을 위한 '경량 색인'과 '상세 파일'의 분리 구조
- 지식의 성질(방침, 피드백 등)에 따른 체계적인 분류 필요성
- 에이전트가 스스로 지식을 기록하는 Write-back 프로세스 구축
- 지식은 고정된 사실이 아닌 특정 시점의 스냅샷임을 인지해야 함
이것은 16개 매체에 자동 배포하는 콘텐츠 기반의 전체 아키텍처 심층 분석 시리즈 중 하나입니다. 지난번에는 '실행자가 아닌 판단자로서 에이전트를 기동하는 것'에 대해 썼습니다. 이번에는 그 마지막 부분에서 예고했던, 컨텍스트(Context)가 매번 리셋되는 에이전트에 어떻게 일관성을 부여할 것인가를 깊이 있게 다룹니다.
문제: 에이전트는 기동할 때마다 '초면'이 된다
CLI 기반의 AI 에이전트를 정기적으로 기동하는 구성에서는, 1회의 기동이 하나의 독립된 세션입니다. 이전 기동에서 무엇을 배웠는지, 무엇을 결정했는지, 무엇에 실패했는지는 명시적으로 전달하지 않는 한 일절 이어지지 않습니다.
이를 방치하면 실제 운용에서 다음과 같은 일이 발생합니다.
- 지난번에 "이 방법은 실패한다"라고 배웠어야 할 방식을, 다음 날 또 똑같이 시도하여 같은 실패를 반복함
- 사용자로부터 "이것은 하지 말아달라"고 들은 방침을, 며칠 뒤 기동 시 잊어버리고 다시 수행함
- 매체별 세부 제약(글자 수 제한, 금지 표현, API의 함정)을, 매번 처음부터 다시 탐색하며 재발견함
에러로 표면화되지 않기 때문에, 이것이 가장 까다롭습니다. 처리 자체는 정상적으로 완료되므로, 로그를 봐도 이상해 보이지 않습니다. 알아차리는 것은 똑같은 실패가 두 번째로 일어났을 때입니다.
해결책: 「색인 + 상세 파일」 방식의 영속 지식 계층 (SSOT)
대책으로서, 에이전트 외부에 단일 진실 공급원 (SSOT, Single Source of Truth)이 되는 영속 지식 계층을 두고, 기동할 때마다 반드시 읽게 하는 구성을 만들었습니다. 설계의 포인트는 3가지입니다.
1. 색인과 상세를 분리한다
지식을 모두 하나의 거대한 파일에 쓰면, 금방 컨텍스트 길이(Context Length)의 한계에 부딪힙니다. 그래서 **"항상 전건을 읽는 경량 색인"과 "해당할 때만 읽는 상세 파일"**로 나누었습니다.
- 색인: 1건당 1행, "무엇에 관한 지식인가"를 한눈에 알 수 있는 짧은 설명만 포함
- 상세 파일: 배경·이유·구체적인 절차를 1건당 1파일로 유지
에이전트는 기동 시 색인만을 읽고, 이번 작업과 관련이 있을 법한 항목만 상세 파일을 엽니다. 이를 통해 지식의 총량이 늘어나도, 매번 소비되는 컨텍스트는 색인만큼의 분량으로 충분합니다.
2. 지식을 성질에 따라 분류한다
같은 "지식"이라도 성질이 다른 것을 하나의 바구니에 담으면 재사용하기 어려워집니다. 실제로 운용하며 나누어 두길 잘했다고 생각한 분류는 다음과 같습니다.
| 종별 | 내용 | 용도 |
|---|---|---|
| 방침·피드백 | "이것은 하지 마세요", "이 방식이 좋았습니다"와 같은 명시적인 지시 | 동일한 실패/성공 패턴의 재현 |
| ... |
분류마다 "저장해야 하는가" 혹은 "이미 오래된 정보인가"에 대한 판단 기준이 달라지기 때문에, 처음에 이 축을 정해두면 운용이 편해집니다.
3. 「쓰는 것」을 에이전트 자신의 업무로 만든다
읽기만 하는 지식 계층은 금방 진부해집니다. 에이전트가 업무 결과나 새로운 배움을 이 계층에 다시 쓰는(Write-back) 것까지를 에이전트 자신의 태스크에 포함하는 것이 핵심입니다.
사람이 모든 지식을 미리 앞서서 쓰는 것은 불가능하므로, "발생한 일을 그 자리에서 에이전트 스스로 명문화하는" 운용 방식을 취하고 있습니다. 쓰기 타이밍은 주로 두 가지입니다.
- 사용자로부터 명시적인 정정·확인이 왔을 때 (다음에 또 묻지 않도록)
- 예상치 못한 사실이 판명되었을 때 (다음에 같은 조사를 다시 하지 않도록)
빠지기 쉬운 함정
지식은 「점」이 아니라 「시점」의 정보로 다룬다
영속 지식 계층에 쓴 내용은, 쓴 순간의 사실 스냅샷입니다. 코드나 파일 경로를 언급한 지식은 특히, 시간이 지나면 실제 상태와 어긋날 것이라는 전제로 다뤄야 합니다. 에이전트가 지식 계층의 기술을 맹신하여 "이 파일에 이 함수가 있다"라고 단정 지어 움직이면, 리네임(Rename)이나 삭제 이후의 실제 상태와 어긋나 잘못된 제안을 하게 됩니다. 행동으로 이어지는 주장은 실행 전에 실물을 확인한 뒤 사용한다는 규칙을 철저히 하지 않으면, 지식 계층 자체가 잘못된 정보의 발생원이 됩니다.
무엇이든 저장하면 색인이 비대해진다
"코드를 읽으면 알 수 있는 것", "git 로그를 보면 알 수 있는 것"까지 쓰기 시작하면, 색인이 금방 불어나 본래의 목적(컨텍스트 리셋 보완)을 저해합니다. 코드·이력으로부터 재도출할 수 없는 정보만으로 한정하는 것이 장기 운용의 철칙입니다.
중복과 진부화를 방치하지 않는다
같은 내용을 신규 파일로 계속 써 내려가면, 색인이 동일한 테마의 중복 엔트리로 가득 차게 됩니다. 쓰기 전에 "기존 지식을 업데이트해야 하는가, 신규로 추가해야 하는가"를 확인하는 단계를 거치는 것만으로도 이러한 열화는 상당히 방지할 수 있습니다.
요약
매번 컨텍스트가 리셋되는 에이전트에게 일관성을 부여하는 핵심은, 지식을 "에이전트 외부"에 영속화하고, 인덱스(Index)와 상세 내용을 분리하며, 쓰기(Write) 작업까지 에이전트 자신의 업무로 만드는 것이었습니다.
- 인덱스(경량·전체 항목)와 상세 파일(중량·해당 시에만)을 분리하여 컨텍스트 소비를 억제
- 지식을 성격(방침/사실/참조/영구 규칙)에 따라 분류하여 판단 기준을 통일
- "읽기"뿐만 아니라 "다시 쓰기"까지를 에이전트의 책무로 설정
- 지식층의 기술은 "시점의 스냅샷(Snapshot)"이며, 행동 전에는 실물 확인 단계를 거침
이러한 영속 지식층이 존재함으로써, 이전에 다루었던 "판단자로서의 에이전트"는 매번 제로 베이스에서 판단하는 것이 아니라, 과거의 학습 위에 판단을 쌓아 올릴 수 있게 됩니다.
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기