메인 콘텐츠로 건너뛰기

세션 관리

OpenClaw는 대화를 세션으로 구성합니다. 각 메시지는 DM, 그룹 채팅, cron 작업 등 메시지가 들어온 위치를 기준으로 세션으로 라우팅됩니다.

메시지 라우팅 방식

소스동작
다이렉트 메시지기본적으로 공유 세션
그룹 채팅그룹별로 격리
룸/채널룸별로 격리
cron 작업실행마다 새 세션
웹훅hook별로 격리

DM 격리

기본적으로 모든 DM은 연속성을 위해 하나의 세션을 공유합니다. 이는 단일 사용자 구성에서는 괜찮습니다.
여러 사람이 에이전트에 메시지를 보낼 수 있다면 DM 격리를 활성화하세요. 그렇지 않으면 모든 사용자가 동일한 대화 컨텍스트를 공유하게 되며, Alice의 비공개 메시지가 Bob에게 보이게 됩니다.
해결 방법:
{
  session: {
    dmScope: "per-channel-peer", // 채널 + 발신자 기준으로 격리
  },
}
다른 옵션:
  • main (기본값) — 모든 DM이 하나의 세션을 공유
  • per-peer — 발신자별로 격리(채널 간)
  • per-channel-peer — 채널 + 발신자별로 격리(권장)
  • per-account-channel-peer — 계정 + 채널 + 발신자별로 격리
같은 사람이 여러 채널에서 연락하는 경우 session.identityLinks를 사용해 해당 신원을 연결하면 하나의 세션을 공유할 수 있습니다.
openclaw security audit로 구성을 확인하세요.

세션 수명 주기

세션은 만료될 때까지 재사용됩니다.
  • 일일 재설정 (기본값) — gateway 호스트의 현지 시간 오전 4:00에 새 세션 생성
  • 유휴 재설정 (선택 사항) — 일정 기간 활동이 없으면 새 세션 생성. session.reset.idleMinutes 설정
  • 수동 재설정 — 채팅에서 /new 또는 /reset 입력. /new <model>은 모델도 함께 전환
일일 재설정과 유휴 재설정이 모두 구성된 경우 먼저 만료되는 쪽이 적용됩니다.

상태가 저장되는 위치

모든 세션 상태는 gateway가 소유합니다. UI 클라이언트는 세션 데이터를 위해 gateway에 질의합니다.
  • 저장소: ~/.openclaw/agents/<agentId>/sessions/sessions.json
  • 트랜스크립트: ~/.openclaw/agents/<agentId>/sessions/<sessionId>.jsonl

세션 유지 관리

OpenClaw는 시간이 지나면서 세션 저장소 크기를 자동으로 제한합니다. 기본적으로 warn 모드로 실행되며(정리될 내용을 보고만 함), 자동 정리를 하려면 session.maintenance.mode"enforce"로 설정하세요.
{
  session: {
    maintenance: {
      mode: "enforce",
      pruneAfter: "30d",
      maxEntries: 500,
    },
  },
}
openclaw sessions cleanup --dry-run으로 미리 확인하세요.

세션 검사

  • openclaw status — 세션 저장소 경로 및 최근 활동
  • openclaw sessions --json — 모든 세션(--active <minutes>로 필터링)
  • 채팅의 /status — 컨텍스트 사용량, 모델, 토글
  • /context list — 시스템 프롬프트에 포함된 내용

추가 읽기