Codex写代码快不快,我让它重构了一段老项目

📅 2026/8/25 4:44:35
Codex写代码快不快,我让它重构了一段老项目
打开那个三无老项目上周接手了一个三年前的内部系统没有文档、没有注释、连 README 都是空的。git log最后一笔提交停留在 2023 年 4 月作者早已离职。这种项目在团队里不少见——能跑就行没人敢动直到某个深夜它终于挂了。我本想先花两天时间啃代码后来决定让 Codex 试试。打开桌面端把项目目录丢进去第一句提示词很直接在当前项目根目录生成一份项目介绍文档Markdown 格式方便后续开发人员快速了解整体架构。Codex 花了大概四十秒开始逐文件扫描。我能从界面里看到它在读取pom.xml、几个核心 Service 和 Mapper 文件中间还调了一次find命令确认目录结构。最终输出的文档包含了技术栈概述、模块依赖图、关键入口类说明以及一张简易的数据库表关系表。说实话表关系部分它猜对了一大半但有两张关联表的关系标反了——这是人工复核时发现的第一个问题。AGENTS.md 的得与失文档生成后我让它继续创建AGENTS.md记忆文件。这个设计在 Codex 的工作流里挺有意思把项目的编码规范、架构约定、常见陷阱写进一个文件后续对话中 Codex 会自动引用减少重复沟通。我给的提示词是基于刚才生成的项目文档创建 AGENTS.md记录这个项目的编码规范、技术约束和你发现的潜在风险点方便后续协作。Codex 输出了一份结构清晰的记忆文件分成了四个部分技术栈版本锁定Java 11、Spring Boot 2.6.x、数据库规范MyBatis-Plus 的用法约定、已知的兼容性问题Spring Boot 2.6 与新版 MySQL 驱动的冲突以及一个待确认区域。待确认区域里它列出了三个点缓存策略未明、日志配置分散、部分硬编码的第三方接口地址。这份文件的价值在于快速建立共识。后续我再让 Codex 修改代码时它确实会主动避开 Spring Boot 3 的语法也不会乱换 ORM 框架。但代价是创建和校准 AGENTS.md 本身花了我将近一个小时——其中 20 分钟在等它生成40 分钟在逐条核实那些潜在风险是否真实存在。有一条它标注Redis 配置可能未启用连接池我翻遍代码发现其实是有的只是写在了另一个配置文件里。这种看似谨慎实则误判的情况在老项目场景下并不少见。分页查询改造AI 写人来看真正检验 Codex 能力的是改造一个老旧的分页查询接口。原接口用原始 SQL 拼接实现前端传pageNum和pageSize后端手动算偏移量代码里还嵌着 2019 年的日期格式化逻辑。我的提示词分了两步先描述现有接口的问题再给出改造目标——改用 MyBatis-Plus 的分页插件参数校验用 Validation返回统一包装类并补充单元测试。Codex 的生成过程分了四步走先读现有 Controller 和 Service 代码再修改实体类加上分页参数注解然后重写 Service 层逻辑最后生成测试文件。整个过程在沙盒里执行我能在侧边栏看到它调了几次mvn test验证编译。最终代码交上来时分页逻辑本身是对的MyBatis-Plus 的Page对象也用对了。但问题出在边界处理它没有处理pageNum小于 1 的情况导致传 0 时会直接抛异常。另外统一返回类里它把total字段命名成了totalCount而项目里其他接口用的是total这个命名不一致如果合并前端会直接报错。这两个问题都不算难发现但都需要人逐行看 Diff 才能抓到。我算了下时间Codex 生成代码约 5 分钟我复核加修正花了 15 分钟。如果纯手写这个接口大概 30 分钟。省了一半但远没有想象中动动嘴就搞定那么轻松。哪些环节真省时间哪些反而添乱跑完这一圈我对 Codex 在老项目改造里的角色有了更具体的认知。真正省时间的是信息整理和框架搭建。让它读一遍代码生成文档比自己啃快得多哪怕有误差也能快速建立全局视图。从零搭建新模块时它生成的基础代码能直接用省掉大量样板工夫。反而增加成本的是边界校验和命名一致性。AI 对项目惯例的理解有限它不知道你们团队把分页返回的字段叫total还是totalCount也不会主动检查参数是否做了防御性编程。这些细节在遗留系统里往往没有统一规范全靠人把关。必须人工介入的关键节点我总结了三处一是 AGENTS.md 或类似记忆文件的校准这决定了后续 AI 输出的基调二是任何涉及对外接口的修改命名和字段类型必须人工确认三是测试用例的补充Codex 生成的测试通常覆盖理想路径异常分支需要自己动手。一个务实的配合比例这次改造里我的时间分配大概是Codex 自动执行约占 30%人工复核和修正约占 50%剩下的 20% 花在沟通需求、调整提示词上。也就是说AI 承担了机械劳动但质量把控的担子反而更重——因为你要验证一个你不完全信任的系统产出的代码这种验证本身就需要对老项目有足够的理解。有个意外的收获在反复调整提示词的过程中我自己对这个老项目的熟悉程度反而比纯啃代码时更深了。Codex 像是一个会说话的代码搜索引擎逼着你把模糊的需求翻译成精确的描述这个翻译过程本身就是梳理思路的过程。所以回到开头的问题——Codex 写代码快不快快但快的是写出来这个动作。要让代码真正跑在生产环境那条人工复核的流水线省不掉至少在遗留系统改造这个场景下是这样。