📘 AI教程 💬 🔥 Trending

🩺 摘要

📝 详情

Codex CLI实战:从代码补全到全自动重构,5个真实场景拆解

省流版: 上篇讲了Codex CLI的安装和基本用法。这篇深入到真实开发场景——写一个完整的REST API、做数据库迁移、批量修复lint错误、生成测试套件、跨分支代码迁移。每个场景都贴完整命令和结果。


场景一:从零生成一个完整的REST API

场景描述

你需要快速搭建一个用户管理微服务:注册、登录、CRUD、JWT鉴权。

操作

mkdir user-service && cd user-service
git init
codex exec --yolo "
创建一个基于FastAPI的用户管理服务:

- main.py:FastAPI应用入口
- models.py:SQLAlchemy User模型(username, email, password_hash, created_at)
- schemas.py:Pydantic请求/响应模型
- auth.py:JWT认证(注册、登录、token刷新)
- crud.py:用户CRUD操作
- database.py:数据库连接配置(SQLite用于开发)
- requirements.txt:所有依赖
- 测试文件用pytest

核心要求:
1. 密码用bcrypt加密存储
2. JWT token有效期24小时
3. 注册时邮箱唯一校验
4. 所有接口有类型注解
5. 用依赖注入管理数据库会话
"

结果

Codex CLI会生成大概7-8个文件,1000行左右代码。你用YOLO模式是因为——从头生成新项目,不用考虑兼容现有代码。

生成后直接用:

pip install -r requirements.txt
uvicorn main:app --reload
# 访问 http://localhost:8000/docs 查看API文档

场景二:大规模数据库迁移

场景描述

现有项目一直在用SQLite,是时候迁移到PostgreSQL了。涉及:修改连接配置、替换SQLite专属语法、迁移数据。

操作

codex exec "
把项目从SQLite迁移到PostgreSQL:

1. 修改database.py的数据库URL配置(使用DATABASE_URL环境变量)
2. 检查所有SQL查询,确保没有SQLite专属语法
3. 添加psycopg2到requirements.txt
4. 写一个数据迁移脚本migrate_data.py,从SQLite导出数据插入PostgreSQL
5. 更新.env.example加入DATABASE_URL配置
6. 更新README.md说明迁移步骤

约束:保持原有代码结构不变,只改必要的配置和兼容性问题
"

结果

Codex会:

  1. 自动识别项目中所有的SQLite相关代码
  2. 创建PostgreSQL兼容的配置
  3. 生成数据迁移脚本
  4. 更新文档

这也是Codex CLI的强项:跨文件的系统级修改。单单SQLite→PostgreSQL这个改动,涉及配置、查询语法、迁移脚本、文档——如果自己改,至少半小时到一小时。Codex几分钟搞定。


场景三:批量修复lint错误

场景描述

接手一个旧项目,200+个lint错误。手动改不现实。

操作

# 先看有多少lint问题
ruff check .
# 假设输出:Found 234 errors in 47 files

# 让Codex修
codex exec --full-auto "
用ruff检查当前项目的所有lint错误,逐个修复。
修复优先级:
1. 先修F错误(pyflakes,影响运行)
2. 再修E错误(pycodestyle风格)
3. 最后修I错误(import排序)

修复后运行 ruff check . 确认没有新问题
保持原有的逻辑不变,只改格式
"

注意

--full-auto而不是默认模式,因为200+个lint错误逐个确认太浪费时间。但建议先看看lint类型——如果是逻辑问题(F错误),修完后git diff检查一下AI改对没有。


场景四:生成完整测试套件

场景描述

项目有代码但没有测试。你想在CI上线前,给核心模块补上测试。

操作

codex exec "
给我的项目写测试:

1. 检测当前项目使用的测试框架(pytest/unittest)
2. 如果没有,安装pytest并配置
3. 给src/core/目录下的所有模块写单元测试
4. 测试覆盖率目标80%以上
5. 使用mock隔离外部依赖(数据库、API调用)
6. 测试文件命名遵循 test_{module}.py
7. 运行 pytest --cov=src/core --cov-report=term 验证覆盖率

先给个计划,我确认后再执行
"

为什么先要计划

测试是最容易翻车的场景——AI生成的测试可能: - 测试了不存在的方法 - 用了错误的mock - 测试框架版本不兼容

让Codex先输出测试计划,你看一眼结构再确认,稳很多。


场景五:跨分支代码迁移

场景描述

你在feature-A分支上做了一个数据库重构,现在需要把这个改动迁移到feature-B分支上。

操作

# 先在feature-B分支上
git checkout feature-B

# 让Codex分析feature-A的改动并迁移
codex exec "
1. 先查看 feature-A 相对于 main 的改动:git diff main...feature-A
2. 分析这些改动的核心逻辑
3. 检查 feature-B 分支上是否有冲突的代码
4. 如果有冲突,给出迁移方案
5. 逐文件迁移核心逻辑(不要复制整个文件,只迁移关键改动)
6. 迁移后运行测试确认没有破坏现有功能
"

比手动强在哪?

手动跨分支迁移最怕的是:漏改依赖、漏改配置、漏改import。Codex会帮你检查这些潜在问题。


Codex CLI工作流总结

经过这几个场景,可以总结出一个通用的工作流:

简单任务(修bug、加小功能)

codex exec "具体描述" → review diff → confirm

中等任务(重构、加模块)

codex exec "先给计划" → 看计划 → codex exec "按计划执行" → review

复杂任务(架构改动、迁移)

codex exec --full-auto "分步骤执行" → git diff → 逐文件检查

安全建议

模式 适合场景 确认机制
默认模式 日常开发、修bug 逐文件确认
--full-auto 批量修改、lint修复 改完后整体review
--yolo 生成新项目、脚手架 看最终结果

不要对生产环境代码用YOLO模式。 这个原则能帮你在99%的情况下不翻车。


三个节省大量时间的小技巧

1. 用管道传递上下文

cat error.log | codex exec "根据错误日志修复代码"

让Codex直接看到报错信息,不用自己复制粘贴。

2. 指定关键文件

codex exec "分析性能瓶颈" -f app/core/database.py -f app/models/user.py

-f手动指定文件,让Codex把注意力放在关键地方,节省token。

3. 分任务执行

不要一个会话里做太多事。code-review、写代码、改配置分成三个独立会话。这样做的好处:

  • 每个会话的上下文更干净
  • 中途出错了不会影响已完成的工作
  • token消耗更可控

总结

Codex CLI不只是「在终端里帮你写代码」的工具。它的真正价值在于:

  1. 系统级修改——跨文件、跨模块的全量改动,Codex比人工更不容易漏
  2. 沙箱安全——改完后review再落地,不给生产环境添乱
  3. 文档即规范——AGENTS.md让团队编码规范自动贯彻到每个AI任务

五个场景覆盖了日常开发的绝大多数情况。记不住没关系——记住codex exec这个核心命令,其他都是锦上添花。

💡 建议收藏本文。 实战场景就是开发中的高频操作,遇到类似的直接回来抄命令。

📤 转发给朋友,他肯定会感谢你。 你的朋友如果还在手工迁移代码——让他看看场景五。

📚 AI编码工具系列(一)Aider AI编程助手入门 · (二)Aider进阶(三)Codex CLI入门教程(四)OpenCode vs Aider vs Claude Code:三款终端AI编程助手横评(五)AI代码文档自动生成指南 · (六)AI辅助代码迁移实战