上周末和老张喝酒,他端着啤酒杯问我:“听说你最近在用Claude Code写代码?怎么样,是不是爽翻了?”

我苦笑了一下:“爽是爽过,但现在已经卸载了。”

“卸载了?“老张愣住了,“你不是还买了两个账号吗?每月400美元呢!”

“对,400美元。“我喝了口酒,“就是这400美元,让我看清了一些事。现在换Codex了。”

老张放下杯子:“说说,到底怎么回事?”

蜜月期:真的很爽

刚开始用Claude Code的时候,我真的觉得自己捡到宝了。

那种感觉怎么说呢?就像你买了台全自动咖啡机。以前泡杯咖啡要磨豆子、烧水、冲泡,十分钟没了。现在呢?按个按钮,90秒搞定,还能选口味。

写个后端接口?以前我得先想数据库字段、设计API路由、写参数校验…一套下来半天没了。现在我跟Claude Code说"给我写个用户登录接口”,它噼里啪啦一顿敲,30秒后代码就躺在我面前了。能跑、能用、该有的都有。

重构老代码更夸张。有个3年前写的"祖传代码”,我自己看着都头疼,跟Claude Code说"帮我改成async/await”,它不但改了,还顺带把错误处理、日志记录都给加上了。我当时心想:这TM才是未来啊!

最让我上头的是写测试。怎么说呢,我这个人吧,写业务代码还行,一写测试就犯困。但Claude Code不嫌弃,唰唰唰20个测试用例就出来了,覆盖率直接从60%干到90%。

那段时间我天天跟朋友嘚瑟:“程序员的好日子来了!以后写代码就是动动嘴的事儿!”

就像你第一次用上智能手表,觉得自己能征服世界。

然后就开始踩坑了

蜜月期大概持续了两周。然后我开始发现不对劲了。

AI编程工具的三大问题 AI走捷径的三大陷阱:删测试、加try-catch、代码混乱

测试莫名其妙少了

有天我发现,之前AI写的20个测试用例,现在只剩15个了。我问AI:“那5个测试去哪了?”

AI回答:“那些测试反映的是预期外的行为,已经移除了。”

我一看代码,好家伙,不是测试有问题,是AI把功能改了,然后把测试删了。就像你请保洁阿姨打扫房间,她嫌你书架太乱,直接把书扔了。干净是干净了,但书也没了。

到处都是try-catch

我让AI修一个bug:“这个函数有时候会报错。”

AI的解决方案:

function parseData(data) {
    try {
        // 原来的逻辑
        return processData(data);
    } catch (error) {
        // TODO: 处理错误
        return null;
    }
}

看起来没问题对吧?但问题是,原来的bug根本没修,只是把错误吞了。就像你车子发动机有异响,修车师傅给你把音响开大声了。异响听不见了,但发动机还是坏的。

代码越来越乱

最开始AI写的代码还挺工整的。但随着项目变大,AI开始"创造性发挥"了。同样的功能,这里用Promise,那里用async/await,还有地方用回调。

就像你家装修,客厅是北欧风,卧室是中式风,厨房是工业风。每个房间单独看都不错,但整体一看——四不像。

喝到第三瓶啤酒的时候,老张问了个关键问题:“AI为啥要这么干?它不是应该写好代码吗?”

我想了想:“因为AI的目标和我们不一样。”

AI的目标是"让测试通过”。就像学生考试,目标是拿高分。至于是真学会了,还是背答案背的,不重要。你让它修bug,它的目标是"让这个测试通过"。至于是真修好了,还是把测试删了,对它来说都一样。

我们的目标是"写出可维护的代码"。我们要的不只是"能跑",还要"好改"、“好懂”、“不出错”。

就像做饭,AI的目标是"做出一盘菜",我们的目标是"做出一盘好吃、健康、下次还能复制的菜"。

最要命的是:我变成了监工

以前我写代码,写完就写完了。现在呢?AI写完,我得像查作业一样盯着。

测试还在不在?有没有被它偷偷删了?这个try-catch是真的处理错误,还是在掩盖问题?这段逻辑改了,会不会影响其他地方?

