很多开发者第一次使用Codex修改真实项目时,都会遇到一个很矛盾的情况。

AI看起来真的“懂”。

它能解释:

这个函数负责什么。

这个模块为什么存在。

这个Bug可能来自哪里。

甚至它给出的分析,比很多新人开发者还清晰。

但是当它真正开始修改代码以后,结果却经常出现:

方向没错。

代码也能运行。

但就是不符合你的预期。

甚至出现:

“它明明理解了问题,为什么最后还是改错了?”

这个问题越来越常见。

因为AI Coding正在进入一个新的阶段:

以前大家担心:

AI不会写代码。

现在更多人遇到的是:

AI会写,也会分析,但它做出的修改不一定符合整个项目。

这背后不是简单的模型能力问题。

而是:

理解代码,不等于理解系统。


一、真实项目里,为什么“看懂代码”还不够?

很多人判断AI是否理解项目,通常看几个表现:

它能不能解释代码。

能不能找到相关文件。

能不能分析调用关系。

能不能指出Bug位置。

如果这些都能做到,就认为:

“AI已经理解这个项目。”

但真实工程里的理解,至少分两个层级。

第一层:

代码理解。

也就是:

这个函数做什么。

这个接口怎么调用。

数据怎么流动。

这部分AI现在已经越来越强。


第二层:

系统理解。

也就是:

为什么这里必须这样设计。

为什么这个接口不能改。

为什么这个重复代码不能抽象。

为什么这个逻辑看起来不优雅,但必须保留。

这一层往往隐藏在:

业务历史。

团队经验。

线上事故。

产品约束。

里面。

而这些东西,很多时候并不存在代码本身。


所以会出现一个情况:

AI知道:

“这里可以优化。”

但不知道:

“这里为什么不能优化。”


二、为什么AI经常做出“技术正确,但工程错误”的修改?

这是AI Coding里非常核心的问题。

举一个常见场景。

你让Codex优化一个用户权限模块。

AI分析以后发现:

几个地方存在重复判断。

于是它提议:

抽取统一权限组件。

代码变得:

更简洁。

结构更漂亮。

测试也通过。

从软件设计角度看:

这个方案甚至可能更优秀。

但是工程师知道:

这几个权限判断虽然现在类似,但对应不同业务阶段。

未来可能分别变化。

如果现在抽象到一起:

后续任何一个业务变化,都会影响其他模块。

所以:

AI做的是:

代码层面的最优。

工程师考虑的是:

系统生命周期的最优。

这两个目标并不完全相同。


这也是为什么很多AI修改:

单看Diff非常漂亮。

但工程师第一反应是:

“先不要合。”

因为风险不在代码表面。

而在未来变化。


三、背后的机制:AI看到的是显性信息,人掌握的是隐性约束

真实项目可以分成两个空间。

一个是:

代码空间

里面包含:

文件。

函数。

变量。

调用关系。

测试。

依赖。

AI非常擅长分析这个空间。


另一个是:

约束空间

里面包含:

业务规则。

历史决定。

团队约定。

兼容要求。

上线风险。

用户行为。

这个空间往往没有完整记录。


AI修改代码时,通常是在代码空间里寻找最佳方案。

但是工程师最终决定的是:

这个方案是否满足约束空间。

于是出现:

代码没问题。

测试没问题。

但是不能上线。


这不是AI犯低级错误。

而是:

它优化的是一个不完整的信息集合。


四、为什么模型越强,这个问题反而越明显?

这是很多人没有想到的地方。

如果AI能力弱:

它可能只改很小范围。

问题反而容易控制。

但是模型越来越强以后:

它能理解更多代码。

能发现更多关联。

也更容易提出更完整的修改方案。

问题来了:

发现更多问题,不一定意味着应该一起修改。


比如:

你让AI修一个支付Bug。

它发现:

支付模块结构老旧。

日志系统不完善。

异常处理不统一。

测试覆盖不足。

从工程角度:

这些确实都是问题。

但是当前任务:

只是修支付失败。

如果AI同时处理:

任务范围就开始扩大。


所以AI越强以后,新的能力不是:

“让它发现更多。”

而是:

“让它知道哪些发现应该暂时不要处理。”


