Plugin guides

Контроль сеансов Codex

Наблюдение за Codex — это функция официального плагина codex, включаемая по желанию. Она показывает неархивированные исходные сеансы Codex Desktop и CLI с компьютера Gateway и подключённых компьютеров, на которых эта функция включена, в обычной боковой панели сеансов и панели чата.

В первоначальном выпуске область ответственности намеренно ограничена:

  • Из сохранённого или бездействующего локального сеанса можно создать чат OpenClaw с заблокированной моделью на основе ограниченной сохранённой истории сообщений пользователя и ассистента. Первое сообщение создаёт нативное ответвление снимка состояния, а затем запускает полный поток среды Codex с той же моделью и тем же провайдером, которые Codex App Server выбрал для этого ответвления. При последующих обращениях восстанавливается сохранённая пара канонического нативного потока, а привязка наблюдения не позволяет OpenClaw подставить другую среду выполнения, модель или резервный вариант. Отдельный нативный элемент управления Codex по-прежнему может изменить эту сохранённую пару. Для уже созданной ветви открывается существующий чат.
  • Для сохранённого сеанса, обнаруженного в другом процессе Codex, текущая активность неизвестна. От него можно создать ветвь или архивировать его только после того, как оператор подтвердит, что никакой другой клиент Codex его не использует.
  • Активный источник остаётся видимым, но от него нельзя создать ветвь и его нельзя архивировать, пока не завершится текущий ход. Если у него уже есть чат под наблюдением, действие Открыть чат остаётся доступным.
  • Сеанс на подключённом узле предоставляет свой сохранённый транскрипт посредством ограниченного чтения из App Server со страничной навигацией по курсору. Для удалённого продолжения потребуется будущий потоковый мост узлов; для удалённого архивирования дополнительно потребуется аренда владения исполнителем или эквивалентный механизм разграничения.
  • Архивированные сеансы не отображаются. Сохранённый или бездействующий локальный сеанс можно архивировать только после того, как оператор подтвердит, что никакой другой клиент Codex его не использует.

Перед началом работы

  • Установите официальный плагин @openclaw/codex на Gateway. Приложение OpenClaw для macOS может установить его при включении функций Codex; в установках CLI можно выполнить openclaw plugins install @openclaw/codex.
  • Установите Codex Desktop или Codex CLI и войдите в учётную запись на каждом компьютере, сеансы которого вы хотите отображать.
  • Подключите удалённые компьютеры как узлы OpenClaw. На каждом компьютере эту функцию необходимо включить локально; включение наблюдения только на Gateway не авторизует другой узел.
  • Используйте Gateway, контролируемый владельцем. Названия сеансов, рабочие каталоги и ветви Git могут раскрывать конфиденциальную информацию о проектах.

Включение наблюдения

Пошаговая настройка openclaw onboard и первоначальная настройка macOS пытаются установить и включить наблюдение за Codex после обнаружения нативной установки Codex и успешной активации выбранной серверной системы логического вывода. Codex необязательно должен быть основной серверной системой. Наблюдение становится доступно после успешной автоматической активации плагина. Доступность App Server проверяется при первом подключении наблюдения. Явное отключение плагина Codex или блокировка политикой предотвращает автоматическую активацию, а существующее явное значение supervision.enabled: false отключает инструменты наблюдения для агентов; каталог оператора остаётся зарегистрированным, пока активен плагин Codex. В существующих установках ту же функцию можно включить вручную:

Включите плагин codex и его функцию наблюдения в openclaw.json:

json5
{  plugins: {    entries: {      codex: {        enabled: true,        config: {          supervision: {            enabled: true,          },        },      },    },  },}

Если присутствует plugins.allow, включите codex. Перезапустите Gateway после изменения активации плагина.

