Skip to content

Выполнение первой задачи

📚 Навигация по серии: Предыдущая статья 05 · Подключение DeepSeek и сторонних моделей подробно описала интеграцию альтернативных моделей. На этом блок настроек завершен — в этой статье мы переходим к практической работе: запустим Codex для редактирования кода и пройдем весь путь от постановки задачи до проверки diff-файлов изменений. В следующей статье 07 · Настольное приложение мы изучим графический интерфейс клиента.

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

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

Результат? Агент действительно провел рефакторинг, но попутно изменил сигнатуры двух смежных интерфейсов, которые я не просил трогать. Локальные тесты мгновенно посыпались ошибками. В итоге я потратил около часа на ручной разбор изменений, возвращая код в исходное состояние. Главный урок, который я вынес: проблема была не в возможностях Codex, а в том, что я пропустил важнейший этап — аудит сравнения изменений (diff).

В этой статье мы подробно разберем этот этап контроля. Мы не будем использовать рабочий репозиторий, а создадим тестовый проект из трех строк кода, чтобы за 5 минут пройти весь цикл: постановка задачи → изменение кода в песочнице → проверка сравнения (diff) → коммит или откат изменений. Это поможет вам понять принципы безопасного управления агентом. Мы разберем как работу в CLI, так и в настольном приложении.

После прочтения этой статьи вы получите:

  • Пошаговый алгоритм выполнения первой задачи от открытия терминала до сохранения изменений
  • Выработанный навык обязательного аудита сравнения файлов (diff) — ключевое отличие профессионала от новичка
  • Сравнение работы в CLI и графическом приложении с критериями проверки результатов
  • Инструкции по исправлению ошибок в процессе (как переформулировать запрос при отклонении изменений или вернуть код назад)

01 Использование тестового проекта для первого запуска

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

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

Аналогия: обучение езде на велосипеде. Никто не выезжает на оживленную автостраду во время первого урока. Сначала тренируются на пустой площадке, где падения безопасны. Тестовая папка — это ваша тренировочная площадка: если код поврежден, ее можно пересоздать за минуту без какого-либо риска.

Кому особенно важно следовать этому совету:

  • Пользователям без опыта работы в консоли — обилие логов при первом запуске на реальном проекте вызывает растерянность;
  • Разработчикам, переходящим с других инструментов (например, Claude Code) — логика работы песочницы и подтверждений в Codex имеет свои особенности (см. Статьи 02 и 05);
  • Специалистам, спешащим выполнить задачу — предварительное тестирование цепочки вызовов на простом примере сэкономит время при работе со сложным кодом.

Создайте каталог в терминале (в Windows используйте PowerShell):

bash
mkdir hello-codex
cd hello-codex

Команды создадут папку hello-codex и переведут вас в нее.

Создайте простейший файл Python (для macOS и Linux):

bash
echo 'def add(a, b):
    return a + b' > main.py

В ОС Windows откройте Блокнот, вставьте следующие строки и сохраните файл под именем main.py:

python
def add(a, b):
    return a + b

💡 Краткий вывод: Начните тестирование с изолированного проекта из нескольких строк кода — так вы сможете легко контролировать изменения без риска повредить рабочую систему.


02 Формулирование требований: цикл «подумать → сделать → проверить»

Перед запуском сформулируйте точные требования к задаче.

Помните: Codex не выполняет абстрактные желания. Качество результата зависит от точности постановки задачи. В Статье 02 мы говорили, что агент работает в цикле вызова функций (чтение, запись, тестирование), который сводится к этапам: подумать → сделать → проверить.

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

  • Возможность самопроверки: указывайте в запросе команды запуска линтеров и тестов для контроля результатов самим агентом.
  • Декомпозиция задач: разделяйте крупные задачи на мелкие шаги, которые легко отлаживать и проверять. Если вы не знаете, с чего начать, попросите Codex сначала составить план действий (plan).

Сравнение размытых и точных промптов:

Неэффективный запрос ❌Правильный запрос ✅
«Оптимизируй эту функцию»«Добавь аннотацию типов для add и вызови TypeError при передаче нечисловых параметров»
«Почему падает тест?»«Запусти pytest, найди причину сбоя, исправь код и перезапусти тесты для проверки»
«Сделай рефакторинг проекта»«Не меняй файлы сразу. Подготовь план рефакторинга, и после моего согласования приступай к шагам»

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

💡 Краткий вывод: Codex работает по циклу «подумать → сделать → проверить». Точные запросы с критериями завершения гарантируют качественный результат. При масштабных изменениях всегда запрашивайте предварительный план действий.


03 Первая задача: Чтение файлов без записи

