AI写的代码你不敢merge,问题可能不在AI

举报
努力的阿飞 发表于 2026/08/04 11:26:15 2026/08/04
【摘要】 很多团队引入AI编程工具后,遇到了一个尴尬的局面:AI生成的代码能编译通过、能跑通测试、看起来逻辑也没问题,但开发者就是不敢点那个merge按钮。不是代码写得不好,而是开发者不知道这些代码为什么是这样写的。每行代码都合理,但合在一起,review的人无法确认它是否真正理解了业务意图。这种信任缺失,根源不在AI的代码质量,而在上下文对齐。 信任问题的本质:不是代码差,是上下文缺失Stripe的...

很多团队引入AI编程工具后,遇到了一个尴尬的局面:AI生成的代码能编译通过、能跑通测试、看起来逻辑也没问题,但开发者就是不敢点那个merge按钮。

不是代码写得不好,而是开发者不知道这些代码为什么是这样写的。每行代码都合理,但合在一起,review的人无法确认它是否真正理解了业务意图。

这种信任缺失,根源不在AI的代码质量,而在上下文对齐

信任问题的本质:不是代码差,是上下文缺失

Stripe的工程基础设施团队在部署Claude Code时遇到了类似问题。他们向1,370名工程师推广AI编码助手后,发现最大的挑战不是技术层面的,而是教育层面的。

Stripe的开发者基础设施负责人Scott MacVicar发现,工程师最初把AI助手当作"替代自己写代码的工具",给它一个模糊的指令就期望AI产出完美的代码。结果当然不尽如人意——开发者不敢merge,因为AI的产出和他们的预期不一致。

Stripe最终的解决方案是建立一个新的心智模型:把AI当作一个"刚入职的、技术很强但不懂业务的新工程师"。新工程师知道所有编程语言,但不知道你的代码库架构、不理解你的业务逻辑、不了解你们团队的做事方式。你需要给他上下文——指向文档、展示示例代码、解释架构模式。

这个心智模型改变了一切。工程师不再给AI模糊的指令然后期待魔法,而是学会了提供充分的上下文:项目结构说明、业务规则描述、架构约定、代码规范。AI产出质量大幅提升,merge的信心也随之增强。

上下文对齐的三个层面

Stripe的经验揭示了一个关键认知:AI代码不敢merge,问题不在AI的能力,在于上下文是否充分对齐。这个对齐需要覆盖三个层面:

业务上下文:AI需要理解这段代码解决什么业务问题。不是"写一个用户注册接口",而是"写一个用户注册接口,注册成功后发送欢迎邮件,邮件发送失败不阻塞注册流程,密码使用BCrypt加密,用户名长度3-20字符"。

架构上下文:AI需要理解项目的分层约定和设计模式。Controller不写业务逻辑,Service不直接返回Entity,Repository不跨模块调用。这些约定不告诉AI,它可能按通用最佳实践写代码,但和你的项目风格不一致。

质量上下文:AI需要知道项目的质量底线。是否要求所有公开方法写单元测试?是否禁止使用@Autowired字段注入?是否要求所有异常都通过@ControllerAdvice统一处理?这些规范不明确,AI的产出就可能踩到团队的雷区。

传统AI编码助手的上下文局限

通用AI编码助手(Copilot、Cursor、Claude Code)在上下文对齐方面做了不少工作。Cursor 2.0引入了SKILL.md技能文件和rules规则声明,Claude Code通过CLAUDE.md项目指导文件提供持久化上下文。

但这些方案的共同局限是:上下文对齐依赖开发者手动维护你需要手写CLAUDE.md或SKILL.md,告诉AI项目的架构、规范和约定。每次项目结构变化,这些文件也需要同步更新。实际上,很多团队根本没有时间维护这些文件,AI的上下文对齐就变成了"有则好、无则忍"的状态。

更深层的问题是:即使上下文文件写得很完善,AI在生成代码后,开发者仍然需要确认"AI是否真的理解了这些上下文"。这个确认过程本身就是一种心智负担——你需要逐行审查代码,判断每一处实现是否符合你在上下文文件中描述的约定。

把判断力前移:从"事后审查"到"事前确认"

解决"不敢merge"问题的另一个思路,是把判断节点从"代码生成之后"前移到"代码生成之前"。

传统AI编码助手的工作流程是:开发者给指令 → AI直接生成代码 → 开发者审查代码 → merge或打回。判断发生在最后一步,成本最高——代码已经写完了,如果方向不对,返工成本很大。

飞算JavaAI的5步智能引导采用了不同的流程:开发者输入需求 → AI拆解子任务 → 开发者确认 → AI设计接口 → 开发者确认 → AI设计表结构 → 开发者确认 → AI生成处理逻辑 → 开发者确认 → AI生成源码。

每个关键节点都有一次确认机会。开发者不需要在代码生成后判断"AI是否理解了业务意图",而是在代码生成前,通过确认AI的接口设计、表结构、处理逻辑来确保方向正确。

这种方式的信任建立逻辑是:不是让AI生成更好的代码让你敢merge,而是让AI在每个决策点都经过你的确认,让你对最终代码有"参与感"。你审查的不再是"AI写的代码",而是"你确认过设计后、由AI实现的代码"。信任自然建立。

merge的勇气来自流程而非代码

回到最初的问题:AI写的代码不敢merge,怎么办?

答案不是让AI写更好的代码,也不是让开发者更仔细地审查代码。而是建立一个让信任自然产生的流程

这个流程需要满足三个条件:

  1. 上下文在代码生成前就对齐:不是写完代码再检查是否符合业务意图,而是在设计阶段就确认AI理解了需求
  2. 判断节点前移:在接口设计、表结构、处理逻辑等关键决策点设置确认环节,而不是只在最终代码审查时判断
  3. 质量保障自动化:编译错误、安全漏洞、规范违规由工具自动扫描和修复,开发者只需聚焦业务逻辑审查

当这三个条件满足时,merge不再需要"勇气"——因为代码的每个环节都经过了你的确认,质量保障由工具自动完成,你审查的焦点只剩业务逻辑正确性。

结语

AI写的代码不敢merge,表面上看是代码质量问题,实际上是流程问题。

Stripe的"AI是新工程师"心智模型和飞算JavaAI的"5步确认点"设计,从不同角度指向同一个结论:信任来自上下文对齐和流程设计,而非代码本身的质量

通用编码助手擅长快速生成代码,但在上下文对齐和判断前移方面仍有局限。对于"不敢merge"的团队来说,真正需要解决的不是"AI代码够不够好",而是"有没有一个流程,让开发者在代码生成前就建立信心"。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。