Skip to content

OpenClaw는 에이전트에게 세션 간에 작업하고, 상태를 점검하며, 서브에이전트(sub-agent)를 오케스트레이션할 수 있는 도구들을 제공합니다.

사용 가능한 도구

도구역할
sessions_list선택적 필터(kind, label, agent, recency, preview)로 세션 목록을 조회
sessions_history특정 세션의 transcript를 읽기
sessions_send다른 세션으로 메시지를 보내고 선택적으로 대기
sessions_spawn백그라운드 작업용으로 격리된 서브에이전트 세션을 스폰
sessions_yield현재 턴을 종료하고 후속(follow-up) 서브에이전트 결과를 대기
subagents이 세션에서 스폰된 서브에이전트 목록 조회, 유도(steer), 종료(kill)
session_status/status 스타일 카드를 표시하고, 선택적으로 세션별 모델 오버라이드를 설정

세션 목록 조회 및 읽기

sessions_list는 세션의 key, agentId, kind, channel, model, token 카운트, timestamp와 함께 세션들을 반환합니다. kind(main, group, cron, hook, node), 정확한 label, 정확한 agentId, 검색 텍스트, 또는 recency (activeMinutes)로 필터링할 수 있습니다. 메일박스 스타일의 triage가 필요할 때는 가시성 범위가 적용된(visibility-scoped) 파생 제목, last-message 미리보기 스니펫, 또는 각 행에 경계가 정해진 최근 메시지를 요청할 수도 있습니다. 파생 제목과 미리보기는 설정된 세션 도구 가시성 정책(visibility policy) 하에서 호출자가 이미 볼 수 있는 세션에 대해서만 생성되므로, 무관한 세션은 여전히 숨겨진 상태를 유지합니다.

sessions_history는 특정 세션의 대화 transcript를 가져옵니다. 기본적으로 도구 결과는 제외됩니다 -- 이를 보려면 includeTools: true를 전달하세요. 반환되는 뷰는 의도적으로 경계가 있고 안전성 필터가 적용됩니다:

  • 회상(recall) 전에 assistant 텍스트가 정규화됩니다:
    • thinking 태그가 제거됩니다
    • <relevant-memories> / <relevant_memories> scaffolding 블록이 제거됩니다
    • <tool_call>...</tool_call>, <function_call>...</function_call>, <tool_calls>...</tool_calls>, <function_calls>...</function_calls> 같은 plain-text 도구 호출 XML 페이로드 블록이 제거되며, 깨끗하게 닫히지 않은 잘린(truncated) 페이로드도 포함됩니다
    • [Tool Call: ...], [Tool Result ...], [Historical context ...] 같은 다운그레이드된 tool-call/result scaffolding도 제거됩니다
    • <|assistant|> 같은 leaked 모델 control token, 기타 ASCII <|...|> token, full-width <|...|> 변형이 제거됩니다
    • <invoke ...> / </minimax:tool_call> 같은 malformed MiniMax tool-call XML이 제거됩니다
  • credential/token처럼 보이는 텍스트는 반환 전에 편집(redact)됩니다
  • 긴 텍스트 블록은 잘립니다(truncate)
  • 매우 큰 히스토리는 오래된 행이 드롭되거나, 지나치게 큰 행은 [sessions_history omitted: message too large]로 대체될 수 있습니다
  • 도구는 truncated, droppedMessages, contentTruncated, contentRedacted, bytes 같은 요약 플래그를 보고합니다

두 도구 모두 세션 키(예: "main")나 이전 list 호출에서 얻은 세션 ID를 받습니다.

바이트 단위로 정확한 transcript가 필요하다면, sessions_history를 raw dump로 취급하는 대신 디스크에 있는 transcript 파일을 직접 확인하세요.

교차 세션 메시지 전송

sessions_send는 다른 세션에 메시지를 전달하고 선택적으로 응답을 대기합니다:

  • Fire-and-forget: timeoutSeconds: 0으로 설정하면 큐잉 후 즉시 반환됩니다.
  • 응답 대기: timeout을 설정하면 응답을 인라인으로 받습니다.

대상 세션이 응답한 후, OpenClaw는 reply-back 루프를 실행할 수 있는데 여기서 에이전트들이 서로 메시지를 주고받을 수 있습니다(최대 5턴). 대상 에이전트는 REPLY_SKIP으로 응답하여 조기에 멈출 수 있습니다.

상태 및 오케스트레이션 헬퍼

session_status는 현재 세션이나 다른 보이는(visible) 세션에 대한 경량 /status 등가 도구입니다. 사용량, 시간, 모델/런타임 상태, 연결된 백그라운드 태스크 컨텍스트(있는 경우)를 보고합니다. /status처럼, 최신 transcript의 usage 항목에서 희박한 token/cache 카운터를 backfill할 수 있으며, model=default는 세션별 오버라이드를 해제합니다.

sessions_yield는 다음 메시지가 대기 중인 후속(follow-up) 이벤트가 될 수 있도록 현재 턴을 의도적으로 종료합니다. 폴링 루프를 만드는 대신 완료 결과를 다음 메시지로 받고 싶을 때, 서브에이전트를 스폰한 후에 사용하세요.

subagents는 이미 스폰된 OpenClaw 서브에이전트들을 위한 control-plane 헬퍼입니다. 지원하는 작업:

  • action: "list": active/recent 실행을 점검
  • action: "steer": 실행 중인 자식에게 후속 가이드를 보냄
  • action: "kill": 하나의 자식 또는 all을 중단

서브에이전트 스폰

sessions_spawn은 기본적으로 백그라운드 작업용 격리 세션을 생성합니다. 항상 non-blocking이며 -- runIdchildSessionKey를 반환하며 즉시 리턴됩니다.

주요 옵션:

  • runtime: "subagent"(기본값) 또는 외부 harness 에이전트용 "acp".
  • 자식 세션을 위한 modelthinking 오버라이드.
  • thread: true: 스폰을 채팅 스레드(Discord, Slack 등)에 바인딩합니다.
  • sandbox: "require": 자식에게 샌드박싱을 강제합니다.
  • context: "fork": 네이티브 서브에이전트가 현재 요청자(requester) transcript를 필요로 할 때 사용합니다. 이를 생략하거나 context: "isolated"를 사용하면 깨끗한 자식이 생성됩니다.

기본 leaf 서브에이전트는 세션 도구를 받지 않습니다. maxSpawnDepth >= 2인 경우, depth-1 orchestrator 서브에이전트는 자신의 자식들을 관리할 수 있도록 sessions_spawn, subagents, sessions_list, sessions_history를 추가로 받습니다. Leaf 실행은 여전히 재귀적 오케스트레이션 도구를 받지 않습니다.

완료 후에는 announce 단계가 결과를 요청자의 채널에 게시합니다. 완료 전달은 가능한 경우 바인딩된 스레드/토픽 라우팅을 보존하며, 완료 origin이 채널만 식별할 수 있는 경우에도 OpenClaw는 요청자 세션에 저장된 경로(lastChannel / lastTo)를 재사용하여 직접 전달할 수 있습니다.

ACP 관련 동작은 ACP Agents를 참고하세요.

가시성 (Visibility)

세션 도구는 에이전트가 볼 수 있는 범위를 제한하도록 스코프가 지정됩니다:

레벨범위
self현재 세션만
tree현재 세션 + 스폰된 서브에이전트
agent이 에이전트의 모든 세션
all모든 세션(설정된 경우 교차 에이전트)

기본값은 tree입니다. 샌드박스된 세션은 설정과 무관하게 tree로 clamp됩니다.

추가로 읽을거리

관련 문서