Skip to main content
Сеансы Agent Client Protocol (ACP) позволяют OpenClaw запускать внешние среды для программирования (Claude Code, Cursor, Copilot, Droid, OpenClaw ACP, OpenCode, Gemini CLI и другие поддерживаемые ACPX среды) через серверный плагин ACP. Каждый запуск отслеживается как фоновая задача.
ACP — это путь для внешних сред, а не путь Codex по умолчанию. Нативный плагин сервера приложений Codex отвечает за элементы управления /codex ... и встроенную среду выполнения openai/gpt-* по умолчанию для ходов агента; ACP отвечает за элементы управления /acp ... и сеансы sessions_spawn({ runtime: "acp" }).Чтобы Codex или Claude Code могли подключаться как внешний клиент MCP напрямую к существующим обсуждениям каналов OpenClaw, используйте openclaw mcp serve вместо ACP.

Какая страница мне нужна?

Работает ли это сразу после установки?

Да, после установки официального плагина среды выполнения ACP:
В рабочих копиях исходного кода можно использовать локальный плагин рабочего пространства extensions/acpx после pnpm install. Выполните /acp doctor, чтобы проверить готовность. OpenClaw сообщает агентам о запуске ACP, только когда ACP действительно можно использовать: ACP должен быть включён, диспетчеризация не должна быть отключена, текущий сеанс не должен блокироваться песочницей, а серверная часть среды выполнения должна быть загружена и исправна. Если какое-либо условие не выполнено, Skills ACP и руководство по ACP для sessions_spawn остаются скрытыми, чтобы агент не предлагал недоступную серверную часть.
  • Если задан plugins.allow, он представляет собой ограничительный перечень плагинов и должен включать acpx, иначе установленная серверная часть ACP намеренно блокируется (/acp doctor сообщает об отсутствующей записи в списке разрешённых).
  • Адаптер Codex ACP поставляется с плагином acpx и по возможности запускается локально.
  • Codex ACP работает с изолированным CODEX_HOME. OpenClaw копирует доверенные записи о доверии к проектам и безопасную конфигурацию маршрутизации моделей и поставщиков (model, model_provider, model_reasoning_effort, sandbox_mode и безопасные поля model_providers.<name>) из конфигурации Codex на хосте; аутентификация, уведомления и перехватчики остаются только в конфигурации хоста.
  • Адаптеры других целевых сред могут загружаться по требованию с помощью npx при первом использовании.
  • Аутентификация поставщика для этой среды уже должна быть настроена на хосте.
  • Если на хосте нет npm или доступа к сети, загрузка адаптеров при первом запуске завершается с ошибкой, пока кэши не будут предварительно заполнены или адаптер не будет установлен другим способом.
ACP запускает реальный процесс внешней среды. OpenClaw отвечает за маршрутизацию, состояние фоновых задач, доставку, привязки и политики; внешняя среда отвечает за вход в систему поставщика, каталог моделей, работу с файловой системой и нативные инструменты.Прежде чем считать причиной OpenClaw, проверьте:
  • /acp doctor сообщает о включённой и исправной серверной части.
  • Целевой идентификатор разрешён параметром acp.allowedAgents, если этот список разрешённых задан.
  • Команда внешней среды может запускаться на хосте Gateway.
  • Для этой среды настроена аутентификация поставщика (claude, codex, gemini, opencode, droid и т. д.).
  • Выбранная модель существует для этой среды — идентификаторы моделей нельзя переносить между средами.
  • Запрошенный cwd существует и доступен; иначе опустите cwd, чтобы серверная часть использовала значение по умолчанию.
  • Режим разрешений соответствует работе. Неинтерактивные сеансы не могут нажимать кнопки в нативных запросах разрешений, поэтому для запусков программирования с интенсивной записью и выполнением обычно требуется профиль разрешений ACPX, позволяющий продолжать работу без интерфейса.
Инструменты плагинов OpenClaw и встроенные инструменты OpenClaw по умолчанию не предоставляются средам ACP. Включайте явные мосты MCP в разделе Агенты ACP — настройка, только если среда должна вызывать эти инструменты напрямую.

