В пятницу инженер OpenAI Майкл Болин опубликовал подробный технический разбор внутреннего устройства кодингового агента компании Codex CLI. Это даёт разработчикам представление об инструментах ИИ для кодирования, способных писать код, запускать тесты и исправлять ошибки под наблюдением человека. Этот материал дополняет нашу статью декабрьскую статью о принципах работы агентских систем ИИ, раскрывая технические детали реализации OpenAI своего «агентного цикла».
Кодинговые агенты ИИ переживают нечто вроде «момента ChatGPT», когда Claude Code с Opus 4.5 и Codex с GPT-5.2 достигли нового уровня полезности для быстрого создания прототипов, интерфейсов и генерации шаблонного кода. Публикация OpenAI детализирует философию дизайна Codex как раз в тот момент, когда агентские системы ИИ становятся более практическими инструментами для повседневной работы.
Эти инструменты не идеальны и вызывают споры среди некоторых разработчиков ПО. Хотя OpenAI ранее сообщала Ars Technica, что использует Codex как инструмент для разработки самого продукта Codex, мы также обнаружили на практике, что эти инструменты могут быть поразительно быстрыми в простых задачах, но остаются хрупкими за пределами данных, на которых они обучались, и требуют контроля со стороны человека для работы в продакшене. Грубый каркас проекта часто появляется быстро и кажется волшебным, но детализация требует утомительной отладки и обходных путей для устранения ограничений, которые агент не может преодолеть самостоятельно.
В материале Болина не обходятся стороной эти инженерные проблемы. Он обсуждает неэффективность квадратичного роста промптов, проблемы производительности, вызванные промахами кэша, и ошибки, обнаруженные командой (например, непоследовательная нумерация инструментов MCP), которые им пришлось устранять.
Уровень технической детализации несколько необычен для OpenAI, которая не публиковала аналогичных разборов внутреннего устройства других продуктов, например ChatGPT (под капотом которого, как нам хотелось бы знать, происходит многое). Однако мы уже видели, как OpenAI иначе подходит к Codex во время нашего интервью в декабре, отмечая, что задачи программирования кажутся идеально подходящими для больших языковых моделей.
Стоит отметить, что как OpenAI, так и Anthropic выкладывают в открытый доступ свои клиентские части CLI для кодирования на GitHub, позволяя разработчикам изучать реализацию напрямую, в отличие от ChatGPT или веб-интерфейса Claude.
Пост Болина сосредоточен на том, что он называет «агентным циклом» — основной логике, которая оркестрирует взаимодействие между пользователем, моделью ИИ и программными инструментами, которые модель вызывает для выполнения задач кодирования.
Как мы писали в декабре, в центре каждого агента ИИ находится повторяющийся цикл. Агент принимает ввод от пользователя и подготавливает текстовый промпт для модели. Затем модель генерирует ответ, который либо даёт окончательный результат пользователю, либо запрашивает вызов инструмента (например, выполнение команды оболочки или чтение файла). Если модель запрашивает вызов инструмента, агент его выполняет, добавляет результат к исходному промпту и снова обращается к модели. Этот процесс повторяется, пока модель не перестанет запрашивать инструменты и вместо этого не сгенерирует сообщение-ответ для пользователя.
Этот циклический процесс должен с чего-то начинаться, и публикация Болина раскрывает, как Codex формирует начальный промпт, отправляемый в Responses API OpenAI, который отвечает за инференс модели. Промпт строится из нескольких компонентов, каждому из которых присвоена роль, определяющая его приоритет: system, developer, user или assistant.
Поле instructions (инструкции) берётся либо из конфигурационного файла, указанного пользователем, либо из базовых инструкций, включённых в CLI. Поле tools (инструменты) определяет, какие функции может вызывать модель, включая команды оболочки, инструменты планирования, возможности веб-поиска и любые пользовательские инструменты, предоставляемые через серверы Model Context Protocol (MCP). Поле input (ввод) содержит ряд элементов, описывающих разрешения «песочницы», необязательные инструкции для разработчика, контекст среды, такой как текущий рабочий каталог, и, наконец, фактическое сообщение пользователя.
По мере продолжения диалога каждый новый ход включает полную историю предыдущих сообщений и вызовов инструментов. Это означает, что промпт растёт с каждым взаимодействием, что имеет последствия для производительности. Согласно публикации, поскольку Codex не использует необязательный параметр «previous\_response\_id», который позволил бы API ссылаться на сохранённое состояние разговора, каждый запрос является полностью stateless (то есть отправляет всю историю разговора с каждым вызовом API, вместо того чтобы сервер извлекал её из памяти). Болин утверждает, что такой выбор дизайна упрощает работу для поставщиков API и облегчает поддержку клиентов, которые выбирают «Нулевое хранение данных», при котором OpenAI не сохраняет пользовательские данные.
Квадратичный рост промптов в ходе разговора неэффективен, но Болин объясняет, что кэширование промптов в некоторой степени смягчает эту проблему. Попадания в кэш работают только при точном совпадении префикса в промпте, что означает, что Codex должен тщательно избегать операций, которые могут вызвать промахи кэша. Изменение доступных инструментов, переключение моделей или изменение конфигурации «песочницы» в середине разговора может аннулировать кэш и ухудшить производительность.
Постоянно растущая длина промпта напрямую связана с контекстным окном, которое ограничивает объём текста, который модель ИИ может обработать за один вызов инференса. Болин пишет, что Codex автоматически сжимает разговоры, когда количество токенов превышает порог, подобно Claude Code. Ранние версии Codex требовали ручного сжатия с помощью команды со слэшом, но текущая система использует специализированную конечную точку API, которая сжимает контекст, сохраняя при этом обобщённые части «понимания» моделью произошедшего через зашифрованный элемент контента.
Болин заявляет, что в будущих частях его серии будут рассмотрены архитектура CLI, детали реализации инструментов и модель «песочницы» Codex.
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Benj Edwards