Для первой проверки попросите агента объяснить существующий код без внесения изменений.

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

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

Отправьте запрос в терминале или приложении:

text
解释 main.py 这个文件在做什么,用新手能听懂的话说

Нажмите Enter. Codex самостоятельно откроет main.py (вам не нужно копировать код в чат) и выведет описание работы функции: сложение двух входящих параметров a и b.

Успешное выполнение этого запроса подтверждает две вещи: клиент настроен корректно, и агент видит файловую систему вашего компьютера. Теперь можно переходить к редактированию кода.

Классификация типов запросов к агенту:

Тип запросаОписание операцииПримерУровень риска
Чтение и аудитАнализ и объяснение кода«Объясни работу модуля»Нулевой (файлы не изменяются)
РефакторингВнесение изменений в существующие файлы«Добавь типизацию параметров»Средний (изменяет файлы, требуется проверка diff)
ГенерацияСоздание новых файлов и структур«Напиши тесты для функции»Средний (создает файлы, требуется проверка diff)

Рекомендуемая практика при начале работы со сторонним проектом: попросите Codex визуализировать структуру каталогов. Это подтвердит доступ к файлам и сэкономит время на ознакомление с проектом.

💡 Краткий вывод: Проверьте работоспособность клиента запросом на объяснение кода. Это безопасно и подтверждает доступ к файлам. Любые операции записи и генерации потребуют от вас обязательной проверки изменений (diff).


04 Проверка сравнения изменений (diff)

Перейдем к изменению кода. Этот этап требует максимального внимания.

Отправьте следующий запрос в текущей сессии:

text
给 main.py 里的 add 函数加上类型注解,并补充基本的错误处理

Учитывайте важную особенность поведения по умолчанию: при работе в рабочем каталоге Codex вносит изменения в файлы напрямую, не запрашивая разрешение на каждую операцию записи. Это связано с тем, что в режиме workspace-write + on-request запись файлов внутри рабочей папки является штатной разрешенной операцией песочницы. Подтверждение запрашивается только при выходе за пределы контура (сетевые запросы, редактирование внешних папок). Стандартная логика выглядит так:

  1. Агент находит нужный файл (main.py) и записывает изменения в локальный файл.
  2. Изменения выводятся на экран в виде сравнения строк (diff), также вы можете вызвать команду git diff в терминале.
  3. Вы контролируете результат: анализируете diff, сохраняя корректный код или откатывая изменения при обнаружении ошибок (подробнее ниже).

Поэтому проверка сравнения изменений (diff) переносится с этапа «согласования перед записью» на этап «проверки записанного». Пока коммит не создан, вы можете отменить любые действия одной командой. Это основа безопасности при автоматической генерации кода.

⚠️ Примечание: Использование git diff и откат версий требуют предварительной инициализации Git-репозитория в папке проекта. При отсутствии Git вы не сможете увидеть разницу изменений стандартными системными командами (вывод diff в самом клиенте Codex при этом будет работать исправно). Инициализируйте репозиторий перед началом редактирования.

Аналогия: коллега отправляет изменения в отдельную ветку Git и запрашивает ревью. Он написал код без пошагового контроля с вашей стороны, но эти изменения еще не попали в основную ветку. Вы изучаете diff и принимаете решение о слиянии или откате коммита. Так же действует и Codex.

Если вы хотите, чтобы агент запрашивал подтверждение перед редактированием каждого файла, переключите профиль прав на read-only с помощью команды /permissions или явно просите его составить предварительный текстовый план изменений.

Как читать разметку diff

Чтение сравнения строк строится на простых правилах:

  • Красные строки со знаком - в начале: удаленный оригинальный код;
  • Зеленые строки со знаком + в начале: добавленный новый код;
  • Строки без знаков: неизмененный контекст для понимания структуры.

Исходный файл main.py:

python
def add(a, b):
    return a + b

Превратится в следующую структуру:

python
def add(a: float, b: float) -> float:
    if not isinstance(a, (int, float)) or not isinstance(b, (int, float)):
        raise TypeError("a 和 b 必须是数字")
    return a + b

При анализе diff проверьте три основных аспекта:

  1. Затрагивают ли изменения только целевой блок кода? (убедитесь, что смежные интерфейсы не были изменены)
  2. Корректна ли логика добавленного кода?
  3. Не были ли удалены важные существующие фрагменты кода?

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

В каких случаях запрашивается подтверждение

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

Действие CodexПоведение по умолчаниюОтображаемый интерфейс
Чтение/запись в рабочем каталогеВыполняется автоматическиЛог diff в консоли по окончании
Запуск тестов и сборщиков в рабочей папкеВыполняется автоматическиЛоги выполнения команды
Команды установки внешних библиотек (с доступом к сети)Приостановка работыИнтерактивный запрос Approve/Deny
Изменение файлов вне рабочей папки, доступ к сетиПриостановка работыИнтерактивный запрос Approve/Deny