Поддерживаемые целевые среды

С серверной частью acpx используйте эти идентификаторы как цели /acp spawn <id> или sessions_spawn({ runtime: "acp", agentId: "<id>" }): pi (pi-acp) также зарегистрирован в серверной части acpx, но не является средой для программирования в том же смысле, что и перечисленные выше. Пользовательские псевдонимы агентов acpx можно настроить в самом acpx, но политика OpenClaw всё равно проверяет acp.allowedAgents и все сопоставления agents.list[].runtime.acp.agent перед диспетчеризацией.

Инструкция оператора

Быстрый сценарий /acp из чата:
1

Запуск

/acp spawn claude --bind here, /acp spawn gemini --mode persistent --thread auto или явно /acp spawn codex --bind here.
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, записывает метаданные ACP в хранилище сеансов OpenClaw и может создать фоновую задачу, если запуск принадлежит родительской задаче.
  • Сеансы ACP, принадлежащие родительской задаче, считаются фоновой работой, даже если сеанс среды выполнения постоянный; завершение и доставка между интерфейсами выполняются через механизм уведомлений родительской задачи, а не как в обычном пользовательском сеансе чата.
  • Обслуживание задач закрывает завершённые или оставшиеся без родительской задачи одноразовые сеансы ACP, принадлежащие родительской задаче. Постоянные сеансы ACP сохраняются, пока действует активная привязка к беседе; устаревшие постоянные сеансы без активной привязки закрываются, чтобы их нельзя было незаметно возобновить после завершения владеющей ими задачи или удаления записи о ней.
  • Последующие сообщения из привязанной беседы направляются непосредственно в сеанс ACP, пока привязка не будет закрыта, снята с фокуса, сброшена или не истечёт.
  • Команды Gateway остаются локальными. /acp ..., /status и /unfocus никогда не отправляются привязанной управляющей среде ACP как обычный текст запроса.
  • cancel прерывает активный ход, если серверная часть поддерживает отмену; эта команда не удаляет привязку или метаданные сеанса.
  • close завершает сеанс ACP с точки зрения OpenClaw и удаляет привязку. Управляющая среда может по-прежнему хранить собственную историю на вышестоящей стороне, если поддерживает возобновление.
  • Плагин acpx очищает принадлежащие OpenClaw деревья процессов оболочки и адаптера после close, а также удаляет устаревшие осиротевшие процессы ACPX, принадлежащие OpenClaw, при запуске Gateway.
  • Неактивные рабочие процессы среды выполнения могут быть очищены после acp.runtime.ttlMinutes; сохранённые метаданные сеанса остаются доступными для /acp sessions.
Триггеры на естественном языке, которые должны направляться в нативный плагин Codex, когда он включён:
  • «Привяжи этот канал Discord к Codex».
  • «Подключи этот чат к ветке Codex <id>».
  • «Покажи ветки Codex, а затем привяжи эту».
