Как OpenAI использует Codex

Как OpenAI использует Codex

Влад Смирнов

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

Codex используют почти все технические команды

В OpenAI Codex ежедневно используют команды Security, Product Engineering, Frontend, API, Infrastructure и Performance Engineering. Задачи разные: понять незнакомую часть большой системы, провести рефакторинг, ускорить миграцию, найти причину инцидента, подготовить тесты или довести до выпуска небольшие исправления.

Общий подход простой: инженер задает Codex достаточно конкретную задачу, дает контекст репозитория, затем проверяет план, правки, тесты и pull request. Codex берет на себя черновую и поисковую часть работы, а инженер оставляет за собой решение, проверку и ответственность за результат.

1. Быстро разобраться в кодовой базе

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

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

Как это описывают команды

  • Инженер по производительности: когда исправляю ошибку, использую режим Ask, чтобы найти другие места в кодовой базе, где такая же проблема может повториться.
  • Инженер надежности API Platform: на дежурстве вставляю трассировку стека и спрашиваю, где живет поток аутентификации. Codex сразу ведет к нужным файлам, поэтому разбор идет быстрее.
  • DevOps-инженер Infrastructure Services: вопросы вроде «где это делать в репозитории?» по Terraform и Python Codex закрывает заметно быстрее, чем grep.

Примеры запросов к Codex

  • Где в этом репозитории реализована логика аутентификации?
  • Опиши, как запрос проходит через этот сервис от точки входа до ответа.
  • Какие модули взаимодействуют с [название модуля] и как в них обрабатываются сбои?

2. Рефакторинг и миграции

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

Сильная сторона Codex здесь - не простая замена текста, а учет структуры проекта и зависимостей. Если одно и то же изменение нужно внести в десятки мест, регулярное выражение легко пропустит контекст, а Codex может сначала найти варианты использования, объяснить последствия и затем подготовить согласованные правки.

Как это описывают команды

  • Инженер серверной разработки ChatGPT Web: Codex заменил все устаревшие вызовы getUserById() на новый сервисный шаблон и открыл pull request. На это ушли минуты вместо часов.
  • Продуктовый инженер ChatGPT Enterprise: чтобы убрать блокеры запуска, я прошу Codex найти все вхождения старого шаблона, описать влияние в Markdown и открыть pull request с исправлениями.

Примеры запросов к Codex

  • Раздели этот файл на отдельные модули по зонам ответственности и сгенерируй тесты для каждого модуля.
  • Переведи весь доступ к базе данных с колбэков на async/await.

3. Оптимизация производительности

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

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

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

Как это описывают команды

  • Инфраструктурный инженер API Reliability: я прошу Codex найти повторяющиеся дорогие вызовы базы данных. Он хорошо подсвечивает горячие пути и черновики пакетных запросов, которые потом можно довести вручную.
  • Платформенный инженер Model Serving: Codex быстро замечает проблемы производительности. Пять минут на хороший запрос могут сэкономить полчаса ручной работы.

Примеры запросов к Codex

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

4. Улучшение покрытия тестами

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

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

Как это описывают команды

  • Инженер клиентской разработки ChatGPT Desktop: я указываю Codex на модули с низким покрытием на ночь, а утром получаю pull request с запускаемыми модульными тестами.
  • Инженер серверной разработки Payments & Billing: когда переключаться между ветками монорепозитория неудобно, я прошу Codex написать тесты и запустить CI, а сам продолжаю работать в своей ветке.

Примеры запросов к Codex

  • Напиши модульные тесты для этой функции, включая граничные случаи и пути отказа.
  • Сгенерируй тест на основе свойств для этой функции сортировки.
  • Расширь этот файл тестов, чтобы покрыть пропущенные сценарии с null-вводом и недопустимыми состояниями.

5. Ускорение разработки

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

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

Еще один частый сценарий - превратить отзыв пользователя или спецификацию в черновой код, к которому можно вернуться позже и доработать.

Как это описывают команды

  • Продуктовый инженер ChatGPT Enterprise: я весь день был на встречах и все равно смержил четыре pull request, потому что Codex работал в фоне.
  • Инженер полного стека Internal Tools: Codex помог идеально довести до выпуска три или четыре низкоприоритетных исправления, которые иначе долго лежали бы в списке задач.

