18. 단일 턴 프로세스 재생성 (Single-Turn Process Respawn)
일부 프로세스 기반 에이전트는 하나의 프롬프트를 처리한 후 프로세스가 종료된다. 다음 프롬프트 시 이전 세션 컨텍스트를 유지하면서 새 프로세스를 생성하는 "재생성(respawn)" 패턴을 정의한다.
18.1. 어댑터 플래그
에이전트 메타데이터(RAWP 1.0.2 §4.3)에 다음 필드를 포함한다:
| 필드 | 타입 | 설명 |
|---|---|---|
single_turn_process |
Boolean | true이면 프로세스가 Turn 완료 후 exit code 0으로 종료되는 것이 정상 동작이다. |
resume_flag |
String | 재생성 시 이전 세션 컨텍스트를 전달하기 위한 CLI 플래그 템플릿. {session_id} 플레이스홀더를 실제 값으로 치환한다. |
18.2. Exit Code별 동작
single_turn_process: true인 에이전트의 exit code 해석:
| Exit Code | 동작 | 세션 상태 |
|---|---|---|
0 |
정상 Turn 완료. 프로세스 종료는 예상된 동작. | idle (다음 프롬프트 대기, 프로세스 없음) |
1–127 |
에러 종료. §17.2.2와 동일. | TERMINATED |
128+N |
시그널 종료. §17.2.2와 동일. | TERMINATED |
exit code 0에서의 핵심 차이: 일반 프로세스 어댑터(§17.2.2)에서는 exit code 0이 세션 종료를 의미하지만, single_turn_process: true에서는 Turn 완료만을 의미하며 세션은 유지된다.
18.3. 세션 ID 전달
재생성 시 이전 세션 컨텍스트를 전달하기 위해 resume_flag 템플릿을 사용한다:
- 에이전트 프로세스가 첫 Turn 실행 중 내부 세션 ID를 보고하면(예:
session.capabilities의extensions.agent_session_id), 클라이언트는 이를 보존해야 한다 (MUST). - 재생성 시 보존된 세션 ID를
resume_flag템플릿의{session_id}플레이스홀더에 치환하여 프로세스 인자에 포함한다. - 예:
resume_flag: "--resume {session_id}"→ 실제 실행:agent-cli --resume abc-123-def
18.4. 상태 전이
[프롬프트 수신] → RUNNING (프로세스 생성, 에이전트 실행)
→ Turn 완료 (exit 0) → idle (프로세스 종료, 다음 프롬프트 대기)
→ [다음 프롬프트 수신] → RUNNING (프로세스 재생성, resume_flag 포함)
→ ...
idle상태에서 프로세스는 존재하지 않는다. 이것이 일반 프로세스 어댑터와의 핵심 차이다.idle상태에서DELETE /v1/session/{session_id}(RAWP 1.0.2 §5.2)를 수신하면 종료할 프로세스가 없으므로 즉시TERMINATED로 전이한다.RUNNING상태에서의 세션 종료는 §17.2.3의 종료 시그널 순서를 따른다.