Советы по промптам для Codex CLI
Освоение эффективных техник промптинга — ключ к максимальной отдаче от Codex CLI. В этом разделе подробно описано, как писать эффективные промпты для достижения лучших результатов.
Основы промптинга
Вы взаимодействуете с Codex, отправляя промпты, описывающие задачу, которую хотите, чтобы он выполнил.
Базовые примеры
Базовый промпт
"Объясните, как работает модуль transform и как его используют другие модули."
# Добавьте новую возможность
"Добавьте новый параметр командной строки `--json` , который выводит JSON."
# Исправьте ошибку
"Исправьте ошибку в функции login"
Как работают промпты
Когда вы отправляете промпт, Codex работает в следующем цикле:
- Вызовите языковую модель
- Выполните операции, указанные в выводе модели (чтение файлов, редактирование файлов, запуск инструментов и т. д.)
- Повторяйте, пока задача не будет выполнена или пока вы не отмените
Понимание этого цикла помогает лучше проектировать промпты, потому что Codex принимает решения на основе контекста на каждом шаге.
Советы по написанию эффективных промптов
Совет 1: включайте шаги проверки
Codex выдаёт более качественный результат, когда может проверить свою работу. Включение шагов проверки помогает Codex обеспечить правильность:
Промпт с проверкой
"Напишите функцию для сортировки списка"
# Рекомендуется — включите проверку
"Напишите функцию для сортировки списка. Включите тестовые случаи, чтобы проверить, что она обрабатывает пустые списки, уже отсортированные списки, списки, отсортированные в обратном порядке, и списки с дубликатами. Запустите тесты, чтобы убедиться, что они проходят."
Совет 2: Разбивайте сложные задачи на небольшие шаги
Codex лучше справляется с небольшими, сфокусированными задачами. Небольшие задачи легче тестировать и проверять:
Разбиение задач
"Создайте полную систему аутентификации пользователей с входом, регистрацией, сбросом пароля и OAuth"
# Рекомендуется - разбить на небольшие шаги
"Шаг 1: Создайте модель пользователя с полями email и password
Шаг 2: Добавьте эндпоинт регистрации
Шаг 3: Добавьте эндпоинт входа с JWT
Шаг 4: Добавьте функциональность сброса пароля
Дайте знать, когда Шаг 1 будет выполнен, прежде чем переходить к Шагу 2"
Совет 3: Предоставляйте контекст
Предоставьте контекст, который может использовать Codex, например ссылки на соответствующие файлы и изображения:
Предоставление контекста
"Исправьте эту ошибку"
# Рекомендуется - включайте подробную информацию
"Исправьте ошибку в src/auth.py, из-за которой пользователи не могут войти в систему, если в их пароле есть специальные символы. Я прикрепил скриншот сообщения об ошибке и соответствующий раздел кода."
Совет 4: Укажите формат вывода
Сообщите Codex, какой формат вывода вы ожидаете:
Указание формата вывода
"Напишите функцию для вычисления чисел Фибоначчи. Используйте TypeScript, включите комментарии JSDoc и следуйте принципам функционального программирования."
# Укажите структуру вывода
"Объясните структуру кодовой базы. Организуйте ответ так: 1) Обзор 2) Ключевые каталоги 3) Основные точки входа"
Более конкретные промпты обычно дают лучшие результаты. Codex хорошо понимает намерения, но чем больше информации вы предоставите, тем лучше он работает.
Треды
Тред — это один диалог: ваши промпты плюс последующие ответы модели и вызовы инструментов. Тред может содержать несколько промптов.
Локальные треды против облачных тредов
| Type | Обзор | Преимущества |
|---|---|---|
| Локальные треды | Работают на вашей машине | Могут читать и записывать файлы, использовать существующие инструменты |
| Облачные треды | Работают в изолированной среде | Работают параллельно, позволяют делегировать задачи с других устройств |
Возобновление диалогов
Возобновление предыдущего диалога
codex resume
# Перейти непосредственно к последней сессии
codex resume --last
# Возобновить конкретную сессию
codex resume <SESSION_ID>
Управление беседами
Запущенные потоки могут выполняться параллельно, но избегайте одновременного изменения одного и того же файла двумя потоками. Вы также можете возобновить поток позже, продолжив с другим запросом.
Управление контекстом
Когда вы отправляете запрос, включайте контекст, который может использовать Codex, например ссылки на соответствующие файлы и изображения. Расширение IDE автоматически включает список открытых файлов и выделенный диапазон текста в качестве контекста.
Контекстное окно
Вся информация в потоке должна помещаться в контекстное окно модели. Codex отслеживает и сообщает оставшееся пространство.
Автоматическое уплотнение
Для более длительных задач Codex может автоматически уплотнять контекст, суммируя релевантную информацию и отбрасывая менее релевантные детали. Codex может продолжать обрабатывать сложные задачи за несколько шагов.
Ручное управление контекстом
Вы можете помочь Codex управлять контекстом следующими способами:
- Сосредоточьтесь на текущей задаче
- Избегайте смешивания нескольких независимых задач в одном промпте
- Регулярно начинайте новую сессию (используя
/new)
Когда Codex сообщает о высоком использовании контекста, рассмотрите возможность начать новую сессию или сократить количество исторических сообщений.
Продвинутые советы по промптингу
Использование режима планирования
Для сложных задач используйте режим планирования, чтобы Codex планировал перед выполнением:
Режим планирования
/спланируй реализацию системы аутентификации пользователей
# Или включите "plan" в промпт
"Спланируйте и реализуйте REST API с CRUD-операциями для блога"
Использование режима проверки
Попросите Codex проверить код, а не изменять его напрямую:
Режим проверки
/review src/auth.py
# Или опишите требование к проверке
"Проверьте этот код на наличие потенциальных уязвимостей безопасности и предложите улучшения"
Ограничение области изменений
Четко укажите Codex, что он может изменять:
Ограничение области изменений
"Объясните, что делает эта функция, не вносите никаких изменений"
# Ограничить область файлов
"Добавляй логирование только в модуль auth, не трогай другие файлы"
# Пошаговое подтверждение
"Сообщи мне предлагаемые изменения до того, как внесёшь их"
Шаблоны промптов
Вот несколько распространённых шаблонов промптов:
Генерация кода
Write a [语言] function that [功能描述]. Requirements: - [需求1] - [需求2] Include: - 详细的文档注释 - 错误处理 - 测试用例
Ревью кода
Review the [文件/模块] for: - Potential bugs - Security issues - Performance problems - Code style violations Provide: - Issue list with severity - Suggested fixes - Overall quality score (1-10)
Исправление ошибок
Fix the bug in [文件:行号/函数名]. Error: [错误信息] Expected behavior: [期望行为] Steps to reproduce: [复现步骤]
Рефакторинг
Refactor [文件/函数] to [目标]. Current issues: - [问题1] - [问题2] Constraints: - 保持功能不变 - 不要改变 API 接口 - 添加单元测试
Практика ведёт к совершенству. Практикуйтесь в написании промптов часто, и постепенно научитесь получать лучшие результаты.
ЧАВО
Вопрос: Что делать, если Codex не понимает мой промпт?
Попробуйте: 1) Описать более конкретно 2) Предоставить больше контекста 3) Разбить на меньшие шаги 4) Использовать примеры, чтобы проиллюстрировать ожидаемый результат
В: Подсказки должны быть на английском или на китайском?
Codex поддерживает несколько языков, но английский обычно работает лучше всего. Если вы описываете на китайском, убедитесь, что описание достаточно подробное и понятное.
В: Как заставить Codex только анализировать код, не изменяя его?
Чётко скажите ему «только для чтения» или «не вносить никаких изменений», и он только предоставит анализ, ничего не изменяя.
В: Что делать, если контекстное окно заполнено?
Начните новую сессию (с помощью /new) или позвольте Codex сжать историю (он сделает это автоматически).
Другие расширения