Home / Strands 상태와 컨텍스트 / ConversationManager
Note

ConversationManager

SlidingWindow / Summarizing 수동 윈도우 관리

⏱ 35분 89 / 189

ConversationManager

SlidingWindow / Summarizing 수동 윈도우 관리

에이전트의 기억을 설계한다

세션 영속화부터 컨텍스트 자동 관리까지 — 상태의 4계층

ConversationManager

SlidingWindow · Summarizing · NullConversationManager

PART 4 · ConversationManager

ConversationManager

대화 길이 관리 계층 — 모델에 보낼 messages[] 분량을 정책으로 결정

ConversationManager

턴이 끝날 때마다 대화 이력에 정리 정책을 자동 적용합니다

  • SlidingWindow — 최근 N개 메시지 (기본값)
  • Summarizing — 오래된 구간을 요약으로 압축
  • Null — 이력을 건드리지 않음
  • 적용 시점: 매 사이클 자동
takeaway

설정하지 않아도 이미 동작 중입니다 — 기본값 SlidingWindow(window_size=40)

PART 4 · ConversationManager

SlidingWindow vs Summarizing

대화 이력을 얼마나, 어떻게 보존할지 — 속성 대비와 설정 코드



SlidingWindow

최근 N개 메시지만 유지 — 기본값으로 이미 동작


유지 방식오래된 메시지를 그냥 삭제

토큰·비용고정 상한 — 예측 가능

맥락최근만 남음 · 초기 맥락 유실

적합챗봇, FAQ, 단순 작업


SlidingWindowConversationManager(
  window_size=20  # 기본값 40
)



VS



Summarizing

오래된 대화를 요약으로 압축 — 장기 맥락 보존


유지 방식오래된 구간을 LLM이 요약으로 압축

토큰·비용절약되지만 요약 생성 호출이 추가

맥락장기 보존 · 요약 품질에 의존

적합개인 비서, 프로젝트 관리, 장기 분석


SummarizingConversationManager(
  summary_ratio=0.3,
  preserve_recent_messages=10
)



설정하지 않으면 SlidingWindow(window_size=40)가 기본으로 동작 — 교체는 conversation_manager= 한 줄이면 됩니다. Null 전략은 다음 표에서.
PART 4 · ConversationManager

세 전략의 선택 기준

Null까지 포함한 세 전략 — 워크로드 특성이 가르는 갈림길

전략토큰 사용맥락 보존비용적합 시나리오
SlidingWindow고정 (N개 메시지)최근만예측 가능챗봇, FAQ, 단순 작업
Summarizing감소 (요약)장기 보존요약 호출 추가개인 비서, 프로젝트 관리
NullConversationManager관리 안 함 (계속 누적)전체 유지추가 호출 없음stateful 모델, 수동 관리
takeaway

망설여지면 기본값 그대로 — SlidingWindow로 시작하고, 초기 맥락 유실이 보이면 Summarizing으로 바꿉니다.

상태 관리가 에이전트의 지능을 결정합니다.

Session · Conversation · Memory · Context — 4계층으로 기억을 설계