|

让 Agent 长时间自主工作前,先把验收关卡设计好:5 步搭建可执行验证闭环

让 Agent 长时间自主工作前,先把验收关卡设计好:5 步搭建可执行验证闭环

作者注:本文用 5 个步骤讲清如何设计 Agent 验收关卡,让长时间运行的智能体有明确的终点、可靠的反馈和可控的成本。

Agent 连续运行几小时甚至几天后,交回来的结果看似完整,却没人敢直接合入,这是很多开发团队遇到的难题。本文将介绍 Agent 验收关卡的 5 步设计法,帮助你在启动长任务之前,把“做完”定义成机器可以反复检查的标准。

2026 年 10 月 27 日,CentOS 创始人之一 Gregory Kurtzer 公布了 Ginux 项目。据报道,他在 11 天内主要依靠一个持续运行的 Codex 任务,留下约 13.9 万行代码,让这款独立内核启动 Rocky Linux 10 并运行 systemd。有人追问他如何把跑偏的 Agent 拉回正轨,他的回答很简单:关卡设得多。

这不是又一篇提示词技巧合集,本文关注的是长任务真正依赖的工程结构:目标、关卡、证据、回归和停止条件。

核心价值:读完本文,你将能为自己的项目写出一套 Agent 验收关卡,并判断哪些环节交给机器,哪些决定必须留给人。

design-acceptance-gates-for-long-running-agents-image-0


Agent 验收关卡核心要点

Agent 验收关卡是一组预先定义、可以重复执行的检查点。它告诉 Agent 当前结果是否达标,也告诉人类哪些证据值得审查。

要点 说明 价值
验收标准前置 启动长任务前写清楚终点和阶段目标 减少 Agent 用局部成功代替整体完成
关卡可执行 用命令、脚本、CI 或真实运行结果判定 Agent 无需等待人工即可自行迭代
检查系统行为 关注程序实际运行时的表现 发现“看起来可信”的错误输出
人机分层负责 人定架构与验收,Agent 做实现与回归 人不再成为循环中最慢的环节
预算可控 提前设定失败次数、用量和暂停条件 避免长任务在错误方向上持续消耗

Ginux 案例中的 Agent 验收关卡

Kurtzer 没有把“写一个内核”直接交给 Agent,而是选择了 Linux 用户空间程序能否运行、systemd 能否启动这样的硬性关卡。systemd 依赖大量系统组件,又是启动和运行整个系统的核心进程,因此很适合用来检验内核是否真的可用。

这个项目运行在两个相互配合的循环中。外部循环由人主导,从愿景、架构与约束、验收关卡,一直到审查实际行为并决定修正或验收;内部循环由 Agent 完成,反复执行实现、构建并在 QEMU 中运行、测量分析故障、修订和回归测试。

Kurtzer 还特别提醒,许多故障会产生很可信的输出,实际却违反语义、隔离要求或生命周期行为。如果缺少关卡,最后很容易得到表面能运行、结构却很薄弱的代码。

为什么 Agent 验收关卡要自动运行

Cursor 工程师 Lauren Tan 也把验证视为使用 Agent 时最重要的技能。她所说的验证,包括让 Agent 真正运行代码、采集 CPU 跟踪或堆快照、打开 iOS 模拟器,并按用户的方式操作应用。

她公开称自己每月可以把 4000 个 PR 合入生产环境。即使每个 PR 只由人检查 5 分钟,累计也要约 333 小时,所以这种规模下的检查系统必须能在无人介入时运行。这个极端案例存在不少争议,但它说明了一个普通团队同样适用的道理:Agent 能检查自己的输出,才能持续工作;不能检查时,它只能把 diff 交给你然后停下。

design-acceptance-gates-for-long-running-agents-image-1

配图中的双循环可以直接迁移到日常项目。如果想用不同模型分别承担实现与审查,可以通过 API易 apiyi.com 接入,再把模型调用纳入内部循环。


Agent 验收关卡快速上手:5 步设计法

