Перейти к содержимому
17.3k

Почему v1 — режим подагентов по умолчанию

OpenCodex устанавливается с режимом подагентов v1. Страницы Dashboard, Models и Subagents просят подтверждение перед переходом на base или v2 и ссылаются на эту страницу. CLI подтверждения не запрашивает.

Причина конкретна: на v2 модель с маршрутизацией не может прочитать задачу, переданную ей нативной моделью ChatGPT. Это самый распространённый способ делегирования — основной GPT запускает подагента Grok, Claude или GLM — и на v2 он каждый раз завершается ошибкой.

Запуск подагента отклоняется, вместо того чтобы молча создать пустую задачу:

{
"error": {
"code": "unreadable_encrypted_agent_task",
"message": "Routed V2 worker task is encrypted for the native ChatGPT backend and cannot be read by the selected provider. Use plaintext V2 agent-message delivery or select a native ChatGPT model."
}
}

Возвращается HTTP 400, а шифротекст никогда не выдаётся обратно. Отказ преднамерен: передача нечитаемых данных дала бы подагенту пустую инструкцию и уверенный, но неправильный ответ.

Два пути одного делегирования. На v1 основной ChatGPT отправляет обычный текст задачи через OpenCodex, тот пересекает границу провайдера, и подагент может его прочитать. На v2 основной агент отправляет encrypted_content, созданный backend ChatGPT; OpenCodex не может его расшифровать, поэтому задача останавливается на границе провайдера с ошибкой unreadable_encrypted_agent_task.

На v1 основной агент создаёт задачу подагента как обычный текст. OpenCodex читает её, направляет по маршруту, и подагент получает пригодное задание.

На v2 основной агент создаёт задачу в виде encrypted_content, выпущенного backend ChatGPT. Ключ остаётся там. У OpenCodex его никогда не было, поэтому прокси нечего расшифровывать или переписывать: это действительно шифротекст, а не скрытый флагом обычный текст. Это свойство устройства системы, а не ошибка настройки; исправить его настройкой прокси нельзя.

Три схемы не затронуты. Их полезно перечислить, чтобы стало ясно, где именно возникает ошибка:

Схема v1 v2
Основной ChatGPT → маршрутизируемый подагент работает ошибка
Маршрутизируемый основной агент → маршрутизируемый подагент работает работает
Основной ChatGPT → подагент ChatGPT работает работает — backend расшифровывает созданные им данные

Backend всегда может прочитать собственный шифротекст. Ломается только переход через границу провайдеров.

Пока нет, по крайней мере в той части, которая нужна. В upstream приняли openai/codex#35845, добавив поддержку обычного текста в сообщениях совместной работы, но это сторона приёма. Она обрабатывает уже созданный обычный текст, но не заставляет основного агента OpenAI его создавать.

Сторона отправки ещё открыта: #36376, воспроизведённая в CLI версий 0.146–0.151 на Windows, macOS и Linux, и #37197, где прямо указана недостающая часть — правило доставки на стороне отправки. По ним нет ни обязательства сопровождающих, ни срока исправления.

OpenCodex зафиксировал последствие в #92, закрытой как не планируемое исправление: в этом репозитории проблему решить нельзя. Задача служит указателем на работу upstream, а не ожидает исправления сопровождающими здесь.

Режим Инструменты Когда выбирать
v1 (по умолчанию) Каждая модель объявляет классические инструменты запуска в пространстве имён. При запуске можно сразу указать другую модель. Если вы делегируете между провайдерами. Это режим поставки по умолчанию.
base Настройки моделей upstream: Sol и Terra используют v2, Luna — v1, остальные следуют собственному флагу Codex. Если вам нужен предусмотренный Codex режим для каждой модели и вы делегируете только внутри одного провайдера.
v2 Каждая модель объявляет плоские инструменты параллельной работы. Если вам нужна новая модель параллельных сессий, а основной агент и подагент находятся по одну сторону границы.

base стоит вторым, а не первым, потому что его настройки переводят Sol и Terra — две модели, из которых чаще всего делегируют, — на v2. Для этой проблемы base не является промежуточным вариантом: запуск от ChatGPT к маршрутизируемому подагенту ведёт себя как на v2.

Ваш выбор не меняется. Обновление до версии с новым режимом по умолчанию не перезаписывает существующую настройку: дашборд один раз покажет уведомление и дождётся ответа.

  • Continue сохраняет текущий режим и больше не спрашивает.
  • Switch to v1 применяет v1 и больше не спрашивает.

Любой ответ записывается, и уведомление больше не появляется. Если закрыть его без ответа, оно снова появится при следующем открытии дашборда.

Изменение режима действует на новые сессии Codex. Начните новую сессию; если долго работающий хост приложения всё ещё показывает старые инструменты, выполните ocx sync и перезапустите соответствующий интерфейс.

Есть четыре пути, в порядке предпочтения для большинства пользователей:

  1. Оставить ChatGPT на v1. В режиме v2 переключатель keepNativeChatGptOnV1 оставляет Sol и Terra на v1, чтобы они могли запускать Grok или Claude, тогда как маршрутизируемые основные агенты получают v2. Это ближайший вариант к одновременному использованию обоих режимов.
  2. Делегировать внутри одного провайдера. Маршрутизируемый основной агент создаёт маршрутизируемому подагенту обычный текст задачи и на v2.
  3. Доверять прямому ретранслятору Responses с ключом. Провайдер, которому вы явно зададите allowEncryptedV2AgentTasks: true, получит непрозрачные данные вместо ошибки 400. Делайте это только для назначения, которое точно способно их обработать.
  4. Включить agentTaskRecovery. Экспериментальная настройка, выключенная по умолчанию. Она восстанавливает нечитаемые зашифрованные элементы NEW_TASK, MESSAGE, FOLLOWUP_TASK и FINAL_ANSWER через backend ChatGPT ценой квоты, задержки и зависимости от недокументированного поведения; восстановление combo ограничено ходами созданных подагентов, а фрагменты разделённых токенов по-прежнему не поддерживаются.

Подробности каждого варианта см. в разделе Режимы подагентов, а сами настройки — в Конфигурации агентов.

Когда новая версия upstream начнёт отправлять задачу маршрутизируемому подагенту от нативного основного ChatGPT как обычный текст, причина режима по умолчанию исчезнет. Тогда умолчанием снова станет base, подтверждение перестанет появляться, а эта страница станет исторической справкой.

Dashboard, Models и Subagents имеют одинаковый переключатель v1/base/v2, и все три запрашивают подтверждение перед base или v2. В CLI:

Terminal window
ocx v2 status
ocx v2 mode v1

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