Коли використовувати обв’язку
Реєструйте обв’язку агента, коли сімейство моделей має власне нативне середовище сеансу, а звичайний транспорт провайдера OpenClaw є неправильною абстракцією. Приклади:- нативний сервер coding-agent, який володіє потоками та Compaction
- локальний CLI або демон, який має транслювати нативні події плану/міркування/інструментів
- середовище виконання моделі, якому потрібен власний resume id на додачу до стенограми сеансу OpenClaw
Чим досі володіє core
Перш ніж вибрати обв’язку, OpenClaw уже визначив:- провайдера й модель
- стан автентифікації середовища виконання
- рівень мислення та бюджет контексту
- файл стенограми/сеансу OpenClaw
- робочий простір, sandbox і політику інструментів
- callback-и відповіді каналу та streaming callback-и
- політику fallback моделі та live-перемикання моделей
params.runtimePlan, пакет політик, яким
володіє OpenClaw, для рішень середовища виконання, що мають залишатися спільними
для OpenClaw і нативних обв’язок:
runtimePlan.tools.normalize(...)іruntimePlan.tools.logDiagnostics(...)для політики схем інструментів з урахуванням провайдераruntimePlan.transcript.resolvePolicy(...)для очищення стенограми та політики ремонту викликів інструментівruntimePlan.delivery.isSilentPayload(...)для спільного приглушенняNO_REPLYі доставки медіаruntimePlan.outcome.classifyRunResult(...)для класифікації fallback моделіruntimePlan.observabilityдля визначених метаданих провайдера/моделі/обв’язки
Реєстрація обв’язки
Імпорт:openclaw/plugin-sdk/agent-harness
Політика вибору
OpenClaw вибирає обв’язку після визначення провайдера/моделі:- Перемагає політика середовища виконання на рівні моделі.
- Далі йде політика середовища виконання на рівні провайдера.
autoзапитує зареєстровані обв’язки, чи підтримують вони визначені провайдер/модель.- Якщо жодна зареєстрована обв’язка не збігається, OpenClaw використовує своє вбудоване середовище виконання.
auto вбудований fallback
використовується лише тоді, коли жодна зареєстрована обв’язка Plugin не підтримує
визначені провайдер/модель. Коли обв’язка Plugin заявила запуск, OpenClaw не
відтворює той самий хід через інше середовище виконання, тому що це може змінити
семантику автентифікації/середовища виконання або дублювати побічні ефекти.
Закріплення середовища виконання для всього сеансу й усього агента ігноруються під час вибору. Це
включає застарілі значення сеансу agentHarnessId, agents.defaults.agentRuntime,
agents.list[].agentRuntime і OPENCLAW_AGENT_RUNTIME. /status показує
ефективне середовище виконання, вибране з маршруту провайдера/моделі.
Якщо вибрана обв’язка несподівана, увімкніть debug-логування agents/harness і
перегляньте структурований запис Gateway agent harness selected. Він містить
id вибраної обв’язки, причину вибору, політику runtime/fallback і, у режимі
auto, результат підтримки кожного кандидата Plugin.
Вбудований plugin Codex реєструє codex як свій id обв’язки. Core трактує це
як звичайний id обв’язки Plugin; специфічні для Codex псевдоніми мають бути в plugin
або операторській конфігурації, а не у спільному селекторі середовища виконання.
Поєднання провайдера й обв’язки
Більшість обв’язок також мають реєструвати провайдера. Провайдер робить model refs, стан автентифікації, метадані моделі та вибір/model видимими для решти
OpenClaw. Потім обв’язка заявляє цей провайдер у supports(...).
Вбудований plugin Codex дотримується цього шаблону:
- бажані користувацькі model refs:
openai/gpt-5.5 - refs сумісності: застарілі refs
codex/gpt-*залишаються прийнятими, але нові конфігурації не повинні використовувати їх як звичайні refs провайдера/моделі - id обв’язки:
codex - автентифікація: синтетична доступність провайдера, тому що обв’язка Codex володіє нативним login/session Codex
- запит app-server: OpenClaw надсилає Codex чистий id моделі й дозволяє обв’язці говорити з нативним протоколом app-server
openai/gpt-* на офіційному
провайдері OpenAI за замовчуванням вибирають обв’язку Codex. Старі refs codex/gpt-*
досі вибирають провайдер і обв’язку Codex для сумісності.
Для налаштування оператором, прикладів префіксів моделей і конфігурацій лише для Codex див.
Codex Harness.
OpenClaw вимагає Codex app-server 0.125.0 або новішого. Plugin Codex перевіряє
initialize handshake app-server і блокує старіші або неверсійовані сервери, щоб
OpenClaw працював лише з поверхнею протоколу, з якою його протестовано. Нижня межа
0.125.0 включає підтримку payload нативного MCP hook, що з’явилася в
Codex 0.124.0, водночас закріплюючи OpenClaw на новішій протестованій stable line.
Middleware результатів інструментів
Вбудовані plugins і явно ввімкнені встановлені plugins з відповідними контрактами manifest можуть під’єднувати runtime-neutral middleware результатів інструментів черезapi.registerAgentToolResultMiddleware(...), коли їхній manifest оголошує
цільові runtime ids у contracts.agentToolResultMiddleware. Ця довірена
межа призначена для асинхронних перетворень результатів інструментів, які мають виконуватися до того,
як OpenClaw або Codex передасть вивід інструмента назад у модель.
Застарілі вбудовані plugins досі можуть використовувати
api.registerCodexAppServerExtensionFactory(...) для middleware лише для Codex app-server,
але нові перетворення результатів мають використовувати runtime-neutral API.
Hook лише для embedded runner api.registerEmbeddedExtensionFactory(...) було вилучено;
вбудовані перетворення результатів інструментів мають використовувати runtime-neutral middleware.
Класифікація термінального результату
Нативні обв’язки, які володіють власною проєкцією протоколу, можуть використовуватиclassifyAgentHarnessTerminalOutcome(...) з
openclaw/plugin-sdk/agent-harness-runtime, коли завершений хід не створив
видимого тексту асистента. Helper повертає empty, reasoning-only або
planning-only, щоб політика fallback OpenClaw могла вирішити, чи повторювати спробу на
іншій моделі. planning-only потребує явного поля planText обв’язки;
OpenClaw не виводить його з прози асистента. Helper навмисно
залишає некласифікованими помилки prompt, ходи в процесі виконання та навмисні тихі відповіді, як-от
NO_REPLY.
Побічні ефекти завершення агента
Нативні обв’язки мають викликатиrunAgentEndSideEffects(...) з
openclaw/plugin-sdk/agent-harness-runtime після фіналізації спроби. Він
диспетчеризує переносний hook agent_end і research capture OpenClaw без
затримки інтерактивних відповідей. Використовуйте awaitAgentEndSideEffects(...) для локальних,
неінтерактивних запусків, де спроба не повинна завершуватися, доки ці побічні ефекти
не закінчаться. Обидва helper-и приймають той самий payload { event, ctx }, що й
runAgentHarnessAgentEndHook(...); їхні збої не змінюють результат завершеної
спроби.
Користувацьке введення та поверхні інструментів
Нативні обв’язки, які expose runtime-level запит користувацького введення, мають використовувати helper-и user-input зopenclaw/plugin-sdk/agent-harness-runtime, щоб форматувати
prompt, доставляти його через blocking reply path OpenClaw і нормалізувати
відповіді вибору/free-form назад у нативну форму відповіді середовища виконання. Helper
зберігає узгоджене представлення channel/TUI, тоді як кожна обв’язка зберігає
власний парсинг протоколу та життєвий цикл pending-request.
Нативні обв’язки, яким потрібна компактна маршрутизація інструментів у стилі PI, мають використовувати
createAgentHarnessToolSurfaceRuntime(...) з
openclaw/plugin-sdk/agent-harness-tool-runtime. Він володіє
вибором контролю tool-search/code-mode, lean defaults локальної моделі,
runtime-compatible schema filtering, виконанням hidden catalog, гідратацією директорій
і очищенням catalog. Обв’язки досі володіють своїм SDK-specific перетворенням
інструментів і нативним callback виконання.
Нативний режим обв’язки Codex
Вбудована обв’язкаcodex є нативним режимом Codex для вбудованих ходів агента
OpenClaw. Спершу ввімкніть вбудований plugin codex і додайте codex до
plugins.allow, якщо ваша конфігурація використовує обмежувальний allowlist. Нативні конфігурації app-server
мають використовувати openai/gpt-*; ходи агентів OpenAI за замовчуванням вибирають обв’язку Codex.
Маршрути застарілих refs моделей Codex слід виправляти за допомогою
openclaw doctor --fix, а застарілі refs моделей codex/* залишаються compatibility
aliases для нативної обв’язки.
Коли цей режим працює, Codex володіє нативним thread id, поведінкою resume,
Compaction і виконанням app-server. OpenClaw досі володіє chat-каналом,
видимим дзеркалом стенограми, політикою інструментів, approvals, доставкою медіа та вибором
сеансу. Використовуйте provider/model agentRuntime.id: "codex", коли потрібно довести,
що лише шлях Codex app-server може заявити запуск. Явні середовища виконання Plugin
fail closed; збої вибору Codex app-server і збої середовища виконання не
повторюються через інше середовище виконання.
Строгість середовища виконання
За замовчуванням OpenClaw використовує політику середовища виконання provider/modelauto: зареєстровані
обв’язки Plugin можуть заявити пару provider/model, а вбудоване середовище виконання
обробляє хід, коли збігів немає. Refs агентів OpenAI на офіційному провайдері OpenAI за замовчуванням використовують Codex.
Використовуйте явне середовище виконання Plugin для provider/model, як-от
agentRuntime.id: "codex", коли відсутній вибір обв’язки має завершуватися з помилкою замість
маршрутизації через вбудоване середовище виконання. Збої вибраної обв’язки Plugin завжди
завершуються жорсткою помилкою. Це не блокує явний provider/model agentRuntime.id: "openclaw".
Для embedded runs лише з Codex:
Нативні сесії та дзеркало транскрипту
Harness може зберігати нативний ідентифікатор сесії, ідентифікатор потоку або токен відновлення на боці демона. Тримайте цю прив’язку явно пов’язаною із сесією OpenClaw і продовжуйте дзеркалити видимий для користувача вивід асистента/інструментів у транскрипт OpenClaw. Транскрипт OpenClaw залишається шаром сумісності для:- видимої в каналі історії сесії
- пошуку та індексації транскриптів
- перемикання назад на вбудований harness OpenClaw на пізнішому ході
- загальної поведінки
/new,/resetі видалення сесії
reset(...), щоб OpenClaw міг
очистити її, коли скидається сесія OpenClaw, якій вона належить.
Результати інструментів і медіа
Ядро формує список інструментів OpenClaw і передає його в підготовлену спробу. Коли harness виконує динамічний виклик інструмента, поверніть результат інструмента назад через форму результату harness, замість того щоб самостійно надсилати медіа в канал. Це зберігає текстові, зображувальні, відео-, музичні, TTS, approval та messaging-tool виводи на тому самому шляху доставки, що й запуски на базі OpenClaw.Поточні обмеження
- Публічний шлях імпорту є загальним, але деякі псевдоніми типів спроби/результату все ще мають застарілі назви для сумісності.
- Встановлення сторонніх harness є експериментальним. Віддавайте перевагу provider plugins, доки вам не знадобиться нативне середовище виконання сесії.
- Перемикання harness підтримується між ходами. Не перемикайте harness у середині ходу після того, як почалися нативні інструменти, approvals, текст асистента або надсилання повідомлень.