下面用一个常见任务作为示例:让 Agent 把一个旧版 REST 服务迁移到新框架,并保持现有客户端不受影响。你可以把示例中的检查项替换成自己项目的构建、测试和部署流程。

第 1 步:为 Agent 验收关卡定义系统级终点

先写一句可以被观察的话,用来描述任务结束时系统应当发生什么。“完成服务迁移”过于模糊,“使用同一批回放请求,新旧服务的状态码和关键响应字段保持一致”则可以被验证。

好的终点通常来自真实使用路径。Ginux 的终点是 Rocky Linux 10 运行到 systemd 的 multi-user.target,Web 应用的终点可以是核心用户流程跑通,数据任务的终点可以是输出结果与基准数据集一致。

第 2 步:把 Agent 验收关卡拆成五层

单一的最终测试反馈太慢,Agent 失败后也很难定位问题。建议按照运行成本从低到高设置关卡,让便宜的检查先拦住明显错误。

关卡层级 检查内容 示例 失败后的动作
L1 静态约束 格式、类型、依赖边界 禁止模块交叉导入 Agent 立即修复
L2 单元行为 函数和模块逻辑 核心单元测试 Agent 定位并修复
L3 集成契约 接口、数据库、外部依赖 接口契约测试 Agent 对比差异后修订
L4 系统运行 完整服务的真实行为 启动服务并回放请求 Agent 收集日志和性能数据
L5 人工验收 架构、风险和业务取舍 审查证据包并决定是否合入 人给出新约束或停止任务

Lauren Tan 的 Dune 架构提供了 L1 的极端例子。她通过 600 多个 PR 重构项目,并用 CI 校验依赖图,确保 Electron 的 main 和 renderer 目录不会交叉导入,同时禁用 useEffect、禁止写注释。这些规则未必适合你的代码库,但把团队约束写成自动检查的做法值得借鉴。

design-acceptance-gates-for-long-running-agents-image-2

第 3 步:把 Agent 验收关卡写成可执行卡片

每道关卡都应该有一张简短的卡片,放在 Agent 启动时能读取的项目文档中。卡片写清楚后,Agent 不需要猜测“什么叫通过”,人也能据此追溯证据。

字段 填写要求 服务迁移示例
关卡名称 用行为命名 回放请求一致性
运行环境 固定版本和依赖 隔离测试环境,使用固定数据快照
执行入口 提供一条明确命令 make gate-replay(示例命令)
通过判据 使用可比较的结果 状态码和关键字段全部一致
证据产物 保存可复查的文件 差异报告、服务日志、性能记录
保护规则 标明不可修改的内容 验收样本和判定脚本只读
失败策略 说明下一步动作 同一错误连续 3 轮未解决则暂停

其中,保护规则最容易被忽略。Agent 倾向于选择眼前最省事的路径,如果它能修改验收样本或放宽判定脚本,测试结果就会失去意义。建议把这部分放在受保护目录,并在 CI 中检查相关变更。

第 4 步:让 Agent 验收关卡进入自动回归循环

把内部循环写进任务说明:先完成一个小改动,运行当前层级关卡,读取失败证据,修订后再运行之前已经通过的关卡。这里的回归很重要,否则 Agent 修好一处后,可能会悄悄破坏另一处。

每轮结束时,让 Agent 记录改动内容、运行的关卡、结果和未解决问题。长任务的上下文会不断增长,这份记录能帮助后续会话快速恢复状态,也便于人类判断它是在持续推进还是原地打转。

验收关卡还要防范“假通过”。下面几种情况在长时间运行时尤其常见:

假通过类型 典型表现 对应防线
测试被修改 失败用例被删除或判定被放宽 验收文件只读,CI 检查变更
只测试快乐路径 正常请求通过,异常场景崩溃 增加故障注入和边界样本
模拟替代真实依赖 Mock 全绿,集成环境失败 L4 必须运行真实服务
输出像对但语义错 日志完整,生命周期行为错误 比较状态、时序和副作用
局部成功掩盖风险 单项指标提升,整体稳定性下降 每个里程碑运行全量回归

