---
layout: post.njk
source: https://yage.ai/share/mai-thinking-1-agentic-engineering-20260603.html
speaker: yage.ai
title: vibe coding 之后：AI 编程的工业化
date: '2026-06-03'
summary: AI编程工业化的核心在于训练基础设施的进化。MAI通过从GitHub海量PR中筛选高质量训练题目，并构建多层判分体系（Reward信号），实现了考卷生成与评分的流水线化，解决了AI编程Agent训练的数据与反馈瓶颈，而非仅仅依赖模型能力的简单提升。
area: tech-engineering
category: ai-application
tags:
  - ai-programming
  - coding-agent
  - training-infrastructure
  - rl-training
  - agentic-engineering
people: []
companies_orgs:
  - microsoft-ai
  - github
  - zhipu-ai
products_models:
  - mai-thinking-1
  - cursor
  - swe-bench
  - glm-5
media_books: []
draft: true
status: evergreen
---

> MAI 从 487 万个开源 PR 里筛出了 26.5
> 万道可训练题目，又为它们建了一套三层判分体系。这个过程的工业化，才是 AI
> 编程这两年真正发生的转变。
> MAI-Thinking-1 深度解读 · 第三篇（共三篇）

· [1] 训练大模型不是造火箭，是攀岩
· [2] 让模型思考不难，让它持续思考才难
· [3] vibe coding 之后：AI 编程的工业化（本篇）

两年前，如果你让 AI 写代码，场景是这样的。打开
Cursor，用自然语言描述你要什么，AI
生成一段代码。你复制粘贴，跑一下，改一改，行了。大家管这个叫”vibe
coding”：你给出一个 vibe（感觉），AI 吐出代码。

现在呢？打开 GitHub，找到一个 issue。把 issue 描述粘贴给一个 coding
agent。Agent 自己 clone
仓库，自己读代码，自己改文件，自己跑测试，测试挂了就自己修，直到测试全绿。

这两年发生了什么？

大多数人会说”模型能力变强了”。数字没错。但这个解释漏掉了一件更有意思的事。AI
编程真正的变化不在模型里，它发生在一个更不性感的地方：训练基础设施的工业化。

这是 MAI-Thinking-1 深度解读的第三篇。第一篇讨论了 MAI 的
pre-training 哲学：攀爬机器、Efficiency
Gain、看趋势不是看点。第二篇讨论了它的 RL
训练纪律：恒温器、断路器和自蒸馏。本篇讨论最后一件事，训练所用的题目和评分信号是怎么被工业化地构建出来的。

在进入具体数字之前，先理解这套系统为什么重要。agentic
训练的核心是一个反馈循环：模型在一个环境里执行动作（写代码、跑测试、调用工具），环境给出一个
reward
信号（做对了还是做错了，做得好还是不好），模型根据这个信号调整自己，然后进入下一轮。环境是模型的老师，reward
是老师的评语。老师越多、评语越准，模型学得越快。

MAI
做的事，是把”生产老师”和”标准化评语”从手工活变成了流水线。下面先看这张考卷长什么样，再看它是怎么被批量生产出来的。

## 一张能自动批改的考卷长什么样

在理解 MAI 做了什么之前，需要一个锚点。

SWE-bench 的每一道题，本质上是三层东西套在一起。最里面是一个 Docker
容器，装着有一个 bug 的代码仓库。中间是一套测试，修好 bug
之后这些测试会全绿通过。最外面是一个判分逻辑，测试全绿就算你过关。

这就是一张标准化的考试卷：有题目（bug），有答题区域（代码仓库），有标准答案（测试全绿），有阅卷规则（跑了测试看结果）。你把模型扔进这张卷子里，让它自己挣扎。

SWE-bench 本身是评估用的，里面一共只有几千道题。但 RL
训练需要的东西，结构跟它完全一样：一个可执行的环境，加上一套判分逻辑。区别只在规模：评估用几千道就够了，训练需要几十万道。MAI
做的事，就是从 GitHub 上工业化地生产这些训练用的题目。

如果想用这种卷子来大规模训练一个 coding
agent，你需要多少道题？不是十道，不是一百道，是几万道。这些卷子从哪来？

## 26.5 万道题是怎么”炼”出来的

MAI 的答案是：从 GitHub 里炼。

