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_dataafter_datadiff_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 删数据时被弹窗拦下来是什么样子。

相关推荐
Gl�ria1 小时前
Linux 查看日志常用命令
java·linux·servlet
差不多的周周1 小时前
《MoChat:面向多转弯动作理解和描述的关节分组时空接地多通道大语言模型》论文核心部分详解
人工智能·深度学习·机器学习·计算机视觉·语言模型·自然语言处理
jimmyleeee1 小时前
大模型安全之七:LLM系统提示词泄露
人工智能·安全
RobinDevNotes1 小时前
为什么AI训练工程师都要懂NCCL
人工智能
! 冰封雪莲 !1 小时前
站房“智慧大脑” | Smart ET2000 污染源自动监控数智终端
大数据·人工智能·万维盈创·ai环境大数据
葡萄城技术团队1 小时前
不会写 SUMIFS 也能做汇总?用 SpreadJS AI 生成并解释 Excel 公式
人工智能·excel
武子康1 小时前
同一份长文问两次,SGLang 怎样少算一遍
人工智能·llm·agent
用户5274675614211 小时前
为什么 retry() 不是 Agent 的恢复策略
人工智能
蜘蛛小助理1 小时前
AI 自动推导业务自动化规则实战教程|多维表格低代码自动化落地
大数据·人工智能·低代码·自动化·多维表格·蜘蛛表格