Codex harness
Довідник з інструментарію Codex
Цей довідковий матеріал містить докладний опис конфігурації офіційного плагіна codex.
Щодо налаштування та рішень із маршрутизації спочатку перегляньте
середовище виконання Codex.
Поверхня конфігурації плагіна
Усі налаштування середовища виконання Codex містяться в plugins.entries.codex.config.
{ plugins: { entries: { codex: { enabled: true, config: { discovery: { enabled: true, timeoutMs: 2500, }, appServer: { mode: "guardian", }, }, }, }, },}Поля верхнього рівня:
| Поле | Типове значення | Значення |
|---|---|---|
discovery |
увімкнено | Налаштування виявлення моделей для model/list сервера застосунків Codex. |
appServer |
керований stdio-сервер застосунків | Налаштування транспорту, команди, автентифікації, схвалення, пісочниці й часу очікування. Звичайне середовище виконання типово використовує стан у межах агента. |
codexDynamicToolsLoading |
"searchable" |
Використовуйте "direct", щоб додати динамічні інструменти OpenClaw безпосередньо до початкового контексту інструментів Codex. |
codexDynamicToolsExclude |
[] |
Додаткові назви динамічних інструментів OpenClaw, які слід пропускати під час звернень до сервера застосунків Codex. |
codexPlugins |
вимкнено | Нативна підтримка плагінів і застосунків Codex, зокрема доступ за явною згодою до застосунків підключеного облікового запису. Див. Нативні плагіни Codex. |
computerUse |
вимкнено | Налаштування керування комп’ютером у Codex. Див. Керування комп’ютером у Codex. |
supervision |
вимкнено | Каталог неархівованих нативних сеансів, продовження локальної гілки та політика інструментів агента. Див. Нагляд Codex. |
Нагляд
Нагляд відображає неархівовані сеанси Codex із комп’ютера Gateway і парних вузлів, для яких надано згоду. Увімкніть його незалежно від середовища виконання агента:
{ plugins: { entries: { codex: { enabled: true, config: { supervision: { enabled: true, }, }, }, }, },}Поля supervision:
| Поле | Типове значення | Значення |
|---|---|---|
enabled |
false |
Оприлюднювати локальний каталог сеансів і, на Gateway, об’єднувати каталоги парних вузлів, для яких надано згоду, для сторінки сеансів Codex. |
endpoints |
вбудована локальна кінцева точка | Цільові кінцеві точки для сумісності та розширеного використання збереженого агента нагляду Codex і автономних інструментів MCP. Каталог для користувача та потік гілок ігнорують ці цільові точки й використовують App Server нагляду, визначений із appServer. |
allowRawTranscripts |
false |
Коли нагляд увімкнено, дозволяє автономному агенту або автономному MCP читати транскрипти та похідні від них поля списку. Читання лише метаданих codex_threads залишається доступним. Не керує продовженням через автентифікований інтерфейс керування. |
allowWriteControls |
false |
Коли нагляд увімкнено, дозволяє автономні операції codex_threads для розгалуження, перейменування, архівування й відновлення з архіву, а також автономні операції MCP для надсилання, спрямування та переривання. Не обходить інші перевірки прив’язки, хоста, стану чи підтвердження. |
Записи кінцевих точок приймають такі поля:
| Поле | Застосовується до | Значення |
|---|---|---|
id |
усіх | Стабільний ідентифікатор кінцевої точки. |
label |
усіх | Необов’язкова відображувана мітка. |
transport |
усіх | "stdio-proxy" або "websocket". |
command |
stdio-proxy |
Необов’язкова команда App Server. |
args |
stdio-proxy |
Необов’язкові аргументи команди. |
cwd |
stdio-proxy |
Необов’язковий робочий каталог дочірнього процесу. |
url |
websocket |
Обов’язкова URL-адреса WebSocket або підтримуваного локального сокета. |
authTokenEnv |
websocket |
Необов’язкова змінна середовища, значення якої автентифікує кінцеву точку. |
Сторінка Сеанси Codex використовує App Server нагляду плагіна та відображає
лише неархівовані сеанси. Без явних налаштувань підключення appServer
це підключення є керованим stdio з домашнього каталогу користувача. Збережені або
неактивні локальні рядки можуть створювати заблокований на моделі чат з обмеженою
історією користувача й асистента до останнього збереженого вихідного звернення
з термінальним станом. Його приватна прив’язка зберігає відгалуження знімка,
канонічну гілку з джерелом appServer, впровадження історії та наступні звернення
в цьому підключенні. Під час першого канонічного запуску використовується пара,
повернена відгалуженням. Під час наступних відновлень перевизначення моделі та
провайдера OpenClaw не передаються, щоб Codex відновив збережену пару канонічного
потоку; окрема нативна зміна може оновити цю пару, але зовнішня модель і ланцюжок
резервних варіантів ніколи її не замінюють. Збережені та неактивні рядки можна
архівувати після підтвердження відсутності іншого виконавця, якщо інша активна
прив’язка OpenClaw не володіє точною ціллю або одним із її неархівованих
породжених нащадків. OpenClaw дотримується пагінації нащадків Codex і безпечно
відмовляє в разі помилок переліку, циклів або вичерпання ліміту безпеки.
Підтвердження й надалі охоплює невідомі нативні клієнти та стан гонитви між
перевіркою стану й архівуванням. Заблокований на моделі чат під наглядом не можна
видалити, доки він захищає нативну прив’язку. Для активних джерел не можна
створювати гілку або архівувати їх, але наявний чат під наглядом усе одно можна
відкрити. Кожен рядок парного вузла залишається доступним лише для читання;
транспорт вузла ще не забезпечує потокового життєвого циклу, потрібного
середовищу виконання.
Саме лише appServer.homeScope: "user" змінює, який домашній каталог Codex
використовує керований процес середовища виконання; воно не оприлюднює каталог
парку пристроїв. Увімкнення нагляду не змінює типові параметри середовища
виконання. Натомість окреме підключення нагляду типово використовує керований
stdio з домашнього каталогу користувача, якщо явних налаштувань підключення
appServer немає. Явні налаштування застосовуються до цього підключення.
Очікувані й зафіксовані прив’язки під наглядом зберігають це підключення для
кожного звернення; вимкнений нагляд або відхилення підключення чи життєвого циклу
призводить до безпечної відмови замість повернення до середовища виконання з
домашнім каталогом агента. Типове підключення спільно використовує збережені
сеанси з нативними клієнтами Codex, але не їхній локальний для процесу стан
активності.
Застарілі налаштування plugins.entries.codex-supervisor вилучено. Виконайте
openclaw doctor --fix, щоб перенести старий запис, визначення кінцевих точок,
прапорці політик і посилання списків дозволених та заборонених плагінів до цього
блоку. У разі конфліктів явні канонічні значення codex.config.supervision
мають перевагу.
Транспорт сервера застосунків
Для звичайних звернень середовища виконання OpenClaw запускає керований
виконуваний файл Codex, що постачається з офіційним плагіном (наразі
@openai/codex 0.144.1):
codex app-server --listen stdio://Завдяки цьому версія сервера застосунків прив’язана до офіційного плагіна
codex, а не до будь-якої окремої версії Codex CLI, випадково встановленої
локально. Установлюйте appServer.command, лише коли навмисно хочете
використовувати інший виконуваний файл. Звичайні керовані звернення з типовим
ізольованим домашнім каталогом агента надають перевагу цьому закріпленому пакету,
навіть якщо встановлено пакет настільного застосунку macOS. Коли
керування комп’ютером увімкнено або коли
homeScope має значення "user" і може завантажувати нативний стан керування
комп’ютером, керований запуск натомість надає перевагу виконуваному файлу
настільного застосунку, що має потрібні дозволи macOS. Те саме правило пріоритету
настільного застосунку діє, коли ефективна конфігурація Codex ізольованого
домашнього каталогу агента вмикає нативне керування комп’ютером. Якщо пакет
настільного застосунку не встановлено, OpenClaw повертається до виконуваного
файлу закріпленого пакета.
Передавання виконуваного файла та ізоляція нативної конфігурації координують клієнти в межах одного запущеного процесу Gateway. Перезапустіть Gateway після того, як інший процес змінить конфігурацію нативного плагіна Codex.
Нагляд визначає окреме підключення. За відсутності явних налаштувань підключення
appServer він використовує керований stdio з homeScope: "user"; звичайне
середовище виконання залишається керованим stdio з homeScope: "agent". Обидва
шляхи враховують явні налаштування підключення. Установіть homeScope: "user"
явно, якщо звичайне середовище виконання має спільно використовувати
$CODEX_HOME (або ~/.codex) із нативними клієнтами. Приватна прив’язка під
наглядом використовує підключення нагляду незалежно від типових параметрів
звичайного середовища виконання. Незалежні процеси App Server зберігають окремі
стани активності та схвалення.
Для вже запущеного сервера застосунків використовуйте транспорт WebSocket:
{ plugins: { entries: { codex: { enabled: true, config: { appServer: { transport: "websocket", url: "ws://gateway-host:39175", authToken: "${CODEX_APP_SERVER_TOKEN}", requestTimeoutMs: 60000, }, }, }, }, },}Поля appServer:
| Поле | Типове значення | Значення |
|---|---|---|
transport |
"stdio" |
"stdio" запускає Codex; явне значення "unix" підключається до локального сокета керування; "websocket" підключається до url. |
homeScope |
"agent" |
"agent" ізолює звичайний стан засобу виконання для кожного агента OpenClaw. "user" — це явна добровільна активація, яка надає спільний доступ до рідного $CODEX_HOME або ~/.codex, використовує рідну автентифікацію та вмикає керування потоками лише для власника. Область користувача підтримує локальний транспорт stdio або Unix. Для окремого з’єднання нагляду невстановлене значення визначається як "user" для stdio або Unix і як "agent" для WebSocket. |
command |
керований виконуваний файл Codex | Виконуваний файл для транспорту stdio. Залиште невстановленим, щоб використовувати керований виконуваний файл. |
args |
["app-server", "--listen", "stdio://"] |
Аргументи для транспорту stdio. |
url |
не встановлено | URL сервера застосунку WebSocket або URL unix://. Явно вказаний порожній шлях Unix вибирає канонічний сокет керування в домашньому каталозі користувача. |
authToken |
не встановлено | Bearer-токен для транспорту WebSocket. Приймає буквальний рядок або SecretInput, наприклад ${CODEX_APP_SERVER_TOKEN}. |
headers |
{} |
Додаткові заголовки WebSocket. Значення заголовків приймають буквальні рядки або значення SecretInput, наприклад x-codex-client-session-token: "${CODEX_CLIENT_SESSION_TOKEN}". |
clearEnv |
[] |
Назви додаткових змінних середовища, які видаляються із запущеного процесу app-server stdio після того, як OpenClaw сформує успадковане середовище. |
remoteWorkspaceRoot |
не встановлено | Кореневий каталог віддаленого робочого простору app-server Codex. Якщо його встановлено, OpenClaw визначає кореневий каталог локального робочого простору з розв’язаного робочого простору OpenClaw, зберігає поточний суфікс cwd під цим віддаленим кореневим каталогом і надсилає Codex лише остаточний cwd app-server. Якщо cwd перебуває поза розв’язаним кореневим каталогом робочого простору OpenClaw, OpenClaw завершує операцію безпечно, не надсилаючи локальний для Gateway шлях віддаленому app-server. |
requestTimeoutMs |
60000 |
Час очікування для викликів площини керування app-server. |
turnCompletionIdleTimeoutMs |
60000 |
Період бездіяльності після того, як Codex приймає хід, або після запиту app-server у межах ходу, поки OpenClaw очікує на turn/completed. |
postToolRawAssistantCompletionIdleTimeoutMs |
300000 |
Обмеження бездіяльності завершення та контролю поступу, яке використовується після передавання керування інструменту, завершення рідного інструмента, поступу необробленої відповіді асистента після інструмента, завершення необробленого міркування або поступу міркування, поки OpenClaw очікує на turn/completed. Використовуйте його для довірених або важких робочих навантажень, де синтез після інструмента може обґрунтовано залишатися бездіяльним довше за остаточний бюджет видачі відповіді асистента. |
mode |
"yolo", якщо локальні вимоги Codex не забороняють YOLO |
Попередньо заданий режим для виконання YOLO або виконання, перевіреного наглядачем. |
approvalPolicy |
"never" або дозволена політика схвалення наглядача |
Рідна політика схвалення Codex, що надсилається під час запуску й відновлення потоку та виконання ходу. |
sandbox |
"danger-full-access" або дозволена пісочниця наглядача |
Рідний режим пісочниці Codex, що надсилається під час запуску та відновлення потоку. Активні пісочниці OpenClaw звужують ходи danger-full-access до Codex workspace-write; мережевий прапорець ходу відповідає правилам вихідного трафіку пісочниці OpenClaw. |
approvalsReviewer |
"user" або дозволений рецензент-наглядач |
Використовуйте "auto_review", щоб дозволити Codex перевіряти рідні запити на схвалення, коли це дозволено. |
defaultWorkspaceDir |
поточний каталог процесу | Робочий простір, який використовує /codex bind, якщо --cwd не вказано. |
serviceTier |
не встановлено | Необов’язковий рівень обслуговування app-server Codex. "priority" вмикає маршрутизацію у швидкому режимі, "flex" запитує гнучку обробку, а null скидає перевизначення. Застаріле значення "fast" приймається як "priority". |
networkProxy |
вимкнено | Добровільно активує мережевий доступ профілю дозволів Codex для команд app-server. OpenClaw визначає вибрану конфігурацію permissions.<profile>.network і вибирає її за допомогою default_permissions замість надсилання sandbox. |
experimental.sandboxExecServer |
false |
Попередня добровільна активація, яка реєструє середовище Codex на основі пісочниці OpenClaw у підтримуваному app-server Codex, щоб рідне виконання Codex могло працювати всередині активної пісочниці OpenClaw. |
appServer.networkProxy задається явно, оскільки змінює контракт пісочниці
Codex. Коли його ввімкнено, OpenClaw також установлює features.network_proxy.enabled і
default_permissions у конфігурації потоку Codex, щоб згенерований профіль
дозволів міг запустити мережевий доступ під керуванням Codex. Типово OpenClaw
генерує стійку до колізій назву профілю openclaw-network-<fingerprint> із
вмісту профілю; використовуйте profileName, лише коли потрібна стабільна
локальна назва.
export default { plugins: { entries: { codex: { config: { appServer: { sandbox: "workspace-write", networkProxy: { enabled: true, domains: { "api.openai.com": "allow", "blocked.example.com": "deny", }, allowUpstreamProxy: true, proxyUrl: "http://127.0.0.1:3128", }, }, }, }, }, },};Якщо звичайне середовище виконання сервера застосунків мало б значення danger-full-access, увімкнення
networkProxy натомість використовує для згенерованого профілю дозволів доступ
до файлової системи в стилі робочого простору. Мережеве обмеження, кероване Codex,
є мережевою ізоляцією, тому профіль повного доступу не захищав би вихідний трафік.
Plugin блокує застарілі рукостискання сервера застосунків або рукостискання без версії: сервер застосунків Codex
має повідомляти стабільну версію 0.143.0 або новішу.
OpenClaw вважає URL-адреси сервера застосунків WebSocket, що не використовують local loopback, віддаленими та вимагає
автентифікації WebSocket із підтвердженням ідентичності через appServer.authToken або
заголовок Authorization. appServer.authToken і кожне значення appServer.headers.*
можуть бути SecretInput; середовище виконання секретів розв’язує SecretRefs і скорочені
посилання на змінні середовища до того, як OpenClaw сформує параметри запуску сервера застосунків, а нерозв’язані
структуровані SecretRefs спричиняють помилку до надсилання будь-якого токена чи заголовка. Коли налаштовано
нативні плагіни Codex, OpenClaw використовує площину керування плагінами під’єднаного сервера застосунків,
щоб установити або оновити ці плагіни, а потім оновлює
перелік застосунків, щоб застосунки, які належать плагінам, були видимі потоку Codex. app/list
і надалі є авторитетним джерелом переліку та метаданих, але політика OpenClaw
визначає, чи надсилатиме thread/start значення config.apps[appId].enabled = true для
доступного застосунку з переліку, навіть якщо Codex наразі позначає його як вимкнений. Невідомі або
відсутні ідентифікатори застосунків і надалі обробляються із забороною за замовчуванням; цей шлях лише активує плагіни
маркетплейсу через plugin/install та оновлює перелік. Під’єднуйте OpenClaw лише до
віддалених серверів застосунків, яким довірено приймати кероване OpenClaw установлення плагінів
і оновлення переліку застосунків.
Режими схвалення та ізоляції
Локальні сеанси stdio сервера застосунків за замовчуванням працюють у режимі YOLO:
approvalPolicy: "never", approvalsReviewer: "user" і
sandbox: "danger-full-access". Така довірена позиція локального оператора дає змогу
автономним крокам OpenClaw і Heartbeat продовжувати роботу без нативних запитів на схвалення,
на які нікому відповісти.
Якщо файл локальних системних вимог Codex забороняє неявні значення YOLO для схвалення,
рецензента або ізоляції, OpenClaw натомість трактує неявне значення за замовчуванням як guardian
і вибирає дозволені дозволи guardian. tools.exec.mode: "auto"
також примусово вмикає схвалення Codex із перевіркою guardian і не зберігає небезпечні
застарілі перевизначення approvalPolicy: "never" або sandbox: "danger-full-access";
задайте tools.exec.mode: "full" для свідомого режиму без схвалень.
Записи [[remote_sandbox_config]] у тому самому файлі вимог, що відповідають імені хоста,
враховуються під час вибору стандартного режиму ізоляції.
Задайте appServer.mode: "guardian" для схвалень Codex із перевіркою guardian:
{ plugins: { entries: { codex: { enabled: true, config: { appServer: { mode: "guardian", serviceTier: "priority", }, }, }, }, },}Попередньо налаштований режим guardian розгортається в approvalPolicy: "on-request",
approvalsReviewer: "auto_review" і sandbox: "workspace-write", коли ці
значення дозволені. Окремі поля політики перевизначають mode. Старіше
значення рецензента guardian_subagent і надалі приймається як псевдонім сумісності,
але нові конфігурації мають використовувати auto_review.
Коли ізоляція OpenClaw активна, локальний процес сервера застосунків Codex усе одно
працює на хості Gateway. Тому OpenClaw вимикає для цього кроку нативний режим коду Codex,
користувацькі сервери MCP і виконання плагінів на основі застосунків, замість того щоб
вважати хостову ізоляцію Codex еквівалентною серверній частині ізоляції OpenClaw.
Доступ до оболонки надається через динамічні інструменти на основі ізоляції OpenClaw,
як-от sandbox_exec і sandbox_process, коли доступні звичайні інструменти виконання та процесів.
Нативне виконання в ізоляції
Стабільна поведінка за замовчуванням — заборона в разі помилки: активна ізоляція OpenClaw вимикає нативні
поверхні виконання Codex, які інакше працювали б із хоста сервера застосунків Codex.
Використовуйте appServer.experimental.sandboxExecServer: true лише тоді, коли хочете
спробувати підтримку віддаленого середовища Codex із серверною частиною ізоляції OpenClaw.
Цей попередній режим працює з кожною підтримуваною версією сервера застосунків Codex.
{ plugins: { entries: { codex: { enabled: true, config: { appServer: { experimental: { sandboxExecServer: true, }, }, }, }, }, },}Коли прапорець увімкнено й поточний сеанс OpenClaw ізольований, OpenClaw запускає локальний exec-сервер через local loopback на основі активної ізоляції, реєструє його на сервері застосунків Codex і запускає потік та крок Codex із цим середовищем, що належить OpenClaw. Якщо сервер застосунків не може зареєструвати середовище, виконання завершується із забороною замість непомітного повернення до виконання на хості.
Цей попередній режим призначений лише для локального використання. Віддалений сервер застосунків WebSocket не може отримати доступ до exec-сервера через local loopback, якщо не працює на тому самому хості, тому OpenClaw відхиляє таке поєднання.
Ізоляція автентифікації та середовища
У стандартній домашній директорії окремого агента автентифікація вибирається в такому порядку:
- Явний профіль автентифікації OpenClaw Codex для агента.
- Наявний обліковий запис сервера застосунків у домашній директорії Codex цього агента.
- Лише для локальних запусків stdio сервера застосунків —
CODEX_API_KEY, потімOPENAI_API_KEY, коли облікового запису сервера застосунків немає, а автентифікація OpenAI усе ще потрібна.
Коли OpenClaw виявляє профіль автентифікації Codex у стилі підписки ChatGPT (тип облікових даних OAuth або
токен), він видаляє CODEX_API_KEY і OPENAI_API_KEY із
породженого дочірнього процесу Codex. Це зберігає доступність API-ключів рівня Gateway
для векторних представлень або прямих моделей OpenAI, не допускаючи випадкового
виставлення рахунків за нативні кроки сервера застосунків Codex через API.
Явні профілі API-ключів Codex і резервне використання локальних ключів середовища stdio застосовують вхід через сервер застосунків замість успадкованого середовища дочірнього процесу. Підключення до сервера застосунків WebSocket не отримують резервного API-ключа із середовища Gateway; використовуйте явний профіль автентифікації або власний обліковий запис віддаленого сервера застосунків.
Запуски stdio сервера застосунків за замовчуванням успадковують середовище процесу OpenClaw.
OpenClaw керує мостом облікового запису сервера застосунків Codex і задає CODEX_HOME як
окрему для агента директорію у стані OpenClaw цього агента. Це обмежує конфігурацію Codex,
облікові записи, кеш і дані плагінів та стан потоків областю агента OpenClaw,
не допускаючи витоку з особистої домашньої директорії оператора ~/.codex.
Задайте appServer.homeScope: "user", щоб спільно використовувати нативний стан Codex із Codex
Desktop і CLI. Цей режим локальної домашньої директорії користувача підтримує керований stdio та
явний транспорт Unix. Він використовує $CODEX_HOME, якщо її задано, і ~/.codex
в іншому разі, включно з нативною автентифікацією, конфігурацією, плагінами та потоками.
OpenClaw пропускає міст профілю автентифікації для сервера застосунків. Підтверджені кроки власника
можуть використовувати codex_threads, щоб переглядати список (із необов’язковим фільтром search),
читати, розгалужувати, перейменовувати, архівувати й розархівовувати ці потоки. Розгалузьте потік,
перш ніж продовжувати його в OpenClaw; незалежні процеси Codex не координують
одночасний запис до одного потоку.
Ця згода через homeScope застосовується до звичайних сеансів середовища. Чат, створений
через Codex Sessions, натомість використовує власне приватне керівне підключення, яке
зберігає конфігурацію автентифікації та провайдера нативного підключення для
канонічної гілки й майбутніх відновлень.
У керованому чаті з фіксованою моделлю codex_threads не може приєднати інше
розгалуження або архівувати прив’язаний нативний потік чату. Перегляд списку та читання лише метаданих
залишаються доступними. Для читання необроблених стенограм потрібне allowRawTranscripts; коли його
вимкнено, пошук у списку також відхиляється, оскільки нативний пошук може знаходити
попередні перегляди стенограм. Перейменування, розархівування, відокремлене розгалуження та архівування
непов’язаного потоку, який не належить іншому чату OpenClaw, потребують
allowWriteControls. Жоден із цих параметрів не обходить зафіксовану прив’язку.
OpenClaw не переписує HOME для звичайних локальних запусків сервера застосунків.
Підпроцеси, запущені Codex, як-от openclaw, gh, git, хмарні CLI та команди
оболонки, бачать звичайну домашню директорію процесу й можуть знаходити конфігурацію та
токени домашньої директорії користувача. Codex також може виявляти $HOME/.agents/skills і
$HOME/.agents/plugins/marketplace.json; це виявлення .agents
навмисно спільне з домашньою директорією оператора й відокремлене від ізольованого
стану ~/.codex.
У стандартній області агента плагіни OpenClaw і знімки Skills OpenClaw
і надалі проходять через власний реєстр плагінів і завантажувач Skills OpenClaw; особисті
ресурси Codex із ~/.codex — ні. Якщо у вас є корисні Skills або
плагіни Codex CLI з домашньої директорії Codex, які мають стати частиною ізольованого агента OpenClaw,
явно проведіть їх інвентаризацію:
openclaw migrate codex --dry-runopenclaw migrate apply codex --yesЯкщо розгортанню потрібна додаткова ізоляція середовища, додайте ці змінні
до appServer.clearEnv:
{ plugins: { entries: { codex: { enabled: true, config: { appServer: { clearEnv: ["CODEX_API_KEY", "OPENAI_API_KEY"], }, }, }, }, },}appServer.clearEnv впливає лише на породжений дочірній процес сервера застосунків Codex.
OpenClaw видаляє CODEX_HOME і HOME із цього списку під час нормалізації локального запуску:
CODEX_HOME залишається спрямованою на вибрану область агента або користувача,
а HOME успадковується, щоб підпроцеси могли використовувати звичайний стан домашньої директорії користувача.
Динамічні інструменти
Динамічні інструменти Codex за замовчуванням завантажуються в режимі searchable і надаються в
просторі імен openclaw із deferLoading: true. OpenClaw не надає
динамічні інструменти, які дублюють нативні операції Codex із робочим простором або власну
поверхню пошуку інструментів Codex:
readwriteeditapply_patchexecprocessupdate_plantool_calltool_describetool_searchtool_search_code
Більшість інших інтеграційних інструментів OpenClaw, як-от обмін повідомленнями, медіа, Cron,
браузер, вузли, Gateway, heartbeat_respond і web_search, доступні
через пошук інструментів Codex у цьому просторі імен. Це зменшує початковий контекст
моделі. Невеликий набір інструментів залишається доступним для прямого виклику незалежно від
codexDynamicToolsLoading, оскільки пошук інструментів Codex може бути недоступним або
охоплювати лише конектори: agents_list, sessions_spawn і
sessions_yield. Інструкції розробника й надалі спрямовують звичайних субагентів Codex
до нативного spawn_agent для нативної роботи субагентів Codex, тоді як
sessions_spawn залишається доступним для явного делегування OpenClaw або ACP.
Відповіді джерела, що використовують лише інструмент повідомлень, також залишаються прямими, оскільки це
контракт керування кроком.
Інструменти з позначкою catalogMode: "direct-only", включно з інструментом OpenClaw computer,
групуються в openclaw_direct. OpenClaw додає цей простір імен до
списку code_mode.direct_only_tool_namespaces Codex, не замінюючи
записи, надані оператором. Тому Codex надає ці інструменти як
DirectModelOnly у звичайних потоках і потоках лише режиму коду, замість того щоб спрямовувати їх
через вкладені виклики tools.* режиму коду. Ця межа потрібна для
результатів із зображеннями: вкладена серіалізація режиму коду перетворює виведення зображень на
текст, через що буде втрачено знімок екрана, потрібний для наступної дії з комп’ютером.
Задавайте codexDynamicToolsLoading: "direct" лише під час підключення до власного
сервера застосунків Codex, який не може шукати відкладені динамічні інструменти, або під час налагодження
повного корисного навантаження інструментів.
Тайм-аути
Виклики динамічних інструментів, якими керує OpenClaw, мають власні обмеження часу, незалежні від
appServer.requestTimeoutMs. Кожен запит Codex item/tool/call використовує
перше доступне значення тайм-ауту в такому порядку:
- Додатний аргумент
timeoutMsдля окремого виклику. - Для
image_generate—agents.defaults.imageGenerationModel.timeoutMs. - Для
image_generateбез налаштованого тайм-ауту — стандартне значення генерації зображень у 120 секунд. - Для інструмента розуміння медіа
image—tools.media.image.timeoutSeconds, перетворене на мілісекунди, або стандартне значення для медіа у 60 секунд. Для розуміння зображень це стосується самого запиту й не скорочується через попередню підготовчу роботу. - Для інструмента
message— фіксоване стандартне значення у 120 секунд. - Стандартне значення для динамічних інструментів у 90 секунд.
Цей сторожовий механізм задає зовнішній бюджет динамічного item/tool/call. Тайм-аути
запитів, специфічні для провайдера, діють усередині цього виклику та зберігають
власну семантику тайм-аутів. Бюджети динамічних інструментів обмежено значенням
600000 мс. У разі тайм-ауту OpenClaw перериває сигнал інструмента, якщо це
підтримується, і повертає Codex відповідь про невдалий виклик динамічного
інструмента, щоб хід міг продовжитися, а сеанс не залишався в стані
processing.
Після того як Codex приймає хід, а також після того як OpenClaw відповідає на
запит app-server у межах ходу, середовище очікує, що Codex просуватиме поточний
хід і зрештою завершить нативний хід подією turn/completed. Якщо app-server
не проявляє активності протягом appServer.turnCompletionIdleTimeoutMs,
OpenClaw докладає всіх зусиль, щоб перервати хід Codex, реєструє діагностичний
тайм-аут і звільняє смугу сеансу OpenClaw, щоб наступні повідомлення чату не
стояли в черзі за застарілим нативним ходом.
Більшість нетермінальних сповіщень для того самого ходу вимикають цей короткий
сторожовий механізм, оскільки Codex підтвердив, що хід іще активний. Передавання
керування інструментам використовує довший бюджет бездіяльності після
інструмента: після того як OpenClaw повертає відповідь item/tool/call, після
завершення нативних елементів інструментів, як-от commandExecution, після
завершень необробленого custom_tool_call_output, а також після необробленого
прогресу асистента, завершень міркування або прогресу міркування після
інструмента. Захисний механізм використовує
appServer.postToolRawAssistantCompletionIdleTimeoutMs, якщо його налаштовано,
а інакше стандартно використовує п’ять хвилин. Той самий бюджет після
інструмента також подовжує сторожовий механізм прогресу на період мовчазного
формування відповіді, перш ніж Codex надішле наступну подію поточного ходу.
Після завершень міркування, завершень agentMessage у режимі коментарів і
необробленого прогресу міркування або асистента перед інструментом може
автоматично надійти остаточна відповідь, тому для них використовується
захисний механізм відповіді після прогресу замість негайного звільнення смуги
сеансу. Лише завершені фінальні елементи agentMessage не в режимі коментарів
і завершення необробленої відповіді асистента перед інструментом активують
звільнення після виведення асистента: якщо після цього Codex не проявляє
активності й не надсилає turn/completed, OpenClaw докладає всіх зусиль, щоб
перервати нативний хід і звільнити смугу сеансу. Безпечні для повторного
відтворення збої stdio app-server, зокрема тайм-аути очікування завершення ходу
без ознак відповіді асистента, інструмента, активного елемента або побічного
ефекту, повторюються один раз у новій спробі app-server. Небезпечні тайм-аути
все одно виводять завислий клієнт app-server з експлуатації та звільняють смугу
сеансу OpenClaw. Вони також очищають застаріле прив’язування нативного потоку,
замість автоматичного повторного відтворення. Тайм-аути очікування завершення
показують текст тайм-ауту, специфічний для Codex: у безпечних для повторного
відтворення випадках зазначається, що відповідь може бути неповною, а в
небезпечних випадках користувачеві пропонується перевірити поточний стан перед
повторною спробою. Загальнодоступна діагностика тайм-аутів містить структурні
поля, як-от метод останнього сповіщення app-server, ідентифікатор, тип і роль
елемента необробленої відповіді асистента, кількість активних запитів та
елементів і стан активованого спостереження. Якщо останнім сповіщенням є
елемент необробленої відповіді асистента, діагностика також містить обмежений
попередній перегляд тексту асистента. Вона не містить необробленого вмісту
підказки чи інструмента.
Виявлення моделей
Стандартно Plugin Codex запитує в app-server доступні моделі. Доступністю
моделей керує app-server Codex, тому список може змінюватися, коли OpenClaw
оновлює вбудовану версію @openai/codex або коли розгортання спрямовує
appServer.command на інший виконуваний файл Codex. Доступність також може
залежати від облікового запису. Використовуйте /codex models у запущеному
Gateway, щоб переглянути актуальний каталог для цього середовища й облікового
запису.
Якщо виявлення завершується помилкою або перевищує час очікування, OpenClaw використовує вбудований резервний каталог:
| Ідентифікатор моделі | Відображувана назва | Рівні міркування |
|---|---|---|
gpt-5.5 |
gpt-5.5 | low, medium, high, xhigh |
gpt-5.4-mini |
GPT-5.4-Mini | low, medium, high, xhigh |
Налаштуйте виявлення в plugins.entries.codex.config.discovery:
{ plugins: { entries: { codex: { enabled: true, config: { discovery: { enabled: true, timeoutMs: 2500, }, }, }, }, },}Вимкніть виявлення, якщо потрібно, щоб під час запуску не виконувалася перевірка Codex і використовувався лише резервний каталог:
{ plugins: { entries: { codex: { enabled: true, config: { discovery: { enabled: false, }, }, }, }, },}Файли початкового налаштування робочого простору
Codex самостійно обробляє AGENTS.md за допомогою нативного виявлення
документації проєкту. OpenClaw не записує синтетичні файли документації
проєкту Codex і не залежить від резервних назв файлів Codex для файлів
персони, оскільки резервні варіанти Codex застосовуються лише за відсутності
AGENTS.md.
Для узгодженості робочого простору OpenClaw середовище Codex передає інші файли початкового налаштування як інструкції розробника, але не однаково:
TOOLS.mdпередається як успадковані інструкції розробника Codex, тому нативні субагенти Codex, створені протягом ходу, також бачать його.SOUL.md,IDENTITY.mdіUSER.mdпередаються як інструкції зі співпраці, обмежені поточним ходом. Нативні субагенти Codex не успадковують їх, що не дає ходам субагентів отримати персону батьківського агента та профіль користувача.- Компактний завантажений список Skills OpenClaw також передається як інструкції розробника зі співпраці, обмежені поточним ходом, тому нативні субагенти Codex також не успадковують його.
- Вміст
HEARTBEAT.mdне вставляється; ходи Heartbeat у режимі співпраці отримують вказівник прочитати файл, якщо він існує й не порожній. - Вміст
MEMORY.mdіз налаштованого робочого простору агента не вставляється у вхідні дані нативного ходу Codex, коли для цього робочого простору доступні інструменти пам’яті; якщо файл існує, середовище додає невеликий вказівник на пам’ять робочого простору до інструкцій розробника зі співпраці, обмежених поточним ходом, а Codex має використовуватиmemory_searchабоmemory_get, коли потрібна довготривала пам’ять. Якщо інструменти вимкнено, пошук у пам’яті недоступний або активний робочий простір відрізняється від робочого простору пам’яті агента, дляMEMORY.mdнатомість використовується звичайний обмежений шлях контексту ходу. BOOTSTRAP.md, якщо він наявний, передається як довідковий контекст вхідних даних ходу OpenClaw.
Перевизначення через середовище
Перевизначення через середовище залишаються доступними для локального тестування:
OPENCLAW_CODEX_APP_SERVER_BINOPENCLAW_CODEX_APP_SERVER_ARGSOPENCLAW_CODEX_APP_SERVER_MODE=yolo|guardianOPENCLAW_CODEX_APP_SERVER_APPROVAL_POLICYOPENCLAW_CODEX_APP_SERVER_SANDBOX
OPENCLAW_CODEX_APP_SERVER_BIN оминає керований виконуваний файл, коли
appServer.command не задано.
OPENCLAW_CODEX_APP_SERVER_GUARDIAN=1 видалено. Натомість використовуйте
plugins.entries.codex.config.appServer.mode: "guardian" або
OPENCLAW_CODEX_APP_SERVER_MODE=guardian для одноразового локального
тестування. Для повторюваних розгортань рекомендовано конфігурацію, оскільки
вона зберігає поведінку Plugin у тому самому перевіреному файлі, що й решту
налаштувань середовища Codex.