Если явные параметры подключения appServer отсутствуют, наблюдение использует отдельное управляемое подключение наблюдения через stdio к нативному пользовательскому домашнему каталогу Codex. Обычная среда Codex по умолчанию остаётся привязанной к агенту. Благодаря этому нативные сеансы видны в обоих приложениях, но обычные ходы OpenClaw не используют общее состояние нативного Codex. Явно задайте appServer.homeScope: "user", если среда тоже должна совместно использовать это состояние. Наблюдение учитывает явные параметры подключения appServer, а не заменяет их локальным значением по умолчанию для домашнего каталога пользователя.

Чат, принятый из группы Codex на боковой панели, не является обычным сеансом среды. Его закрытая привязка наблюдения использует подключение наблюдения для чтения источника, создания канонической ветви, внедрения истории и каждого последующего хода. При локальном подключении по умолчанию это сохраняет нативный пользовательский домашний каталог Codex, аутентификацию и конфигурацию провайдера, не изменяя значения по умолчанию для других сеансов.

При локальном подключении наблюдения по умолчанию хранилище совместно используется с нативными клиентами Codex. OpenClaw не предполагает, что другой клиент использует тот же работающий процесс App Server, а владение нативным состоянием ограничено процессом. Поэтому поток, который App Server наблюдения сообщает как notLoaded, считается Сохранённым / активность неизвестна, а не бездействующим.

Примените такое же добровольное включение на каждом серверном узле без графического интерфейса, сеансы которого должны отображаться. Нативное приложение OpenClaw для macOS считывает ту же локальную настройку, когда объявляет свой каталог Codex подключённому Gateway. Каталог такого подключённого нативного Mac поддерживает только значение по умолчанию или явное appServer.transport: "stdio" с неустановленным или явным appServer.homeScope: "user". Для этого процесса stdio учитываются command, args и clearEnv. Если в конфигурации Mac выбрано "unix", "websocket" или homeScope: "agent", приложение не объявляет возможность каталога или команду, а устаревший прямой вызов завершается ошибкой вместо раскрытия пользовательского домашнего каталога Codex или запуска другого локального App Server через stdio.

Новая объявленная команда узла изменяет список разрешённых команд этого узла. Подтвердите обновление на хосте Gateway:

bash
openclaw nodes pendingopenclaw nodes approve <requestId>

Неархивированные сеансы Codex также отображаются на основной боковой панели Control UI с группировкой по хостам. Выберите сеанс, чтобы прочитать его сохранённый транскрипт. Средство просмотра использует новейший API Codex thread/turns/list с itemsView: "full" и загружает не более 20 ходов за запрос; действие Загрузить более старые элементы транскрипта использует непрозрачный курсор App Server с последней страницы. Загруженные страницы отображаются в хронологическом порядке. Средство просмотра никогда не загружает неограниченную историю thread/read. При размере страницы выше безопасного транспортного предела 20 MiB операция завершается ошибкой, чтобы не подвергать риску подключение узла или Gateway.

Откройте группу Codex на обычной боковой панели сеансов. В ней отображаются те же сеансы с группировкой по хостам. Действие Загрузить больше сеансов добавляет следующую страницу с каждого хоста, на котором есть более старые строки, и добавленные строки сохраняются при периодическом обновлении боковой панели. Для каждой возвращённой страницы поиска сканируется ограниченное число нативных страниц на каждом хосте, а запрос не отправляется в App Server, поскольку нативный поиск также может находить совпадения в предварительном содержимом транскриптов.

Доступность хоста и состояние потока — разные характеристики. Не в сети или Недоступен описывает обновление хоста; недоступный хост не возвращает новых строк сеансов и не изменяет нативное состояние потока на offline. Строки сеансов используют состояния Codex, такие как idle, active, notLoaded или ошибка. Сбой одного хоста не скрывает результаты исправных хостов.

Использование CLI оператора

Терминальный CLI предоставляет тот же каталог неархивированных сеансов, а также действия ветвления и архивирования, локальные для Gateway:

bash
openclaw codex sessions [--search <text>] [--host <id>] [--limit <count>] [--cursor <cursor>] [--json] [--url <url>] [--token <token>] [--timeout <ms>] [--expect-final]openclaw codex continue <thread-id> [--json] [--url <url>] [--token <token>] [--timeout <ms>] [--expect-final]openclaw codex archive <thread-id> --confirm-no-other-runner [--json] [--url <url>] [--token <token>] [--timeout <ms>] [--expect-final]

Параметры openclaw codex sessions:

  • --search <text> выполняет поиск по названиям сеансов без учёта регистра.
  • --host <id> ограничивает ответ одним стабильным хостом каталога, например gateway:local или node:<node-id>.
  • --limit <count> задаёт от 1 до 100 строк на хост; значение по умолчанию — 50.
  • --cursor <cursor> продолжает одну страницу хоста и поэтому требует --host.
  • --json выводит структурированный ответ Gateway.

Все три команды наследуют --url, --token и --timeout <ms> от клиента Gateway. Для отображения сеансов время ожидания по умолчанию составляет 75,000 ms, чтобы успели завершиться холодные каталоги подключённых узлов; для продолжения и архивирования значение по умолчанию составляет 30,000 ms. Они также предоставляют общий переключатель --expect-final, который не изменяет эти унарные RPC наблюдения. Для каждой команды требуется область Gateway operator.write. Для каждой подкоманды доступен стандартный вывод -h, --help. Параметра archived или include-archived нет. sessions может отображать подключённые хосты, но continue и archive всегда направлены на gateway:local; строки подключённых узлов доступны только для просмотра. Для архивирования всегда требуется --confirm-no-other-runner.

Эти команды оболочки отличаются от команд среды выполнения /codex в чате. /codex threads [filter] отображает потоки App Server, доступные текущему подключению беседы. /codex sessions --host <node> отображает файлы возобновляемых сеансов Codex CLI на одном узле, а не общий каталог наблюдения. /codex resume и /codex bind подключают текущую беседу вместо создания безопасной ветви под наблюдением, а чат под наблюдением с заблокированной моделью отклоняет такие изменения привязки. Команд среды выполнения /codex continue и /codex archive не существует.

Создание ветви из локального сеанса

Выберите Продолжить как ветвь в строке сохранённого или бездействующего сеанса с компьютера Gateway. OpenClaw создаёт обычную запись чата, копирует ограниченную историю сообщений пользователя и ассистента до последнего завершившегося сохранённого хода источника включительно (завершённого, прерванного или неудачного), регистрирует ожидающую ветвь среды и открывает чат. Универсальный выбор модели заблокирован, но конкретная модель или провайдер ещё не выбраны. Работа источника не возобновляется, а канонический поток среды ещё не запускается. При повторении действия открывается существующий чат вместо создания ещё одной ветви.

В копии сохраняется новейшая видимая часть истории, соответствующая всем трём ограничениям: не более 200 сообщений пользователя или ассистента, суммарно 512 KiB текста UTF-8 и 64 KiB на сообщение. Слишком большие сообщения обрезаются с добавлением маркера, а более старые сообщения пропускаются при достижении предела. Входное изображение или локальное изображение заменяется буквальным заполнителем [Image attachment]; данные изображений и локальные пути не копируются.

Отправьте первое обычное сообщение в чате, чтобы начать работу. Среда Codex устанавливает настоящие обработчики подтверждения, запроса сведений, событий и доставки. Она использует временное нативное ответвление через подключение наблюдения, чтобы закрепить снимок источника без переопределения модели или провайдера. Codex App Server выбирает оба параметра из своей текущей нативной конфигурации и возвращает фактический выбор. Через то же подключение OpenClaw запускает канонический полный поток среды с источником appServer в его рабочем каталоге и согласно его политике среды выполнения с точно такой возвращённой парой, внедряет ограниченную видимую историю и архивирует временное ответвление. Канонический поток имеет полный набор инструментов среды OpenClaw. Это ветвь видимой истории, а не полный клон нативного выполнения: рассуждения источника, вызовы инструментов и результаты инструментов не включаются. Этот и каждый последующий ход остаются в подключении Codex под наблюдением, а не переходят в другую среду выполнения модели OpenClaw или обычную среду в домашнем каталоге агента.