第 5 步:为 Agent 验收关卡设置人工决策点和停止条件

人的工作应集中在 Agent 难以替代的判断上。Kurtzer 负责架构、Linux 兼容性目标、操作模型、故障解读和停止决定;在对 Agent 生成的代码不满意时,他甚至会关掉 IDE,克制亲手修改的冲动,转而提供新的指引。

建议至少设置三类暂停条件:同一关卡多轮失败、Agent 试图改动受保护内容、任务用量接近预算。暂停后的审查重点也应前移到证据包,先看系统行为和风险,再决定是否深入阅读 diff。

快速上手建议:先选一个能在一天内完成的小里程碑,只写 3 到 5 张关卡卡片。API易 apiyi.com 提供本文涉及的 GPT、Claude 等系列模型的 API 调用,并兼容 OpenAI 与 Anthropic 接口格式,现有工具通常只需按文档调整接口地址和密钥,具体可用型号可在 API易 价格页确认。


Agent 验收关卡如何改变长任务成本

长任务的成本不能只看“一共用了多少 token”。报道中提到,Cursor 主页统计的 token 至少包含普通输入、模型输出、缓存写入和缓存读取四类,价格差异很大。社区曾用同一份 1.5 万亿 token 用量估算账单,不同算法的结果相差甚远,主要分歧就来自计费口径和缓存占比。

计费项 长任务中的主要来源 控制方法 价格口径
普通输入 任务说明、日志、代码片段 只传失败相关证据 以 API易 价格页实际数据为准
模型输出 代码、分析和修订计划 限定每轮输出范围 以 API易 价格页实际数据为准
缓存写入 新增或变化的稳定上下文 保持项目规则结构稳定 以 API易 价格页实际数据为准
缓存读取 多轮复用的上下文 观察命中情况,避免频繁改动前缀 以 API易 价格页实际数据为准

公开案例的总费用可以用来理解项目规模,但不能直接换算成单价。Ginux 的 API 调用费报道约为 8000 美元,Nicholas Carlini 用 16 个并行 Claude 智能体构建 C 编译器的实验约花费 2 万美元。这些数字背后的模型、缓存和任务结构都不同,你的项目仍需单独测算。

更稳妥的做法是先跑一个完整里程碑,记录四类 token 用量和关卡失败次数,再按 API易 价格页 https://docs.apiyi.com/models 的当前数据计算。这样得到的预算来自自己的任务形态,比直接套用别人的平均单价更可靠。

design-acceptance-gates-for-long-running-agents-image-3

上图想说明的是,关卡本身也会消耗资源,但它能把失败提前暴露。对于普通团队,目标应是用有限预算换取足够的置信度,而不是追求每个改动都运行最昂贵的完整验证。


Agent 验收关卡常见问题 FAQ

Q1:什么是 Agent 验收关卡?

它是预先定义的可执行检查点,用于判断 Agent 的阶段成果是否达标。一个完整的关卡包含运行环境、执行入口、通过判据、证据产物和失败策略。

Q2:Agent 验收关卡和普通 CI 有什么区别?

CI 是常见的执行载体,验收关卡则是更完整的任务控制设计。它除了判断代码能否通过测试,还要定义系统行为、证据、回归范围、人工决策点和暂停条件。

Q3:什么时候必须设计 Agent 验收关卡?

当任务需要多轮修改、跨多个模块、运行时间较长,或者错误输出不易肉眼发现时,就应该提前设计。一次性的小脚本可以简化,但至少也要明确一条可运行的验证方式。

Q4:有了 Agent 验收关卡,还需要人工 Code Review 吗?

需要。自动关卡适合判断已知标准,人类仍要负责架构选择、风险取舍和最终验收。Kurtzer 也强调,判断结果是否完整、局部成功是否带来系统级风险时,经验依然至关重要。

Q5:如何通过 API 接入模型来运行这套流程?