五、为什么未来这个问题会越来越明显?

因为AI正在从:

代码补全工具。

变成:

工程Agent。

未来AI参与的不只是:

写函数。

补代码。

而是:

修改模块。

重构系统。

迁移项目。

维护大型Repository。


任务规模越大:

隐藏约束越多。

代码理解和系统理解之间的差距就越明显。

以前:

AI改10行代码。

影响有限。

未来:

AI可能一次修改几十个文件。

这时候:

“它是否理解整个系统?”

会变成比:

“它会不会写代码?”

更重要的问题。


六、如何判断AI是真的理解项目,还是只是理解代码?

这里可以建立一个自测指标:

上下文缺失率

它不是看AI回答是否正确。

而是看:

为了让AI做出正确修改,你需要额外补充多少背景。


可以观察三个情况。

第一:

AI第一次方案是否经常需要你纠正?

如果经常出现:

“代码方向对,但业务不对。”

说明缺少系统上下文。


第二:

你是否经常需要告诉AI:

“这里不要改。”

“这个接口不能动。”

“这个逻辑虽然重复,但必须保留。”

如果这种提醒越来越多:

说明项目隐性约束没有进入AI上下文。


第三:

AI修改后,你Review时间是否越来越长?

如果AI只是帮你写代码:

Review应该下降。

如果AI带来大量判断成本:

说明它理解了代码,但没有理解系统。


七、如何降低AI改错的概率?

解决方式不是:

“不让AI改代码。”

而是:

让AI获得更完整的工程上下文。


第一:不要只告诉AI问题,要告诉它约束

很多人的提示:

“修复登录Bug。”

信息太少。

更好的方式:

告诉AI:

问题现象。

允许修改范围。

不能改变的接口。

相关业务规则。

验证方式。


第二:让AI先分析,再修改

复杂任务不要直接:

“帮我改。”

可以先要求:

分析可能原因。

列出影响范围。

说明修改方案。

确认以后执行。


第三:让项目规则显性化

很多团队的问题:

经验存在人的脑子里。

但AI看不到。

可以把:

架构规则。

代码规范。

禁止修改区域。

业务约束。

整理成AI可以读取的信息。


第四:限制修改范围

AI发现的问题很多。

但不是所有问题都应该现在解决。

明确:

这次任务目标是什么。

哪些内容属于未来优化。

可以明显降低偏移。


八、上下文缺失率低:Plus通常够用

如果你的情况:

个人项目。

代码规模较小。

自己维护。

AI修改范围有限。

你提供的信息足够。

AI通常能够很好完成任务。

这种情况下:

你的主要需求是提高开发速度。

Plus通常已经能够满足。


九、上下文缺失率高:Pro价值开始体现

另一类用户:

维护大型项目。

多人协作。

代码历史复杂。

业务规则多。

每天让Codex参与:

模块开发。

复杂Bug排查。

长期维护。

这时候问题不是:

AI会不会写。

而是:

AI是否能持续处理大量项目上下文。

如果你的Workflow已经建立:

项目规范。

测试体系。

上下文管理。

任务拆分。

但仍然需要AI参与复杂工程任务。

更高强度的AI使用方式才开始体现价值。


最后:未来AI Coding的核心能力,不只是生成代码,而是理解系统边界

过去:

开发者担心:

AI不会写。

现在:

AI越来越会写。

新的挑战变成:

它知道什么应该改。

也知道什么不应该改。

因为真实软件工程里:

最重要的信息,很多时候不是:

代码是什么。

而是:

为什么代码必须这样存在。

所以判断AI能力,不应该只看:

它能不能完成修改。

还应该看:

它是否理解这个修改在整个系统里的位置。

如果你的项目简单:

上下文少。

AI容易理解。

Plus通常够用。

如果你的项目复杂:

隐藏约束多。

需要AI长期参与工程流程。

Pro才更匹配。

未来真正高效的AI开发者,不是让AI改最多代码的人。

而是:

让AI在正确边界内,完成正确修改的人。

持续更新Codex、大模型开发相关技术内容。
长期使用各类代码大模型,分享稳定的AI会员订阅渠道。

Logo

AtomGit AI 社区提供模型库、数据集、Agent、Token等资源

更多推荐