Агенти ACP
Сеанси Agent Client Protocol (ACP) дають змогу OpenClaw запускати зовнішні harness-оточення для кодування (наприклад Pi, Claude Code, Codex, Cursor, Copilot, OpenClaw ACP, OpenCode, Gemini CLI та інші підтримувані ACPX-harness-оточення) через плагін бекенду ACP. Якщо ви попросите OpenClaw звичайною мовою «запусти це в Codex» або «запусти Claude Code у гілці», OpenClaw має спрямувати цей запит до середовища виконання ACP (а не до нативного середовища виконання субагента). Кожен запуск сеансу ACP відстежується як фонове завдання. Якщо ви хочете, щоб Codex або Claude Code підключалися як зовнішній MCP-клієнт безпосередньо до наявних розмов у каналах OpenClaw, використовуйтеopenclaw mcp serve
замість ACP.
Яку сторінку мені потрібно?
Поруч є три поверхні, які легко сплутати:| Ви хочете… | Використовуйте це | Примітки |
|---|---|---|
| Запускати Codex, Claude Code, Gemini CLI або інше зовнішнє harness-оточення через OpenClaw | Ця сторінка: агенти ACP | Прив’язані до чату сеанси, /acp spawn, sessions_spawn({ runtime: "acp" }), фонові завдання, елементи керування середовищем виконання |
| Відкрити сеанс OpenClaw Gateway як ACP-сервер для редактора або клієнта | openclaw acp | Режим мосту. IDE/клієнт спілкується з OpenClaw через ACP поверх stdio/WebSocket |
Це працює одразу після встановлення?
Зазвичай так.- Нові встановлення тепер постачаються з увімкненим за замовчуванням вбудованим плагіном середовища виконання
acpx. - Вбудований плагін
acpxвіддає перевагу своєму локально закріпленому бінарному файлуacpx. - Під час запуску OpenClaw перевіряє цей бінарний файл і за потреби самостійно його відновлює.
- Почніть із
/acp doctor, якщо хочете швидко перевірити готовність.
- Цільовий адаптер harness може бути завантажений за запитом через
npxпід час першого використання цього harness. - На хості для цього harness все одно має бути наявна автентифікація постачальника.
- Якщо хост не має доступу до npm/мережі, перше завантаження адаптерів може завершитися помилкою, доки кеші не буде попередньо прогріто або адаптер не буде встановлено іншим способом.
/acp spawn codex: OpenClaw має бути готовий ініціалізуватиacpx, але адаптер Codex ACP усе ще може потребувати першого завантаження./acp spawn claude: те саме для адаптера Claude ACP, плюс автентифікація на боці Claude на цьому хості.
Швидкий операторський потік
Використовуйте це, якщо вам потрібна практична інструкція для/acp:
- Запустіть сеанс:
/acp spawn codex --bind here/acp spawn codex --mode persistent --thread auto
- Працюйте в прив’язаній розмові або гілці (або явно вкажіть ключ цього сеансу).
- Перевірте стан середовища виконання:
/acp status
- За потреби налаштуйте параметри середовища виконання:
/acp model <provider/model>/acp permissions <profile>/acp timeout <seconds>
- Скоригуйте активний сеанс без заміни контексту:
/acp steer tighten logging and continue
- Зупиніть роботу:
/acp cancel(зупинити поточний хід), або/acp close(закрити сеанс і прибрати прив’язки)
Швидкий старт для людей
Приклади природних запитів:- «Прив’яжи цей канал Discord до Codex».
- «Запусти тут постійний сеанс Codex у гілці й тримай його зосередженим».
- «Виконай це як одноразовий сеанс Claude Code ACP і підсумуй результат».
- «Прив’яжи цей чат iMessage до Codex і зберігай наступні повідомлення в тому самому робочому просторі».
- «Використай Gemini CLI для цього завдання в гілці, а потім зберігай наступні повідомлення в цій самій гілці».
- Вибрати
runtime: "acp". - Визначити цільове harness-оточення (
agentId, наприкладcodex). - Якщо запитано прив’язку до поточної розмови й активний канал це підтримує, прив’язати сеанс ACP до цієї розмови.
- Інакше, якщо запитано прив’язку до гілки й поточний канал це підтримує, прив’язати сеанс ACP до гілки.
- Спрямовувати наступні прив’язані повідомлення до того самого сеансу ACP, доки він не буде розфокусований, закритий або прострочений.
ACP проти субагентів
Використовуйте ACP, коли потрібне зовнішнє середовище виконання harness. Використовуйте субагентів, коли потрібні делеговані запуски OpenClaw.| Область | Сеанс ACP | Запуск субагента |
|---|---|---|
| Середовище виконання | Плагін бекенду ACP (наприклад acpx) | Нативне середовище виконання субагента OpenClaw |
| Ключ сеансу | agent:<agentId>:acp:<uuid> | agent:<agentId>:subagent:<uuid> |
| Основні команди | /acp ... | /subagents ... |
| Інструмент запуску | sessions_spawn with runtime:"acp" | sessions_spawn (середовище виконання за замовчуванням) |
Як ACP запускає Claude Code
Для Claude Code через ACP стек такий:- Площина керування сеансом OpenClaw ACP
- вбудований плагін середовища виконання
acpx - адаптер Claude ACP
- механізм середовища виконання/сеансу на боці Claude
- ACP Claude — це сеанс harness з елементами керування ACP, відновленням сеансу, відстеженням фонових завдань і необов’язковою прив’язкою до розмови/гілки. Для операторів практичне правило таке:
-
якщо потрібні
/acp spawn, сеанси з прив’язкою, елементи керування середовищем виконання або постійна робота harness — використовуйте ACP
Прив’язані сеанси
Прив’язки до поточної розмови
Використовуйте/acp spawn <harness> --bind here, коли хочете, щоб поточна розмова стала довговічним робочим простором ACP без створення дочірньої гілки.
Поведінка:
- OpenClaw і далі керує транспортом каналу, автентифікацією, безпекою та доставкою.
- Поточна розмова закріплюється за ключем створеного сеансу ACP.
- Наступні повідомлення в цій розмові спрямовуються до того самого сеансу ACP.
/newі/resetскидають той самий прив’язаний сеанс ACP на місці./acp closeзакриває сеанс і прибирає прив’язку до поточної розмови.
--bind hereзберігає ту саму поверхню чату. У Discord поточний канал залишається поточним каналом.--bind hereвсе одно може створити новий сеанс ACP, якщо ви запускаєте нову роботу. Прив’язка прикріплює цей сеанс до поточної розмови.--bind hereсам по собі не створює дочірню гілку Discord або тему Telegram.- Середовище виконання ACP все одно може мати власну робочу директорію (
cwd) або робочий простір на диску, яким керує бекенд. Цей робочий простір середовища виконання є окремим від поверхні чату й не означає створення нової гілки повідомлень. - Якщо ви запускаєте інший ACP-агент і не передаєте
--cwd, OpenClaw за замовчуванням успадковує робочий простір цільового агента, а не запитувача. - Якщо цей успадкований шлях до робочого простору відсутній (
ENOENT/ENOTDIR), OpenClaw повертається до стандартного cwd бекенду замість того, щоб мовчки повторно використати неправильне дерево. - Якщо успадкований робочий простір існує, але доступ до нього неможливий (наприклад
EACCES), запуск повертає реальну помилку доступу замість відкиданняcwd.
- поверхня чату: де люди продовжують спілкуватися (
канал Discord,тема Telegram,чат iMessage) - сеанс ACP: довговічний стан середовища виконання Codex/Claude/Gemini, до якого OpenClaw спрямовує запити
- дочірня гілка/тема: необов’язкова додаткова поверхня повідомлень, що створюється лише через
--thread ... - робочий простір середовища виконання: розташування у файловій системі, де працює harness (
cwd, checkout репозиторію, робочий простір бекенду)
/acp spawn codex --bind here: зберегти цей чат, створити або під’єднати сеанс Codex ACP і спрямовувати сюди майбутні повідомлення/acp spawn codex --thread auto: OpenClaw може створити дочірню гілку/тему і прив’язати там сеанс ACP/acp spawn codex --bind here --cwd /workspace/repo: та сама прив’язка до чату, що й вище, але Codex працює в/workspace/repo
- Чат-канали/канали повідомлень, які заявляють підтримку прив’язки до поточної розмови, можуть використовувати
--bind hereчерез спільний шлях прив’язки розмов. - Канали з особливою семантикою гілок/тем усе одно можуть надавати канально-специфічну канонізацію за тим самим спільним інтерфейсом.
--bind hereзавжди означає «прив’язати поточну розмову на місці».- Загальні прив’язки до поточної розмови використовують спільне сховище прив’язок OpenClaw і зберігаються після звичайних перезапусків gateway.
--bind hereі--thread ...взаємовиключні в/acp spawn.- У Discord
--bind hereприв’язує поточний канал або гілку на місці.spawnAcpSessionsпотрібен лише тоді, коли OpenClaw має створити дочірню гілку для--thread auto|here. - Якщо активний канал не надає ACP-прив’язок до поточної розмови, OpenClaw повертає зрозуміле повідомлення про непідтримку.
resumeі питання «нового сеансу» — це питання сеансу ACP, а не каналу. Ви можете повторно використовувати або замінювати стан середовища виконання, не змінюючи поточну поверхню чату.
Сеанси з прив’язкою до гілки
Коли для адаптера каналу ввімкнено прив’язки до гілок, сеанси ACP можна прив’язувати до гілок:- OpenClaw прив’язує гілку до цільового сеансу ACP.
- Наступні повідомлення в цій гілці спрямовуються до прив’язаного сеансу ACP.
- Вивід ACP доставляється назад у ту саму гілку.
- Розфокусування, закриття, архівування, тайм-аут бездіяльності або завершення max-age прибирає прив’язку.
acp.enabled=trueacp.dispatch.enabledувімкнено за замовчуванням (встановітьfalse, щоб призупинити диспетчеризацію ACP)- Увімкнено прапорець запуску ACP у гілках адаптера каналу (залежить від адаптера)
- Discord:
channels.discord.threadBindings.spawnAcpSessions=true - Telegram:
channels.telegram.threadBindings.spawnAcpSessions=true
- Discord:
Канали з підтримкою гілок
- Будь-який адаптер каналу, який надає можливість прив’язки сеансу/гілки.
- Поточна вбудована підтримка:
- гілки/канали Discord
- теми Telegram (форумні теми в групах/супергрупах і DM-теми)
- Канали-плагіни можуть додавати підтримку через той самий інтерфейс прив’язки.
Налаштування для конкретних каналів
Для неепізодичних робочих процесів налаштуйте постійні ACP-прив’язки в записах верхнього рівняbindings[].
Модель прив’язки
bindings[].type="acp"позначає постійну ACP-прив’язку розмови.bindings[].matchвизначає цільову розмову:- канал або гілка Discord:
match.channel="discord"+match.peer.id="<channelOrThreadId>" - форумна тема Telegram:
match.channel="telegram"+match.peer.id="<chatId>:topic:<topicId>" - чат BlueBubbles DM/груповий чат:
match.channel="bluebubbles"+match.peer.id="<handle|chat_id:*|chat_guid:*|chat_identifier:*>"Для стабільних прив’язок груп віддавайте перевагуchat_id:*абоchat_identifier:*. - чат iMessage DM/груповий чат:
match.channel="imessage"+match.peer.id="<handle|chat_id:*|chat_guid:*|chat_identifier:*>"Для стабільних прив’язок груп віддавайте перевагуchat_id:*.
- канал або гілка Discord:
bindings[].agentId— це id агента OpenClaw-власника.- Необов’язкові перевизначення ACP містяться в
bindings[].acp:mode(persistentабоoneshot)labelcwdbackend
Стандартні параметри середовища виконання для кожного агента
Використовуйтеagents.list[].runtime, щоб один раз визначити стандартні параметри ACP для кожного агента:
agents.list[].runtime.type="acp"agents.list[].runtime.acp.agent(id harness, наприклад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.
- У прив’язаних розмовах
/newі/resetскидають той самий ключ сеансу ACP на місці. - Тимчасові прив’язки середовища виконання (наприклад створені потоками фокусування на гілці) усе ще застосовуються, де вони є.
- Для міжагентних запусків ACP без явного
cwdOpenClaw успадковує робочий простір цільового агента з конфігурації агента. - Відсутні успадковані шляхи до робочого простору призводять до повернення до стандартного cwd бекенду; невідсутні помилки доступу повертаються як помилки запуску.
Запуск сеансів ACP (інтерфейси)
Із sessions_spawn
Використовуйте runtime: "acp", щоб запустити сеанс ACP із ходу агента або виклику інструмента.
runtimeза замовчуванням має значенняsubagent, тому для сеансів ACP явно встановлюйтеruntime: "acp".- Якщо
agentIdне вказано, OpenClaw використовуєacp.defaultAgent, якщо його налаштовано. mode: "session"вимагаєthread: true, щоб зберегти постійну прив’язану розмову.
task(обов’язково): початковий промпт, надісланий до сеансу ACP.runtime(обов’язково для ACP): має бути"acp".agentId(необов’язково): id цільового harness ACP. Якщо не вказано, використовуєтьсяacp.defaultAgent, якщо налаштовано.thread(необов’язково, за замовчуваннямfalse): запитати потік прив’язки до гілки там, де це підтримується.mode(необов’язково):run(одноразовий) абоsession(постійний).- за замовчуванням використовується
run - якщо
thread: trueі mode не вказано, OpenClaw може за замовчуванням використовувати постійну поведінку залежно від шляху середовища виконання mode: "session"вимагаєthread: true
- за замовчуванням використовується
cwd(необов’язково): запитувана робоча директорія середовища виконання (перевіряється політикою бекенду/середовища виконання). Якщо не вказано, під час запуску ACP успадковується робочий простір цільового агента, якщо він налаштований; відсутні успадковані шляхи повертаються до стандартних параметрів бекенду, а реальні помилки доступу повертаються.label(необов’язково): операторська мітка, що використовується в тексті сеансу/банера.resumeSessionId(необов’язково): відновити наявний сеанс ACP замість створення нового. Агент відтворює свою історію розмов черезsession/load. Вимагаєruntime: "acp".streamTo(необов’язково):"parent"передає підсумки прогресу початкового запуску ACP назад до сеансу-запитувача як системні події.- За наявності прийнятні відповіді включають
streamLogPath, який вказує на JSONL-журнал у межах сеансу (<sessionId>.acp-stream.jsonl), який можна відстежувати для повної історії ретрансляції.
- За наявності прийнятні відповіді включають
Відновлення наявного сеансу
ВикористовуйтеresumeSessionId, щоб продовжити попередній сеанс ACP замість запуску з нуля. Агент відтворює свою історію розмов через session/load, тому відновлює роботу з повним контекстом попередніх дій.
- Передати сеанс Codex з ноутбука на телефон — попросіть агента продовжити з того місця, де ви зупинилися
- Продовжити сеанс кодування, який ви почали інтерактивно в CLI, а тепер хочете виконувати безголово через агента
- Відновити роботу, яку перервав перезапуск gateway або тайм-аут бездіяльності
resumeSessionIdвимагаєruntime: "acp"— повертає помилку, якщо використовується із середовищем виконання субагента.resumeSessionIdвідновлює історію вхідної ACP-розмови;threadіmodeяк і раніше застосовуються звичайним чином до нового сеансу OpenClaw, який ви створюєте, тожmode: "session"усе ще вимагаєthread: true.- Цільовий агент має підтримувати
session/load(Codex і Claude Code це підтримують). - Якщо id сеансу не знайдено, запуск завершиться зрозумілою помилкою — без тихого повернення до нового сеансу.
Операторський smoke test
Використовуйте це після розгортання gateway, коли потрібна швидка жива перевірка того, що запуск ACP справді працює наскрізь, а не лише проходить модульні тести. Рекомендований бар’єр перевірки:- Перевірте версію/коміт розгорнутого gateway на цільовому хості.
- Підтвердьте, що розгорнуте джерело містить прийняття лінійності ACP у
src/gateway/sessions-patch.ts(subagent:* or acp:* sessions). - Відкрийте тимчасовий сеанс мосту ACPX до живого агента (наприклад
razor(main)наjpclawhq). - Попросіть цього агента викликати
sessions_spawnіз:runtime: "acp"agentId: "codex"mode: "run"- task:
Reply with exactly LIVE-ACP-SPAWN-OK
- Переконайтеся, що агент повідомляє:
accepted=yes- реальний
childSessionKey - відсутність помилки валідатора
- Приберіть тимчасовий сеанс мосту ACPX.
- Для цього smoke test використовуйте
mode: "run", якщо тільки ви навмисно не тестуєте постійні сеанси ACP із прив’язкою до гілки. - Не вимагайте
streamTo: "parent"для базового бар’єра. Цей шлях залежить від можливостей запитувача/сеансу й є окремою інтеграційною перевіркою. - Розглядайте тестування
mode: "session"із прив’язкою до гілки як другу, ширшу інтеграційну перевірку з реальної гілки Discord або теми Telegram.
Сумісність із sandbox
Наразі сеанси ACP працюють у середовищі виконання хоста, а не всередині sandbox OpenClaw. Поточні обмеження:- Якщо сеанс-запитувач ізольований sandbox, запуски ACP блокуються як для
sessions_spawn({ runtime: "acp" }), так і для/acp spawn.- Помилка:
Sandboxed sessions cannot spawn ACP sessions because runtime="acp" runs on the host. Use runtime="subagent" from sandboxed sessions.
- Помилка:
sessions_spawnзruntime: "acp"не підтримуєsandbox: "require".- Помилка:
sessions_spawn sandbox="require" is unsupported for runtime="acp" because ACP sessions run outside the sandbox. Use runtime="subagent" or sandbox="inherit".
- Помилка:
runtime: "subagent", коли потрібне виконання, примусово обмежене sandbox.
Із команди /acp
Використовуйте /acp spawn для явного операторського керування з чату, коли це потрібно.
--mode persistent|oneshot--bind here|off--thread auto|here|off--cwd <absolute-path>--label <name>
Визначення цілі сеансу
Більшість дій/acp приймають необов’язкову ціль сеансу (session-key, session-id або session-label).
Порядок визначення:
- Явний аргумент цілі (або
--sessionдля/acp steer)- спочатку пробує ключ
- потім session id у форматі UUID
- потім мітку
- Прив’язка поточної гілки (якщо ця розмова/гілка прив’язана до сеансу ACP)
- Резервний варіант: поточний сеанс запитувача
Unable to resolve session target: ...).
Режими прив’язки під час запуску
/acp spawn підтримує --bind here|off.
| Режим | Поведінка |
|---|---|
here | Прив’язати поточну активну розмову на місці; помилка, якщо її немає. |
off | Не створювати прив’язку до поточної розмови. |
--bind here— найпростіший операторський шлях для «зробити цей канал або чат підкріпленим Codex».--bind hereне створює дочірню гілку.--bind hereдоступний лише в каналах, які підтримують прив’язку до поточної розмови.--bindі--threadне можна поєднувати в одному виклику/acp spawn.
Режими гілок під час запуску
/acp spawn підтримує --thread auto|here|off.
| Режим | Поведінка |
|---|---|
auto | В активній гілці: прив’язати цю гілку. Поза гілкою: створити/прив’язати дочірню гілку, якщо це підтримується. |
here | Вимагає поточної активної гілки; помилка, якщо ви не в гілці. |
off | Без прив’язки. Сеанс запускається без прив’язки. |
- На поверхнях без підтримки прив’язки до гілки поведінка за замовчуванням фактично дорівнює
off. - Запуск із прив’язкою до гілки вимагає підтримки політики каналу:
- Discord:
channels.discord.threadBindings.spawnAcpSessions=true - Telegram:
channels.telegram.threadBindings.spawnAcpSessions=true
- Discord:
- Використовуйте
--bind here, якщо хочете закріпити поточну розмову без створення дочірньої гілки.
Елементи керування 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 показує ефективні параметри середовища виконання і, за наявності, ідентифікатори сеансів як на рівні середовища виконання, так і на рівні бекенду.
Деякі елементи керування залежать від можливостей бекенду. Якщо бекенд не підтримує певний елемент керування, OpenClaw повертає зрозумілу помилку про непідтримуваний елемент керування.
Книга рецептів для команд ACP
| Команда | Що вона робить | Приклад |
|---|---|---|
/acp spawn | Створює сеанс ACP; необов’язкова поточна прив’язка або прив’язка до гілки. | /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 | Закриває сеанс і відв’язує цілі гілок. | /acp close |
/acp status | Показує бекенд, режим, стан, параметри середовища виконання, можливості. | /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 | Стан бекенду, можливості, практичні виправлення. | /acp doctor |
/acp install | Виводить детерміновані кроки встановлення та ввімкнення. | /acp install |
/acp sessions читає сховище для поточного прив’язаного сеансу або сеансу запитувача. Команди, які приймають токени session-key, session-id або session-label, визначають цілі через виявлення сеансів gateway, включно з користувацькими коренями session.store для окремих агентів.
Відображення параметрів середовища виконання
/acp має зручні команди та загальний сеттер.
Еквівалентні операції:
/acp model <id>відповідає ключу конфігурації середовища виконанняmodel./acp permissions <profile>відповідає ключу конфігурації середовища виконанняapproval_policy./acp timeout <seconds>відповідає ключу конфігурації середовища виконанняtimeout./acp cwd <path>безпосередньо оновлює перевизначення cwd середовища виконання./acp set <key> <value>— це загальний шлях.- Особливий випадок:
key=cwdвикористовує шлях перевизначення cwd.
- Особливий випадок:
/acp reset-optionsочищає всі перевизначення середовища виконання для цільового сеансу.
Підтримка harness acpx (поточна)
Поточні вбудовані псевдоніми harness acpx:claudecodexcopilotcursor(Cursor CLI:cursor-agent acp)droidgeminiiflowkilocodekimikiroopenclawopencodepiqwen
agentId, якщо тільки у вашій конфігурації acpx не визначено користувацькі псевдоніми агентів.
Якщо ваш локальний Cursor усе ще показує ACP як agent acp, перевизначте команду агента cursor у своїй конфігурації acpx замість зміни вбудованого стандартного значення.
Безпосереднє використання CLI acpx також може націлюватися на довільні адаптери через --agent <command>, але цей сирий обхідний шлях є функцією CLI acpx (а не звичайним шляхом agentId в OpenClaw).
Необхідна конфігурація
Базова конфігурація ACP:- Discord:
channels.discord.threadBindings.spawnAcpSessions=true
Налаштування плагіна для бекенду acpx
Нові встановлення постачаються з увімкненим за замовчуванням вбудованим плагіном середовища виконанняacpx, тому ACP зазвичай працює без ручного кроку встановлення плагіна.
Почніть із:
acpx, заборонили його через plugins.allow / plugins.deny або хочете
перейти на локальний checkout для розробки, скористайтеся явним шляхом плагіна:
Конфігурація команди й версії acpx
За замовчуванням вбудований плагін бекенду acpx (acpx) використовує локальний закріплений бінарний файл плагіна:
- За замовчуванням команда вказує на локальний
node_modules/.bin/acpxусередині пакета плагіна ACPX. - Очікувана версія за замовчуванням відповідає закріпленню розширення.
- Під час запуску реєстрація бекенду ACP одразу позначається як not-ready.
- Фонове завдання ensure перевіряє
acpx --version. - Якщо локальний бінарний файл плагіна відсутній або не збігається за версією, виконується:
npm install --omit=dev --no-save acpx@<pinned>і повторна перевірка.
commandприймає абсолютний шлях, відносний шлях або ім’я команди (acpx).- Відносні шляхи визначаються від директорії робочого простору OpenClaw.
expectedVersion: "any"вимикає сувору перевірку відповідності версії.- Коли
commandвказує на користувацький бінарний файл/шлях, автоматичне локальне встановлення плагіна вимикається. - Запуск OpenClaw залишається неблокувальним, поки триває фонова перевірка стану бекенду.
Автоматичне встановлення залежностей
Коли ви встановлюєте OpenClaw глобально черезnpm install -g openclaw, залежності
середовища виконання acpx (платформозалежні бінарні файли) встановлюються автоматично
через хук postinstall. Якщо автоматичне встановлення завершується помилкою, gateway все одно запускається
нормально і повідомляє про відсутню залежність через openclaw acp doctor.
MCP-міст інструментів плагіна
За замовчуванням сеанси ACPX не відкривають зареєстровані плагінами OpenClaw інструменти для ACP-harness-оточення. Якщо ви хочете, щоб ACP-агенти, такі як Codex або Claude Code, могли викликати встановлені інструменти плагінів OpenClaw, такі як збереження/отримання пам’яті, увімкніть спеціальний міст:- Вбудовує в bootstrap сеансу ACPX вбудований MCP-сервер з назвою
openclaw-plugin-tools. - Відкриває інструменти плагінів, уже зареєстровані встановленими та ввімкненими плагінами OpenClaw.
- Робить цю функцію явною і вимкненою за замовчуванням.
- Це розширює поверхню інструментів ACP-harness-оточення.
- ACP-агенти отримують доступ лише до інструментів плагінів, які вже активні в gateway.
- Розглядайте це як ту саму межу довіри, що й дозвіл цим плагінам виконуватися у самому OpenClaw.
- Перевіряйте встановлені плагіни перед увімкненням цієї функції.
mcpServers і надалі працюють як раніше. Вбудований міст інструментів плагінів є
додатковою зручною функцією за явним увімкненням, а не заміною загальної конфігурації MCP-сервера.
Конфігурація дозволів
Сеанси ACP працюють неінтерактивно — TTY для схвалення або відхилення запитів дозволів на запис у файли й виконання shell-команд немає. Плагін acpx надає два ключі конфігурації, які керують обробкою дозволів: Ці дозволи harness ACPX відокремлені від схвалень exec в OpenClaw і відокремлені від прапорців обходу постачальника в бекендах CLI, таких як Claude CLI--permission-mode bypassPermissions. ACPX approve-all — це аварійний перемикач на рівні harness для сеансів ACP.
permissionMode
Керує тим, які операції агент harness може виконувати без запиту.
| Значення | Поведінка |
|---|---|
approve-all | Автоматично схвалює всі записи у файли та shell-команди. |
approve-reads | Автоматично схвалює лише читання; запис і exec вимагають запитів. |
deny-all | Відхиляє всі запити дозволів. |
nonInteractivePermissions
Керує тим, що відбувається, коли мав би з’явитися запит на дозвіл, але інтерактивний TTY недоступний (а для сеансів ACP це завжди так).
| Значення | Поведінка |
|---|---|
fail | Перервати сеанс з AcpRuntimeError. (за замовчуванням) |
deny | Мовчки відхилити дозвіл і продовжити роботу (плавна деградація). |
Конфігурація
Налаштовується через конфігурацію плагіна:Важливо: OpenClaw наразі за замовчуванням використовуєpermissionMode=approve-readsіnonInteractivePermissions=fail. У неінтерактивних сеансах ACP будь-який запис або exec, що викликає запит дозволу, може завершитися помилкоюAcpRuntimeError: Permission prompt unavailable in non-interactive mode. Якщо вам потрібно обмежити дозволи, встановітьnonInteractivePermissionsуdeny, щоб сеанси плавно деградували замість аварійного завершення.
Усунення несправностей
| Симптом | Імовірна причина | Виправлення |
|---|---|---|
ACP runtime backend is not configured | Плагін бекенду відсутній або вимкнений. | Встановіть і ввімкніть плагін бекенду, потім виконайте /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. |
ACP agent "<id>" is not allowed by policy | Агента немає у списку дозволених. | Використовуйте дозволений agentId або оновіть acp.allowedAgents. |
Unable to resolve session target: ... | Неправильний токен ключа/id/мітки. | Виконайте /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" з ізольованих sandbox сеансів або запускайте ACP з неізольованого сеансу. |
sessions_spawn sandbox="require" is unsupported for runtime="acp" ... | Для середовища виконання ACP запитано sandbox="require". | Використовуйте runtime="subagent" для обов’язкової ізоляції sandbox або ACP із sandbox="inherit" з неізольованого сеансу. |
| Missing ACP metadata for bound session | Застарілі/видалені метадані сеансу ACP. | Створіть заново через /acp spawn, потім повторно прив’яжіть/сфокусуйте гілку. |
AcpRuntimeError: Permission prompt unavailable in non-interactive mode | permissionMode блокує запис/exec у неінтерактивному сеансі ACP. | Встановіть plugins.entries.acpx.config.permissionMode у approve-all і перезапустіть gateway. Див. Конфігурація дозволів. |
| ACP session fails early with little output | Запити дозволів блокуються через permissionMode/nonInteractivePermissions. | Перевірте журнали gateway на AcpRuntimeError. Для повних дозволів встановіть permissionMode=approve-all; для плавної деградації встановіть nonInteractivePermissions=deny. |
| ACP session stalls indefinitely after completing work | Процес harness завершився, але сеанс ACP не повідомив про завершення. | Відстежуйте за допомогою ps aux | grep acpx; вручну завершіть завислі процеси. |