← 返回资讯
赵一鸣
产品评测编辑
已审核

我让AI重构了支付模块,47个测试0失败,还顺手修了个两年老bug

上周二凌晨两点,我让 GPT-5.1-Codex-Max 重构那个跑了三年的支付模块。代码贴进去,它吐出来的东西第一次跑就全绿——47个单元测试,0失败。它还顺手修了个并发 bug,那 bug 我两年前就知道,一直没敢动。

我让AI重构了支付模块,47个测试0失败,还顺手修了个两年老bug

我让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=1tcp-backlog=511,看着挺专业。

但其中有行 save ""——这玩意儿会直接禁用 RDB 持久化。它没提醒我这个副作用。我差点直接上生产。

幸好看了眼。不然重启丢数据。

结论:基础设施配置必须理解每行含义。别盲抄。

坑三:长上下文注意力衰减

喂了个 2000 行的项目。前几轮很好,让它改深层嵌套的工具函数也稳稳的。

到第 8 轮左右,它开始"忘记"其他模块的接口定义了。生成的代码引用了个不存在的函数——get_user_session_v2(),但项目里只有 get_user_session(),根本没有 v2。

我觉得这跟上下文窗口的注意力机制有关。具体到多少 token 会衰减我没细测,但体感是复杂任务控制在 5 轮以内比较稳,超出就新开会话重新喂上下文。

对了,那个报错长这样:

CODE
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编程 #代码生成 #开发者工具 #技术评测

55
787 阅读
5 评论
分享
链接已复制
编辑说明

本文由 MakeSense 编辑团队撰写并审核。文中引用的数据和观点均经过交叉验证,如有疏漏欢迎在评论区指正。最后更新:2026年06月27日 17:26

赵一鸣

产品评测编辑

前产品经理,现专注 AI 工具评测。实测过 30+ 款 AI 产品,擅长横向对比和用户体验分析。

读者评论 5

前端工程师 4天前
代码示例很清晰,直接用到项目里了。
回复 点赞 (6)
技术小白 1周前
作为非技术人员也看懂了,感谢作者的通俗讲解。
回复 点赞 (3)
Dev小王 1周前
终于有人把这个说清楚了,收藏了。
回复 点赞 (8)
A
AI研究员 1周前
观点有道理,不过我觉得还需要考虑算力成本的问题。
回复 点赞 (11)
M
创业者Mark 2天前
正在做相关方向,这篇文章给了我不少启发。
回复 点赞 (7)