Skip to main content
Засіб виконання агента — це низькорівневий виконавець одного підготовленого ходу агента OpenClaw. Це не провайдер моделі, не канал і не реєстр інструментів. Опис концептуальної моделі для користувача див. у розділі Середовища виконання агентів. Використовуйте цю поверхню лише для вбудованих або довірених нативних плагінів. Контракт усе ще експериментальний, оскільки типи параметрів навмисно віддзеркалюють поточний вбудований засіб виконання.

Коли використовувати засіб виконання

Реєструйте засіб виконання агента, коли сімейство моделей має власне нативне середовище виконання сеансів, а звичайний транспорт провайдера OpenClaw є невідповідною абстракцією:
  • нативний сервер агента програмування, який керує потоками та Compaction
  • локальний CLI або демон, який має потоково передавати нативні події планування, міркування та інструментів
  • середовище виконання моделі, якому потрібен власний ідентифікатор відновлення на додачу до стенограми сеансу OpenClaw
Не реєструйте засіб виконання лише для додавання нового API LLM. Для звичайних API моделей через HTTP або WebSocket створіть плагін провайдера.

Що й надалі контролює ядро

До вибору засобу виконання OpenClaw уже визначає:
  • провайдера та модель
  • стан автентифікації середовища виконання, якщо засіб виконання не оголошує, що контролює початкове налаштування автентифікації
  • рівень міркування та бюджет контексту
  • файл стенограми/сеансу OpenClaw
  • робочий простір, пісочницю та політику інструментів
  • зворотні виклики відповідей каналу та потокового передавання
  • політику резервної моделі та перемикання моделі в реальному часі
Засіб виконання запускає підготовлену спробу; він не вибирає провайдерів, не замінює доставку каналом і не перемикає моделі без явного повідомлення.

Початкове налаштування автентифікації під керуванням засобу виконання

За замовчуванням ядро визначає облікові дані провайдера перед викликом засобу виконання. Довірений засіб виконання, здатний автентифікуватися через власне нативне середовище виконання, може встановити authBootstrap: "harness" у своїй статичній реєстрації AgentHarness. Тоді ядро пропускає загальне початкове налаштування облікових даних провайдера та помилку через відсутність облікових даних для кожної спроби, яку приймає цей засіб виконання. Ядро й надалі передає сумісний, явно вибраний або впорядкований профіль автентифікації OpenClaw і його сховище з відповідною областю дії, якщо вони існують. Засіб виконання має визначити цей профіль або свої нативні облікові дані до надсилання запитів моделі, обмежувати секрети областю спроби та повідомляти про помилки автентифікації з практичними вказівками. Не встановлюйте цю можливість для засобу виконання, який контролює автентифікацію лише іноді.

Перевірені артефакти середовища виконання налаштування

Локальний засіб виконання, здатний забезпечити інференс для початкового налаштування, має засвідчити реалізацію, яка завершила перевірку. Коли params.captureRuntimeArtifact має значення true, поверніть непрозорий result.runtimeArtifact зі стабільним ідентифікатором і відбитком вмісту. Зареєструйте відповідну можливість runtimeArtifact.validate(...), яка повторно перевіряє цю прив’язку без завантаження іншого засобу виконання або сканування непов’язаних плагінів. Перевірені продовження OpenClaw також передають params.expectedRuntimeArtifact. Засіб виконання має порівняти його з точним нативним процесом, який він отримав, і завершитися з помилкою до запуску або відновлення нативного потоку, якщо вони відрізняються. Звичайні ходи агента не містять обох полів, тому хешування вмісту не потрапляє до звичайного гарячого шляху запитів. Віддаленим засобам виконання або засобам через WebSocket потрібен контракт атестації сервера, перш ніж вони зможуть брати участь; самого рядка версії недостатньо для ідентифікації артефакту. Підготовлена спроба також містить params.runtimePlan — контрольований OpenClaw пакет політик для рішень середовища виконання, які мають залишатися спільними для OpenClaw і нативних засобів виконання:
  • runtimePlan.tools.normalize(...) і runtimePlan.tools.logDiagnostics(...) для політики схеми інструментів з урахуванням провайдера
  • runtimePlan.transcript.resolvePolicy(...) для очищення стенограми та політики відновлення викликів інструментів
  • runtimePlan.delivery.isSilentPayload(...) для спільного NO_REPLY і приглушення доставки медіа
  • runtimePlan.outcome.classifyRunResult(...) для класифікації резервної моделі
  • runtimePlan.observability для визначених метаданих провайдера, моделі та засобу виконання
