State and Memory Control

상태와 기억 제어

협업과 조율OCLS LAYER

단기 상태와 장기 기억을 분리해 정보 누수와 혼선을 방지한다.


Context

에이전트는 실행 중 상태(현재 단계, 임시 변수)와 장기 기억(학습된 패턴, 사용자 선호, 과거 결과)을 모두 다룬다. 이 둘을 구분하지 않으면 세션이 끝나도 임시 상태가 남거나, 중요한 기억이 세션과 함께 사라진다.

Problem

단기 상태와 장기 기억의 경계가 없으면 오래된 세션 상태가 새 세션에 누수되어 잘못된 판단을 유발한다. 반대로 유용한 학습 결과가 세션 종료 시 소실되면 시스템이 같은 실수를 반복한다. 멀티 에이전트 환경에서는 공유 상태의 충돌까지 관리해야 한다.

Forces

  • 모든 것을 기억하면 검색 비용과 노이즈가 증가하고, 선택적으로 기억하면 중요한 정보를 놓칠 수 있다.
  • 상태를 중앙에서 관리하면 일관성이 높지만 병목이 되고, 분산하면 동기화 문제가 생긴다.
  • 기억의 유효기간을 설정하면 관리가 쉽지만, 예상보다 오래 필요한 기억이 사라질 수 있다.

Solution

상태를 세션 범위의 단기 상태와 시스템 범위의 장기 기억으로 명확히 분리한다. 단기 상태는 세션 종료 시 자동 정리하고, 장기 기억으로 승격할 항목은 명시적 기준(반복 패턴, 품질 개선 기여 등)에 따라 결정한다. 멀티 에이전트 환경에서는 공유 기억의 읽기/쓰기 권한을 에이전트별로 정의한다. 장기 실행 에이전트에서는 compaction(압축) 메커니즘이 필수다. Anthropic의 [Effective Context Engineering for AI Agents]가 제시한 compaction 패턴은 컨텍스트 윈도우 한계에 도달하면 대화 내용을 요약해 새 윈도우를 초기화하되, 아키텍처 결정·미해결 버그·구현 세부사항을 보존하고 중복 도구 출력은 제거하는 방식이다. 또한 에이전트가 컨텍스트 외부에 구조화된 노트를 작성하고 나중에 참조하는 structured note-taking 패턴으로 수천 단계에 걸친 정확한 상태 추적이 가능하다.

판단 질문

무엇을 세션에 두고, 무엇을 시스템 자산으로 승격할 것인가?

적용 시나리오

예시 시나리오 — 본 페이지의 수치와 기업명은 패턴 설명을 위한 가상 사례이며, 실측 데이터가 아닙니다.

고객 A가 '배송 지연' 문의 후 같은 세션에서 '결제 수단 변경'을 이어서 물어본다. 단기 상태(현재 대화 맥락, 직전 응답 결과)는 세션 안에서만 유효하다. 반면 '이 고객은 3회 연속 배송 지연을 경험했고, 이전에 10% 할인 쿠폰을 받았다'는 정보는 장기 기억으로 승격해 Knowledge Agent가 관리한다. Response Agent는 장기 기억을 읽을 수 있지만 쓸 수 없고, 승격 요청만 할 수 있다. QA Agent가 승격 기준(3회 이상 반복, 품질 개선 기여)을 검증한 뒤 장기 기억에 반영한다.

이렇게 하면 무너진다

상태와 기억을 구분하지 않으면 이전 세션의 '배송 지연' 맥락이 새 세션의 '결제 변경' 응답에 누수되어 '배송이 지연되어 죄송합니다'로 시작하는 부적절한 응답이 나온다. 반대로 세션 종료 시 모든 정보를 삭제하면 같은 고객이 같은 문제로 재문의할 때 이전 대응 이력을 참고하지 못해 동일한 해결책을 반복 제안한다.

구현 패턴 연결

  • Session Store / Vector Memory

주로 인프라 설계 영역이다. 세션 스토어(단기)와 벡터 DB/지식 베이스(장기)의 분리, 읽기/쓰기 권한 제어가 핵심 구현 과제.

Academic References

  • The Rise of Agentic AI: Architectures, Taxonomies, and Evaluation Metrics — Future Internet (MDPI)

Related Patterns

  • Context Routing각 주체에 필요한 정보만 전달되도록 정보 흐름을 설계한다.
  • Evaluation and Guardrails허용되는 판단과 위험한 판단을 평가 기준과 안전 규칙으로 구분한다.