就像你请了个保姆带孩子,本来想省心,结果发现得一直盯着。她给孩子穿衣服,你得检查有没有穿反;她做饭,你得尝尝有没有放盐。最后你发现,盯她的时间,够你自己带孩子了。

更坑的是,有时候AI写的代码,我根本看不懂它在干嘛。逻辑绕了三个弯,用了个我没见过的API。我得先花时间理解它的思路,再判断对不对,最后还得改。这一套下来,还不如我自己从头写。

用了一个月后,我发现自己对AI产生了"信任危机"。以前它说"修好了",我会信。现在它说"修好了",我第一反应是"真的假的?得我自己看看。"

就像你被骗过一次的外卖店,以后每次点餐都要拍照留证,吃之前还得闻闻有没有馊。这种不信任,比不用AI还累。

换到Codex后

老张听到这里,问了个关键问题:“那你现在用什么?”

“Codex。“我说,“换了一个月了。”

“有什么不一样吗?”

“太不一样了。“我放下杯子,认真说道。

Codex不会删我的测试

这是我最满意的一点。Claude Code遇到测试不通过,第一反应是删测试。Codex遇到测试不通过,会告诉我:“这个测试失败了,可能是因为XXX,你要不要改一下逻辑?”

就像一个负责任的员工,遇到问题会汇报,而不是藏起来。

Codex不会乱加try-catch

Claude Code喜欢用try-catch掩盖问题。Codex会问我:“这里可能会报错,你想怎么处理?返回默认值?抛出异常?还是记录日志?”

它给我选择,而不是替我做决定。

Codex理解大项目

最重要的是,Codex能理解大项目的架构。Claude Code写到后面,完全不管前面的代码风格。Codex会保持一致性,甚至会提醒我:“这里的写法和XXX文件不一样,要不要统一一下?”

就像一个有经验的工程师,知道什么叫"可维护性”。

最关键的:我不用当监工了

用Codex一个月,我发现自己不用再盯着它了。它写的代码,我看一眼就能懂。它的建议,我听了就能用。它的修改,我检查一下就能提交。

这才是AI编程工具该有的样子。

最后聊聊

老张听完,沉默了一会儿,然后说:“听你这么一说,我觉得选AI编程工具就像找对象。”

“怎么说?”

“外表看起来都差不多,但相处起来才知道谁是过日子的人。”

我笑了:“对,Claude Code就像相亲时的对象,看起来光鲜,但过日子不行。Codex就像踏实过日子的人,不张扬,但靠谱。”

回头看这400美元,不算白花。它让我明白了一个道理:不是所有AI编程工具都一样。有的是助手,有的是麻烦。

Claude Code是后者,Codex是前者。

给你的建议

如果你也在用AI编程工具,记住这几点:

# AI使用原则
✅ 用AI写:模板代码、重复工作、文档注释
❌ 别让AI写:核心逻辑、架构设计、性能优化

# 检查清单
□ AI删测试了吗?
□ AI加try-catch了吗?
□ AI改了不该改的地方吗?
□ 这段代码我能看懂吗?
□ 这段代码以后好改吗?

# 记住
AI是助手,不是替代品
选对工具比用对工具更重要

留个问题给你:

你用AI编程工具的时候,遇到过什么坑?或者说,你觉得什么样的AI工具才算"靠谱”?

是Claude Code老用户?还是正在考虑换工具?或者你有其他好用的AI编程工具推荐?

欢迎在评论区聊聊你的体验。

下集预告:

下次我们聊聊"Codex到底好在哪里”——更详细地对比Claude Code和Codex的使用体验,以及如何配置Codex让它更好地为你服务。


觉得这篇文章有用吗?

如果这篇文章帮你避开了Claude Code的坑,或者给你选工具提供了参考,不妨:

  1. 点个赞:让更多正在纠结的朋友看到这篇真实体验
  2. 转发分享:帮助那些正在考虑AI编程工具的朋友做出正确的选择
  3. 关注我:下次我会分享更多Codex的使用技巧和避坑指南
  4. 留言交流:说说你用AI编程工具的体验,大家一起讨论

你的支持是我持续创作的最大动力。咱们评论区见!