Возвращённый выбор не является доказательством исторически использовавшейся моделью источника. Если текущая нативная конфигурация отличается от модели, записанной для последнего хода источника, Codex выводит обычное предупреждение о различии моделей. OpenClaw использует возвращённую пару для запуска канонической ветки. Codex сохраняет нативные модель и провайдера этой канонической ветки, а при последующих возобновлениях они сохраняются, поскольку OpenClaw не передаёт переопределения модели и провайдера. Если каноническая ветка изменяется через отдельный нативный элемент управления Codex, OpenClaw принимает сохранённый Codex выбор. OpenClaw никогда не подставляет свою внешнюю модель или цепочку резервных вариантов.

Контролируемый чат с зафиксированной моделью нельзя удалить, переключить на другую модель, использовать /new или /reset, вызвать действие сброса сеанса Gateway или использовать универсальное действие Fork session. Изменение /codex model <model>, /codex bind, /codex resume (включая сеанс узла с --bind here), а также /codex detach или /codex unbind отклоняется, поскольку оно заменило бы или очистило зафиксированную нативную привязку. Запрос /codex model, а также /codex fast, /codex permissions и /codex threads остаются доступными. Если вам нужна другая модель или новая ветка, запустите другой обычный сеанс.

Не отключайте контроль для этого чата. Если контроль отключён или сохранённая привязка подключения становится недоступной либо несогласованной, ход завершается с отказом вместо перехода к обычному сеансу в домашнем каталоге агента.

Отключение или удаление плагина codex не снимает это владение и не позволяет использовать чат с другой моделью. Зафиксированный чат сохраняется, но становится недоступным; чтобы возобновить его, переустановите или снова включите тот же плагин и перезапустите Gateway. Это намеренное поведение с отказом предотвращает ситуацию, когда очистка по сроку хранения или временный сбой плагина незаметно оставляет нативную привязку без владельца.

Инструмент агента codex_threads соблюдает ту же границу. Он не может присоединить другое ответвление или архивировать привязанную к чату нативную ветку. Получение списка и чтение только метаданных остаются доступными. Для чтения необработанных расшифровок требуется allowRawTranscripts. Когда необработанный доступ отключён, codex_threads также запрещает поиск по списку, поскольку нативный поиск включает предварительные просмотры расшифровок; Control UI и операторский CLI по-прежнему предоставляют ограниченный поиск только по заголовкам. Для переименования, разархивирования, отдельного ответвления и архивирования посторонней ветки без владельца требуется allowWriteControls. Ни один из этих параметров не позволяет обойти зафиксированную привязку.

OpenClaw не подписывается на запросы подтверждения и не отвечает на них, пока лишь получает список веток источника или отображает ожидающий чат. Запуск отдельной канонической ветки среды выполнения при первом ходе позволяет другому процессу Codex сохранять владение источником, не создавая конкурирующих процессов записи развёртывания.

Исходный источник CLI или VS Code остаётся видимым нативным клиентам и каталогу OpenClaw. Каноническая ветка хранится как нативная ветка Codex, однако тип её источника — appServer; Codex Desktop или другой нативный клиент может фильтровать этот тип источника, поэтому отображение самой ветки во всех нативных представлениях истории не гарантируется.

Активная строка, о которой сообщает App Server OpenClaw, не может запустить новую ветку. Дождитесь завершения текущего хода и обновите каталог. Codex App Server сериализует изменения в пределах одного процесса, но не предоставляет эксклюзивную межпроцессную аренду исполнителя или владельца подтверждений.

