ACP — это путь для внешних сред выполнения, а не стандартный путь Codex.
Нативный Plugin сервера приложения Codex владеет элементами управления
/codex ... и стандартной встроенной средой выполнения openai/gpt-* для
ходов агента; ACP владеет элементами управления /acp ... и сеансами
sessions_spawn({ runtime: "acp" }).Если вы хотите, чтобы Codex или Claude Code подключались как внешний MCP-клиент
напрямую к существующим беседам каналов OpenClaw, используйте
openclaw mcp serve вместо ACP.Какая страница мне нужна?
| Вы хотите… | Используйте | Примечания |
|---|---|---|
| Привязать или управлять Codex в текущей беседе | /codex bind, /codex threads | Нативный путь сервера приложения Codex, когда Plugin codex включен; включает привязанные ответы чата, пересылку изображений, model/fast/permissions, stop и steer. ACP — явный fallback |
| Запустить Claude Code, Gemini CLI, явный Codex ACP или другую внешнюю среду через OpenClaw | Эту страницу | Сеансы, привязанные к чату, /acp spawn, sessions_spawn({ runtime: "acp" }), фоновые задачи, управление средой выполнения |
| Предоставить сеанс OpenClaw Gateway как ACP-сервер для редактора или клиента | openclaw acp | Режим моста. IDE/клиент общается с OpenClaw по ACP через stdio/WebSocket |
| Переиспользовать локальный AI CLI как текстовую fallback-модель | CLI Backends | Не ACP. Нет инструментов OpenClaw, нет элементов управления ACP, нет среды выполнения harness |
Это работает из коробки?
Да, после установки официального Plugin среды выполнения ACP:extensions/acpx после pnpm install. Запустите /acp doctor для проверки
готовности.
OpenClaw сообщает агентам о запуске ACP только когда ACP действительно
можно использовать: ACP должен быть включен, dispatch не должен быть
отключен, текущий сеанс не должен быть заблокирован sandbox, и backend среды
выполнения должен быть загружен. Если эти условия не выполнены, Skills ACP
Plugin и подсказки ACP для sessions_spawn остаются скрытыми, чтобы агент
не предлагал недоступный backend.
First-run gotchas
First-run gotchas
- Если задан
plugins.allow, это ограничительный список Plugin, и он должен включатьacpx; иначе установленный ACP backend намеренно блокируется, а/acp doctorсообщает об отсутствующей записи allowlist. - Адаптер Codex ACP поставляется вместе с Plugin
acpxи по возможности запускается локально. - Codex ACP работает с изолированным
CODEX_HOME; OpenClaw копирует доверенные записи проектов и безопасную конфигурацию маршрутизации model/provider из конфигурации Codex на хосте, а auth, уведомления и hooks остаются в конфигурации хоста. - Другие адаптеры целевых сред выполнения могут по-прежнему загружаться по требованию через
npxпри первом использовании. - Auth поставщика все равно должен существовать на хосте для этой среды выполнения.
- Если на хосте нет npm или доступа к сети, загрузки адаптеров при первом запуске будут завершаться ошибкой, пока кэши не будут предварительно прогреты или адаптер не будет установлен другим способом.
Runtime prerequisites
Runtime prerequisites
ACP запускает реальный процесс внешней среды выполнения. OpenClaw владеет
маршрутизацией, состоянием фоновой задачи, доставкой, привязками и
политикой; среда выполнения владеет входом к своему поставщику, каталогом
моделей, поведением файловой системы и нативными инструментами.Прежде чем винить OpenClaw, проверьте:
/acp doctorсообщает о включенном и исправном backend.- Целевой id разрешен через
acp.allowedAgents, когда этот allowlist задан. - Команда среды выполнения может запуститься на хосте Gateway.
- Auth поставщика присутствует для этой среды выполнения (
claude,codex,gemini,opencode,droidи т. д.). - Выбранная модель существует для этой среды выполнения - id моделей не переносимы между средами.
- Запрошенный
cwdсуществует и доступен; либо не указывайтеcwdи дайте backend использовать значение по умолчанию. - Режим разрешений соответствует работе. Неинтерактивные сеансы не могут нажимать нативные запросы разрешений, поэтому write/exec-насыщенные кодовые запуски обычно требуют профиль разрешений ACPX, который может выполняться без участия пользователя.
Поддерживаемые целевые среды выполнения
С backendacpx используйте эти id сред выполнения как цели
/acp spawn <id> или sessions_spawn({ runtime: "acp", agentId: "<id>" }):
| Id среды | Типичный backend | Примечания |
|---|---|---|
claude | Адаптер Claude Code ACP | Требует auth Claude Code на хосте. |
codex | Адаптер Codex ACP | Только явный ACP fallback, когда нативный /codex недоступен или запрошен ACP. |
copilot | Адаптер GitHub Copilot ACP | Требует auth Copilot CLI/runtime. |
cursor | Cursor CLI ACP (cursor-agent acp) | Переопределите команду acpx, если локальная установка предоставляет другую точку входа ACP. |
droid | Factory Droid CLI | Требует auth Factory/Droid или FACTORY_API_KEY в окружении среды выполнения. |
gemini | Адаптер Gemini CLI ACP | Требует auth Gemini CLI или настройки API-ключа. |
iflow | iFlow CLI | Доступность адаптера и управление моделями зависят от установленного CLI. |
kilocode | Kilo Code CLI | Доступность адаптера и управление моделями зависят от установленного CLI. |
kimi | Kimi/Moonshot CLI | Требует auth Kimi/Moonshot на хосте. |
kiro | Kiro CLI | Доступность адаптера и управление моделями зависят от установленного CLI. |
opencode | Адаптер OpenCode ACP | Требует auth OpenCode CLI/provider. |
openclaw | Мост OpenClaw Gateway через openclaw acp | Позволяет ACP-совместимой среде выполнения обращаться обратно к сеансу OpenClaw Gateway. |
qwen | Qwen Code / Qwen CLI | Требует Qwen-совместимый auth на хосте. |
acp.allowedAgents и любое сопоставление
agents.list[].runtime.acp.agent перед dispatch.
Runbook оператора
Быстрый поток/acp из чата:
Spawn
/acp spawn claude --bind here,
/acp spawn gemini --mode persistent --thread auto или явный
/acp spawn codex --bind here.Lifecycle details
Lifecycle details
- Spawn создает или возобновляет сеанс среды выполнения ACP, записывает метаданные ACP в хранилище сеансов OpenClaw и может создать фоновую задачу, когда запуск принадлежит родителю.
- ACP-сеансы, принадлежащие родителю, рассматриваются как фоновая работа, даже когда сеанс среды выполнения persistent; завершение и доставка между поверхностями проходят через уведомитель родительской задачи, а не ведут себя как обычный пользовательский чат-сеанс.
- Обслуживание задач закрывает terminal или orphaned одноразовые ACP-сеансы, принадлежащие родителю. Persistent ACP-сеансы сохраняются, пока остается активная привязка беседы; stale persistent-сеансы без активной привязки закрываются, чтобы их нельзя было незаметно возобновить после завершения владеющей задачи или исчезновения ее записи.
- Привязанные последующие сообщения идут напрямую в ACP-сеанс, пока привязка не будет закрыта, unfocused, сброшена или не истечет.
- Команды Gateway остаются локальными.
/acp ...,/statusи/unfocusникогда не отправляются как обычный текст prompt в привязанную ACP-среду. cancelпрерывает активный ход, когда backend поддерживает отмену; он не удаляет привязку или метаданные сеанса.closeзавершает ACP-сеанс с точки зрения OpenClaw и удаляет привязку. Среда выполнения все еще может сохранять собственную upstream-историю, если поддерживает resume.- Plugin acpx очищает принадлежащие OpenClaw деревья процессов wrapper и adapter после
close, а также убирает stale принадлежащие OpenClaw ACPX orphans при запуске Gateway. - Idle runtime workers могут быть очищены после
acp.runtime.ttlMinutes; сохраненные метаданные сеанса остаются доступны для/acp sessions.
Native Codex routing rules
Native Codex routing rules
Триггеры на естественном языке, которые должны маршрутизироваться в
нативный Codex Plugin, когда он включен:
- “Привяжи этот Discord-канал к Codex.”
- “Прикрепи этот чат к Codex thread
<id>.” - “Покажи Codex threads, затем привяжи этот.”
before_tool_call, наблюдать
after_tool_call и маршрутизировать события Codex PermissionRequest
через подтверждения OpenClaw. Хуки Codex Stop ретранслируются в
OpenClaw before_agent_finalize, где plugins могут запросить еще один
проход модели до того, как Codex завершит свой ответ. Ретранслятор остается
намеренно консервативным: он не изменяет аргументы нативных инструментов Codex
и не переписывает записи треда Codex. Используйте явный ACP только
когда вам нужна модель среды выполнения/сессии ACP. Граница встроенной поддержки Codex
задокументирована в
контракте поддержки Codex harness v1.Краткая шпаргалка по выбору модели / провайдера / среды выполнения
Краткая шпаргалка по выбору модели / провайдера / среды выполнения
- устаревшие ссылки на модели Codex - маршрут модели устаревших OAuth/подписки Codex, исправляемый doctor.
openai/*- встроенная среда выполнения нативного app-server Codex для ходов агента OpenAI./codex ...- нативное управление разговором Codex./acp ...илиruntime: "acp"- явное управление ACP/acpx.
Триггеры естественного языка для маршрутизации ACP
Триггеры естественного языка для маршрутизации ACP
Триггеры, которые должны направляться в среду выполнения ACP:
- “Запусти это как одноразовую сессию Claude Code ACP и суммируй результат.”
- “Используй Gemini CLI для этой задачи в треде, затем оставь последующие сообщения в том же треде.”
- “Запусти Codex через ACP в фоновом треде.”
runtime: "acp", разрешает agentId обвязки,
привязывается к текущему разговору или треду, если поддерживается, и
маршрутизирует последующие сообщения в эту сессию до закрытия/истечения срока. Codex
следует этому пути только когда ACP/acpx указан явно или нативный Plugin 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, когда Plugincodex
включен. Используйте суб-агентов, когда вам нужны нативные для OpenClaw
делегированные запуски.
| Область | Сессия ACP | Запуск суб-агента |
|---|---|---|
| Среда выполнения | Бэкенд-Plugin ACP (например, acpx) | Нативная среда выполнения суб-агентов OpenClaw |
| Ключ сессии | agent:<agentId>:acp:<uuid> | agent:<agentId>:subagent:<uuid> |
| Основные команды | /acp ... | /subagents ... |
| Инструмент запуска | sessions_spawn с runtime:"acp" | sessions_spawn (стандартная среда выполнения) |
Как ACP запускает Claude Code
Для Claude Code через ACP стек выглядит так:- Плоскость управления сессиями OpenClaw ACP.
- Официальный Plugin среды выполнения
@openclaw/acpx. - Адаптер Claude ACP.
- Механизмы среды выполнения/сессии на стороне Claude.
- Нужны
/acp spawn, привязываемые сессии, элементы управления средой выполнения или постоянная работа обвязки? Используйте ACP. - Нужен простой локальный текстовый резерв через необработанный CLI? Используйте бэкенды CLI.
Привязанные сессии
Ментальная модель
- Поверхность чата - где люди продолжают общаться (канал Discord, тема Telegram, чат iMessage).
- Сессия ACP - долговременное состояние среды выполнения Codex/Claude/Gemini, в которое OpenClaw маршрутизирует сообщения.
- Дочерний тред/тема - опциональная дополнительная поверхность сообщений, создаваемая только через
--thread .... - Рабочая область среды выполнения - расположение в файловой системе (
cwd, checkout репозитория, рабочая область бэкенда), где запускается обвязка. Не зависит от поверхности чата.
Привязки текущего разговора
/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 доставляется обратно в тот же тред.
- Unfocus/close/archive/idle-timeout или истечение max-age удаляет привязку.
/acp close,/acp cancel,/acp status,/statusи/unfocusявляются командами Gateway, а не промптами для ACP-обвязки.
acp.enabled=trueacp.dispatch.enabledвключен по умолчанию (установитеfalse, чтобы приостановить автоматическую отправку ACP-тредов; явные вызовыsessions_spawn({ runtime: "acp" })продолжают работать).- Создание сессий тредов адаптера канала включено (по умолчанию:
true):- Discord:
channels.discord.threadBindings.spawnSessions=true - Telegram:
channels.telegram.threadBindings.spawnSessions=true
- Discord:
Каналы с поддержкой тредов
Каналы с поддержкой тредов
- Любой адаптер канала, который предоставляет возможность привязки сессии/треда.
- Текущая встроенная поддержка: треды/каналы Discord, темы Telegram (форумные темы в группах/супергруппах и темы DM).
- Каналы Plugin могут добавить поддержку через тот же интерфейс привязки.
Постоянные привязки каналов
Для неэфемерных рабочих процессов настройте постоянные привязки ACP в записях верхнего уровняbindings[].
Модель привязки
Помечает постоянную привязку разговора ACP.
Определяет целевой разговор. Формы по каналам:
- Канал/тред Discord:
match.channel="discord"+match.peer.id="<channelOrThreadId>" - Канал/DM 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>" - DM/группа WhatsApp:
match.channel="whatsapp"+match.peer.id="<E.164|group JID>". Используйте номера E.164, такие как+15555550123, для прямых чатов и JID групп WhatsApp, такие как120363424282127706@g.us, для групп. - DM/группа iMessage:
match.channel="imessage"+match.peer.id="<handle|chat_id:*|chat_guid:*|chat_identifier:*>". Предпочитайтеchat_id:*для стабильных привязок групп.
Идентификатор владеющего агента OpenClaw.
Опциональное переопределение ACP.
Опциональная метка для оператора.
Опциональный рабочий каталог среды выполнения.
Опциональное переопределение бэкенда.
Стандартные значения среды выполнения для каждого агента
Используйтеagents.list[].runtime, чтобы один раз определить стандартные значения ACP для каждого агента:
agents.list[].runtime.type="acp"agents.list[].runtime.acp.agent(идентификатор обвязки, напримерcodexилиclaude)agents.list[].runtime.acp.backendagents.list[].runtime.acp.modeagents.list[].runtime.acp.cwd
bindings[].acp.*agents.list[].runtime.acp.*- Глобальные стандартные значения ACP (например,
acp.backend)
Пример
Поведение
- OpenClaw гарантирует, что настроенная сессия ACP существует после допуска для конкретного канала и перед использованием.
- Сообщения в этом канале, теме или чате направляются в настроенную сессию ACP.
- Настроенные привязки ACP владеют своим маршрутом сессии. Широковещательная рассылка канала веером не заменяет настроенную сессию ACP для совпавшей привязки.
- В привязанных разговорах
/newи/resetсбрасывают тот же ключ сессии ACP на месте. - Временные привязки среды выполнения (например, созданные потоками фокусировки на треде) по-прежнему применяются там, где присутствуют.
- Для межагентных запусков ACP без явного
cwdOpenClaw наследует рабочую область целевого агента из конфигурации агента. - Отсутствующие унаследованные пути рабочей области откатываются к стандартному cwd backend; ошибки доступа для существующих путей выдаются как ошибки запуска.
Запуск сессий ACP
Два способа запустить сессию ACP:- From sessions_spawn
- From /acp command
Используйте
runtime: "acp", чтобы запустить сессию ACP из хода агента или
вызова инструмента.По умолчанию
runtime имеет значение subagent, поэтому для сессий ACP
явно задавайте runtime: "acp". Если agentId пропущен, OpenClaw использует
acp.defaultAgent, когда он настроен. mode: "session" требует
thread: true, чтобы сохранить постоянный привязанный разговор.Параметры sessions_spawn
Начальный prompt, отправляемый в сессию ACP.
Для сессий ACP должно быть
"acp".Идентификатор целевого harness ACP. Откатывается к
acp.defaultAgent, если он задан.Запрашивает поток привязки треда там, где он поддерживается.
"run" является одноразовым; "session" является постоянным. Если thread: true, а
mode пропущен, OpenClaw может по умолчанию использовать постоянное поведение для
соответствующего пути среды выполнения. mode: "session" требует thread: true.Запрошенный рабочий каталог среды выполнения (проверяется политикой backend/среды выполнения).
Если параметр пропущен, запуск ACP наследует рабочую область целевого агента, когда она
настроена; отсутствующие унаследованные пути откатываются к значениям backend по умолчанию,
а реальные ошибки доступа возвращаются.
Метка, видимая оператору, которая используется в тексте сессии/баннера.
Возобновляет существующую сессию ACP вместо создания новой. Агент повторно воспроизводит
историю разговора через
session/load. Требует runtime: "acp"."parent" транслирует начальные сводки прогресса запуска ACP обратно в
сессию запрашивающего как системные события. Принятые ответы включают
streamLogPath, указывающий на JSONL-журнал в области сессии
(<sessionId>.acp-stream.jsonl), который можно отслеживать для полной истории ретрансляции.
Родительские потоки прогресса по умолчанию показывают комментарии assistant и прогресс статуса ACP,
если только streaming.progress.commentary=false. Discord также по умолчанию переводит
родительские предпросмотры в режим прогресса, когда режим потока не настроен. Прогресс
статуса по-прежнему соблюдает acp.stream.tagVisibility, поэтому такие теги, как plan,
остаются скрытыми, если они не включены явно.sessions_spawn используют agents.defaults.subagents.runTimeoutSeconds для
стандартного лимита дочернего хода. Инструмент не принимает переопределения тайм-аута
для отдельного вызова.
Явное переопределение модели для дочерней сессии ACP. Запуски Codex ACP
нормализуют ссылки OpenAI, такие как
openai/gpt-5.4, в стартовую конфигурацию
Codex ACP перед session/new; слэш-формы, такие как openai/gpt-5.4/high,
также задают усилие рассуждения Codex ACP.
Если параметр пропущен, sessions_spawn({ runtime: "acp" }) использует существующие
значения модели по умолчанию для subagent (agents.defaults.subagents.model или
agents.list[].subagents.model), когда они настроены; иначе ACP harness использует
собственную модель по умолчанию.
Другие harness должны объявлять ACP models и поддерживать session/set_model;
иначе OpenClaw/acpx явно завершится ошибкой вместо скрытого отката к значению
целевого агента по умолчанию.Явное усилие thinking/reasoning. Для Codex ACP
minimal сопоставляется с
низким усилием, low/medium/high/xhigh сопоставляются напрямую, а off
пропускает стартовое переопределение reasoning-effort.
Если параметр пропущен, запуски ACP используют существующие значения thinking по умолчанию
для subagent и помодельный параметр agents.defaults.models["provider/model"].params.thinking
для выбранной модели.Режимы привязки запуска и треда
- --bind here|off
- --thread auto|here|off
| Режим | Поведение |
|---|---|
here | Привязать текущую активную беседу на месте; завершиться ошибкой, если активной беседы нет. |
off | Не создавать привязку текущей беседы. |
--bind here— самый простой путь оператора для «сделать этот канал или чат поддерживаемым Codex».--bind hereне создает дочернюю ветку.--bind hereдоступен только в каналах, которые предоставляют поддержку привязки текущей беседы.--bindи--threadнельзя объединять в одном вызове/acp spawn.
Модель доставки
Сеансы ACP могут быть либо интерактивными рабочими пространствами, либо фоновой работой, принадлежащей родителю. Путь доставки зависит от этой формы.Interactive ACP sessions
Interactive ACP sessions
Интерактивные сеансы предназначены для продолжения общения на видимой поверхности чата:
/acp spawn ... --bind hereпривязывает текущую беседу к сеансу ACP./acp spawn ... --thread ...привязывает ветку/тему канала к сеансу ACP.- Постоянно настроенные
bindings[].type="acp"маршрутизируют совпадающие беседы в тот же сеанс ACP.
- Обычные привязанные последующие сообщения отправляются как текст запроса, с вложениями только тогда, когда исполнительная среда/бэкенд их поддерживает.
- Команды управления
/acpи локальные команды Gateway перехватываются до отправки в ACP. - События завершения, сгенерированные средой выполнения, материализуются для каждой цели. Агенты OpenClaw получают внутреннюю оболочку контекста среды выполнения OpenClaw; внешние исполнительные среды ACP получают обычный запрос с результатом дочерней задачи и инструкцией. Необработанная оболочка
<<<BEGIN_OPENCLAW_INTERNAL_CONTEXT>>>никогда не должна отправляться во внешние исполнительные среды или сохраняться как текст пользовательской расшифровки ACP. - Записи расшифровки ACP используют видимый пользователю текст триггера или обычный запрос завершения. Внутренние метаданные событий по возможности остаются структурированными в OpenClaw и не рассматриваются как содержимое чата, написанное пользователем.
Parent-owned one-shot ACP sessions
Parent-owned one-shot ACP sessions
Одноразовые сеансы ACP, запущенные другим агентским запуском, являются фоновыми дочерними задачами, похожими на субагентов:
- Родитель запрашивает работу с помощью
sessions_spawn({ runtime: "acp", mode: "run" }). - Дочерняя задача выполняется в собственном сеансе исполнительной среды ACP.
- Ходы дочерней задачи выполняются в той же фоновой полосе, что и запуски нативных субагентов, поэтому медленная исполнительная среда ACP не блокирует несвязанную работу основного сеанса.
- Завершение возвращается через путь объявления о завершении задачи. OpenClaw преобразует внутренние метаданные завершения в обычный запрос ACP перед отправкой во внешнюю исполнительную среду, поэтому исполнительные среды не видят маркеры контекста среды выполнения, предназначенные только для OpenClaw.
- Родитель переписывает результат дочерней задачи обычным голосом ассистента, когда полезен ответ для пользователя.
sessions_send and A2A delivery
sessions_send and A2A delivery
sessions_send может нацеливаться на другой сеанс после запуска. Для обычных одноранговых сеансов OpenClaw использует путь последующего сообщения agent-to-agent (A2A) после внедрения сообщения:- Дождаться ответа целевого сеанса.
- При необходимости позволить запрашивающей и целевой сторонам обменяться ограниченным числом последующих ходов.
- Попросить целевую сторону создать сообщение объявления.
- Доставить это объявление в видимый канал или ветку.
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/harness, а не ключ сессии канала OpenClaw; OpenClaw по-прежнему проверяет политику запуска ACP и политику целевого агента перед отправкой, тогда как backend ACP или harness отвечает за авторизацию загрузки этого upstream-идентификатора.resumeSessionIdвосстанавливает upstream-историю разговора ACP;threadиmodeпо-прежнему обычным образом применяются к новой сессии OpenClaw, которую вы создаете, поэтомуmode: "session"по-прежнему требуетthread: true.- Целевой агент должен поддерживать
session/load(Codex и Claude Code поддерживают). - Если идентификатор сессии не найден, запуск завершается понятной ошибкой - без тихого fallback к новой сессии.
Smoke-тест после развертывания
Smoke-тест после развертывания
После развертывания Gateway выполните живую сквозную проверку, а не
полагайтесь на модульные тесты:
- Проверьте версию и коммит развернутого Gateway на целевом хосте.
- Откройте временную сессию моста ACPX к живому агенту.
- Попросите этого агента вызвать
sessions_spawnсruntime: "acp",agentId: "codex",mode: "run"и задачейReply with exactly LIVE-ACP-SPAWN-OK. - Проверьте
accepted=yes, реальныйchildSessionKeyи отсутствие ошибки валидатора. - Очистите временную сессию моста.
mode: "run" и пропустите streamTo: "parent" -
привязанный к thread mode: "session" и пути stream-relay являются отдельными
более насыщенными интеграционными проходами.Совместимость с песочницей
Сессии ACP сейчас выполняются в среде выполнения хоста, не внутри песочницы OpenClaw. Текущие ограничения:- Если сессия запрашивающего находится в песочнице, запуск ACP блокируется как для
sessions_spawn({ runtime: "acp" }), так и для/acp spawn. sessions_spawnсruntime: "acp"не поддерживаетsandbox: "require".
Разрешение цели сессии
Большинство действий/acp принимают необязательную цель сессии (session-key,
session-id или session-label).
Порядок разрешения:
- Явный аргумент цели (или
--sessionдля/acp steer)- пробует ключ
- затем идентификатор сессии в форме UUID
- затем label
- Текущая привязка thread (если этот разговор/thread привязан к сессии ACP).
- Резервная сессия текущего запрашивающего.
Unable to resolve session target: ...).
Элементы управления ACP
| Команда | Что она делает | Пример |
|---|---|---|
/acp spawn | Создать сессию ACP; необязательная текущая привязка или thread-привязка. | /acp spawn codex --bind here --cwd /repo |
/acp cancel | Отменить выполняющийся ход для целевой сессии. | /acp cancel agent:codex:acp:<uuid> |
/acp steer | Отправить управляющую инструкцию в выполняющуюся сессию. | /acp steer --session support inbox prioritize failing tests |
/acp close | Закрыть сессию и отвязать цели thread. | /acp close |
/acp status | Показать backend, режим, состояние, параметры среды выполнения, возможности. | /acp status |
/acp set-mode | Задать режим среды выполнения для целевой сессии. | /acp set-mode plan |
/acp set | Записать общий параметр конфигурации среды выполнения. | /acp set model openai/gpt-5.4 |
/acp cwd | Задать переопределение рабочего каталога среды выполнения. | /acp cwd /Users/user/Projects/repo |
/acp permissions | Задать профиль политики утверждений. | /acp permissions strict |
/acp timeout | Задать тайм-аут среды выполнения (в секундах). | /acp timeout 120 |
/acp model | Задать переопределение модели среды выполнения. | /acp model anthropic/claude-opus-4-6 |
/acp reset-options | Удалить переопределения параметров среды выполнения сессии. | /acp reset-options |
/acp sessions | Перечислить недавние сессии ACP из хранилища. | /acp sessions |
/acp doctor | Состояние backend, возможности, применимые исправления. | /acp doctor |
/acp install | Вывести детерминированные шаги установки и включения. | /acp install |
/acp status показывает эффективные параметры среды выполнения, а также идентификаторы сессии
уровня среды выполнения и уровня backend. Ошибки неподдерживаемых элементов управления отображаются
понятно, когда backend не имеет возможности. /acp sessions читает
хранилище для текущей привязанной сессии или сессии запрашивающего; целевые токены
(session-key, session-id или session-label) разрешаются через
обнаружение сессий gateway, включая пользовательские корни session.store
для каждого агента.
Сопоставление параметров среды выполнения
/acp имеет удобные команды и общий setter. Эквивалентные
операции:
| Команда | Сопоставляется с | Примечания |
|---|---|---|
/acp model <id> | ключ конфигурации среды выполнения model | Для Codex ACP OpenClaw нормализует openai/<model> в идентификатор модели адаптера и сопоставляет суффиксы reasoning через косую черту, такие как openai/gpt-5.4/high, с reasoning_effort. |
/acp set thinking <level> | канонический параметр thinking | OpenClaw отправляет эквивалент, объявленный backend, когда он присутствует, предпочитая thinking, затем effort, reasoning_effort или thought_level. Для Codex ACP адаптер сопоставляет значения с reasoning_effort. |
/acp permissions <profile> | канонический параметр permissionProfile | OpenClaw отправляет эквивалент, объявленный backend, когда он присутствует, например approval_policy, permission_profile, permissions или permission_mode. |
/acp timeout <seconds> | канонический параметр timeoutSeconds | OpenClaw отправляет эквивалент, объявленный backend, когда он присутствует, например timeout или timeout_seconds. |
/acp cwd <path> | переопределение cwd среды выполнения | Прямое обновление. |
/acp set <key> <value> | общий | key=cwd использует путь переопределения cwd. |
/acp reset-options | очищает все переопределения среды выполнения | - |
acpx harness, настройка Plugin и разрешения
О настройке acpx harness (алиасы Claude Code / Codex / Gemini CLI), MCP-мостах plugin-tools и OpenClaw-tools, а также режимах разрешений ACP см. Агенты ACP - настройка.Устранение неполадок
| Симптом | Вероятная причина | Исправление |
|---|---|---|
ACP runtime backend is not configured | Backend-plugin отсутствует, отключен или заблокирован plugins.allow. | Установите и включите backend-plugin, добавьте acpx в plugins.allow, если этот allowlist задан, затем выполните /acp doctor. |
ACP is disabled by policy (acp.enabled=false) | ACP глобально отключен. | Установите acp.enabled=true. |
ACP dispatch is disabled by policy (acp.dispatch.enabled=false) | Автоматическая диспетчеризация из обычных сообщений потока отключена. | Установите acp.dispatch.enabled=true, чтобы возобновить автоматическую маршрутизацию потоков; явные вызовы sessions_spawn({ runtime: "acp" }) по-прежнему работают. |
ACP agent "<id>" is not allowed by policy | Агент отсутствует в allowlist. | Используйте разрешенный agentId или обновите acp.allowedAgents. |
/acp doctor сообщает, что backend не готов сразу после запуска | Backend-plugin отсутствует, отключен, заблокирован политикой allow/deny, или его настроенный исполняемый файл недоступен. | Установите/включите backend-plugin, повторно выполните /acp doctor и проверьте ошибку установки backend или политики, если он остается неработоспособным. |
| Команда harness не найдена | CLI-адаптер не установлен, внешний plugin отсутствует или первый запуск npx не смог получить данные для адаптера не-Codex. | Выполните /acp doctor, установите/предварительно прогрейте адаптер на хосте Gateway или явно настройте команду агента acpx. |
| Ошибка model-not-found от harness | Идентификатор модели допустим для другого провайдера/harness, но не для этой цели ACP. | Используйте модель, перечисленную этим harness, настройте модель в harness или не задавайте переопределение. |
| Ошибка аутентификации поставщика от harness | OpenClaw работоспособен, но целевой CLI/провайдер не авторизован. | Авторизуйтесь или предоставьте требуемый ключ провайдера в окружении хоста Gateway. |
Unable to resolve session target: ... | Некорректный ключ/идентификатор/токен метки. | Выполните /acp sessions, скопируйте точный ключ/метку и повторите попытку. |
--bind here requires running /acp spawn inside an active ... conversation | --bind here использован без активной привязываемой беседы. | Перейдите в целевой чат/канал и повторите попытку либо используйте запуск без привязки. |
Conversation bindings are unavailable for <channel>. | У адаптера нет возможности ACP-привязки к текущей беседе. | Используйте /acp spawn ... --thread ..., где это поддерживается, настройте верхнеуровневые bindings[] или перейдите в поддерживаемый канал. |
--thread here requires running /acp spawn inside an active ... thread | --thread here использован вне контекста потока. | Перейдите в целевой поток или используйте --thread auto/off. |
Only <user-id> can rebind this channel/conversation/thread. | Другой пользователь владеет активной целью привязки. | Выполните повторную привязку от имени владельца или используйте другую беседу либо поток. |
Thread bindings are unavailable for <channel>. | У адаптера нет возможности привязки потока. | Используйте --thread off или перейдите на поддерживаемый адаптер/канал. |
Sandboxed sessions cannot spawn ACP sessions ... | Среда выполнения ACP находится на стороне хоста; запрашивающая сессия изолирована в sandbox. | Используйте runtime="subagent" из изолированных сессий или выполните запуск ACP из неизолированной сессии. |
sessions_spawn sandbox="require" is unsupported for runtime="acp" ... | Для среды выполнения ACP запрошено sandbox="require". | Используйте runtime="subagent" для обязательной изоляции или используйте ACP с sandbox="inherit" из неизолированной сессии. |
Cannot apply --model ... did not advertise model support | Целевой harness не предоставляет универсальное переключение моделей ACP. | Используйте harness, который объявляет ACP models/session/set_model, используйте ссылки моделей Codex ACP или настройте модель напрямую в harness, если у него есть собственный флаг запуска. |
| Отсутствуют метаданные ACP для привязанной сессии | Устаревшие/удаленные метаданные сессии ACP. | Создайте заново с помощью /acp spawn, затем повторно привяжите/сфокусируйте поток. |
AcpRuntimeError: Permission prompt unavailable in non-interactive mode | permissionMode блокирует запись/выполнение в неинтерактивной сессии ACP. | Установите plugins.entries.acpx.config.permissionMode в approve-all и перезапустите gateway. См. конфигурацию разрешений. |
| Сессия ACP рано завершается с малым объемом вывода | Запросы разрешений заблокированы permissionMode/nonInteractivePermissions. | Проверьте журналы gateway на наличие AcpRuntimeError. Для полных разрешений установите permissionMode=approve-all; для плавной деградации установите nonInteractivePermissions=deny. |
| Сессия ACP зависает на неопределенное время после завершения работы | Процесс harness завершился, но сессия ACP не сообщила о завершении. | Обновите OpenClaw; текущая очистка acpx при закрытии и запуске Gateway убирает устаревшие процессы-обертки и процессы адаптеров, принадлежащие OpenClaw. |
Harness видит <<<BEGIN_OPENCLAW_INTERNAL_CONTEXT>>> | Внутренняя оболочка события просочилась через границу ACP. | Обновите OpenClaw и повторно выполните поток завершения; внешние harness должны получать только обычные подсказки завершения. |
Command blocked by PreToolUse hook: Native hook relay unavailable относится к
нативному ретранслятору хуков Codex, а не к ACP/acpx. В привязанном чате Codex начните новую
сессию с /new или /reset; если это сработает один раз, а затем вернется при следующем
нативном вызове инструмента, перезапустите app-server Codex или Gateway OpenClaw вместо
повторения /new. См. устранение неполадок harness Codex.