OpenClaw CLI 의 세션 격리 아키텍처: execFileAsync/spawn 이중 실행 모드와 ACP 8 단계 채널바인딩의 통합 원리
OpenClaw CLI 는 execFileAsync 와 spawn 이라는 이중 실행 모드를 통해 서브에이전트의 실시간 응답을 부모 프로세스에 스트리밍하고, 메모리 주소 공간을 완전히 분리하여 결함 격리를 제공한다. ACP 의 8 단계 채널바인딩은 채널 식별부터 종료까지 폐곡선 라우팅 구조를 형성해 단일 장애점을 제거하고, dmScope 를 per-channel-peer 로 설정하면 채널과 발신자를 기준으로 메시지를 이중 격리한다. Gateway 서비스는 named session 을 디스크에 영속 관리해 에이전트 재시작 후에도 대화 맥락을 완전히 복원한다.
이 글의 핵심 주장과 근거
execFileAsync 와 spawn: 이중 실행 모드의 격리 원리
OpenClaw CLI 는 execFileAsync 를 통해 자식 프로세스의 출력을 부모에게 실시간 스트리밍하여 응답을 즉시 전달한다. 이 방식은 비동기적으로 메시지를 교환하지만, 긴 대기 시간이 발생하면 자동으로 spawn 모드로 전환된다. spawn 은 별도의 프로세스 공간을 생성해 메인 CLI 와 메모리 격리를 완전하게 제공한다. 이를 통해 실행 중인 서브에이전트가 비정상 종료되어도 메인 프로세스는 영향을 받지 않으며, LMStudio Gateway 와의 연동에서도 안정적인 스트리밍 파이프라인을 유지한다. 두 모드는 상황별로 자동 전환되며, execFileAsync 는 실시간성이 중요할 때, spawn 은 격리가 최우선일 때 선택된다.
ACP 8 단계 채널바인딩: 결정적 메시지 라우팅 구조
ACP(Agent Client Protocol) 는 PTY 세션 스크래핑 대신 구조화된 프로토콜을 사용한다. 8 단계 채널바인딩은 채널 식별, 키 교환, 세션 수립, 메시지 분류, 우선순위 라우팅, 전송, 확인, 종료의 8 단계를 순차적으로 진행한다. 각 단계는 이전 단계의 컨텍스트를 참조하므로 중간에 메시지가 유실되거나 잘못된 에이전트에게 전달되는 상황을 구조적으로 방지한다. 이 프로토콜은 persistent named session 을 지원해 Cooperative cancel 과 prompt queueing 을 가능하게 하며, 세션 복구 시 이전 히스토리를 기반으로 새로운 채널을 수립한다. 폐곡선 라우팅 구조는 단일 장애점을 제거하고 메시지 흐름의 무결성을 보장한다.
dmScope 이중 격리: 채널과 발신자를 통한 메시지 분리 방지
dmScope 파라미터에 'per-channel-peer' 값을 설정하면 채널과 발신자를 기준으로 각각 독립된 세션 컨텍스트가 생성된다. 이로 인해 다수 사용자가 동시에 DM 을 통해 에이전트에 접근할 때, 한 사용자의 메시지가 다른 사용자에게 유출되지 않는다. ACP 의 채널바인딩과 결합될 때 물리적 격리와 논리적 라우팅이 이중으로 보호되어, 다중 채널 환경에서도 대화 맥락이 분리된다. 이 메커니즘은 특히 Discord 와 같은 플랫폼에서 여러 스레드가 동시에 동작할 때 필수적이다. 각 채널 - 발신자 조합마다 독립된 컨텍스트가 생성되므로, 다중 사용자 환경에서도 안전한 의사소통이 가능하다.
Gateway 서비스와 named session 의 영속성
Gateway 서비스는 named session 을 디스크에 영구적으로 저장한다. 이를 통해 서브에이전트가 종료된 후에도 대화 히스토리와 상태가 보존된다. 작업 재개를 위해 Gateway 는 저장된 세션 정보를 로드해 동일한 named session 이름으로 재수립한다. 이 과정에서 execFileAsync 와 spawn 의 이중 실행 모드가 자동으로 적절한 격리 수준을 선택하며, ACP 채널바인딩은 복구된 세션에서도 정확한 메시지 라우팅을 보장한다. 결과적으로 장기간 복잡한 작업을 수행하는 AI 에이전트는 컨텍스트 손실 없이 지속적인 연산을 이어갈 수 있다. 영속성은 작업 연속성의 핵심 요소로, 중단된 작업도 이전 맥락에서 재개할 수 있게 한다.
이 주제의 최종 원문 탐색하기
이 지식 허브의 가장 깊고 권위 있는 아키텍처 원문과 전체 맥락은 [여기에서 확인하실 수 있습니다](https://brunch.co.kr/@955079bf143b468/8).