很多开发者使用ChatGPT、Codex改代码时,会形成一个很自然的判断:

Diff越小,风险越低。

只改一个文件,比改十个文件安全。

只改20行,比改200行容易Review。

这个原则当然有价值。

但随着AI越来越能自主修改代码,只盯着Diff大小,会开始出现一个问题:

小Diff不一定安全,大Diff也不一定危险。真正重要的是:这次修改能不能被清楚地验证。

比如一个Agent新增300行独立测试代码,虽然Diff很大,但几乎没有改变生产行为。

另一个Agent只修改3行权限判断,却可能影响整个系统。

所以未来AI Coding真正需要关注的,不只是:

Diff Size。

而是:

Diff Verifiability——变更可验证度

也就是:

我们能不能清楚证明,这次修改做了什么、为什么要做,以及它有没有改变不应该改变的行为。


一、为什么“小Diff更安全”开始不够用了?

传统开发里,小Diff确实通常意味着:

Review更简单。

影响范围更小。

回滚更容易。

所以团队一直强调:

Small PR。

Small Commit。

但AI Agent改变了一个变量:

生成代码的速度大幅提高了。

Codex可能几分钟就完成:

实现。

测试。

调用方修改。

配置调整。

于是一个真实任务天然可能产生比较大的Diff。

如果为了追求“小”,强行把所有任务切成很多碎片,也可能产生新的问题:

每一份Diff都很小,

但开发者看不到完整行为变化。

所以未来真正应该追求的不是:

“Diff一定要尽可能小。”

而是:

“每个Diff都必须拥有清晰的验证边界。”


二、真正危险的不是代码多,而是“你不知道应该验证什么”

假设Codex修改了200行代码。

但任务非常明确:

修复订单并发提交时重复创建的问题。

AI只修改:

订单写入逻辑。

幂等判断。

对应Regression Test。

最后你可以明确验证:

重复请求是否只产生一笔订单?

正常请求是否仍然工作?

原有接口是否没有变化?

虽然Diff不算小,但验证路径非常清楚。

再看另一个任务。

AI只修改20行代码,但同时影响:

缓存策略。

错误处理。

公共返回结构。

你很难快速回答:

到底有哪些行为变化?

这种Diff虽然小,实际Review可能更困难。

所以关键不在:

代码量。

而在:

Verification Surface

验证面。


三、可以把Diff分成两种:Text Diff和Semantic Diff

Git最容易展示的是:

Text Diff

文本变化。

新增多少行。

删除多少行。

哪个文件发生变化。

但真正影响系统的是:

Semantic Diff

语义变化。

也就是:

系统行为到底改变了什么。

例如:


timeout = 3

变成:


timeout = 30

只有一行Diff。

但它可能影响:

请求等待时间。

Retry。

线程占用。

用户体验。

故障恢复。

所以AI时代Review代码时,不能只看:

“改了几行。”

还要问:

这几行代码改变了哪些行为?

真正成熟的Agent最好能够在输出Diff的同时,说明:

修改目的。

行为变化。

未变化部分。

验证方式。

这样Review才不会停留在文本层面。


四、什么叫“可验证Diff”?

一个可验证的Diff,至少应该让开发者能够回答四个问题。

第一:为什么必须改?

这部分修改和原始Goal有什么关系?

如果说不清楚,可能是无关重构。

第二:改完以后,什么行为发生变化?

不是“代码更好了”。

而是明确说明:

以前A,现在B。

第三:什么行为必须保持不变?

例如:

Public API不变。

数据库Schema不变。

认证逻辑不变。

第四:怎么证明修改是正确的?

靠:

Unit Test?

Integration Test?

Regression?

真实环境验证?

只要这四件事清楚,Diff即使稍大,也仍然可以被有效Review。


五、真正好的Diff应该自带“证据”

未来Codex生成代码以后,只说:

“修改完成,测试通过。”

可能越来越不够。

更好的结果应该像:

Goal:

修复缓存刷新后仍返回旧数据的问题。

Changed:

调整缓存失效顺序。

Unchanged:

API、数据库结构、缓存Key不变。

Evidence:

新增复现测试。

原Regression Test全部通过。

并发条件下连续验证成功。

这可以叫:

Evidence-backed Diff

带证据的Diff。

真正有价值的不是:

AI告诉你它有信心。

而是:

它给出了可以独立验证的Evidence。


六、为什么测试越多,也不一定意味着Diff越可验证?

这是另一个很容易误判的地方。

AI修改100行代码以后,又生成了30个测试。

看起来非常安全。

但如果这30个测试都是AI根据自己的实现重新设计的,就可能出现:

实现和测试互相证明。

所以Diff Verifiability不等于:

Test Count。

更重要的是:

这些测试是不是直接对应原始需求?

