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 |
включено | Настройки обнаружения моделей для Codex app-server model/list. |
appServer |
управляемый app-server stdio | Настройки транспорта, команды, аутентификации, подтверждений, песочницы и тайм-аутов. Обычная среда выполнения по умолчанию использует состояние уровня агента. |
codexDynamicToolsLoading |
"searchable" |
Используйте "direct", чтобы поместить динамические инструменты OpenClaw непосредственно в исходный контекст инструментов Codex. |
codexDynamicToolsExclude |
[] |
Дополнительные имена динамических инструментов OpenClaw, которые следует исключить из обращений к Codex app-server. |
codexPlugins |
отключено | Нативная поддержка плагинов и приложений Codex, включая доступ по явному согласию к приложениям подключённых аккаунтов. См. Нативные плагины Codex. |
computerUse |
отключено | Настройка Codex Computer Use. См. Codex Computer Use. |
sessionCatalog |
включено | Нативное обнаружение сеансов Codex для боковой панели. Задайте enabled: false, чтобы отключить обнаружение, не отключая провайдер или среду выполнения. |
supervision |
отключено | Доступная агенту политика расшифровки нативных сеансов и управления записью. См. Контроль Codex. |
Контроль
По умолчанию нативное обнаружение сеансов выводит неархивированные сеансы Codex с компьютера Gateway и подключённых узлов, для которых это разрешено. Чтобы отключить только этот каталог:
{ plugins: { entries: { codex: { enabled: true, config: { sessionCatalog: { enabled: false, }, }, }, }, },}supervision отдельно управляет инструментами, доступными агенту:
| Поле | Значение по умолчанию | Назначение |
|---|---|---|
enabled |
false |
Включает доступные агенту инструменты контроля Codex. Не управляет каталогом аутентифицированных операторских сеансов. |
endpoints |
встроенная локальная конечная точка | Целевые конечные точки для совместимости и расширенных сценариев сохранённого агента контроля Codex и автономных инструментов MCP. Каталог для пользователя и поток ветвления игнорируют эти цели и используют App Server контроля, определённый из appServer. |
allowRawTranscripts |
false |
При включённом контроле разрешает автономному агенту или автономному MCP читать расшифровки и производные от них поля списков. Чтение только метаданных codex_threads остаётся доступным. Не управляет продолжением через аутентифицированный Control UI. |
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.
Транспорт app-server
Для обычных обращений среды выполнения OpenClaw запускает управляемый
исполняемый файл Codex, поставляемый с официальным плагином (сейчас
@openai/codex 0.144.3):
codex app-server --listen stdio://Таким образом версия app-server привязана к официальному плагину
codex, а не к любой отдельной версии Codex CLI, установленной
локально. Задавайте appServer.command только в том случае, если намеренно хотите
использовать другой исполняемый файл. Обычные управляемые обращения с
изолированным домашним каталогом агента по умолчанию предпочитают этот
зафиксированный пакет, даже если установлен настольный комплект macOS. Когда
включён Computer Use либо когда
homeScope имеет значение "user" и может загрузить нативное
состояние Computer Use, при управляемом запуске предпочтение вместо этого
отдаётся исполняемому файлу настольного приложения, которому принадлежат
необходимые разрешения macOS. То же правило приоритета настольного приложения
действует, когда эффективная конфигурация Codex изолированного домашнего
каталога агента включает нативный Computer Use. Если комплект настольного
приложения не установлен, OpenClaw возвращается к исполняемому файлу
зафиксированного пакета.
Передача исполняемого файла и изоляция нативной конфигурации координируют клиенты внутри одного работающего процесса Gateway. Перезапустите Gateway после того, как другой процесс изменит конфигурацию нативного плагина Codex.
Для контроля определяется отдельное подключение. При отсутствии явных
параметров подключения appServer используется управляемый stdio с
homeScope: "user"; обычная среда выполнения сохраняет управляемый stdio с
homeScope: "agent". Оба пути учитывают явные параметры подключения. Задайте
homeScope: "user" явно, если обычная среда выполнения должна совместно
использовать $CODEX_HOME (или ~/.codex) с нативными клиентами.
Приватная контролируемая привязка использует подключение контроля независимо от
значения по умолчанию для обычной среды выполнения. Независимые процессы App
Server сохраняют раздельные состояния активности и подтверждений.
Для уже запущенного 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 App Server для 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. |
loopDetectionPreToolUseRelay |
true |
Устанавливает подпроцесс Codex PreToolUse, используемый только для обнаружения циклов OpenClaw и явного маркера отсутствия политики. Установите false, чтобы сократить количество процессов, создаваемых для каждого инструмента. Хуки плагинов перед запуском инструмента и политика доверенных инструментов по-прежнему устанавливают необходимый ретранслятор. |
requestTimeoutMs |
60000 |
Тайм-аут вызовов плоскости управления app-server. |
turnCompletionIdleTimeoutMs |
60000 |
Период бездействия после того, как Codex принимает ход, или после запроса app-server в рамках хода, пока OpenClaw ожидает turn/completed. |
postToolRawAssistantCompletionIdleTimeoutMs |
300000 |
Защитный интервал бездействия при завершении и выполнении, используемый после передачи управления инструменту, завершения нативного инструмента, необработанного прогресса ответа ассистента после инструмента, завершения необработанного рассуждения или прогресса рассуждения, пока OpenClaw ожидает turn/completed. Используйте его для доверенных или ресурсоёмких задач, где синтез результата после инструмента обоснованно может оставаться без вывода дольше, чем допускает бюджет окончательной выдачи ответа ассистента. |
mode |
"yolo", если локальные требования Codex не запрещают YOLO |
Предустановка для выполнения в режиме YOLO или с проверкой guardian. |
approvalPolicy |
"never" или разрешённая политика одобрения guardian |
Нативная политика одобрения Codex, передаваемая при запуске и возобновлении потока, а также при выполнении хода. |
sandbox |
"danger-full-access" или разрешённая песочница guardian |
Нативный режим песочницы Codex, передаваемый при запуске и возобновлении потока. Активные песочницы OpenClaw ограничивают ходы danger-full-access до Codex workspace-write; сетевой флаг хода соответствует исходящему трафику песочницы OpenClaw. |
approvalsReviewer |
"user" или разрешённый рецензент guardian |
Используйте "auto_review", чтобы разрешить Codex проверять нативные запросы на одобрение, когда это допускается. |
defaultWorkspaceDir |
текущий каталог процесса | Рабочая область, используемая /codex bind, когда --cwd не указан. |
serviceTier |
не задано | Необязательный уровень обслуживания app-server Codex. "priority" включает маршрутизацию в быстром режиме, "flex" запрашивает обработку flex, а null удаляет переопределение. Устаревшее значение "fast" принимается как "priority". |
networkProxy |
отключено | Включает сетевой доступ профиля разрешений Codex для команд app-server. OpenClaw определяет выбранную конфигурацию permissions.<profile>.network и выбирает её с помощью default_permissions вместо отправки sandbox. |
experimental.sandboxExecServer |
false |
Предварительно доступная опция, которая регистрирует в поддерживаемом app-server Codex среду Codex на основе песочницы OpenClaw, чтобы нативное выполнение 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 ограничение сети является
сетевым взаимодействием в песочнице, поэтому профиль полного доступа не защищал бы исходящий трафик.
Плагин блокирует рукопожатия сервера приложений без версии или со старыми версиями: сервер приложений Codex
должен сообщать стабильную версию 0.143.0 или более новую.
OpenClaw считает URL WebSocket сервера приложений, не использующие 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 отключает нативный Code Mode Codex,
пользовательские серверы MCP и выполнение плагинов на основе приложений для этого цикла вместо того,
чтобы считать песочницу Codex на стороне хоста эквивалентной серверной части песочницы
OpenClaw. Доступ к оболочке предоставляется через динамические инструменты на базе песочницы OpenClaw,
такие как sandbox_exec и sandbox_process, когда доступны обычные инструменты exec/process.
Нативное выполнение в песочнице
Стабильное поведение по умолчанию — безопасный отказ: активная песочница OpenClaw отключает нативные
поверхности выполнения Codex, которые иначе запускались бы с хоста сервера приложений Codex.
Используйте appServer.experimental.sandboxExecServer: true, только если требуется
опробовать поддержку удалённой среды Codex с серверной частью песочницы OpenClaw.
Этот экспериментальный путь работает со всеми поддерживаемыми версиями сервера приложений Codex.
{ plugins: { entries: { codex: { enabled: true, config: { appServer: { experimental: { sandboxExecServer: true, }, }, }, }, }, },}Когда флаг включён и текущий сеанс OpenClaw работает в песочнице, OpenClaw запускает локальный exec-server на loopback-интерфейсе, использующий активную песочницу, регистрирует его на сервере приложений Codex и запускает поток и цикл Codex в этой среде, принадлежащей OpenClaw. Если сервер приложений не может зарегистрировать среду, выполнение завершается безопасным отказом вместо незаметного перехода к выполнению на хосте.
Этот экспериментальный путь предназначен только для локального использования. Удалённый сервер приложений WebSocket не может обратиться к exec-server на 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.
Явные профили Codex с API-ключом и резервное использование ключа из локальной среды 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 — нет. Если в домашнем каталоге Codex имеются полезные навыки или
плагины Codex CLI, которые должны стать частью изолированного агента 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
Когда конечный список разрешённых средств среды выполнения отключает нативный Code Mode, OpenClaw отправляет
пустой выбор среды выполнения. В таком прямом случае без песочницы
OpenClaw сохраняет отфильтрованные политикой инструменты exec и process как резервный
вариант оболочки. Списки разрешений среды выполнения и codexDynamicToolsExclude по-прежнему применяются.
Большинство остальных инструментов интеграции 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 добавляет это пространство имён в
список Codex code_mode.direct_only_tool_namespaces, не заменяя
заданные оператором элементы. Поэтому Codex предоставляет эти инструменты как
DirectModelOnly в обычных потоках и потоках только для режима кода, а не направляет их
через вложенные вызовы Code Mode tools.*. Эта граница необходима для
результатов, содержащих изображения: вложенная сериализация Code Mode преобразует вывод изображений в
текст, из-за чего будет потерян снимок экрана, необходимый для следующего действия с компьютером.
Задавайте 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 на относящийся к ходу
запрос сервера приложений, среда ожидает, что Codex продолжит работу над текущим ходом
и в итоге завершит нативный ход с помощью turn/completed. Если
сервер приложений не проявляет активности в течение 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-сервера приложений, включая тайм-ауты
простоя при завершении хода без признаков активности ассистента, инструмента, активного элемента
или побочных эффектов, повторяются один раз в новой попытке подключения к серверу приложений.
При небезопасных тайм-аутах зависший клиент сервера приложений всё равно выводится из эксплуатации,
а линия сеанса OpenClaw освобождается. Они также
очищают устаревшую привязку нативного потока вместо автоматического
повторного воспроизведения. При тайм-аутах ожидания завершения отображается специфичный для Codex текст:
в безопасных для повторного воспроизведения случаях сообщается, что ответ может быть неполным, а в небезопасных случаях
пользователю предлагается проверить текущее состояние перед повторной попыткой. Общедоступная диагностика тайм-аутов
включает структурные поля, такие как метод последнего уведомления сервера приложений,
идентификатор, тип и роль необработанного элемента ответа ассистента, количество активных запросов и элементов,
а также состояние активированного наблюдения. Если последнее уведомление является необработанным элементом ответа
ассистента, диагностика также включает ограниченный предварительный фрагмент текста ассистента. Она не
включает необработанное содержимое запроса или инструмента.
Обнаружение моделей
По умолчанию плагин Codex запрашивает у сервера приложений доступные модели. Доступностью
моделей управляет сервер приложений Codex, поэтому список может измениться, когда
OpenClaw обновляет версию встроенного @openai/codex или когда развёртывание
направляет appServer.command на другой исполняемый файл Codex. Доступность также может
зависеть от учётной записи. Используйте /codex models на работающем Gateway, чтобы увидеть актуальный
каталог для этой среды и учётной записи.
Если обнаружение завершается с ошибкой или по тайм-ауту, OpenClaw использует встроенный резервный каталог:
| Идентификатор модели | Отображаемое имя | Уровни рассуждений |
|---|---|---|
gpt-5.5 |
gpt-5.5 | низкий, средний, высокий, очень высокий |
gpt-5.4-mini |
GPT-5.4-Mini | низкий, средний, высокий, очень высокий |
Настройте обнаружение в 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 для разового локального тестирования. Конфигурация
предпочтительна для воспроизводимых развёртываний, поскольку она хранит поведение плагина в
том же проверенном файле, что и остальные настройки среды Codex.