AI 编码把瓶颈从"写"挪到了"验证":代码产出变便宜了,但每一行仍然需要被证明是对的。美团基础技术部在分布式存储系统里的结论更硬——在一致性、并发、持久化、故障恢复每一项都会碰到的系统里,AI 的正确用法是当假设生成器和验证助手,而不是当作者。谁把"变绿"当成"解决",谁就在给自己埋故障。

为什么这个问题在存储系统里被放大

同样的人力,一个版本能交付的功能更多、改动的代码也更多。就算 AI 写的代码千行缺陷率和人持平,单个版本累计引入的缺陷绝对数量照样上涨。这是道算术题,不是态度题。

分布式存储把这个算术放大了一个量级:

所以这里的门槛不是"AI 能不能写出能跑的代码",而是"AI 写的代码进不进得了评审流程"。答案是:光生成不够,AI 评审、AI 测试验证、AI Debug、受控自动化必须一起建起来。

AI 评审:它强在跨文件落差,弱在设计背景

原文给了一个很典型的例子,值得记住它的形态:`ENABLE_UNITTEST` 在三处调用点控制测试 mock 变体的编译分支,CMake 迁移把名字换成了 `WITH_UNITTEST`,旧名字再没被赋过值。单看任何一个文件都挑不出毛病——这个 bug 只存在于文件和文件之间的落差里。这正是 AI 的舒适区:跨文件搜索、比对、对齐,人类容易漏,机器不会累。

第二个能力是构造可执行证据。AI 说"这里没做边界检查"之后没有停,而是造了一个声明 1 GiB、实际包体只有 5 字节的畸形包,打到真实解码入口,把崩溃现场抓了出来。这个动作的性质和"提了个 review 意见"完全不同——它交付的是现场。

第三个能力常被忽略:承认自己证明不了。一处疑似并发竞态,AI 走读找到可疑路径,然后明确说明要证实这段交错时序需要 ThreadSanitizer,当前工具链跑不了,于是标成"未验证",没有直接定性为缺陷。这种"标注边界"的自觉,比多找十个问题更有价值。

但它替代不了人对设计背景的判断。评审意见里最贵的部分从来不是"这行有隐患",而是"这个改动违反了我们当初为什么这样设计"。

AI Debug:假设生成器,不是根因判断者

分布式存储的故障取决于并发时序、节点角色、持久化状态、恢复过程、外部依赖和运维操作,AI 拿到的通常只是其中一部分。它极容易找到一条"能解释现象"的代码路径,却没有证明线上当时真的走过这条路径,也没有证明别的原因产生不了同样的结果。这两件事缺一件,根因就不成立。

它真正擅长的是四件事:

原文那个"空格丢失"的案例最能说明问题:AI 用单点实验确认服务端会删除首尾空格,据此归因服务端;人工要求继续查客户端后,AI 把问题改成对照实验——记录客户端计算签名时的内容、实际发送的内容、服务端收到并重算签名的内容,逐段比较第一次差异出现在哪。结果是客户端先按带空格的内容算签名,发送前又删掉空格,签名与实际内容不一致。单点事实是真的,因果位置是错的。

最容易制造的三类错觉

原文的结语把话说得很直:流畅不是证据,一致不是正确,变绿不是解决。

还有一条容易被漏掉:为解决局部问题不必要地扩大修改范围。改任务范围外的源码、调公共构建逻辑、放宽检查——当前失败是绕过了,代价是把后面的错误盖住。

可以直接抄走的做法

最后一条判断标准值得贴在工作台上:团队从 AI 那里能拿到多少收益,看的不是生成了多少代码,而是验证能力跟不跟得上生成的速度。边界划得越清楚,AI 能放手干的范围反而越大。

阅读原文 → 返回 AI 技术文档

内容与图片版权归原作者所有 · 原文: https://tech.meituan.com/2026/10/29/AI-Coding-IN-Distributed-Storage-System.html