Messages and delivery
조정 대기열
이미 세션 실행이 스트리밍 중일 때 메시지가 도착하면 OpenClaw는 같은 세션에 대해 다른 실행을 시작하는 대신 해당 메시지를 활성 런타임으로 보낼 수 있습니다. 공개 모드는 런타임 중립적이며, Pi와 네이티브 Codex 앱 서버 하네스는 전달 세부 사항을 서로 다르게 구현합니다.
런타임 경계
스티어링은 이미 실행 중인 도구 호출을 중단하지 않습니다. Pi는 모델 경계에서 대기 중인 스티어링 메시지를 확인합니다.
- 어시스턴트가 도구 호출을 요청합니다.
- Pi가 현재 어시스턴트 메시지의 도구 호출 배치를 실행합니다.
- Pi가 턴 종료 이벤트를 내보냅니다.
- Pi가 대기 중인 스티어링 메시지를 비웁니다.
- Pi가 다음 LLM 호출 전에 해당 메시지들을 사용자 메시지로 추가합니다.
이렇게 하면 도구 결과가 이를 요청한 어시스턴트 메시지와 함께 유지되고, 그 다음 다음 모델 호출이 최신 사용자 입력을 볼 수 있습니다.
네이티브 Codex 앱 서버 하네스는 Pi의 내부 스티어링 큐 대신 turn/steer를
노출합니다. OpenClaw는 그곳에서도 같은 모드를 적용합니다.
steer는 구성된 조용한 창 동안 대기 중인 메시지를 배치로 모은 뒤, 도착 순서대로 수집된 모든 사용자 입력을 포함하는 단일turn/steer요청을 보냅니다.queue는 별도의turn/steer요청을 보내 기존 직렬화된 형태를 유지합니다.followup,collect,steer-backlog,interrupt는 활성 Codex 턴 주변의 OpenClaw 소유 큐 동작으로 유지됩니다.
Codex 리뷰와 수동 Compaction 턴은 같은 턴 스티어링을 거부합니다. 런타임이 스티어링을 수락할 수 없으면, 해당 모드가 허용하는 경우 OpenClaw는 후속 큐로 폴백합니다.
이 페이지는 일반 인바운드 메시지에 대한 큐 모드 스티어링을 설명합니다. 명시적
/steer <message> 명령은 스티어링을 참조하세요.
모드
| 모드 | 활성 실행 동작 | 이후 후속 동작 |
|---|---|---|
steer |
다음 런타임 경계에서 대기 중인 모든 스티어링 메시지를 함께 주입합니다. 이것이 기본값입니다. | 스티어링을 사용할 수 없을 때만 후속으로 폴백합니다. |
queue |
기존 한 번에 하나씩 처리하는 스티어링입니다. Pi는 모델 경계마다 대기 중인 메시지 하나를 주입하고, Codex는 별도의 turn/steer 요청을 보냅니다. |
스티어링을 사용할 수 없을 때만 후속으로 폴백합니다. |
steer-backlog |
steer와 동일한 활성 실행 스티어링 동작입니다. |
나중의 후속 턴을 위해 같은 메시지도 유지합니다. |
followup |
현재 실행을 스티어링하지 않습니다. | 대기 중인 메시지를 나중에 실행합니다. |
collect |
현재 실행을 스티어링하지 않습니다. | 디바운스 창 이후 호환되는 대기 메시지를 하나의 이후 턴으로 병합합니다. |
interrupt |
활성 실행을 중단한 뒤 최신 메시지를 시작합니다. | 없음. |
버스트 예시
에이전트가 도구 호출을 실행하는 동안 네 명의 사용자가 메시지를 보내면 다음과 같습니다.
steer: 활성 런타임은 다음 모델 결정을 내리기 전에 네 메시지를 모두 도착 순서대로 받습니다. Pi는 다음 모델 경계에서 이를 비우고, Codex는 하나의 배치된turn/steer로 받습니다.queue: 기존 직렬화된 스티어링입니다. Pi는 대기 중인 메시지를 한 번에 하나씩 주입하고, Codex는 별도의turn/steer요청을 받습니다.collect: OpenClaw는 활성 실행이 끝날 때까지 기다린 뒤, 디바운스 창 이후 호환되는 대기 메시지로 후속 턴을 만듭니다.
범위
스티어링은 항상 현재 활성 세션 실행을 대상으로 합니다. 새 세션을 만들거나, 활성 실행의 도구 정책을 변경하거나, 발신자별로 메시지를 분할하지 않습니다. 다중 사용자 채널에서는 인바운드 프롬프트에 이미 발신자와 라우팅 컨텍스트가 포함되므로, 다음 모델 호출은 각 메시지를 누가 보냈는지 볼 수 있습니다.
OpenClaw가 호환되는 메시지를 병합하고 후속 큐 삭제 정책을 보존할 수 있는
이후 후속 턴을 만들게 하려면 collect를 사용하세요. 이전의 한 번에 하나씩
처리하는 스티어링 동작이 필요할 때만 queue를 사용하세요.
디바운스
messages.queue.debounceMs는 collect, followup, steer-backlog, 그리고
활성 실행 스티어링을 사용할 수 없을 때의 steer 폴백을 포함한 후속 전달에
적용됩니다. Pi의 경우 활성 steer 자체는 디바운스 타이머를 사용하지 않습니다.
Pi가 다음 모델 경계까지 메시지를 자연스럽게 배치 처리하기 때문입니다. 네이티브
Codex 하네스의 경우 OpenClaw는 배치된 turn/steer를 보내기 전 조용한 창으로
동일한 디바운스 값을 사용합니다.