Засоби виконання можуть використовувати план для рішень, які мають відповідати поведінці OpenClaw, але повинні розглядати його як стан спроби під керуванням хоста: не змінюйте його й не використовуйте для перемикання провайдерів або моделей усередині ходу.

Контракт транспорту запитів

supports(ctx) отримує визначений транспорт моделі в ctx.modelProvider. Вибраний маршрут описують два факти без секретів, контрольовані провайдером:
  • runtimePolicy.compatibleIds містить ідентифікатори середовищ виконання, які провайдер оголошує сумісними з цим конкретним маршрутом. Відсутність політики означає, що провайдер не оголосив сумісність на рівні маршруту; це не дозвіл припускати підтримку.
  • requestTransportOverrides: "none" означає, що не потрібно відтворювати жодне задане перевизначення запиту провайдера/моделі. "present" означає, що існують задані заголовки, транспорт автентифікації, проксі, TLS, поведінка локальної служби чи приватної мережі або параметри запиту. Цей факт не розкриває їхніх значень.
Поверніть { supported: false, reason }, якщо засіб виконання не може відтворити підготовлений транспорт. Не робіть висновків про підтримку, читаючи необроблену конфігурацію після вибору. Якщо підготовка автентифікації створює кілька маршрутів повторної спроби, один засіб виконання має підтримувати їх усі до диспетчеризації. За неявного вибору використовується OpenClaw, якщо жоден плагін не може контролювати весь набір; явний або збережений вибір плагіна завершується безпечною відмовою.

Реєстрація засобу виконання

Імпорт: openclaw/plugin-sdk/agent-harness
authBootstrap навмисно відсутній у цьому загальному прикладі. Додавайте authBootstrap: "harness" лише тоді, коли засіб виконання відповідає наведеному вище контракту.

Делеговане виконання

Власник засобу виконання може встановити delegatedExecutionPluginIds у значення ідентифікаторів довірених плагінів, яким потрібно виконувати наявний сеанс, прив’язаний до моделі, наприклад голосовий транспорт, що продовжує розмову на основі Codex. Це статична згода власника, а не список дозволів ядра. Зберігайте його вузьким. Делегати отримують лише допуск завдання та вбудоване виконання. OpenClaw вимагає точний збережений ключ сеансу, шлях до сховища та ідентифікатор сеансу; modelSelectionLocked: true; а також відповідні значення agentHarnessId і agentHarnessRuntimeOverride. Після цього виконання обмежується областю власника засобу виконання. Створення, виправлення, скидання, видалення й архівування сеансів, а також зміна Gateway залишаються доступними лише власнику.

Політика вибору

OpenClaw вибирає засіб виконання після визначення провайдера/моделі:
  1. Політика середовища виконання на рівні моделі має найвищий пріоритет.
  2. Далі застосовується політика середовища виконання на рівні провайдера.
  3. auto запитує зареєстровані засоби виконання, чи підтримують вони визначений ефективний маршрут. Самі лише префікси провайдера/моделі ніколи не вибирають засіб виконання.
  4. Якщо жоден зареєстрований засіб виконання не відповідає, OpenClaw використовує своє вбудоване середовище виконання.
Помилки засобів виконання плагінів відображаються як помилки виконання. У режимі auto резервний перехід до вбудованого середовища застосовується лише тоді, коли жоден зареєстрований засіб виконання плагіна не підтримує визначену пару провайдера/моделі. Після того як засіб виконання плагіна прийняв виконання, OpenClaw не відтворює той самий хід через інше середовище виконання, оскільки це може змінити семантику автентифікації/середовища виконання або дублювати побічні ефекти. Налаштована політика середовища виконання залишається авторитетною щодо бажаного середовища. Збережений сеанс agentHarnessId зберігає право власності на свою нативну стенограму, поки підготовка маршруту/автентифікації ще триває. Жодна з цих умов не робить несумісний маршрут сумісним: щойно з’являються підготовлені факти, вибраний або закріплений засіб виконання має їх підтримувати, інакше виконання завершується безпечною відмовою. /status показує ефективне середовище виконання, вибране на основі політики, збереженого права власності та підтримки маршруту. Підготовлений стан є явним: відсутній runtimePolicy залишається неоголошеним, а не визначається з будь-яких наявних полів транспорту. Коли автентифікація під керуванням засобу виконання залишає кілька фізичних маршрутів невизначеними, підготовлений факт підтримки є перетином їхніх ідентифікаторів сумісних середовищ виконання та повідомляє про перевизначення запитів, якщо вони є хоча б у одного кандидата. Тому один неоголошений кандидат робить множину нативної сумісності порожньою; preparedAuth.source: "harness" є власником автентифікації, а не дозволом робити висновки про підтримку маршруту. Якщо вибраний засіб виконання є несподіваним, увімкніть налагоджувальне журналювання agents/harness і перегляньте структурований запис шлюзу agent harness selected: він містить ідентифікатор вибраного засобу виконання, причину вибору, політику середовища виконання/резервування та, у режимі auto, результат перевірки підтримки кожного кандидата-плагіна. Вбудований плагін Codex реєструє codex як ідентифікатор свого засобу виконання. Ядро розглядає його як звичайний ідентифікатор засобу виконання плагіна; специфічні для Codex псевдоніми мають належати плагіну або конфігурації оператора, а не спільному селектору середовища виконання.