具体数字是这样的：先从 GitHub 上抓出 487 万个已经合并的 PR，每个 PR
对应一个 issue 描述。理论上，每一个这样的 PR 都是一张潜在的考试卷。issue
是题目描述，代码 diff 是标准答案，通过的测试是判分依据。

但”潜在”跟”真能用”之间，隔了三刀。

第一刀砍的是能不能跑起来。你的这个 PR 能不能被装进一个 Docker
沙箱里，用正确的依赖和工具链让它执行？MAI 用自动化流程去试。487
万里面，208 万通过了这一刀。先砍掉将近六成。

第二刀砍的是能不能判分。环境跑起来了，不代表你能给模型一个明确的判分信号。测试全绿还是没绿？这个评判标准必须跟
PR 原文的诉求严格对应，不能因为环境里其他无关的东西挂了就误判。208
万里面，74.5 万通过了这个步骤。又砍掉六成多。

第三刀砍的是能不能在训练环境里稳定运行。训练沙箱比验证环境严苛得多。网络被切断。git
history 被擦除。commit hash、PR 编号、discussion
链接被清洗。所有非确定性的行为被排除。同一张考卷在不同时间跑，结果必须一样。74.5
万里面，最终 26.5 万通过了全部三道关卡。

487 万进去，26.5
万出来。5.5%。每得到一张可用的考试卷，背后有十八张废卷被扔掉。

这个 5.5%
的产出率，就是”工业化”的成本。环境不是从天上掉下来的，是被筛出来的工业品。

## 为什么考场上不能有网络

第三刀里藏着一个非常关键的问题。这些考试卷都来自 GitHub 上的公开
PR。如果模型在训练时能连上互联网，它可以直接搜到原始
PR。不靠推理，靠搜索，直接抄答案。

MAI
的应对不止是断网。他们清洗了整个沙箱里的每一个可能暴露答案的线索。commit
hash 删了。PR 编号删了。原始 repo 的引用删了。discussion
链接删了。剩下来的是一段干净的”题目描述加上一套测试”，没有东南西北。

这件事说明了一个微妙但非常重要的点。环境设计和奖励信号设计不是分开的两步工序。它们是围绕”防止作弊”这个诉求被绑定在一起的同一件事。在工业化的训练流程里，出题和防作弊是一体两面。

## 二十六万道题，每一道都要打分

构建环境只是工业化的一半。另一半是打分：模型在沙箱里折腾完，你拿什么告诉它做对了还是做错了？

对于 SWE 类任务，答案是单测。全绿就是对了。MAI 的 26.5
万道题，大部分都是这种结构：你写代码改
bug，测试全绿算过关。这种叫”可验证奖励信号”，确定、干净、不用人审。

但 agentic
训练里还有一类更复杂的任务：工具使用。比如说，给模型一个数据库和一组工具，让它”查询所有在过去三个月内购买超过
500
美元的客户”。模型需要决定用哪个工具、传什么参数、怎么组合多次查询。最后返回一个结果列表。你怎么判这个列表是不是对的？

MAI 为这类任务建了一套三层判分体系。

第一层是环境特定的判分脚本。每个任务环境自带一个
grader，它检查最终状态对不对、调用的工具对不对、返回的结果对不对。这和单测是一个逻辑，只是检查的内容从”代码能不能编译”变成了”工具调用流程是否合理”。

第二层是一个 AI
裁判。它把复杂的工具使用任务拆成几个子任务，逐个子任务打分，最后汇总。比如说，“查询过去三个月”是一个子任务，“金额超过
500
美元”是另一个，“返回正确格式的列表”是第三个。每个子任务单独判，不会因为一个环节出错就全盘否定。多次判分取平均，减少单次判断的随机误差。

第三层是一个用人类偏好数据专门训练出来的奖励模型。这个模型不判”对错”，判”好不好”。同样是查到了正确的客户列表，有的查询用了一次工具调用，有的用了五次。答案都对，但效率不一样。奖励模型负责在这种”都对”的情况里，告诉模型哪个写法更值得被鼓励。

三层合在一起：可验证信号保证确定性判断，AI
裁判保证任务覆盖率，奖励模型保证质量偏好。RL
训练时，三者的权重根据任务类型动态调整。

这套判分体系在绝大多数场景下是够用的。但它有一个盲区。

## 什么样的题目最难批改