Примеры запросов к Codex

  • Создай каркас маршрута API POST /events с базовой проверкой данных и логированием.
  • Добавь хук телеметрии для отслеживания успеха и ошибки в новом потоке онбординга, используя этот шаблон: [пример кода телеметрии].
  • Создай заглушку реализации на основе этой спецификации: [спецификация или отзыв пользователя].

6. Сохранять рабочий ритм

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

Так инженеру проще остановиться и продолжить позже: Codex хранит промежуточный план, черновик изменений или pull request, к которому можно вернуться, когда появится время.

Как это описывают команды

  • Инженер серверной разработки ChatGPT API: если замечаю небольшое исправление по пути, запускаю задачу Codex вместо переключения ветки, а pull request проверяю, когда освобожусь.
  • Инженер API Infrastructure Observability: я регулярно отправляю Codex обсуждения из Slack, трассировки Datadog, задачи и другой контекст, чтобы сохранять внимание на приоритетной работе.

Примеры запросов к Codex

  • Составь план рефакторинга этого сервиса и разделения его на меньшие модули.
  • Сделай заглушку логики повторных попыток и добавь TODO. Логику задержек я заполню позже.
  • Опиши этот файл так, чтобы завтра я мог продолжить с того же места.

7. Исследование вариантов и поиск идей

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

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

Как это описывают команды

  • Продуктовый инженер ChatGPT Desktop: Codex помогает преодолеть холодный старт. Я вставляю спецификацию и документацию, а он создает каркас кода или показывает, что я упустил.
  • Инженер по производительности Retrieval Systems: после исправления ошибки я спрашиваю Codex, где похожие ошибки еще могут прятаться, и запускаю последующие задачи.

Примеры запросов к Codex

  • Как это работало бы, если система была бы событийной, а не построенной вокруг запросов и ответов?
  • Найди все модули, которые вручную собирают SQL-строки вместо использования нашего построителя запросов.
  • Перепиши это в более функциональном стиле: избегай мутаций и побочных эффектов.

Практики, которые повышают качество результата

Начинать с режима Ask

Для крупных изменений OpenAI рекомендует сначала попросить Codex подготовить план реализации в режиме Ask. Этот план затем становится основой для следующих запросов при переходе в режим Code. Такой двухшаговый процесс удерживает Codex в контексте и снижает число ошибок.

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

Постепенно улучшать среду разработки для Codex

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

Писать запрос как задачу в GitHub

Codex лучше отвечает, когда запрос похож на описание изменения в pull request или задаче: есть пути к файлам, названия компонентов, фрагменты diff, выдержки из документации и примеры существующей реализации.

Хороший шаблон: «Сделай это так же, как в [модуль X]». Он сразу задает стиль, контекст и критерии результата.

Использовать очередь задач Codex как легкий список отложенной работы

Codex можно запускать на побочные идеи, частичные изменения и небольшие исправления. Не обязательно сразу получать готовый pull request. Очередь задач работает как промежуточное место, куда можно вернуться, когда появится фокус.

Хранить устойчивый контекст в AGENTS.md

Файл AGENTS.md помогает Codex лучше работать с репозиторием между запросами. Обычно туда помещают соглашения об именах, бизнес-логику, известные особенности проекта и зависимости, которые нельзя надежно вывести только из кода.

Использовать Best of N

Функция Best of N позволяет одновременно получить несколько вариантов ответа на одну задачу, быстро сравнить решения и выбрать лучшее. Для сложных задач можно объединять сильные части разных вариантов.

Что меняется в работе инженера

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

Самая практичная модель использования: давать Codex ограниченные, хорошо описанные инженерные задачи, запускать его параллельно с основной работой, проверять результат через план, diff, тесты и CI, а повторяющиеся знания проекта переносить в устойчивый контекст вроде AGENTS.md.


Сообщество энтузиастов - https://t.me/agents_lab

Источник - https://cdn.openai.com/pdf/6a2631dc-783e-479b-b1a4-af0cfbd38630/how-openai-uses-codex.pdf

Report Page