메인 콘텐츠로 건너뛰기

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.kr/llms.txt

Use this file to discover all available pages before exploring further.

ACP Agents

Agent Client Protocol (ACP) 세션을 사용하면 OpenClaw가 외부 코딩 하니스(Pi, Claude Code, Codex, OpenCode, Gemini CLI 등)를 ACP 백엔드 플러그인을 통해 실행할 수 있습니다. 사용자가 자연어로 “Codex로 이거 돌려” 또는 “스레드에서 Claude Code 시작해”라고 하면, OpenClaw는 이를 네이티브 sub-agent 런타임이 아니라 ACP 런타임으로 라우팅해야 합니다.

빠른 운영 흐름

  1. 세션 시작:
    • /acp spawn codex --mode persistent --thread auto
  2. 바인딩된 스레드에서 작업하거나 해당 세션 키를 명시적으로 지정
  3. 런타임 상태 확인:
    • /acp status
  4. 필요 시 옵션 조정:
    • /acp model <provider/model>
    • /acp permissions <profile>
    • /acp timeout <seconds>
  5. 컨텍스트를 버리지 않고 방향만 수정:
    • /acp steer tighten logging and continue
  6. 작업 중지:
    • /acp cancel 또는
    • /acp close

ACP와 sub-agents의 차이

ACP는 외부 하니스 런타임이 필요할 때 사용하고, sub-agent는 OpenClaw 네이티브 위임 실행에 사용합니다.
항목ACP 세션Sub-agent 실행
런타임ACP backend plugin (예: acpx)OpenClaw 네이티브 sub-agent runtime
세션 키agent:<agentId>:acp:<uuid>agent:<agentId>:subagent:<uuid>
주요 명령/acp .../subagents ...
spawn 도구sessions_spawn + runtime:"acp"기본 sessions_spawn
관련 문서: Sub-agents

Thread-bound ACP

채널 어댑터에서 thread binding이 활성화돼 있으면 ACP 세션을 스레드에 바인딩할 수 있습니다.
  • OpenClaw가 스레드를 대상 ACP 세션에 바인딩
  • 후속 메시지는 같은 ACP 세션으로 라우팅
  • 출력도 같은 스레드로 전달
  • unfocus/close/archive/idle-timeout/max-age 만료 시 바인딩 제거
필수 플래그:
  • acp.enabled=true
  • acp.dispatch.enabled=true (기본값)
  • 채널별 ACP thread spawn 플래그
    • Discord: channels.discord.threadBindings.spawnAcpSessions=true
    • Telegram: channels.telegram.threadBindings.spawnAcpSessions=true

채널별 지속형 ACP 바인딩

비일회성 워크플로에는 최상위 bindings[]type: "acp" 항목을 사용합니다.

바인딩 모델

  • bindings[].type="acp": 지속형 ACP 대화 바인딩
  • bindings[].match: 대상 대화 식별
    • Discord 채널/스레드: match.channel="discord" + match.peer.id="<channelOrThreadId>"
    • Telegram 포럼 토픽: match.channel="telegram" + match.peer.id="<chatId>:topic:<topicId>"
  • bindings[].agentId: 소유 OpenClaw agent ID
  • 선택적 ACP override: bindings[].acp
    • mode
    • label
    • cwd
    • backend

에이전트별 런타임 기본값

agents.list[].runtime에 ACP 기본값을 둘 수 있습니다.
  • agents.list[].runtime.type="acp"
  • agents.list[].runtime.acp.agent
  • agents.list[].runtime.acp.backend
  • agents.list[].runtime.acp.mode
  • agents.list[].runtime.acp.cwd
우선순위:
  1. bindings[].acp.*
  2. agents.list[].runtime.acp.*
  3. 전역 acp.*

/acp spawn

명시적 운영 제어가 필요할 때는 채팅에서 /acp spawn을 사용합니다.
/acp spawn codex --mode persistent --thread auto
/acp spawn codex --mode oneshot --thread off
/acp spawn codex --thread here
주요 플래그:
  • --mode persistent|oneshot
  • --thread auto|here|off
  • --cwd <absolute-path>
  • --label <name>

세션 대상 해석

대부분의 /acp 동작은 선택적 세션 대상(session-key, session-id, session-label)을 받습니다. 해석 순서:
  1. 명시적 대상 인수 (/acp steer--session)
  2. 현재 thread binding
  3. 현재 requester session fallback
해결되지 않으면 Unable to resolve session target: ... 오류를 반환합니다.

/acp 명령 모음

  • /acp spawn
  • /acp cancel
  • /acp steer
  • /acp close
  • /acp status
  • /acp set-mode
  • /acp set
  • /acp cwd
  • /acp permissions
  • /acp timeout
  • /acp model
  • /acp reset-options
  • /acp sessions
  • /acp doctor
  • /acp install
/acp status는 런타임 옵션과 가능한 경우 runtime/backend 양쪽 세션 식별자를 보여줍니다.

런타임 옵션 매핑

  • /acp model <id>model
  • /acp permissions <profile>approval_policy
  • /acp timeout <seconds>timeout
  • /acp cwd <path> → cwd override
  • /acp set <key> <value> → 일반 setter
  • /acp reset-options → 대상 세션의 모든 runtime override 제거

acpx 지원

현재 acpx 내장 alias:
  • pi
  • claude
  • codex
  • opencode
  • gemini
  • kimi
일반적인 agentId에는 위 값을 우선 사용하십시오.

기본 설정

{
  acp: {
    enabled: true,
    dispatch: { enabled: true },
    backend: "acpx",
    defaultAgent: "codex",
    allowedAgents: ["pi", "claude", "codex", "opencode", "gemini", "kimi"],
    maxConcurrentSessions: 8,
    stream: {
      coalesceIdleMs: 300,
      maxChunkChars: 1200,
    },
    runtime: {
      ttlMinutes: 120,
    },
  },
}
Discord 예시:
{
  session: {
    threadBindings: {
      enabled: true,
      idleHours: 24,
      maxAgeHours: 0,
    },
  },
  channels: {
    discord: {
      threadBindings: {
        enabled: true,
        spawnAcpSessions: true,
      },
    },
  },
}

플러그인 설정

openclaw plugins install acpx
openclaw config set plugins.entries.acpx.enabled true
개발 중 로컬 설치:
openclaw plugins install ./extensions/acpx
그 다음 /acp doctor로 상태를 확인합니다.

권한 설정

ACP 세션은 비대화형으로 실행되므로 TTY 승인이 없습니다.

permissionMode

  • approve-all
  • approve-reads
  • deny-all

nonInteractivePermissions

  • fail (기본값)
  • deny

샌드박스 호환성

ACP 세션은 현재 OpenClaw sandbox 안이 아니라 호스트 런타임에서 실행됩니다.
  • sandboxed requester session에서는 runtime:"acp" spawn이 차단됩니다.
  • sessions_spawn에서 runtime:"acp"sandbox:"require" 조합은 지원되지 않습니다.
샌드박스 강제가 필요하면 runtime:"subagent"를 사용하십시오.

관련 문서

최근 업데이트 메모

  • resumeSessionId로 기존 ACP 세션을 이어받을 수 있으며, 이력은 session/load로 재생됩니다.
  • /acp sessions는 현재 바인딩되었거나 요청자 세션 기준 session store를 읽습니다.