MAI
的三层判分体系能覆盖后端代码和工具使用。但有一类任务，三层都够不到。前端。一个按钮长什么样，单测不知道。布局有没有崩，单测不知道。响应式断点是不是裂开了，单测不知道。

这也是为什么你会注意到一个现象：有些 AI
模型写出的前端代码格外好看、交互格外流畅，另一些模型写的虽然功能对，但界面就是”差了点意思”。这个差距不是天生的。是训练的时候决定的。

训练一个会写前端代码的模型，和训练一个会写”好看”的前端代码的模型，用的是同一种算法，但用的是不同的
reward 信号。如果你的 reward
信号只有”单测全绿”，模型只会在意功能正确性，不会在意视觉质量。如果你在
reward
信号里加了一层视觉检查——按钮对不对、布局崩不崩、交互通不通——模型才会在训练中学会这些东西。

GLM-5 里有一个叫 Agent-as-a-Judge
的系统，把这种视觉检查做成了自动化。每一个生成的前端项目先确认能 build
通过，然后被部署到一个预览页面。一个多模态 agent
在浏览器里打开页面，模拟人类的视觉和交互检查流程。这套 agent judge
的判定跟人类专业评审比对过，在可接受的范围内。

这个案例的价值不在 GLM-5
这个具体的实现上。它说明了一件事：以前被认为只能靠人来干的评审工位，可以被自动化。一旦被自动化，就可以大规模地塞进
RL 训练里。模型不是天生会写好看的前端，是你用什么样的 reward
信号训练它，它就被塑造成什么样子。

## 一个考场就够了

把”出题”和”批改”这两件事放在一起看，才能理解这两年 AI
编程到底被改变了什么。

“出题”被工业化了。一个训练环境不再是一个工程师手写的一行
prompt，而是一张自动生成的考卷，带着确定性的判分信号。MAI
的漏斗告诉我们，从 GitHub 上 4.87M PR 里炼出 26.5
万张这种考卷，需要三道质检，每一步砍掉六成以上。训练的规模由你能产出多少张这种考卷决定。

“批改”也被工业化了，而且它的工业化决定了模型输出的品相。如果你只用单测做
reward，模型只学会写功能正确的代码。如果你在 reward
里加了工具使用效率的判分，模型学会写更简洁的代码。如果你在 reward
里加了前端视觉质量的判断，模型学会写更好看的界面。reward
信号的丰富程度，就是模型输出品质的上限。

两件事背后是同一条逻辑：agentic engineering
的瓶颈不在模型本身，在训练基础设施。出题的质量和数量决定模型能练多少，批改的精度和维度决定模型能练得多好。这两件事都不是新的，但把它们从手工活变成流水线，才是最近两年真正发生的变化。

做一个比喻来收束。把 agentic engineering
看成一个自动化考场。两年前你有一个会写代码的学生，但没有考卷，也没有阅卷老师。考试卷的生产线建起来了，批改的流水线也搭好了。你有了几十万道题，每道题的评分标准不是”能跑就行”。单测能跑是底线，工具使用效率是及格线，视觉和交互质量是优秀线。这些标准不是评估时加进去的，是训练时就写进
reward
信号里的。模型不是在考场上考得好，是在备战时就被训练成了你想要的样子。

两年间的真正变化，不是那个学生变聪明了。是它周围那套东西第一次被从零开始搭建完成了。

## 知道看什么了

下次看到一个 coding agent 刷了 SWE-bench
新高，先别问”它用了什么模型”。问三个问题。

第一，训练环境从哪里来。是人手工写的几十道题，还是从真实仓库里工业化筛出来的？筛选用了什么漏斗？每一步砍掉了多少？

第二，奖励信号是什么。单测全绿就够了，还是有个 agent
在浏览器里帮你看了前端？

第三，防作弊做了吗。模型能上网吗？能搜到标准答案吗？沙箱里的 git
history 和 PR 引用清理干净了没有？

这三个问题跟模型本身的架构没有关系。但它们决定了你看到的那一串
benchmark
分数，是不是被训练基础设施撑起来的。学会了问这三个问题，你就学会了区分”模型会写代码”和”有人帮它把考场搭好了”。

本文基于 Microsoft AI 的 MAI-Thinking-1
技术报告和智谱 AI 的 GLM-5 技术报告，均发布于
2026 年。