Для строки Stored / activity unknown зеркало чата и фиксация снимка первого хода используют состояние Codex вплоть до последнего сохранённого завершённого хода. Исходная ветка не возобновляется, не прерывается и не архивируется. Если в другом процессе выполняется ход, его последние незавершённые изменения могут отсутствовать в ответвлении.

Архивирование локального сеанса

Выберите Archive для сохранённой или бездействующей локальной строки Gateway, затем убедитесь, что ни один другой клиент Codex или исполнитель OpenClaw не использует эту ветку или созданные ею дочерние ветки. OpenClaw заново считывает локальное для процесса состояние, продолжает только для idle или notLoaded, вызывает нативную операцию архивирования Codex и удаляет сеанс из списка неархивированных. Нативный Codex также пытается архивировать созданные веткой дочерние ветки.

Архивирование недоступно, если при новом чтении сеанс отмечен как активный или находящийся в состоянии ошибки, если он принадлежит сопряжённому узлу либо пока у недавно созданного контролируемого чата остаётся ожидающее ответвление от этого источника. Отправьте первое сообщение чата, чтобы материализовать его каноническое ответвление перед архивированием источника. Архивирование также блокируется, если OpenClaw известно, что активная привязка владеет точно целевой веткой или любой неархивированной созданной дочерней веткой. OpenClaw обходит экспериментальный запрос дочерних веток Codex по всем страницам; недопустимый ответ, ошибка запроса, повторяющийся курсор или ветка либо исчерпание предела безопасности приводят к отклонению архивирования.

Чтение, перечисление дочерних веток и запросы архивирования не являются одной условной операцией, поэтому между ними всё ещё может начаться ход. Состояние App Server также не разделяется между независимыми процессами. Поэтому подтверждение служит границей безопасности для неизвестных клиентов и этой гонки: завершите работу или иным способом проверьте все остальные клиенты перед подтверждением. Восстановите архивированную ветку с помощью Codex Desktop, Codex CLI или разрешённого владельцем нативного процесса управления ветками; после разархивирования она появится снова.

bash
codex unarchive <thread-id>

Ограничения сопряжённых узлов

Сопряжённые узлы предоставляют версионированные команды только для чтения codex.appServer.threads.list.v1 и codex.appServer.thread.turns.list.v1. Gateway получает нормализованные метаданные и явно запрошенные ограниченные страницы расшифровок, но никогда не получает необработанные конечные точки App Server. Текущий транспорт вызова узла поддерживает только схему запрос/ответ, поэтому не может обслуживать длительный жизненный цикл событий, подтверждений и потоковой передачи, необходимый среде выполнения Codex.

Поэтому удалённые строки остаются видимыми, но не предлагают Continue или Archive, даже когда удалённая ветка бездействует. Используйте Codex на этом компьютере, пока для продолжения не появится мост потокового исполнителя на стороне узла, а для архивирования — безопасная граница владения исполнителем.

Метаданные и разрешения

Строки каталога могут включать:

  • идентификаторы ветки и сеанса
  • заголовок и рабочий каталог
  • текущее состояние и флаги активного ожидания
  • временные метки создания, обновления и активности
  • источник, провайдера модели, версию Codex CLI и ветку Git

Проекция каталога исключает предварительные просмотры расшифровок, ходы, пути развёртывания, путь к домашнему каталогу Codex, удалённые репозитории Git, SHA коммитов и необработанные ошибки App Server. Для доступа к каталогу и чтения расшифровок в Control UI требуется область Gateway operator.write, поскольку агрегация парка использует стандартный путь node.invoke, хотя обе команды узла доступны только для чтения.

