ChatGPT、Codex实战:为什么AI明明理解了代码,却还是改不对?
很多开发者第一次使用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会员订阅渠道。
葡萄城是专业的软件开发技术和低代码平台提供商,聚焦软件开发技术,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。
更多推荐



所有评论(0)