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
)
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계층으로 기억을 설계