Практические примеры Codex CLI
В этом разделе на практических примерах демонстрируются различные сценарии использования Codex CLI, которые помогут вам быстро освоить его применение в реальной разработке.
Написание кода
Пример 1: Создание новой возможности
Позвольте Codex создать для вас полноценный модуль функциональности:
Задача
Codex сгенерирует код, подобный следующему:
Сгенерированный код
"""
Найдите самую длинную строку в списке строк и её позицию в индексе.
Аргументы:
strings: список строк
Возвращает:
кортеж: (самая длинная строка, позиция в индексе)
Если список пуст, вернуть (None, -1)
"""
if not strings:
return None, -1
longest = max(strings, key=len)
index = strings.index(longest)
return longest, index
# Пример теста
if __name__ == "__main__":
test_list = ["apple", "banana", "cherry", "dragonfruit"]
result, idx = find_longest_string(test_list)
print(f"Самая длинная строка: {result}, индекс: {idx}")
# Вывод: Самая длинная строка: dragonfruit, индекс: 3
Код, сгенерированный Codex, включает подробные строки документации и примеры тестов, и может использоваться напрямую.
Пример 2: Рефакторинг кода
Попросите Codex выполнить рефакторинг существующего кода:
Задача
def get_squares(n):
result = []
for i in range(n):
result.append(i * i)
return result
Codex предоставит отрефакторенный код:
Отрефакторенный код
"""
Сгенерировать квадратные числа от 0 до n-1.
Аргументы:
n: количество квадратных чисел для генерации
Порождает:
int: квадраты чисел от 0 до n-1
"""
for i in range(n):
yield i * i
# Пример использования
for square in get_squares(5):
print(square)
# Вывод: 0, 1, 4, 9, 16
Ревью кода
Пример 1: Обзор проблем в коде
Попросите Codex проверить код и предложить улучшения:
Задача
def process_data(data):
result = []
for item in data:
if item['type'] == 'a':
result.append(item['value'] * 2)
elif item['type'] == 'b':
result.append(item['value'] + 10)
elif item['type'] == 'c':
result.append(item['value'])
return result
Codex проанализирует и предоставит отчёт о проверке:
## 代码审查报告 ### 问题 1. **缺少错误处理**:没有检查 item 是否包含必要的键 2. **类型不一致**:'c' 类型直接返回原值,而其他类型做了处理 3. **硬编码值**:乘数和加数应该作为参数或配置 ### 改进建议 1. 添加默认字典或 try-except 处理 2. 统一处理逻辑 3. 将 magic numbers 提取为常量
Пример 2: Использование команды /review
Используйте встроенную команду review в Codex:
Задача
Codex просканирует всюsrc/директорию и сгенерирует подробный отчёт о проверке кода.
Отладка и устранение неполадок
Пример 1: Анализ сообщений об ошибках
Передайте сообщение об ошибке Codex для анализа:
Задача
Traceback (most recent call last):
File "app.py", line 42, in <module>
main()
Файл "app.py", строка 38, в fetch_data()
Файл "app.py", строка 25, в fetch_data
response = requests.get(url)
Файл "/usr/lib/python3.10/site-packages/requests/api.py", строка 88, в в get
return session.request(method='GET', url=url, **kwargs)
requests.exceptions.ConnectionError: HTTPSConnectionPool(хост='api.example.com', порт=443): Превышено максимальное количество повторных попыток
Codex предоставит анализ и решение:
## 错误分析 ### 原因 网络连接问题 - 无法连接到 api.example.com ### 可能的原因 1. 网络不通 2. 域名解析失败 3. 服务器不可用 4. 防火墙阻止 ### 建议的排查步骤 1. 检查网络连接:ping api.example.com 2. 验证域名解析:nslookup api.example.com 3. 检查端口是否开放:telnet api.example.com 443 4. 如果是本地开发,检查代理设置
Пример 2: Добавление отладочных логов
Попросите Codex добавить код отладки:
Задача
def calculate(a, b):
return a + b * (a - b)
Codex сгенерирует версию с отладочными логами:
Добавить отладочные логи
# Настройка логирования
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
def calculate(a, b):
"""Функция вычисления с отладочными логами"""
logger.debug(f"calculate вызвана с a={a}, b={b}")
result = a + b * (a - b)
logger.debug(f"a + b = {a} + {b} = {a + b}")
logger.debug(f"a - b = {a} - {b} = {a - b}")
logger.debug(f"b * (a - b) = {b} * {a - b} = {b * (a - b)}")
logger.debug(f"итоговый результат: {result}")
return result
Операции с файлами
Пример 1: Пакетное переименование файлов
Задача
Пример 2: Создание структуры проекта
Задача
- app.py главный файл
- config.py файл конфигурации
- requirements.txt
- каталог tests/directory
- каталог static/и templates/directory
Codex создаст полную структуру проекта и все необходимые файлы.
Codex сначала перечислит файлы для создания, а затем выполнит после подтверждения.
Выполнение команд
Пример 1: Запуск тестов
Задача
Codex автоматически определит тип проекта и выполнит соответствующую команду тестирования:
- Проект Python: pytest или unittest
- Проект Node.js: npm test или yarn test
- Проект Rust: cargo test
Пример 2: операции Git
Задача
Codex проанализирует все незакоммиченные изменения, затем выполнит:
git status- Просмотреть измененияgit diff- Проверить конкретные измененияgit add -A- Добавить все файлыgit commit -m "..."- Создать коммит
При операциях Git Codex сначала покажет изменения и выполнит действие только после подтверждения.
Анализ проекта
Пример 1: Понимание структуры проекта
Задача
Codex проверит следующее в проекте:
- Файлы конфигурации (package.json, Cargo.toml, requirements.txt и т. д.)
- Структура каталогов
- Основные исходные файлы
Затем предоставит подробный отчёт об анализе.
Пример 2: Поиск зависимостей
Задача
Режим планирования
Используйте команду /plan для планирования сложных задач:
Задача
Codex сначала покажет подробный план реализации:
## 实施计划:用户认证功能 ### 步骤 1:准备 - 创建用户模型 - 安装认证依赖(jsonwebtoken, bcryptjs) ### 步骤 2:后端实现 - 创建 /api/auth/register 端点 - 创建 /api/auth/login 端点 - 实现 JWT 生成和验证中间件 ### 步骤 3:前端实现 - 创建登录表单组件 - 创建注册表单组件 - 添加认证状态管理 ### 步骤 4:测试 - 编写后端单元测试 - 测试前端表单交互 是否确认执行此计划? [Y] 确认 [N] 取消 [M] 修改
Режим планирования позволяет понять полный подход Codex перед выполнением, избегая ненужных переделок.
Подробные примеры
Полный пример рабочего процесса:
Полный рабочий процесс
/новый
# 2. Изучите проект
Какой фреймворк использует этот проект? Какие основные функции?
# 3. Добавьте новую функцию
ВusersДобавьте функцию отправки кодов подтверждения в модуле; необходимо учесть:
- Генерация кода подтверждения (6цифр)
- 60Повторно отправить нельзя в течение секунд
- Код подтверждения10действителен в течение минут
# 4. Тестирование
Запустите соответствующие тесты, чтобы убедиться, что функциональность работает правильно
# 5. Ревью кода
/ревью
Этот пример демонстрирует типичный рабочий процесс разработки: понять проект → реализовать функцию → протестировать → провести ревью.
Краткая сводка операций
| Сценарий | Используемая команда |
|---|---|
| Написать функцию | Просто опишите требование |
| Проверить код | /review или "помоги мне проверить..." |
| Отладка проблем | Вставьте сообщение об ошибке и запросите анализ |
| Выполнить команду | Начните с ! |
| Планирование сложной задачи | /plan + описание задачи |
| Понимание кода | "Что делает эта функция?" |
Практика ведёт к совершенству. Чем чаще вы используете Codex, тем более опытным вы станете, и эффективность написания кода значительно возрастёт.Другие расширения