对抗式开发的核心是通过 Generator(生成)、Evaluator(评估)、Planner(规划)三个专职 Agent 的闭环协作,实现从需求到高质量交付的自动化迭代。Generator 严格依据规格实现代码,Evaluator 使用 Playwright 进行真实应用测试并基于 Rubric 评分,Planner 则负责将模糊需求转化为明确规格与验收标准。这种模式将传统的“编码-测试-修复”循环自动化、结构化,显著提升了 AI 辅助编程的交付质量与效率。
对抗式开发与多 Agent 构建:GAN Generator、Evaluator 与 Planner 的闭环协作
在 AI 辅助编程中,单轮对话式生成的代码质量往往难以保证。为了实现稳定、高质量的自动化交付,需要一套结构化的多 Agent 协作体系。Everything Claude Code 的 GAN(Generative Adversarial Network)风格 Harness 正是为此设计,其核心由三个 Agent 构成闭环:GAN Planner、GAN Generator 和 GAN Evaluator。它们分别承担规划、实现与评估的职责,通过自动化循环持续优化产品,直至达到预设质量门控。
一、对抗式开发循环的核心角色
一个完整的对抗式开发循环始于需求,终于高质量产出。每个 Agent 在其中扮演不可替代的角色。
1. GAN Planner:从模糊需求到明确规格
Planner 是整个闭环的起点。它接收一行需求或简单描述,通过深度分析将其扩展为一份结构化的产品规格文档(spec.md)。这份文档不仅包含功能列表,更关键的是定义了详细的验收标准和评分权重,即 Rubric。Rubric 是后续 Evaluator 评测的唯一依据,通常涵盖设计、原创性、工艺、功能性等维度,并为每个维度设定权重(例如设计 30%,功能性 20%)。
输入: 一行自然语言需求描述。
输出: gan-harness/spec.md 和 gan-harness/eval-rubric.md。
2. GAN Generator:规格驱动的实现与迭代
Generator 是实现者。它的唯一任务就是严格按照 spec.md 中的描述编写代码。完成首轮实现后,它会启动本地开发服务器(如 npm run dev),并将当前状态记录到 gan-generator/generator-state.md 中。在收到 Evaluator 的反馈后,它会逐项修正所有问题,提交新的代码版本,然后再次等待评估。Generator 不能自我评判质量,也不能跳过任何反馈项,确保了实现的客观性。
输入: spec.md、eval-rubric.md、以及来自 Evaluator 的反馈文件。
输出: 可运行的项目代码、generator-state.md。
3. GAN Evaluator:基于真实交互的量化评估
Evaluator 是质量守门员。它使用 Playwright 直接操作 Generator 启动的开发服务器,模拟真实用户行为进行端到端测试。测试范围覆盖功能正确性、边界条件、响应式布局、视觉一致性、可访问性等。测试完成后,它严格按照 Planner 定义的 Rubric 逐项打分,并加权计算总分。如果总分低于阈值,则判定为 FAIL,并生成一份详细的结构化反馈报告(feedback-NNN.md),报告中会列出 Critical Issues、Major Issues、改进建议,并附上关键截图。这份报告是驱动 Generator 下一轮迭代的核心指令。
输入: 运行中的应用、eval-rubric.md。
输出: 结构化评估报告、截图等测试工件。
二、分步操作指南:构建一个完整的 GAN 闭环
以下步骤展示了如何配置并运行一个基本的对抗式开发循环。
步骤 1:环境准备与规划
首先,确保项目根目录下创建了 gan-harness/ 目录。然后,向 Planner Agent 提出你的需求。
示例 Prompt:
需求:构建一个简单的任务清单 Web 应用,支持任务的添加、删除和标记完成。界面需简洁现代,移动端适配良好。
Planner 会生成两个关键文件:
gan-harness/spec.md:详细描述应用的功能点、页面结构、交互逻辑。gan-harness/eval-rubric.md:定义评分标准,例如:| Criterion | Weight | |----------------|--------| | Design Quality | 0.3 | | Functionality | 0.4 | | Craft | 0.3 |
步骤 2:触发 Generator 进行首轮实现
Planner 完成后,GAN Harness 会自动或手动触发 Generator Agent。Generator 读取 spec.md,开始编写代码。它可能会执行如下命令初始化项目并启动服务:
npx create-react-app@latest todo-app --template typescript
cd todo-app
npm install tailwindcss
npm run dev
然后,它会根据规格实现所有功能,并在完成后更新 gan-generator/generator-state.md。
步骤 3:Evaluator 进行自动化测试与评分
Generator 启动 dev server(例如 http://localhost:3000)后,Evaluator 自动接管。它执行一系列 Playwright 命令:
await page.goto('http://localhost:3000');
await page.fill('[data-testid="new-task-input"]', 'Buy milk');
await page.click('[data-testid="add-task-button"]');
await expect(page.locator('[data-testid="task-item"]')).toBeVisible();
它测试所有功能,包括添加空任务、超长任务名等边界情况。测试结束后,生成 gan-harness/feedback/feedback-001.md。
步骤 4:Generator 根据反馈迭代
Generator 读取 feedback-001.md,发现一条 Critical Issue:“输入超长任务名时,界面布局错乱”。它会定位代码,修复 CSS 的 overflow 和 word-break 属性,然后提交代码:
git commit -am "fix: prevent long task name from breaking layout"
同时,更新 generator-state.md,记录本次变更。
步骤 5:循环直至达标
Evaluator 再次进行评估。如果上次的问题已修复,报告中会出现“What Improved Since Last Iteration”。如果总分(例如 7.0/10)达到预设的通过阈值(例如 7.0),则标记为 PASS,循环结束。否则,Generator 将继续根据新的反馈进行修复。
完整对话流程示例
开发者: 请为“在线Markdown编辑器”需求启动GAN循环。
Planner: 已生成 spec.md 和 eval-rubric.md。核心功能:实时预览、工具栏、本地存储。
Generator: [自动] 读取 spec,完成首轮实现,dev server 运行在 localhost:3000。
Evaluator: [自动] 测试完成。总分 5.8/10 (FAIL)。关键问题:1. 保存按钮无反馈;2. 预览区与编辑区滚动不同步。报告已生成。
Generator: [自动] 读取 feedback-001.md,修复保存按钮的Toast提示,并同步滚动事件。提交代码。
Evaluator: [自动] 再次测试。总分 7.2/10 (PASS)。所有Critical Issues已解决。
循环结束,交付质量达标的代码与完整评估报告。
三、多 Agent 协作的优势与集成场景
这种专职 Agent 闭环协作模式,相比直接使用通用 AI 助手,具有显著优势:
- 职责分离,质量可控:每个 Agent 专注单一领域,避免了“既当运动员又当裁判”的问题。Evaluator 的客观评分基于真实交互,杜绝了代码层面“看起来不错”的主观判断。
- 全流程可追溯:从规格、代码变更、测试报告到反馈,所有产物均结构化存储,便于代码审查、问题回溯和团队协作。
- 无缝集成 DevOps:生成的评估报告包含标准测试结果和工件(截图/视频),可以轻松集成到 CI/CD 流水线中,作为质量门控。
build-error-resolver等 Agent 还能在构建失败时自动介入修复。 - 领域专业化延伸:这个 GAN 闭环是通用模式。针对特定技术栈,可以引入更专业的 Agent,例如使用 C++ Build Resolver 自动修复 CMake 和链接器错误,或使用 Dart Build Resolver 处理
dart analyze和 pub 依赖冲突,确保整个开发-构建-测试流程的稳定。
这种多 Agent 体系是 Everything Claude Code 生产级插件生态的核心体现,旨在将“架构先行、契约驱动”的工程纪律应用于 AI 编程场景,帮助开发者和团队从模糊的“vibe coding”转向可控、高效、高质量的自动化交付。更深入的 Agent 协作与工程模式,可以参考 Everything Claude Code 完全指南 以及 成本控制与对抗验证 一文。
FAQ
Q: GAN Generator 和 Evaluator 之间如何确保信息同步?
A: 两个 Agent 通过读写 gan-harness/ 目录下的标准化文件进行通信。Generator 输出 generator-state.md,Evaluator 输入运行中的应用并输出 feedback-NNN.md。文件路径和格式是预设的契约,确保了协作的自动化。
Q: 如果项目没有前端 UI,只有 API,这个流程还适用吗?
A: 适用。Evaluator 会切换到 “code-only” 模式,不进行 Playwright 浏览器测试,而是专注于运行单元测试、集成测试,并分析代码质量、API 响应是否符合 spec.md 中的契约定义,同样会基于 Rubric 进行评分。