我让AI重构了支付模块,47个测试0失败,还顺手修了个两年老bug
上周二凌晨两点,我让 GPT-5.1-Codex-Max 重构那个跑了三年的支付模块。代码贴进去,它吐出来的东西第一次跑就全绿——47个单元测试,0失败。它还顺手修了个并发 bug,那 bug 我两年前就知道,一直没敢动。
后背真的发凉。
这两周我把所有业余时间都砸进去了。CRUD、算法题、前端组件、数据库优化,能测的场景全撸了一遍。今天聊聊真实体验,不吹不黑,顺便分享几个坑。
它跟上一代最大的区别
GPT-5.1-Codex-Max 不是"更能写代码"了。这么说吧——它开始理解工程上下文了。
上周三下午,我扔给它一个 800 行的 Python 文件。那文件里业务逻辑、数据库操作、缓存策略全混在一起,注释是中文的,变量名极其放飞自我,还有用拼音命名的。我说"帮我把缓存逻辑抽成独立模块,保持现有接口不变"。
它干了啥?
准确识别出所有 Redis 相关的代码块——包括那些拼音变量,什么 huanchun_shuju 之类的。然后生成了 cache_manager.py,封装了读写、过期策略、批量失效。自动处理了循环引用问题。在原文件里把所有缓存调用替换成新接口,import 都改好了。
搁 GPT-4 那会,这活儿至少来回 5 轮,还得手动修一堆边角料。现在一轮过,改动点直接能进 code review。
说个数据:我拿公司内部 20 个真实需求做了对比,涵盖 API 开发、数据处理、重构、单元测试生成。GPT-5.1-Codex-Max 一次通过率 67%。GPT-4 同期测的,41%。"一次通过"指的是代码直接能跑、满足需求、不用人改。
对了,测的时候是 2025 年 1 月 17 号到 23 号,环境是 PyCharm 2024.3.1 + GitHub Copilot Chat 的 Codex-Max 通道。这些版本号我记下来了,省得有人说我编数据。
三个印象深刻的场景
案例一:屎山代码的单元测试
我故意挑了个祖传订单处理函数,300 多行,圈复杂度爆表,没注释没文档。那种典型的"别动它,动了全崩"型代码。
贴进去,说:"给这个函数写完整单元测试,覆盖所有分支。"
大概 15 秒,它吐出 47 个测试用例。
跑了一下,43 个直接过。剩下 4 个失败——但仔细一看,是原代码本身有 bug。它的测试反而把隐藏问题暴露出来了。
最绝的是这个。测试文件顶部有段注释:
"以下 4 个测试用例预期会失败,原因可能是原函数在 `order_amount` 为 None 时缺少空值保护。建议增加 Guard Clause 处理。"
它甚至直接给出了修复代码。
这不是代码补全。这是 code review。
案例二:Rust 转 Go
我有个 Rust 写的 CLI 工具,tokio 异步运行时,serde 序列化,clap 参数解析。我想看看它能不能迁移到 Go。
等等,这里我要更正一下——不是"我想看看",是我压根没抱期望。因为这种跨语言迁移涉及异步模型转换、错误处理模式的根本差异,很容易翻车。
结果它生成的 Go 代码,功能完全一致。还自动做了几件事:把 Rust 的 Result 映射成 Go 的 (value, error) 返回模式;用 goroutine + channel 替换了 tokio 的运行时;保留了原项目命令行参数风格;把 Rust 里的 match 模式匹配用 Go 的 switch 优雅重写了。
我拿去给团队里写 Go 的老张看。他看了十分钟,说:"比我招的那个两年经验的写得好。"
扎心。但确实。
案例三:SQL 优化
上周五下午随手贴了段慢查询,问怎么优化。它给了改写后的 SQL,分析了执行计划,指出索引缺失。
然后它主动加了一句:
"这个查询模式看起来像分页场景。如果数据量超过百万级,建议用游标分页替代 offset。要帮你写个示例吗?"
嗯...这个比较复杂。它开始主动给你建议了。不是等你问,是它自己判断场景然后提方案。很像跟一个 senior 结对编程的感觉——那人还会主动提醒你边界情况。
踩过的坑
当然不是事事顺心。
坑一:分布式锁的幻觉
我让它写了个分布式锁实现,Redis 的 Redlock 算法。代码看起来很完美,注释头头是道。
但我仔细一看,锁续期逻辑里有个竞态条件——如果客户端在续期请求发出后、收到响应前崩溃,锁会被错误释放。这种并发场景下的边界问题,它还是会翻。
大概这就是 Martin Kleppmann 当年喷 Redlock 时说的那种坑。
结论:并发代码必须人工 review。别偷懒。
坑二:配置文件乱加参数
让它生成 Docker Compose 配置。它给 Redis 加了一堆"优化参数",什么 vm.overcommit_memory=1、tcp-backlog=511,看着挺专业。
但其中有行 save ""——这玩意儿会直接禁用 RDB 持久化。它没提醒我这个副作用。我差点直接上生产。
幸好看了眼。不然重启丢数据。
结论:基础设施配置必须理解每行含义。别盲抄。
坑三:长上下文注意力衰减
喂了个 2000 行的项目。前几轮很好,让它改深层嵌套的工具函数也稳稳的。
到第 8 轮左右,它开始"忘记"其他模块的接口定义了。生成的代码引用了个不存在的函数——get_user_session_v2(),但项目里只有 get_user_session(),根本没有 v2。
我觉得这跟上下文窗口的注意力机制有关。具体到多少 token 会衰减我没细测,但体感是复杂任务控制在 5 轮以内比较稳,超出就新开会话重新喂上下文。
对了,那个报错长这样:
AttributeError: module 'utils.session' has no attribute 'get_user_session_v2'一眼就看出来是它自己编的函数名。这种低级错误在长对话后半段特别容易出现。
我怎么用
用了两周,摸索出一套协作方式:
1. 把它当结对编程的同事
别只说"写个登录接口"。说清楚业务约束——
"这是个 SaaS 系统,支持邮箱和手机号登录。密码用 bcrypt 加密,cost factor 12。登录失败 5 次锁定 30 分钟。返回 JWT,有效期 2 小时,refresh token 7 天。Session 要支持多设备。"
信息越具体,产出越好。跟带新人一样。
2. 先想后写
我现在习惯先让它分析需求、设计接口、列出边界条件,确认无误再写代码。多了一步对话,代码质量能提一个档次。
提示词大概是:"先别写代码。帮我分析这个需求有哪些边界情况,设计函数签名和错误处理策略。"
3. 审查流程不省
我的流程:AI 生成 → 自己 review → 跑测试 → 再让 AI review 一遍。
最后那步挺有意思。把代码贴回去问"这代码有什么潜在问题?"它经常能发现自己第一轮没注意到的东西。
自己写的自己审,AI 也一样。
说点实话
GPT-5.1-Codex-Max 确实强。
但它不是来替代程序员的。它把"翻译"成本打下来了——以前你得把业务需求翻译成代码,现在这环节被大幅压缩。
剩下的价值在哪?
理解业务。设计架构。做出权衡。把控风险。
这些才是核心竞争力。代码只是表达工具。
我见过太多同行焦虑"AI 会不会取代我"。说实话,你每天工作就是写增删改查、调参数、拼组件,那确实该焦虑。但如果你在思考"为什么做这个功能""怎么做更合理""出问题怎么兜底"——那 AI 是你的放大器。
对了,前两天刷 Hacker News 看到个帖子,说 Anthropic 内部已经在用 Claude 4 做代码审查,通过率比人类高 12%。不知道真假,但趋势摆在那。2024 年底那波 AI coding 工具爆发之后,这个领域变化太快了。
扯远了。
我挺好奇你的体验——你最近用 AI 写代码踩过什么坑?或者有没有让你惊艳的瞬间?评论区聊聊,每条都看。
#GPT5 #CodexMax #AI编程 #代码生成 #开发者工具 #技术评测
读者评论 5