Поєднання провайдера із засобом виконання

Більшість засобів виконання також мають реєструвати провайдера. Провайдер робить посилання на моделі, стан автентифікації, метадані моделей і вибір /model видимими для решти OpenClaw. Потім засіб виконання приймає цього провайдера в supports(...). Вбудований плагін Codex дотримується цього шаблону:
  • бажані користувацькі посилання на моделі: openai/gpt-5.6-sol
  • посилання сумісності: застарілі посилання codex/gpt-* залишаються прийнятними, але нові конфігурації не повинні використовувати їх як звичайні посилання провайдера/моделі
  • ідентифікатор засобу виконання: codex
  • автентифікація: синтетична доступність провайдера, оскільки засіб виконання Codex контролює нативний вхід/сеанс Codex
  • запит до сервера застосунку: OpenClaw надсилає Codex лише ідентифікатор моделі й дозволяє засобу виконання взаємодіяти з нативним протоколом сервера застосунку
Плагін Codex є доповненням. Якщо політику середовища виконання не задано або встановлено auto, OpenAI може вибрати Codex лише тоді, коли контрольований провайдером контракт маршруту оголошує codex сумісним: точний офіційний маршрут HTTPS Platform Responses або ChatGPT Responses без заданого перевизначення запиту. Сам лише префікс openai/* ніколи не вибирає Codex. Власні кінцеві точки, адаптери Completions і задана поведінка запитів залишаються в OpenClaw. Офіційні кінцеві точки через незашифрований HTTP відхиляються. Старіші посилання codex/gpt-* залишаються вхідними даними сумісності. Див. Неявне середовище виконання агента OpenAI. Налаштування для операторів, приклади префіксів моделей і конфігурації лише для Codex див. у розділі Засіб виконання Codex. Плагін Codex забезпечує дотримання мінімальної версії сервера застосунку, задокументованої в розділі Засіб виконання Codex. Він перевіряє початкове узгодження й блокує старіші сервери або сервери без версії, тому OpenClaw працює лише з тією поверхнею протоколу, яку було протестовано.

Проміжне ПЗ результатів інструментів

Вбудовані плагіни та явно ввімкнені встановлені плагіни з відповідними контрактами маніфесту можуть під’єднувати нейтральне до середовища виконання проміжне ПЗ результатів інструментів через api.registerAgentToolResultMiddleware(...), якщо їхній маніфест оголошує цільові ідентифікатори середовищ виконання в contracts.agentToolResultMiddleware. Ця довірена точка інтеграції призначена для асинхронних перетворень результатів інструментів, які мають виконуватися до того, як OpenClaw або Codex передасть результат інструмента назад моделі. Застарілі вбудовані плагіни все ще можуть використовувати api.registerCodexAppServerExtensionFactory(...) для проміжного ПЗ, призначеного лише для сервера застосунку Codex, але нові перетворення результатів мають використовувати API, нейтральний щодо середовища виконання. Хук api.registerEmbeddedExtensionFactory(...), призначений лише для вбудованого засобу запуску, видалено; вбудовані перетворення результатів інструментів мають використовувати проміжне ПЗ, нейтральне щодо середовища виконання.

Класифікація кінцевого результату

Нативні середовища, які самі керують проєкцією власного протоколу, можуть використовувати classifyAgentHarnessTerminalOutcome(...) з openclaw/plugin-sdk/agent-harness-runtime, коли завершений хід не створив видимого тексту асистента. Допоміжна функція повертає empty, reasoning-only або planning-only, щоб політика резервного варіанта OpenClaw могла вирішити, чи повторювати спробу з іншою моделлю. planning-only потребує явного поля planText середовища; OpenClaw не виводить його з тексту асистента. Допоміжна функція навмисно не класифікує помилки запиту, незавершені ходи та навмисні відповіді без виведення, як-от NO_REPLY.

Побічні ефекти завершення агента

Нативні середовища мають викликати runAgentEndSideEffects(...) з openclaw/plugin-sdk/agent-harness-runtime після завершення спроби. Ця функція запускає переносний хук agent_end і збирання дослідницьких даних OpenClaw, не затримуючи інтерактивні відповіді. Використовуйте awaitAgentEndSideEffects(...) для локальних неінтерактивних запусків, у яких спроба не повинна завершуватися, доки не завершаться ці побічні ефекти. Обидві допоміжні функції приймають те саме корисне навантаження { event, ctx }, що й runAgentHarnessAgentEndHook(...); їхні помилки не змінюють результат завершеної спроби.

Поверхні введення користувача та інструментів

Нативні середовища, які надають запит користувацького введення на рівні середовища виконання, мають використовувати допоміжні функції користувацького введення з openclaw/plugin-sdk/agent-harness-runtime, щоб форматувати запит, доставляти його через блокувальний шлях відповіді OpenClaw і нормалізувати варіанти вибору та довільні відповіді назад у нативну форму відповіді середовища виконання. Допоміжна функція забезпечує узгоджене представлення в каналі/TUI, тоді як кожне середовище зберігає власний розбір протоколу та життєвий цикл незавершеного запиту. Нативні середовища, яким потрібна компактна маршрутизація інструментів у стилі PI, мають використовувати createAgentHarnessToolSurfaceRuntime(...) з openclaw/plugin-sdk/agent-harness-tool-runtime. Вона керує вибором засобів керування пошуком інструментів/режимом коду, спрощеними типовими параметрами локальної моделі, сумісною із середовищем виконання фільтрацією схем, прихованим виконанням каталогу, наповненням каталогів і очищенням каталогу. Середовища й надалі відповідають за специфічне для їхнього SDK перетворення інструментів і нативний зворотний виклик виконання.

Нативний режим середовища Codex

Вбудоване середовище codex — це нативний режим Codex для вбудованих ходів агента OpenClaw. Спочатку ввімкніть вбудований плагін codex, а якщо конфігурація використовує обмежувальний список дозволів, додайте codex до plugins.allow. Нативні конфігурації сервера застосунку мають використовувати openai/gpt-*; ходи агента OpenAI вибирають середовище Codex, лише коли фактичний маршрут оголошує сумісність із Codex. Застарілі посилання на моделі Codex потрібно виправити за допомогою openclaw doctor --fix, а застарілі посилання на моделі codex/* залишаються псевдонімами сумісності для нативного середовища. Коли працює цей режим, Codex керує нативним ідентифікатором потоку, поведінкою відновлення, Compaction і виконанням сервера застосунку. OpenClaw і надалі керує каналом чату, видимим дзеркалом транскрипту, політикою інструментів, схваленнями, доставленням медіа та вибором сеансу. Використовуйте провайдера/модель agentRuntime.id: "codex", коли потрібно довести, що запуск може обробити лише шлях сервера застосунку Codex. Явно задані середовища виконання плагінів завершуються з помилкою без резервного варіанта; помилки вибору сервера застосунку Codex і помилки середовища виконання не спричиняють повторної спроби через інше середовище виконання.

Строгість середовища виконання

За замовчуванням OpenClaw використовує політику середовища виконання провайдера/моделі auto: зареєстровані середовища плагінів можуть обробляти сумісні фактичні маршрути, а вбудоване середовище виконання обробляє хід, якщо жодне з них не відповідає. Сам префікс провайдера/моделі ніколи не вибирає середовище. Використовуйте явне середовище виконання плагіна провайдера/моделі, наприклад agentRuntime.id: "codex", якщо відсутність вибору середовища має призводити до помилки, а не до маршрутизації через вбудоване середовище виконання. Явний вибір не робить несумісний маршрут сумісним. Помилки вибраного середовища плагіна завжди призводять до остаточної помилки. Це не блокує явний agentRuntime.id: "openclaw" провайдера/моделі. Для вбудованих запусків лише з Codex:
Якщо потрібен бекенд CLI для однієї канонічної моделі, розмістіть середовище виконання в записі цієї моделі:
Перевизначення для окремих агентів використовують ту саму форму з областю дії моделі:
Застарілі приклади середовища виконання для всього агента, як-от цей, ігноруються:
За явного середовища виконання плагіна сеанс завершується з помилкою на ранньому етапі, якщо запитане середовище не зареєстроване, не підтримує визначений провайдер/модель або завершується помилкою до виникнення побічних ефектів ходу. Це навмисна поведінка для розгортань лише з Codex і для активних тестів, які мають довести, що шлях сервера застосунку Codex справді використовується. Цей параметр керує лише вбудованим середовищем агента. Він не вимикає маршрутизацію моделей для зображень, відео, музики, TTS, PDF або іншу специфічну для провайдера маршрутизацію.

Нативні сеанси та дзеркало транскрипту

Середовище може зберігати нативний ідентифікатор сеансу, ідентифікатор потоку або маркер відновлення на боці демона. Зберігайте цю прив’язку явно пов’язаною із сеансом OpenClaw і продовжуйте віддзеркалювати видимий для користувача вивід асистента/інструментів у транскрипт OpenClaw. Транскрипт OpenClaw залишається шаром сумісності для:
  • видимої в каналі історії сеансу
  • пошуку та індексування транскрипту
  • повернення до вбудованого середовища OpenClaw у наступному ході
  • загальної поведінки /new, /reset і видалення сеансу
Якщо середовище зберігає допоміжну прив’язку, реалізуйте reset(...), щоб OpenClaw міг очистити її під час скидання відповідного сеансу OpenClaw.

Результати інструментів і медіа

Ядро формує список інструментів OpenClaw і передає його в підготовлену спробу. Коли середовище виконує динамічний виклик інструмента, повертайте результат інструмента через форму результату середовища, а не надсилайте медіа в канал самостійно. Це дає змогу спрямовувати текст, зображення, відео, музику, TTS, схвалення та результати інструментів обміну повідомленнями тим самим шляхом доставлення, що й запуски на базі OpenClaw.

Кінцеві результати інструментів

AgentHarnessAttemptParams.observeToolTerminal — це керований хостом накопичувач кінцевих результатів. Середовище, яке виконує динамічні інструменти OpenClaw або нативні інструменти, має викликати його, коли кожен інструмент досягає одного кінцевого результату, до завершення формування результату спроби. Середовищам, які не виконують інструменти, не потрібно його викликати. Повідомляйте факти з межі виконання:
  • Передавайте ідентифікатор виклику протоколу, якщо він існує, канонічну назву інструмента та аргументи, які фактично надійшли до інструмента після підготовки або перезаписування хуками.
  • Установлюйте executionStarted: false, якщо валідація, схвалення або інший захисний механізм зупинив виклик до початку реалізації інструмента. Щойно диспетчеризація могла відбутися, консервативно повідомляйте true.
  • Повідомляйте outcome: "success" або outcome: "failure". Додавайте структуровані поля помилки, доступні із середовища виконання, замість виведення факту помилки з відображуваного тексту.
  • Використовуйте nativeMutation лише для нативних інструментів, які не використовують визначення інструмента OpenClaw. Передавайте там дані про мутацію та повторне відтворення, якими керує протокол; не копіюйте класифікатор мутацій OpenClaw у середовище.
Зворотний виклик повертає канонічний результат для цього виклику. Перенесіть його lastToolError до AgentHarnessAttemptResult і використовуйте його дані про виконання, аргументи та побічні ефекти в проєкції середовища замість виведення паралельного стану. Хост зберігає невирішену помилку з мутацією після успішного виконання непов’язаних інструментів і очищає її лише після успішного виконання відповідної дії. Зворотний виклик залишається необов’язковим для сумісності вихідного коду зі старішими експериментальними середовищами. Необов’язковість не означає, що середовище, яке виконує інструменти, може його ігнорувати: без звітів про кінцеві результати OpenClaw не може зберігати достовірні відомості про помилки інструментів із мутацією після наступних викликів інструментів, зокрема після тихого завершення Heartbeat.

Поточні обмеження

  • Загальнодоступний шлях імпорту є універсальним, але деякі псевдоніми типів спроб/результатів усе ще містять застарілі назви для сумісності.
  • Установлення сторонніх середовищ є експериментальним. Надавайте перевагу плагінам провайдерів, доки не знадобиться нативне середовище сеансу.
  • Перемикання середовищ між ходами підтримується. Не перемикайте середовища посеред ходу після початку роботи нативних інструментів, схвалень, тексту асистента або надсилання повідомлень.

Пов’язані матеріали