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

Как Codex определяет границы правок и почему он меняет лишнее

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

Проблема возникает из-за неопределенности термина «нормально». Для разработчика это может означать исправление отступа, а для исполнителя — полную переработку компонента. Без явного указания целевого состояния система интерпретирует задачу широко.

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

ИИ по своей природе стремится к безопасности и усреднению. Без жестких ограничений он будет использовать шаблонные решения, которые могут включать лишние изменения. Поэтому в промпте необходимо явно перечислять ограничения: «не меняй стили», «не обновляй библиотеки», «оставь логику других модулей без изменений».

Механизм работы AGENTS.md: где хранить правила и как их приоритизировать

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

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

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

Не создавайте файлы override без необходимости. Используйте их только для временных задач, например добавления фильтра по статусу, а не для постоянных правил проекта.

Формулировка задач: конкретика против расплывчатых команд

Слова «улучши», «оптимизируй» и «приведи в порядок» допускают разные трактовки. Для владельца сайта это может означать исправление отступа, а для исполнителя — переработку компонента.

Начинайте с наблюдаемого результата. Сравните две формулировки: неопределенная («Переделай форму, чтобы всё работало хорошо») и проверяемая («После успешной отправки формы покажи сообщение “Заявка отправлена”. Повторное нажатие во время отправки не должно создавать вторую заявку. Остальной сценарий сохрани»).

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

Укажите границы изменений явно. Если задача касается только одного модуля, добавьте в промпт фразу «Изменения ограничены файлом X. Не трогай файлы Y и Z».

Структура промпта для локальных изменений без затрагивания остального кода

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

Цель: опишите, какую ручную работу нужно автоматизировать или исправить. Например, «хранить обращения в одном месте» вместо абстрактного «автоматизировать продажи».

Контекст: предоставьте код модуля, который нужно изменить, и укажите зависимости, которые нельзя трогать.

Ожидаемый результат: опишите поведение системы после правки. Например, «форма отправляет данные и показывает сообщение об успехе».

Ограничения: явно перечислите элементы, которые должны остаться без изменений. Например, «не меняй стили CSS», «не обновляй версии библиотек», «не переписывай логику других модулей».

Практические примеры и ошибки

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

Правильный подход: «Исправь валидацию поля email в файле form.js. После успешной отправки покажи сообщение “Заявка отправлена”. Повторное нажатие не должно создавать дубликат. Не меняй стили и логику других модулей».

Ошибка: использование файла AGENTS.md для временных задач. Результат: файл становится перегруженным и теряет фокус.

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

Как оценить результат

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

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

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

Вопросы и ответы

Можно ли попросить Codex игнорировать файлы, которые он видит?

Да, но это работает только если вы явно укажете список файлов или директорий, которые не нужно трогать. ИИ не может игнорировать контекст по умолчанию.

Как часто нужно обновлять AGENTS.md?

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

По теме