Нативная привязка беседы Codex — стандартный путь управления чатом. Динамические инструменты OpenClaw по-прежнему выполняются через OpenClaw, а нативные инструменты Codex, такие как shell/apply-patch, выполняются внутри Codex. Для событий нативных инструментов Codex OpenClaw внедряет для каждого хода нативный ретранслятор хуков, чтобы хуки плагинов могли блокировать before_tool_call, отслеживать after_tool_call и направлять события Codex PermissionRequest через механизм подтверждений OpenClaw. Хуки Codex Stop ретранслируются в before_agent_finalize OpenClaw, где плагины могут запросить ещё один проход модели, прежде чем Codex завершит свой ответ. Ретранслятор намеренно действует консервативно: он не изменяет аргументы нативных инструментов Codex и не перезаписывает записи веток Codex. Используйте ACP явно, только если вам нужна модель среды выполнения и сеансов ACP. Граница поддержки встроенного Codex описана в контракте поддержки управляющей среды Codex v1.
  • устаревшие ссылки на модели Codex — устаревший маршрут модели Codex OAuth/подписки, исправляемый командой doctor.
  • openai/* — встроенная нативная среда выполнения app-server Codex для ходов агента OpenAI.
  • /codex ... — нативное управление беседой Codex.
  • /acp ... или runtime: "acp" — явное управление ACP/acpx.
Триггеры, которые должны направляться в среду выполнения ACP:
  • «Запусти это как одноразовый сеанс Claude Code ACP и кратко изложи результат».
  • «Используй Gemini CLI для этой задачи в ветке, а последующие сообщения оставляй в той же ветке».
  • «Запусти Codex через ACP в фоновой ветке».
OpenClaw выбирает runtime: "acp", определяет управляющую среду agentId, привязывается к текущей беседе или ветке, если это поддерживается, и направляет последующие сообщения в этот сеанс до закрытия или истечения срока. Codex следует этим путём, только если ACP/acpx указан явно или нативный плагин Codex недоступен для запрошенной операции.Для sessions_spawn инструмент runtime: "acp" объявляется доступным, только когда ACP включён, инициатор запроса не находится в песочнице и загружена серверная часть среды выполнения ACP. acp.dispatch.enabled=false приостанавливает автоматическую диспетчеризацию веток ACP, но не скрывает и не блокирует явные вызовы sessions_spawn({ runtime: "acp" }). Параметр указывает идентификаторы управляющих сред ACP, такие как codex, claude, droid, gemini или opencode. Не передавайте обычный идентификатор агента из конфигурации OpenClaw agents_list, если эта запись не настроена явно с agents.list[].runtime.type="acp"; в противном случае используйте стандартную среду выполнения субагента. Когда агент OpenClaw настроен с runtime.type="acp", OpenClaw использует runtime.acp.agent как идентификатор базовой управляющей среды.

ACP и субагенты

Используйте ACP, когда нужна внешняя среда выполнения управляющей среды. Используйте нативный app-server Codex для привязки беседы Codex и управления ею, когда включён плагин codex. Используйте субагентов, когда нужны делегированные запуски в среде OpenClaw. См. также Субагенты.

Как ACP запускает Claude Code

Для Claude Code через ACP стек выглядит так:
  1. Плоскость управления сеансами ACP OpenClaw.
  2. Официальный плагин среды выполнения @openclaw/acpx.
  3. Адаптер Claude ACP.
  4. Механизмы среды выполнения и сеансов на стороне Claude.
ACP Claude — это сеанс управляющей среды с элементами управления ACP, возобновлением сеанса, отслеживанием фоновых задач и необязательной привязкой к беседе или ветке. Серверные части CLI — отдельные локальные резервные среды выполнения только для текста; см. Серверные части CLI. Практическое правило для операторов:
  • Нужны /acp spawn, привязываемые сеансы, управление средой выполнения или постоянная работа управляющей среды? Используйте ACP.
  • Нужен простой локальный текстовый резервный вариант через необработанный CLI? Используйте серверные части CLI.

Привязанные сеансы

Ментальная модель

  • Интерфейс чата — место, где люди продолжают общение (канал Discord, тема Telegram, чат iMessage).
  • Сеанс ACP — устойчивое состояние среды выполнения Codex/Claude/Gemini, в которое OpenClaw направляет сообщения.
  • Дочерняя ветка или тема — необязательный дополнительный интерфейс обмена сообщениями, создаваемый только параметром --thread ....
  • Рабочая область среды выполнения — расположение в файловой системе (cwd, рабочая копия репозитория, рабочая область серверной части), где работает управляющая среда. Не зависит от интерфейса чата.

Привязки к текущей беседе

/acp spawn <harness> --bind here закрепляет текущую беседу за созданным сеансом ACP — без дочерней ветки, в том же интерфейсе чата. OpenClaw продолжает управлять транспортом, аутентификацией, безопасностью и доставкой. Последующие сообщения в этой беседе направляются в тот же сеанс; /new и /reset сбрасывают сеанс на месте; /acp close удаляет привязку. Примеры:
  • --bind here и --thread ... взаимоисключающие.
  • --bind here работает только в каналах, которые объявляют поддержку привязки к текущей беседе; в противном случае OpenClaw возвращает понятное сообщение об отсутствии поддержки. Привязки сохраняются после перезапуска Gateway.
  • В Discord параметр spawnSessions управляет созданием дочерних веток для --thread auto|here, но не для --bind here.
  • Если создать сеанс для другого агента ACP без --cwd, OpenClaw по умолчанию наследует рабочую область целевого агента. Отсутствующие унаследованные пути (ENOENT/ENOTDIR) заменяются стандартным значением серверной части; другие ошибки доступа (например, EACCES) возвращаются как ошибки создания.
  • Команды управления Gateway остаются локальными в привязанных беседах: команды /acp ... обрабатываются OpenClaw, даже когда обычный текст последующих сообщений направляется в привязанный сеанс ACP; /status и /unfocus также остаются локальными, когда обработка команд включена для этого интерфейса.
Когда для адаптера канала включены привязки к веткам:
  • OpenClaw привязывает ветку к целевому сеансу ACP.
  • Последующие сообщения в этой ветке направляются в привязанный сеанс ACP.
  • Вывод ACP доставляется обратно в ту же ветку.
  • Снятие фокуса, закрытие, архивирование, тайм-аут бездействия или истечение максимального срока удаляет привязку.
  • /acp close, /acp cancel, /acp status, /status и /unfocus — команды Gateway, а не запросы к управляющей среде ACP.
Обязательные флаги функций для ACP, привязанного к веткам:
  • acp.enabled=true
  • acp.dispatch.enabled включён по умолчанию (задайте false, чтобы приостановить автоматическую диспетчеризацию веток ACP; явные вызовы sessions_spawn({ runtime: "acp" }) продолжат работать).
  • Создание сеансов веток адаптером канала включено (по умолчанию: true):
    • Discord: channels.discord.threadBindings.spawnSessions=true
    • Telegram: channels.telegram.threadBindings.spawnSessions=true
Поддержка привязки к веткам зависит от адаптера. Если активный адаптер канала не поддерживает привязки к веткам, OpenClaw возвращает понятное сообщение об отсутствии поддержки или доступности.
  • Любой адаптер канала, предоставляющий возможность привязки сеансов или веток.
  • Текущая встроенная поддержка: ветки и каналы Discord, темы Telegram (темы форумов в группах и супергруппах, а также темы личных сообщений).
  • Плагины каналов могут добавить поддержку через тот же интерфейс привязки.

Постоянные привязки каналов

Для неэфемерных рабочих процессов настройте постоянные привязки ACP в записях верхнего уровня bindings[].

Модель привязки

"acp"
Обозначает постоянную привязку беседы ACP.
object
Определяет целевую беседу. Форматы для отдельных каналов:
  • Канал/ветка Discord: match.channel="discord" + match.peer.id="<channelOrThreadId>"
  • Канал/личные сообщения Slack: match.channel="slack" + match.peer.id="<channelId|channel:<channelId>|#<channelId>|userId|user:<userId>|slack:<userId>|<@userId>>". Предпочтительно использовать стабильные идентификаторы Slack; привязки каналов также сопоставляются с ответами внутри веток этого канала.
  • Тема форума Telegram: match.channel="telegram" + match.peer.id="<chatId>:topic:<topicId>"
  • Личные сообщения/группа WhatsApp: match.channel="whatsapp" + match.peer.id="<E.164|group JID>". Для личных чатов используйте номера в формате E.164, например +15555550123, а для групп — JID групп WhatsApp, например 120363424282127706@g.us.
  • Личные сообщения/группа iMessage: match.channel="imessage" + match.peer.id="<handle|chat_id:*|chat_guid:*|chat_identifier:*>". Для стабильных привязок групп предпочтительно использовать chat_id:*.
string
Идентификатор агента OpenClaw, которому принадлежит привязка.
"persistent" | "oneshot"
Необязательное переопределение ACP.
string
Необязательная метка для оператора.
string
Необязательный рабочий каталог среды выполнения.
string
Необязательное переопределение бэкенда.

Значения среды выполнения по умолчанию для каждого агента

Используйте agents.list[].runtime, чтобы однократно определить значения ACP по умолчанию для каждого агента:
  • agents.list[].runtime.type="acp"
  • agents.list[].runtime.acp.agent (идентификатор среды, например codex или claude)
  • agents.list[].runtime.acp.backend
  • agents.list[].runtime.acp.mode
  • agents.list[].runtime.acp.cwd
Приоритет переопределений для привязанных сеансов ACP:
  1. bindings[].acp.*
  2. agents.list[].runtime.acp.*
  3. Глобальные значения ACP по умолчанию (например, acp.backend)

Пример

Поведение

  • OpenClaw обеспечивает существование настроенного сеанса ACP после проверки допуска для конкретного канала и до его использования.
  • Сообщения из этого канала, темы или чата направляются в настроенный сеанс ACP.
  • Настроенные привязки ACP управляют маршрутом своего сеанса. Веерная рассылка канала не заменяет настроенный сеанс ACP для совпавшей привязки.
  • В привязанных беседах /new и /reset сбрасывают тот же ключ сеанса ACP без его замены.
  • Временные привязки среды выполнения (например, созданные процессами фокусировки на ветке) по-прежнему применяются там, где они присутствуют.
  • При создании межагентных сеансов ACP без явного cwd OpenClaw наследует рабочее пространство целевого агента из конфигурации агента.
  • Если унаследованный путь к рабочему пространству отсутствует, используется рабочий каталог бэкенда по умолчанию; ошибки доступа к существующему пути возвращаются как ошибки создания сеанса.

Запуск сеансов ACP

Сеанс ACP можно запустить двумя способами:
Используйте runtime: "acp", чтобы запустить сеанс ACP из хода агента или вызова инструмента.
Значением runtime по умолчанию является subagent, поэтому для сеансов ACP задавайте runtime: "acp" явно. Если agentId опущен, OpenClaw использует acp.defaultAgent, когда он настроен. Для сохранения постоянной привязанной беседы mode: "session" требует thread: true.

Параметры sessions_spawn

string
обязательно
Исходный запрос, отправляемый в сеанс ACP.
"acp"
обязательно
Для сеансов ACP должно быть указано "acp".
string
Идентификатор целевой среды ACP. Если задан acp.defaultAgent, используется он.
boolean
по умолчанию:"false"
Запрашивает процесс привязки к ветке там, где он поддерживается.
"run" | "session"
по умолчанию:"run"
"run" выполняется однократно, а "session" является постоянным. Если указан thread: true, а mode опущен, OpenClaw может по умолчанию использовать постоянный режим в зависимости от пути среды выполнения. Для mode: "session" требуется thread: true.
string
Запрошенный рабочий каталог среды выполнения (проверяется политикой бэкенда/среды выполнения). Если он опущен, создаваемый сеанс ACP наследует рабочее пространство целевого агента, когда оно настроено; при отсутствии унаследованного пути используются значения бэкенда по умолчанию, а фактические ошибки доступа возвращаются вызывающей стороне.
string
Метка для оператора, используемая в тексте сеанса/баннера.
string
Возобновляет существующий сеанс ACP вместо создания нового. Агент повторно воспроизводит историю беседы через session/load. Требуется runtime: "acp".
"parent"
"parent" передаёт сводки о ходе первоначального запуска ACP обратно в запрашивающий сеанс в виде системных событий. Принятые ответы включают streamLogPath, указывающий на журнал JSONL в области сеанса (<sessionId>.acp-stream.jsonl), который можно отслеживать для просмотра полной истории ретрансляции. По умолчанию потоки хода выполнения для родительского сеанса показывают комментарии ассистента и состояние ACP, если не задано streaming.progress.commentary=false. В Discord для родительских предпросмотров также по умолчанию используется режим хода выполнения, если режим потока не настроен. Ход выполнения состояния по-прежнему учитывает acp.stream.tagVisibility, поэтому такие теги, как plan, остаются скрытыми, если их явно не включить.
Запуски ACP sessions_spawn используют agents.defaults.subagents.runTimeoutSeconds как ограничение числа дочерних ходов по умолчанию. Инструмент не принимает переопределения тайм-аута для отдельных вызовов (runTimeoutSeconds/timeoutSeconds отклоняются с ошибкой, предписывающей настроить значение по умолчанию).
string
Явное переопределение модели для дочернего сеанса ACP. При создании сеансов Codex ACP ссылки OpenAI, такие как openai/gpt-5.4, нормализуются в конфигурацию запуска Codex ACP до session/new; формы с косой чертой, такие как openai/gpt-5.4/high, также задают интенсивность рассуждений Codex ACP. Если параметр опущен, sessions_spawn({ runtime: "acp" }) использует существующие значения модели субагента по умолчанию (agents.defaults.subagents.model или agents.list[].subagents.model), когда они настроены; в противном случае среда ACP использует собственную модель по умолчанию. Другие среды должны объявлять ACP models и поддерживать session/set_model; иначе OpenClaw/acpx возвращает понятную ошибку вместо неявного перехода к модели целевого агента по умолчанию.
string
Явная интенсивность обдумывания/рассуждений. Для Codex ACP minimal соответствует низкой интенсивности, low/medium/high/xhigh сопоставляются напрямую, а off исключает переопределение интенсивности рассуждений при запуске. Если параметр опущен, создаваемые сеансы ACP используют существующие значения обдумывания субагента по умолчанию и заданное для каждой модели agents.defaults.models["provider/model"].params.thinking для выбранной модели.

Режимы привязки и веток при создании сеанса

Примечания:
  • --bind here — самый простой путь для оператора, чтобы «подключить Codex к этому каналу или чату».
  • --bind here не создаёт дочернюю ветку.
  • --bind here доступен только в каналах, поддерживающих привязку текущей беседы.
  • --bind и --thread нельзя сочетать в одном вызове /acp spawn.

Модель доставки

Сеансы ACP могут быть интерактивными рабочими пространствами или фоновой работой под управлением родительского сеанса. Путь доставки зависит от этого вида.
Интерактивные сеансы предназначены для продолжения общения в видимом интерфейсе чата:
  • /acp spawn ... --bind here привязывает текущую беседу к сеансу ACP.
  • /acp spawn ... --thread ... привязывает ветку/тему канала к сеансу ACP.
  • Постоянно настроенные bindings[].type="acp" направляют совпадающие беседы в один и тот же сеанс ACP.
Последующие сообщения в привязанной беседе направляются непосредственно в сеанс ACP, а вывод ACP доставляется обратно в тот же канал/ветку/тему.Что OpenClaw отправляет в среду:
  • Обычные связанные последующие сообщения отправляются как текст запроса, а вложения — только если они поддерживаются средой выполнения или бэкендом.
  • Команды управления /acp и локальные команды Gateway перехватываются до передачи в ACP.
  • События завершения, создаваемые средой выполнения, материализуются отдельно для каждой цели. Агенты OpenClaw получают внутренний конверт контекста среды выполнения OpenClaw; внешние среды выполнения ACP получают обычный запрос с результатом дочернего процесса и инструкцией. Необработанный конверт <<<BEGIN_OPENCLAW_INTERNAL_CONTEXT>>> никогда не должен отправляться во внешние среды выполнения или сохраняться в тексте пользовательской расшифровки ACP.
  • Записи расшифровки ACP используют видимый пользователю текст триггера или обычный запрос о завершении. Метаданные внутренних событий по возможности остаются структурированными в OpenClaw и не считаются содержимым чата, созданным пользователем.
Одноразовые сеансы ACP, запущенные другим выполнением агента, являются фоновыми дочерними процессами, подобными субагентам:
  • Родитель запрашивает выполнение работы с помощью sessions_spawn({ runtime: "acp", mode: "run" }).
  • Дочерний процесс выполняется в собственном сеансе среды выполнения ACP.
  • Ходы дочернего процесса выполняются в той же фоновой очереди, что и запуски нативных субагентов, поэтому медленная среда выполнения ACP не блокирует несвязанную работу основного сеанса.
  • Отчёт о завершении возвращается через путь уведомления о завершении задачи. Перед отправкой во внешнюю среду выполнения OpenClaw преобразует внутренние метаданные завершения в обычный запрос ACP, поэтому среды выполнения не видят маркеры контекста среды выполнения, предназначенные только для OpenClaw.
  • Родитель переформулирует результат дочернего процесса обычным голосом ассистента, если требуется ответ для пользователя.
Не рассматривайте этот путь как одноранговый чат между родителем и дочерним процессом. У дочернего процесса уже есть канал передачи результата родителю.
sessions_send может обращаться к другому сеансу после запуска. Для обычных одноранговых сеансов OpenClaw использует путь последующего взаимодействия между агентами (A2A) после внедрения сообщения:
  • Дождаться ответа целевого сеанса.
  • При необходимости разрешить запрашивающей и целевой сторонам обменяться ограниченным числом последующих ходов.
  • Попросить целевую сторону сформировать сообщение-уведомление.
  • Доставить это уведомление в видимый канал или ветку.
Этот путь A2A служит резервным вариантом для одноранговых отправок, когда отправителю требуется видимое последующее сообщение. Он остаётся включённым, когда несвязанный сеанс может видеть целевой объект ACP и отправлять ему сообщения, например при широких настройках tools.sessions.visibility.OpenClaw пропускает последующее взаимодействие A2A только тогда, когда запрашивающая сторона является родителем собственного одноразового дочернего процесса ACP, принадлежащего родителю. В этом случае запуск A2A поверх механизма завершения задачи может активировать родителя с результатом дочернего процесса, переслать ответ родителя обратно дочернему процессу и создать цикл эха между родителем и дочерним процессом. Результат sessions_send сообщает delivery.status="skipped" для такого принадлежащего родителю дочернего процесса, поскольку за результат уже отвечает путь завершения.
Используйте resumeSessionId, чтобы продолжить предыдущий сеанс ACP вместо запуска нового. Агент воспроизводит историю диалога через session/load, поэтому продолжает работу с полным контекстом предыдущих действий.
Распространённые варианты использования:
  • Передайте сеанс Codex с ноутбука на телефон — попросите агента продолжить с того места, где вы остановились.
  • Продолжите сеанс программирования, начатый интерактивно в CLI, теперь в безголовом режиме через агента.
  • Возобновите работу, прерванную перезапуском Gateway или тайм-аутом бездействия.
Примечания:
  • resumeSessionId применяется только при runtime: "acp"; среда выполнения субагентов по умолчанию игнорирует это поле, предназначенное только для ACP.
  • streamTo применяется только при runtime: "acp"; среда выполнения субагентов по умолчанию игнорирует это поле, предназначенное только для ACP.
  • resumeSessionId — это локальный для хоста идентификатор возобновления ACP/среды выполнения, а не ключ сеанса канала OpenClaw; перед передачей OpenClaw по-прежнему проверяет политику запуска ACP и политику целевого агента, а за авторизацию загрузки этого вышестоящего идентификатора отвечает бэкенд ACP или среда выполнения.
  • resumeSessionId восстанавливает историю вышестоящего диалога ACP; thread и mode по-прежнему обычным образом применяются к создаваемому новому сеансу OpenClaw, поэтому для mode: "session" всё ещё требуется thread: true.
  • Целевой агент должен поддерживать session/load (Codex и Claude Code поддерживают).
  • Если идентификатор сеанса не найден, запуск завершается с понятной ошибкой — без неявного перехода к новому сеансу.
После развёртывания Gateway выполните реальную сквозную проверку, а не полагайтесь на модульные тесты:
  1. Проверьте версию и коммит развёрнутого Gateway на целевом хосте.
  2. Откройте временный сеанс моста ACPX с действующим агентом.
  3. Попросите этого агента вызвать sessions_spawn с runtime: "acp", agentId: "codex", mode: "run" и задачей Reply with exactly LIVE-ACP-SPAWN-OK.
  4. Проверьте accepted=yes, реальный childSessionKey и отсутствие ошибки валидатора.
  5. Удалите временный сеанс моста.
Оставьте проверку на mode: "run" и пропустите streamTo: "parent" — привязанные к ветке пути mode: "session" и ретрансляции потока являются отдельными, более полными этапами интеграционной проверки.

Совместимость с песочницей

В настоящее время сеансы ACP выполняются в среде выполнения хоста, а не внутри песочницы OpenClaw.
Граница безопасности:
  • Внешняя среда выполнения может читать и записывать данные в соответствии с собственными разрешениями CLI и выбранным cwd.
  • Политика песочницы OpenClaw не охватывает выполнение среды ACP.
  • OpenClaw по-прежнему применяет ограничения функций ACP, списки разрешённых агентов, правила владения сеансами, привязки каналов и политику доставки Gateway.
  • Используйте runtime: "subagent" для нативной работы OpenClaw с принудительным применением песочницы.
Текущие ограничения:
  • Если запрашивающий сеанс изолирован в песочнице, запуск ACP блокируется как для sessions_spawn({ runtime: "acp" }), так и для /acp spawn.
  • sessions_spawn с runtime: "acp" не поддерживает sandbox: "require".

Разрешение целевого сеанса

Большинство действий /acp принимают необязательную цель сеанса (session-key, session-id или session-label). Порядок разрешения:
  1. Явный аргумент цели (или --session для /acp steer)
    • сначала проверяется ключ
    • затем идентификатор сеанса в формате UUID
    • затем метка
  2. Текущая привязка ветки (если этот диалог или ветка привязаны к сеансу ACP).
  3. Резервный текущий запрашивающий сеанс.
Привязки текущего диалога и привязки ветки участвуют в шаге 2. Если цель определить не удаётся, OpenClaw возвращает понятную ошибку (Unable to resolve session target: ...).

Элементы управления ACP

Для элементов управления средой выполнения (spawn, cancel, steer, close, status, set-mode, set, cwd, permissions, timeout, model и reset-options) требуется идентификация владельца для внешних каналов и operator.admin для внутренних клиентов Gateway. Авторизованные отправители, не являющиеся владельцами, по-прежнему могут использовать sessions, doctor, install и help. /acp status показывает действующие параметры среды выполнения, а также идентификаторы сеанса на уровне среды выполнения и бэкенда. Ошибки неподдерживаемых элементов управления отображаются явно, если бэкенд не обладает соответствующей возможностью. /acp sessions читает хранилище для текущего привязанного или запрашивающего сеанса; токены цели (session-key, session-id или session-label) разрешаются через обнаружение сеансов Gateway, включая пользовательские корни session.store для отдельных агентов.

Сопоставление параметров среды выполнения

/acp содержит команды быстрого доступа и универсальную команду установки. Эквивалентные операции:

Обвязка acpx, настройка плагина и разрешения

Сведения о настройке обвязки acpx (псевдонимы Claude Code / Codex / Gemini CLI), MCP-мостах plugin-tools и OpenClaw-tools, а также режимах разрешений ACP см. в разделе Настройка агентов ACP.

Устранение неполадок

Command blocked by PreToolUse hook: Native hook relay unavailable относится к нативной ретрансляции хуков Codex, а не к ACP/acpx. В привязанном чате Codex запустите новый сеанс с помощью /new или /reset; если это срабатывает один раз, а затем ошибка возвращается при следующем вызове нативного инструмента, перезапустите сервер приложения Codex или Gateway OpenClaw вместо повторного выполнения /new. См. Устранение неполадок обвязки Codex.

Связанные материалы