AI 写完 100 万行代码没人 Review,我做了一件事:把 AI 写的代码管起来了

第一条:Bun 1.4 重写,11 天,100 万行代码,Jarred Sumner 搭了个 Agent 框架让 AI 自己并行写。Token 烧了 16.5 万美金。

第二条:DHH 接受 Lex 采访,说他最近两个月开发 Omarchy Linux,"没有亲手写过一行上线代码",全是 AI 写的,他只负责审架构、看关键代码、定问题。

第三条更扎心:腾讯工程师任磊达披露,AI 一天写了 4.4 万行代码,27 轮 Review 后发现 193 个问题,最终决定------不合并。

一边是产能爆炸,一边是审不过来。这条缝里,卡着我们所有人接下来两年的活。


我以前也迷信产能

去年我让 Cursor 帮我写过一个内部审批模块,AI 半小时出了 3000 行。我看着爽,赶紧合并上线。

一周后生产环境崩了。

查日志:有个字段被 AI 写成了 user_id,但业务里叫 applicant_id。前端传参没问题,SQL 也没问题,可数据就是插不进去。

翻提交记录,那一行在的。翻 Review,我自己点的 Approve。没人发现问题,因为没人真看。

这跟 Bun 那 4.4 万行 27 轮 Review 是一回事------人根本看不过来那么多代码,但生产环境会真跑。


后来我做了一件事

我没去追"AI 怎么写得更好"。我开始追"AI 写完之后怎么管"。

开源框架 ForgeAdmin 里正好有一堆现成的机制,我把它们穿起来了。一共四层,从下往上:

第一层:所有操作留痕

sys_operation_log 表里有几个字段是后来加的:before_data、after_data、diff_data------分别是"改之前的数据、改之后的数据、差异"。

迁移脚本叫 V1.0.14__enhance_operation_log_page_audit.sql,注释第一条写着:"复用 sys_operation_log,不新建并行审计表,避免日志查询和导出链路分叉。"

代码里注解就这么用:

复制代码

不管这行代码是 AI 写的还是我手写的,调用一次就留一条。改的字段、改前值、改后值、谁改的、在哪个页面、用什么方法请求的,全在 diff_data 里。

这条解决了 Bun 4.4 万行代码 193 个问题里最常见的一类:改了不该改的东西。


第二层:看不见的别想动

光留痕不够。AI 写代码最爱用一条假设:"用户能看到啥我就改啥"。

但实际不是这样。销售只能改自己订单,主管能改全部门,老板能改全公司。

forge-starter-datascope 拦截器干这事------同一个 SQL 进去,不同用户出来不同结果。Mapper 方法名配白名单,SQL 自动追加 WHERE。

复制代码

AI 写这条 SQL 时,不需要知道用户是销售还是主管。它只管写"列出订单",剩下的交给拦截器。

这一层解决的是:Bun 那 11 天 100 万行里只要有几行越权代码,AI 就敢跑出生产事故。


第三层:AI 重试不能扣两次款

AI 调用接口有个毛病:失败就重试。一晚上扣 8000 次款的事我听过。

@Idempotent 注解三种策略:

  • STRICT --- 重复请求直接拒绝
  • RETURN_CACHE --- 重复请求返回上次结果
  • TOKEN_REQUIRED --- 必须带幂等 Token,先取后用
复制代码

这条防的不是人,是 AI。 人不会重复点 30 次付款,AI 会。


第四层:AI 想改敏感数据,先来人审批

这条最狠。

ForgeAdmin 跑 MCP Server,AI 调我的"删除客户"、"发起退款"这些高危动作时,必须先触发 Elicitation------也就是弹一个确认框给人点。

代码里这是硬性校验,连"忘配"都不行:

复制代码

(出自 CapabilityGrantService.java 第 230 行,校验不通过直接抛异常注册失败)

AI 想删客户?对不起,先让真人点一下"我同意删除"。

高危审批完还有一个工具能查状态,叫 capability.approval.get------AI 想确认"我刚才申请的那笔删除批下来没",就走这个查,不再发新请求。

这一层解决的是 Bun 那 27 轮 Review 里最难搞的一类:AI 自己测自己通过,但生产一跑就出大事。


这套还能再补一层

底层还有两个机制我在用:

  • AI Provider 配额 :AiProvider 表管着 openai / azure / dashscope / ollama 几个供应商,每个有 status、models 列表、defaultModel。一个挂了自动切,且每次调用都有 AiModelInvocationLog 记录
  • MCP 协议守卫 :ForgeMcpProtocolGuard 在启动期强制只允许 STREAMABLE 协议,禁止同时启用 stdio。错配直接抛异常

这两个不是给业务用的,是给"接 AI 的服务"用的底座。 不配这两层,AI 调你系统就裸奔。


我的反思

写完这套机制,我回头看 Bun 的 100 万行。

你说 Bun 那 100 万行牛不牛?牛。AI 写得快不快?快。Token 烧得值不值?看场景。

但你注意到没------Jarred Sumner 不是"用 AI 写代码",他是"搭了一套流水线让 AI 写代码"。他搭的是 Harness:调测试、设验证、循环 review。

搭 Harness 的活,从来没被 AI 取代过,以后也不会。

ForgeAdmin 做的就是这件事------不是和 AI 抢写代码,是给 AI 写代码这事搭一套脚手架。


结尾

扣 1:你想看这四层机制怎么落到具体代码里? 扣 2:你团队已经在用 AI Coding 了,遇到过最头疼的问题是什么?

框架开源地址(Gitee):https://gitee.com/ForgeLab/forge-admin GitHub:https://github.com/yaomindong1996/forge-admin 项目文档:http://www.dlforgelab.com:8084/forge-docs/ 在线演示:http://www.dlforgelab.com:8084/forge/login(admin / 123456) 演示站可以亲自点几下,感受 AI 删数据时被弹窗拦下来是什么样子。

相关推荐
一条破秋裤5 分钟前
Linux 线程创建:pthread_create 与基本回收
java·linux·运维
染指11108 分钟前
128.Agent-LangChain核心组件-中间件-调用模型的时候
人工智能·windows·中间件·langchain·agent
布吉岛的石头13 分钟前
Java 程序员第 49 阶段5:BERT 预训练目标 MLM+NSP 的工程含义
java·人工智能·深度学习·bert·transformer
玫瑰互动GEO21 分钟前
开发者学GEO优化:从算法基础到CoT推理链
大数据·人工智能·ai·geo·ai搜索·geo优化
Zentceh32 分钟前
安防监控夜视方案2026:AI全彩+边缘计算+云平台
图像处理·人工智能·科技·计算机视觉·车载系统·无人机·边缘计算
voipmaker35 分钟前
AI 赋能安防系统演进:从硬件单品到场景化融合调度架构
人工智能·ai·架构
做cv的小昊40 分钟前
【World Model】π0.5:a Vision-Language-Action Model with Open-World Generalization
人工智能·算法·机器学习·大模型·多模态·vla·世界模型
光锥智能1 小时前
具身智能数据,众包时代来了?
人工智能
大嘴皮猴儿1 小时前
2026年9月行业洞察:适合亚马逊跨境卖家的免费自动图片翻译平台
大数据·人工智能·跨境电商ai跨境翻译网站哪个好·ai图片翻译网站推荐·ai图片翻译工具哪个好
莪_幻尘1 小时前
Skill 体检:30 个 Skill 全凭感觉?体检器先自曝了 8 个“假 0 分
前端·人工智能·llm