1. 在 API易 apiyi.com 注册并创建 API Key。
2. 查阅文档中心 `docs.apiyi.com`,确认接口地址和调用方式。
3. 根据工具选择 OpenAI 或 Anthropic 接口格式完成配置。
4. 在 `https://docs.apiyi.com/models` 确认模型型号和价格后,再启动小规模试跑。

Q6:预算有限时,怎样精简 Agent 验收关卡?

优先保留低成本的 L1 和 L2 关卡,让它们在每轮运行;L3 和 L4 放到功能完成或里程碑节点执行。Jellyfish 对 1.2 万名开发者的统计显示,典型用户每月约使用 5100 万 token,与极端案例差距巨大,因此应根据任务风险确定验证频率。模型费用请以 API易 价格页实际数据为准。

Q7:Agent 验收关卡有哪些局限?

关卡只能覆盖被定义的风险,测试全绿也不等于代码适合长期维护。Ginux 能够启动 Rocky Linux 10,距离生产级内核仍有很长的路,硬件支持、接口稳定、安全审查和社区维护都不是一次运行能证明的。社区对高频 PR 模式的批评也提醒我们,要持续关注代码的可维护性。


Agent 验收关卡核心要点 Key Takeaways

  • 先定义终点:用可观察的系统行为描述任务完成,避免模糊目标。
  • 关卡要分层:从静态约束逐步推进到真实运行和人工验收。
  • 证据要留存:每次运行都保存日志、差异报告和性能记录。
  • 判定不可改:验收样本和脚本应受保护,防止 Agent 走捷径。
  • 回归常态化:修复新问题后,重新运行已通过的相关关卡。
  • 人类掌握决策:架构、风险、停止和最终验收由负责人判断。
  • 成本先试跑:通过 API易 apiyi.com 小规模验证,再按价格页测算预算。

总结:从 Agent 验收关卡开始构建自主工作流

Agent 能否长时间自主工作,取决于它是否拥有清晰的目标和可靠的反馈。设计 Agent 验收关卡时,可以牢记三点:

  1. 把“完成”变成可执行标准:让 Agent 依靠运行结果判断进度。
  2. 让机器处理高频验证:用分层关卡、自动回归和证据包缩短反馈周期。
  3. 把关键判断留给人:由负责人决定架构方向、风险边界和停止时机。

建议从下一个中等规模任务开始,先写关卡卡片,再启动 Agent。需要测试不同模型时,可以通过 API易 apiyi.com 使用兼容 OpenAI 与 Anthropic 格式的接口完成接入,配置方法见文档中心 docs.apiyi.com,模型价格和计费口径以 https://docs.apiyi.com/models 的实际数据为准。


📚 参考资料

  1. InfoQ – Ginux 项目报道:Codex 构建 Linux 兼容内核的过程与验收方式
  2. 链接: infoq.cn/article/OiyNEtFwV05opvsLTcvK
  3. 说明:包含 HDAE 双循环、项目规模和局限性分析

  4. InfoQ – Cursor 工程师 token 账单报道:高强度 Agent 工作流与成本争议

  5. 链接: infoq.cn/article/q9iebpvFozfy4bgCYUyE
  6. 说明:包含验证闭环、Dune 架构和社区批评

  7. Ginux 技术报告:Gregory Kurtzer 发布的项目技术报告

  8. 链接: zenodo.org/records/23682548
  9. 说明:适合深入了解研究目标、方法和结果边界

  10. Ginux GitHub 仓库:项目源码

  11. 链接: github.com/gmkurtzer/ginux
  12. 说明:可查看项目代码和开源许可信息

  13. API易文档与价格页:接口配置和模型价格说明

  14. 文档链接: docs.apiyi.com
  15. 价格链接: https://docs.apiyi.com/models
  16. 说明:模型型号、价格和计费口径请以页面实际数据为准

作者:APIYI 技术团队
技术交流:欢迎访问 API易 apiyi.com 与我们交流 Agent 工程实践,更多接入资料可查阅 docs.apiyi.com 文档中心。

类似文章