Для новичков: не переключайте политики в самый мягкий режим (вроде never или полного доступа) на старте. Без должного контроля агент может изменить множество файлов в системе, что затруднит поиск причин сбоев. Сохраняйте базовые ограничения безопасности песочницы.

Вы можете переключать уровни разрешений (см. Статью 02 и 15). В строгом режиме read-only подтверждение требуется для каждой файловой операции; в мягких режимах блокировки сетевых соединений отключаются.

💡 Краткий вывод: В стандартном режиме Codex редактирует файлы рабочей папки автоматически, выводя diff на экран. Подтверждение требуется лишь при выходе за границы контура безопасности. Анализируйте diff по критериям точности, корректности логики и сохранности важного кода.

Блок-схема выполнения задачи: анализ запроса → редактирование в песочнице → проверка diff с возможностью отката изменений

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


05 Доработка по текстовым комментариям

Отклонение предложенного кода не означает сброс прогресса. Это возможность направить рассуждения агента в нужную сторону.

Codex работает в рамках одной сессии (Thread), сохраняющей контекст диалога. Если сравнение diff показало ошибки или вы отклонили сетевой запрос, просто напишите текстовое уточнение в текущей строке чата — агент пересчитает логику.

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

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

text
别引第三方库,用 Python 标准库 functools.lru_cache 实现就行

Агент моментально переписал импорты на использование стандартного модуля lru_cache. Вся доработка прошла в рамках одного репозитория без перезапуска клиента.

Сравнение подходов к доработке кода:

Ошибочное представление ❌Фактическая логика работы ✅
Отклонение сбрасывает весь прогрессОтклонение дает возможность скорректировать логику
Ошибки приходится править вручнуюВы описываете ошибку текстом, и AI переписывает код
При сбоях нужно открывать новую сессиюВсе итерации выполняются в рамках одного сохраненного контекста

💡 Краткий вывод: Отклонение изменений — стандартный этап рефакторинга. Опишите ошибки в текущем чате, и Codex перепишет код, не теряя контекста диалога.


06 Использование Git для отката изменений

Если некорректный код был сохранен на диск, вы легко можете вернуть систему в исходное состояние при наличии предварительного коммита Git.

В официальном руководстве содержится рекомендация: «Агент вносит изменения в файлы вашего проекта. Всегда фиксируйте состояние репозитория (Git checkpoint) перед началом выполнения сложных задач для возможности быстрого отката». Основным инструментом отката версий выступает стандартный Git.

Аналогия: сохранение игры перед сложным боем. Вы создаете файл сохранения, чтобы в случае поражения загрузиться с этой точки, не проходя всю игру заново. Команда git commit — это точка сохранения вашего кода.

Инициализируйте репозиторий и сделайте коммит перед запуском Codex:

bash
git init
git add -A && git commit -m "codex 动手前的存档点"

Для отмены всех изменений выполните команду:

bash
git restore .

⚠️ Внимание: команда git restore . сбрасывает все незафиксированные изменения в текущем рабочем каталоге. Используйте ее только при полной отмене результатов работы сессии. Для точечного отката используйте комментарии в чате.

Вы также можете попросить агента вернуть код к исходному состоянию прямо в чате:

text
刚才那次改动我不满意,帮我退回到改之前的样子

Два способа отката изменений:

Метод отменыКак выполнитьПрименениеОграничение
Запрос в чатеТекстовая команда в текущей сессииМелкие недочеты сразу после генерацииТребует понимания со стороны AI
Откат коммита GitПредварительный git commit, сброс через git restore .Серьезные сбои логики, повреждение файловСбрасывает все файлы в каталоге

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

💡 Краткий вывод: Делайте git commit перед каждым запуском агента. Для полной отмены изменений используйте git restore .. Мелкие правки можно отменить текстовым запросом в чате.


07 Практика в интерфейсе CLI

Выполним тестовый цикл сборки в CLI-клиенте:

Шаг 1: Создание проекта и фиксация в Git (macOS/Linux)

bash
mkdir hello-codex && cd hello-codex
echo 'def add(a, b):
    return a + b' > main.py
git init && git add -A && git commit -m "初始版本"

Пользователям Windows: создайте файл main.py через Блокнот и выполните команды Git в PowerShell.

Ожидаемый результат: создание каталога с файлом main.py и фиксация первой версии коммитом.

Шаг 2: Запуск сессии Codex в рабочем каталоге

bash
codex