supervision.allowRawTranscripts и supervision.allowWriteControls управляют автономными агентами и отдельными инструментами MCP. Для обоих по умолчанию задано false. Когда контроль включён, codex_threads удаляет предварительные просмотры расшифровок и ходы из результатов получения списка и чтения только метаданных, если необработанные расшифровки не разрешены; чтение с включёнными ходами завершается с отказом. Для каждого ответвления, переименования, архивирования и разархивирования требуются средства управления записью. Эти параметры не ограничивают просмотр расшифровок через аутентифицированный Control UI и не позволяют обходить проверки привязки, хоста, состояния или подтверждения.

Инструменты совместимости

Официальный плагин codex сохраняет пять выпущенных имён инструментов Supervisor для существующих агентов и отдельных клиентов MCP:

  • codex_endpoint_probe
  • codex_sessions_list
  • codex_session_read
  • codex_session_send
  • codex_session_interrupt

По умолчанию codex_sessions_list работает только с загруженными данными; параметра loaded_only нет. Установите include_stored: true, чтобы также читать неархивированные сохранённые строки из базы данных состояния Codex. Необязательное ограничение max_stored_sessions по умолчанию равно 200 и принимает от 1 до 1,000 строк на конечную точку. Оно не ограничивает загруженные строки. Без разрешения на необработанные расшифровки результаты списка не содержат полученные из расшифровок имена, предварительные просмотры и подробные ошибки конечных точек. Для codex_session_read требуется allowRawTranscripts; include_turns: true дополнительно запрашивает у Codex ходы.

Для codex_session_send и codex_session_interrupt требуется allowWriteControls. Отправка принимает mode: "auto" | "start" | "steer", однако "start" всегда отклоняется, а "auto" и "steer" могут только направлять доступный для чтения активный ход. Бездействующая ветка отклоняется с рекомендацией использовать Codex Sessions, где полная среда выполнения устанавливает обработчики подтверждений и инструментов перед продолжением. Для прерывания также требуется активный доступный для чтения ход. Эти инструменты не возобновляют и не запускают бездействующую исходную ветку.

openclaw doctor --fix перемещает устаревшую запись codex-supervisor, её конечную точку и поля разрешений, а также ссылки политики разрешения и запрета плагинов в официальный плагин codex, не перезаписывая явно заданные канонические настройки. Отдельный адаптер совместимости MCP продолжает загружать те же пять инструментов из этого плагина; устаревшие переменные окружения политики применяются только внутри этого доверенного адаптера.

Описание всех полей конфигурации контроля см. в справочнике среды выполнения Codex.

Устранение неполадок

Сеансы не отображаются: убедитесь, что @openclaw/codex установлен, плагин и supervision.enabled имеют значение true, текущий список разрешённых плагинов допускает codex, а сеансы не архивированы. После изменения активации перезапустите Gateway или узел.

Continue недоступно: несопоставленная строка активна, принадлежит сопряжённому узлу, её хост отключён или ожидается другое действие. Для локальных сохранённых и бездействующих строк Gateway предлагается Continue as branch вместо небезопасного захвата той же ветки. Для строки, у которой уже есть контролируемый чат, предлагается Open Chat.

Archive недоступно: архивирование доступно для локальных строк Gateway в состоянии «сохранено/активность неизвестна» и бездействующих строк после подтверждения отсутствия других исполнителей. Активные строки, строки с ошибкой, отключённые строки, строки сопряжённых узлов, строки с ожидающим ответвлением и строки с известным владельцем точной привязки остаются доступными для архивирования только для чтения.

Архивированный сеанс исчез: это ожидаемое поведение. На странице контроля нет представления архивированных сеансов. Выполните codex unarchive <thread-id> или используйте Codex Desktop, чтобы снова отобразить его.

Старая конфигурация codex-supervisor сохранилась: выполните openclaw doctor --fix. Doctor перемещает устаревшую запись плагина и связанные ссылки политики плагинов в plugins.entries.codex.config.supervision, не перезаписывая явно заданные настройки Codex.

Связанные материалы

Was this useful?
On this page

On this page