4.5 KiB
4.5 KiB
2026-03-27
OpenClaw 프로젝트 아키텍처 분석 (tmp/openclaw-src)
TL;DR
이 repo는 OpenClaw 자체 (github.com/openclaw/openclaw)이며, "OpenCode"라는 별도 프로젝트는 없음.
ACPX는 ACP(Agent Client Protocol) 브릿지 플러그인.
1. 프로젝트란?
OpenClaw — 개인 AI 어시스턴트 플랫폼. 멀티채널(WhatsApp/Telegram/Discord 등) + 임베디드 AI 에이전트 런타임 + ACP 프로토콜 브릿지를 하나의 게이트웨이(WS 포트 18789)에 통합.
핵심 구성:
- Gateway (
src/infra/): WS 控制-plane. 세션 관리, 라우팅, 도구 실행, 채널 연결 - Pi Agent (
src/agents/pi-embedded-runner/): 내장 에이전트 런타임. OpenAI 호환 API로 모델 호출. 실제 Labor 수행. - ACP Bridge (
openclaw acp): IDE 연동을 위한 ACP 프로토콜 CLI 브릿지 (stdio/NDJSON) - ACPX Plugin (
extensions/acpx/): 외부 ACP 에이전트(Codex, Claude Code, Gemini 등)를sessions_spawn(runtime="acp")로 스폰하기 위한 플러그인. 별도 npm 패키지acpx를 서브프로세스로 실행. - Channels (
src/telegram/,src/discord/등): 각 메신저 플랫폼별 통합
2. 스폰(Subagent) 메커니즘 비교
sessions_spawn(runtime="subagent") (내장)
- Pi Agent 자식 세션을 Gateway 프로세스 내에서 실행
- 부모와 동일한 도구/워크스페이스 상속
- 가볍고 빠름, 부모와 직접 WS 통신
- OpenClaw의 기본 워커 스폰 방식
sessions_spawn(runtime="acp") (ACPX)
- ACPX Plugin →
acpx서브프로세스 실행 (npm 패키지acpx) - ACPX → 외부 ACP 에이전트(Codex/Claude Code 등)와 NDJSON 통신
- 부모와 IPC 구조: Gateway ↔ ACPX Plugin ↔
acpx바이너리 ↔ 외부 ACP 에이전트 - 주 용도: IDE (Zed 등) 연동 + 외부 ACP 에이전트 스폰
- 오버헤드가 크고, 주 용도가 IDE 연동
3. Strengths / Weaknesses
Strengths (OpenClaw 전체)
- 멀티채널 통합이 매우 강력 (20+ 플랫폼)
- ACP 프로토콜로 IDE 연동 표준화
- 내장 Pi Agent로 로컬 모델 직접 호출 가능
sessions_spawn으로 멀티에이전트 오케스트라 지원- sandbox 모드 (Docker) 지원
Weaknesses
- ACPX는 IDE 연동용. 백그라운드 워커로는 오버엔지니어링
runtime="acp"스폰은 부모 ↔ 자식 통신 경로가 깊음 (Gateway → ACPX plugin → acpx binary → 외부 ACP 에이전트)- 내장 Pi Agent가 ACP 프로토콜을 직접 이해하지 않음 (ACP 브릿지가 별도)
- 노드 22+ 필요
4. 현재 워크스페이스와의 관계
현재 지웅의 운영 모델:
- Codex (gpt-5.4) = 오케스트라/검증
- 로컬 LLM (qwen3-8b, qwen2.5-coder-32b, deepseek-r1) = 실제 노동
- ACPX = 현재 acpx.json에 등록된 MCP 서버 관리 (KIS MCP, Playwright, SSH Terminal)
현재 sessions_spawn 사용 패턴: 없음 (MEMORY.md에 없음)
5. 결론: ACPX를 서브에이전트 워커로 쓸 것인가?
❌ ACPX(runtime="acp")를 워커로 쓸 이유 없음
- 주 용도가 IDE 연동 → 백그라운드 워커로 부적합
- 오버헤드 큼 (최소 2개 프로세스 추가)
- 현재 워크스페이스는 IDE 연동이 아닌 CLI/Telegram 워크플로우
- 로컬 LLM으로 충분히 노동 가능
✅ runtime="subagent" (내장 Pi Agent) 활용 고려
- 현재架构에 자연스럽게 통합
- Gateway WS로 부모-자식 통신 (프로세스 내)
- 로컬 모델(qwen2.5-coder 등)과 직접 연결 가능
- 이미 Pi Agent가 워크스페이스 파일 시스템/도구 접근 가능
ACP/OpenRouter 경유 여부
- 불필요: 로컬 LLM (llamacpp-8080~8083)이 동일 머신에서 직접 호출 가능
- Gateway → ACP 브릿지 경유는 IDE 연동에서만 의미 있음
- Codex가 오케스트라 역할이면, ACPX 브릿지 없이
sessions_spawn(runtime="subagent")로 충분
6. 설정 참고
ACPX Plugin 활성화 (이미 설정됨):
~/.openclaw/openclaw.json에plugins.entries.acpx.enabled = trueextensions/acpx가 설치됨acpxnpm 패키지 (npm install --omit=dev acpx@0.1.16)- ACPX의
sessions_spawn(runtime="acp")는agentId필요 (MEMORY.md의acp.defaultAgent설정)
내장 Subagent 스폰 (설정 불필요, 이미 내장):
sessions_spawn(runtime="subagent")는 Gateway 내장 기능agents.defaults.subagent.*에서 maxDepth, maxChildren 등 설정 가능agents.defaults.model으로 자식 세션 기본 모델 오버라이드 가능