Ожидаемый результат: открытие диалоговой строки CLI-клиента. Пройдите авторизацию при необходимости.

⚠️ Важно: запускайте codex строго внутри созданного каталога. Агент считывает файлы текущей рабочей директории. Запуск в системных папках приведет к ошибкам сканирования контекста.

Шаг 3: Проверка чтения файлов

Отправьте запрос:

text
解释 main.py 这个文件在做什么,用新手能听懂的话说

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

Шаг 4: Изменение кода и проверка diff

Отправьте запрос:

text
给 main.py 里的 add 函数加上类型注解,并补充基本的错误处理

Ожидаемый результат: Codex запишет новый код в файл и выведет разметку diff в консоль. Проанализируйте изменения.

Шаг 5: Проверка изменений в системе

Выйдите из сессии (Ctrl + C или /exit) и откройте измененный файл:

bash
cat main.py

(В Windows PowerShell используйте type main.py):

Ожидаемый результат: появление аннотации типов и исключения TypeError в файле.

Проверьте изменения через Git:

bash
git diff

Ожидаемый результат: вывод diff, совпадающий с логами Codex.

💡 Краткий вывод: Шаги в CLI: коммит-архив → запуск codex → чтение файлов → запись изменений с аудитом diff → проверка файлов в консоли. Запуск выполняйте строго в рабочей директории.


08 Практика в настольном приложении

Настольное приложение заменяет консольный ввод визуальным управлением (доступно для macOS и Windows).

Логика работы идентична CLI, меняется лишь визуальное представление этапа проверки diff:

  1. Авторизация: запустите приложение и войдите в аккаунт.
  2. Выбор каталога: укажите рабочую папку hello-codex.
  3. Выбор режима: убедитесь, что переключатель установлен в положение Local (локальный режим выполнения задач).
  4. Первый запрос: отправьте команду объяснения кода:
text
解释 main.py 这个文件在做什么,用新手能听懂的话说

После подтверждения отправьте запрос на рефакторинг:

text
给 main.py 里的 add 函数加上类型注解,并补充基本的错误处理

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

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

Сравнение CLI и настольного приложения:

ПараметрCLI (командная строка)Настольное приложение
Поддержка систем✅ Все три ОС (macOS, Windows, Linux)❌ Только macOS и Windows
Порог входаТребует базовых навыков работы в консоли✅ Визуальное управление
Чтение diffТекстовая подсветка в консоли✅ Визуальная двухпанельная подсветка
Параллельная работаОткрытие новых вкладок терминала✅ Удобное переключение каталогов в боковом меню
Логика процессовИдентична (Постановка задачи → Запись → Аудит diff)Идентична

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

💡 Краткий вывод: Настольное приложение предоставляет графическую обвязку для тех же процессов. Убедитесь в активации локального режима (Local). Панель ревью упрощает контроль больших файлов изменений.


09 Общая схема выполнения задачи

Последовательность действий при решении любых задач в Codex:

Полный рабочий цикл: чтение кода → запрос изменений → аудит diff → коммит или переформулирование требований

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

💡 Краткий вывод: Базовый рабочий цикл: постановка задачи → запись изменений в песочнице → аудит diff → коммит или сброс. Всегда проверяйте сгенерированный код.


10 Резюме

Мы выполнили первую задачу программирования в Codex от инициализации до проверки результатов:

Чек-лист основных этапов:

ЭтапДействиеОписание
ПодготовкаСоздание каталога, файлов и коммит GitТестирование на изолированной папке
ЗапросОписание задачи на естественном языкеЧеткие требования с критериями проверки
Проверка чтенияЗапрос на объяснение структуры кодаПодтверждение доступа агента к файлам
МодификацияЗапрос на рефакторингАвтоматическая запись изменений в песочнице
Аудит diffПроверка изменений по критериямОбязательный контроль записанного кода
ОтменаКоманда в чате или сброс через git restore .Возврат системы в исходное состояние при ошибках

Теперь вы готовитесь запускать сессии Codex, ставить текстовые задачи рефакторинга, читать разметку diff и управлять фиксацией изменений.

Цикл запрос → запись → аудит diff → коммит/откат является основой взаимодействия с AI-агентами. Любые сложные расширения (MCP, субагенты, Skills) накладываются поверх этой базовой схемы.

💡 Краткий вывод: Главная цепочка: запрос → запись → проверка diff → коммит или откат. По умолчанию Codex вносит изменения автоматически, оставляя за вами право контроля записанного кода.


В следующей статье 07 · Настольное приложение мы подробно изучим графический интерфейс клиента, включая управление несколькими проектами, изолированные рабочие деревья (worktrees), встроенный браузер и автоматизацию задач.


Рекомендуемые материалы