有没有原来的Regression Test?

有没有独立Acceptance Criteria?

高风险行为有没有外部验证?

所以真正需要优化的是:

Evidence Quality

而不是单纯:

Evidence Quantity。


七、一个很好用的指标:Diff Verifiability Score

以后Review Agent修改,可以快速看五件事:

Goal Traceability

每块修改能不能追溯到原始Goal?

Behavior Clarity

修改前后行为是否清楚?

Testability

有没有直接验证方法?

Isolation

修改能不能独立判断对错?

Rollback

失败以后能不能独立回滚?

如果这几个维度都很好,

即使Diff稍微大一些,也比较容易管理。

如果几个维度都很模糊,

那么即使只改几十行,也应该谨慎。


八、为什么“顺手优化”会降低Diff的可验证度?

假设Codex正在修一个登录Bug。

同时它又:

调整函数命名。

抽公共方法。

整理错误处理。

重构测试结构。

这些事情可能都不错。

但它们会制造一个问题:

一个Diff里存在太多不同的Change Intent。

你很难判断:

测试通过,到底证明了Bug修复正确,

还是只证明重构以后代码还能运行?

这时候Diff的:

Verification Density

验证密度就会下降。

也就是说:

真正和原始Goal直接相关的修改,占整个Diff的比例越来越低。

所以AI时代仍然值得坚持:

一个Diff尽量服务一个主要目标。


九、大Diff什么时候反而可以接受?

并不是看到AI改几百行就一定要拆。

有些任务天然需要较大修改。

比如:

明确的API迁移。

机械性字段替换。

独立模块生成。

大量测试补全。

这些任务虽然Diff大,但如果:

规则统一。

范围明确。

行为变化可预测。

验证方式固定。

其实非常适合Agent处理。

因为这种任务有:

Deterministic Verification

确定性验证。

例如:

所有旧字段必须被替换。

所有调用必须编译。

所有Regression Test必须通过。

这种情况下,大Diff不一定危险。

真正危险的是:

大Diff + 模糊行为变化。


十、什么时候应该主动拆Diff?

如果一次修改同时出现:

Bug Fix。

Refactor。

API变化。

配置修改。

依赖升级。

那就应该考虑拆。

不是因为文件太多,而是因为:

验证逻辑已经混在一起。

更合理的方式可能是:

先完成Bug Fix。

独立验证。

再做Refactor。

再处理依赖升级。

每一步都有自己的:

Goal。

Evidence。

Rollback Boundary。

这就叫:

Verifiable Change

可验证变更。


十一、Multi-Agent以后,Diff可验证度会比Diff大小更重要

未来一个开发者可能同时让多个Agent修改不同区域。

这时候代码产生速度会非常快。

真正的瓶颈反而会变成:

人能不能理解这些变化。

如果每个Agent都产生一个巨大、混杂的Diff,Review很快就会崩。

但如果每个Agent交付的都是:

明确Goal。

有限Scope。

可验证行为。

独立Evidence。

那即使多个任务并行,人仍然可以管理。

所以Multi-Agent时代真正需要优化的是:

Reviewability

可审查性。

而Diff Verifiability正是其中最重要的一部分。


十二、Plus什么时候够,什么时候Pro才真正有意义?

如果你的日常任务主要是明确Bug、中型Feature、局部重构,而且已经做到:

任务Goal清楚。

一个Diff只服务少数目标。

行为变化明确。

关键测试独立。

大任务会合理拆分。

那么Plus通常已经可以承担大量Agent开发工作。

这时候最值得优化的是:

每次修改能不能快速验证。

而不是让AI一次生成更多代码。

真正更接近Pro的情况是:

你的Diff管理和验证体系已经成熟,大量Agent修改都能快速进入Review和验收,但每天仍然存在很多高价值、复杂、长时间、并行任务持续受到容量限制。

这时候才真正从:

Workflow Problem

进入:

Capacity Problem。


最后

AI越来越会写代码以后,未来Review Agent结果时,一个越来越重要的变化是:

不要只数Diff有多少行。

小Diff可以拥有巨大风险。

大Diff也可以非常容易验证。

真正应该问的是:

这次修改,到底改变了什么?

什么没有改变?

为什么必须这样改?

我们用什么证据证明它是对的?

所以未来真正高质量的AI Coding,不是追求:

最小Diff。

而是追求:

Verifiable Diff

让每一次Agent修改都能够被解释、被验证、被回滚。

因为当AI生成代码越来越便宜以后,真正稀缺的已经不是:

“谁能改更多代码。”

而是:

“谁能更快证明这些代码值得合并。”

持续更新Codex、大模型开发相关技术内容。
长期使用各类代码大模型,整理了稳定的
Plus/Pro会员订阅渠道,有需要可自取!

Logo

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

更多推荐