Sessions and memory

세션 정리

세션 정리는 각 LLM 호출 전에 컨텍스트에서 오래된 도구 결과를 잘라냅니다. 일반 대화 텍스트는 다시 쓰지 않고도, 누적된 도구 출력(exec 결과, 파일 읽기, 검색 결과)으로 인한 컨텍스트 비대를 줄입니다.

중요한 이유

긴 세션에서는 컨텍스트 윈도우를 부풀리는 도구 출력이 쌓입니다. 이로 인해 비용이 증가하고 Compaction이 필요 이상으로 빨리 발생할 수 있습니다.

정리는 특히 Anthropic 프롬프트 캐싱에서 유용합니다. 캐시 TTL이 만료되면 다음 요청이 전체 프롬프트를 다시 캐시합니다. 정리는 캐시 쓰기 크기를 줄여 비용을 직접 낮춥니다.

작동 방식

  1. 캐시 TTL이 만료될 때까지 기다립니다(기본값 5분).
  2. 일반 정리를 위해 오래된 도구 결과를 찾습니다(대화 텍스트는 그대로 둡니다).
  3. 크기가 큰 결과는 soft-trim합니다. 앞부분과 뒷부분을 남기고 ...를 삽입합니다.
  4. 나머지는 hard-clear합니다. 플레이스홀더로 대체합니다.
  5. TTL을 재설정하여 후속 요청이 새 캐시를 재사용하도록 합니다.

레거시 이미지 정리

OpenClaw는 또한 기록에 원시 이미지 블록이나 프롬프트 hydration 미디어 마커가 지속 저장된 세션에 대해 별도의 멱등 replay 뷰를 구성합니다.

  • 가장 최근의 완료된 3개 턴은 바이트 단위 그대로 보존하여, 최근 후속 요청에 대한 프롬프트 캐시 접두사가 안정적으로 유지되도록 합니다.
  • replay 뷰에서는 user 또는 toolResult 기록의 오래된 이미 처리된 이미지 블록을 [image data removed - already processed by model]로 대체할 수 있습니다.
  • [media attached: ...], [Image: source: ...], media://inbound/... 같은 오래된 텍스트 미디어 참조는 [media reference removed - already processed by model]로 대체할 수 있습니다. 현재 턴의 첨부 파일 마커는 그대로 유지되므로 비전 모델이 새 이미지를 계속 hydration할 수 있습니다.
  • 원시 세션 transcript는 다시 쓰지 않으므로 기록 뷰어는 여전히 원래 메시지 항목과 이미지들을 렌더링할 수 있습니다.
  • 이는 일반 캐시 TTL 정리와는 별개입니다. 이후 턴에서 반복되는 이미지 페이로드나 오래된 미디어 참조가 프롬프트 캐시를 깨뜨리는 일을 막기 위해 존재합니다.

스마트 기본값

OpenClaw는 Anthropic 프로필에 대해 자동으로 정리를 활성화합니다.

프로필 유형 정리 활성화 Heartbeat
Anthropic OAuth/토큰 인증(Claude CLI 재사용 포함) 1시간
API 키 30분

명시적인 값을 설정하면 OpenClaw는 이를 override하지 않습니다.

활성화 또는 비활성화

비-Anthropic provider에서는 정리가 기본적으로 꺼져 있습니다. 활성화하려면:

{
  agents: {
    defaults: {
      contextPruning: { mode: "cache-ttl", ttl: "5m" },
    },
  },
}

비활성화하려면 mode: "off"로 설정하세요.

정리와 Compaction 비교

정리 Compaction
무엇을 도구 결과를 잘라냄 대화를 요약함
저장됨? 아니요(요청별) 예(transcript에 저장)
범위 도구 결과만 전체 대화

두 기능은 서로 보완적입니다. 정리는 Compaction 사이클 사이에서 도구 출력을 가볍게 유지합니다.

추가 읽을거리

관련 항목