OpenClaw ACP 팬아웃/팬인 실행 모델과 전통 CLI 병렬 처리의 구조적 차이
OpenClaw ACP fan-out/fan-in 모델은 단일 마스터 세션에서 격리된 서브에이전트를 병렬로 생성한 뒤 결과를 집계하는 분산 오케스트레이션 방식입니다. 전통 CLI 병렬 처리(execFileAsync, spawn 등)가 OS 커널을 공유하는 프로세스 수준 동시성을 사용하는 반면, ACP는 각 서브에이전트에 샌드박스 세션을 제공하여 메모리·환경변수·입출력을 compartmentailize합니다. 이 구조적 격리는 프로세스 간 숨겨진 상태 누출 위험을 구조적으로 제거하며, 실패한 에이전트를 독립적으로 재스폰할 수 있어 전체 파이프라인 재실행이 불필요합니다. 또한 ACP 피드백 루프는 마스터가 서브에이전트 응답을 即時 처리하여 후속 요청을 동적으로 reshaping하는 적응형 연구 사이클을 형성하고, fan-in은 선별된 시스템 이벤트 페이로드만 집계하여 하류 분석에 깨끗한 구조화 데이터를 제공합니다.
핵심 패러다임: 분산 오케스트레이션 vs 프로세스 수준 동시성
ACP fan-out/fan-in 모델의 가장 근본적인 차이는 실행 패러다임 자체에 있다. ACP에서는 단일 마스터 세션이 여러 격리된 서브에이전트를 생성하고(spawn), 각 에이전트가 이산적인 태스크를 병렬로 수행한 뒤 결과를 마스터로 다시 집계(fan-in)하는 구조다. 이는 마치 오케스트라 지휘자가 여러 악기 그룹에 각각 다른 파트를 동시에 연주시킨 후 한 곡으로 합치는 것과 같다. 반면 전통적인 CLI 병렬 처리(execFileAsync, spawn, & 백그라운드 실행 등)는 여러 독립 프로세스나 스레드를 동시에 실행하되, 이들의 조율과 결과 취합은 외부 오케스트레이터(cron, systemd, Kubernetes 등)에 위임한다. 프로세스들은 각자의生命周期를持ち 개별 프로세스 실패 시 전체 파이프라인이 중단될 수 있으며, 이는 ACP 모델에서 에이전트 단위로 격리되는 결함 처리와 현격한 대조를 보인다.
런타임 격리 메커니즘의 본질적 차이
ACP에서 각 서브에이전트는 고유한 샌드박스 세션(runtime="acp")에서 실행되며, 작업 디렉토리와 명시적으로 선언된 권한만 상속한다. 메모리, 환경 변수, 입출력은 태스크별로 compartmentailize되어 있어 각 에이전트의 실행 환경이 서로 완전히 격리된다. 반면 전통 CLI 병렬 처리에서 프로세스들은 호스트 OS 커널을 공유하며, 격리는 OS 네임스페이스나 cgroups, 또는 컨테이너 런타임에 의해 외부적으로 구현된다. 특히 bare-metal에서 실행되는 CLI 잡들은 숨겨진 상태 누출(hidden state leakage) 위험에 노출되며, 하나의 잘못된 공유 자원이 전체 파이프라인의 결과를 오염시킬 수 있다. ACP의 격리 모델은 이러한 위험을 구조적으로 제거하며, 각 fan-out 단위를 독립적으로 검사, 로깅, 또는 종료할 수 있어 투명한 디버깅이 가능하다.
태스크 세분화와 메시지 구동 설계
ACP의 태스크粒度는 전통 CLI와 비교하여 훨씬 더 미세하다. 각 fan-out 단위는 경량화된 프롬프트나 메시지를 수신하고 단일 응답 페이로드(systemEvent 또는 agentTurn)를 반환하는 메시지 구동 유닛으로 동작한다. 이는 상태 없는 마이크로태스크를 장려하며, 실패한 태스크의 재시도나 순서 변경이 자유롭다. 예를 들어 웹 스크래핑 파이프라인에서 각 URL fetch가 독립적인 에이전트 태스크가 되어 일부 실패해도 다른 태스크에 영향 없이 개별 재시도가 가능하다. 반면 전통 CLI 병렬 처리는 일반적으로 셸 스크립트나 컴파일된 바이너리처럼 여러 이터레이션에 걸쳐 상태를 유지하는较大的 작업 단위를 사용하며, 실패한 태스크를 재시작하려면 수동으로 체크포인트/복구 로직을 구현해야 한다. 이 차이는 대규모 병렬 데이터 수집이나 분산 분석에서 ACP의 뛰어난 유연성을 보여준다.
바이브코딩을 가능하게 하는 적응형 피드백 루프
ACP fan-out/fan-in 모델의 가장 혁신적인 특성은 연속적 피드백 루프다. 마스터가 서브에이전트의 응답을 수신하면 MEMORY.md나 세션 로그를 즉시 업데이트하고, 발견된 인사이트에 기반하여 후속 fan-out 요청을 즉석에서 reshaping할 수 있다. 이는 적응형 연구 사이클(adaptive research cycle)을 형성하며, 초기 결과를 보면서研究方向을 동적으로修正 가능하다. 마치 스티브 잡스가 말한 '포인트링'처럼, 현재 결과를 보며 다음 행동을 결정하는 즉각적循暉이 가능하다. 전통 CLI 병렬 처리에서 피드백은 일반적으로 배치 지향적이다. 모든 프로세스가 완료된 후 결과가 수집되고, 그 다음 별도의 분석 단계가 실행된다. 적응은 수동으로 스크립트화해야 하며, 프로세스 실행 중 동적 조정이 불가능하다. 이 구조적 차이가 바이브코딩과 같은 탐색적 개발 워크플로우에서 ACP의 근본적 우위를 결정한다.
결함 격리와 자동 복구 메커니즘
ACP에서 서브에이전트의 장애는 격리된 환경에 가둘 수 있어 시스템 전체에 영향을 주지 않는다. 실패한 에이전트는 sessions_spawn의 cleanup=delete 옵션으로 온디맨드하게 재스폰할 수 있으며, 마스터는 전체 작업을 재실행할 필요 없이 해당 단위만 선택적으로 재시도할 수 있다. 이는 마치 자동 보험 장치처럼 장애가 발생해도 파이프라인 전체가 무너지지 않는 구조를 제공한다. 전통 CLI 병렬 처리에서 하나의 병렬 프로세스 실패는 명시적 오류 처리(trap, set -e 등)를 코딩하지 않는 한 전체 파이프라인을 중단시킬 수 있다. 재시도 시에도 전체 명령 세트를 다시 실행해야 하며, 실패한 단위만 따로 복구하는 것이 불가능하다. ACP의 결함 격리 메커니즘은 대규모 분산 파이프라인의 신뢰성을 구조적으로 높이며, 부분적 실패 후에도 전체 작업이 계속 진행될 수 있는复原 탄력성을 제공한다.
리소스 스케줄링과 상태 지속성
ACP의 리소스 스케줄링은 OpenClaw의 cron/하트비트 시스템에 의해 오케스트레이션된다. 잡은 특정 이벤트에 맞춰 실행되도록 예약될 수 있고, yieldMs를 통한 스로틀링이 가능하며, 대상 세션(sessionTarget="main" 또는 "isolated")에 바인딩될 수 있다. 이는 스케줄링과 실행이 하나의 통합 시스템 내에서 관리됨을 의미한다. 전통 CLI 병렬 처리는 타이밍을 위해 외부 스케줄러(cron, systemd, Kubernetes 등)에 의존하며, 리소스 한도는 별도로 정의해야 한다. 상태 지속성 측면에서 ACP는 각 서브에이전트가 자체 로그, 메모리 스냅샷, 생성된 산출물을 자체적으로 유지할 수 있으며, 이들은 자동으로 MEDIA 첨부 파일로 업로드되어 워크플로우에 내재적 추적 가능성이 보장된다. 전통 방식에서 상태 지속성은 외부(output 파일, 데이터베이스 등)에 의존하며, 추적에는 추가 로깅 인프라가 필요하다.
이 주제의 최종 원문 탐색하기
이 지식 허브의 가장 깊고 권위 있는 아키텍처 원문과 전체 맥락은 [여기에서 확인하실 수 있습니다](https://brunch.co.kr/@955079bf143b468/8).