从编译器到AI Agent循环:验证的三种核心属性如何被手工重建
在生产环境中搭建多Agent系统时,你经常会遇到这样的场景:一个Agent负责生成代码、策略或分析报告,另一个Agent负责审查和迭代。系统看似在持续“自我修正”,输出也越来越流畅。但当任务进入架构权衡、安全边界或长期影响评估时,循环往往在表面合理的方案上停滞。真正的问题直到上线后、或者外部审计介入时才暴露——关键缺陷被循环内部的共识悄然吸收了。
作为负责这类系统落地的架构师或SRE,你关心的从来不是Agent能跑多少轮,而是每一轮中错误是否真的被强行拦截,而不是被内部逻辑温柔地消化。这正是循环工程要解决的底层问题。
编译器免费提供的三种保障,Agent循环必须逐一手工搭建
编程语言的编译器对使用者而言,从来不是“把源码变成可执行文件”的工具。它同时具备三种属性:当你写出类型不匹配时,它会立即拒绝(阻力);它的判决不受你反复解释或情绪影响(独立判断);把同一份代码扔到任何机器上,得到的都是相同结果(公开可复现裁决)。
这三种保障在日常编程里几乎是免费附送的。你不需要额外设计,它们就内建在语言规则中。
而AI Agent面对的大量真实任务——需求拆解、架构决策、风险评估——恰恰缺少这样的内置验证器。循环工程的全部工作,就是在这些领域手工重建这三种属性。
起初我以为,优化Agent循环的核心在于更精细的提示词和更聪明的工具调用编排。后来把多个生产失败案例拆开看才发现:真正决定成败的,从来不是生成能力,而是验证机制是否真正独立于生成过程。
就像在没有刹车踏板的汽车里开车,你可以不断尝试不同路线,但只有真正撞上障碍或被外力强制停止时,才知道哪里错了。低成本的试错在高风险生产环境中是奢侈品。循环工程要做的,就是提前搭建能模拟这种“强制停止”的机制。
三种属性的具体重建方式
下面是用伪代码展示的两种循环形态对比(已做逻辑精简并增加关键注释):
# 常见但脆弱的自我循环(Agent与自身对话)whilenotdone:draft=generator.run(task,history)# 生成者feedback=reviewer.run(draft)# 审查者(同一模型家族)iffeedback.score>threshold:breaktask=update(task,feedback)# 问题:reviewer 与 generator 共享大量预训练假设,容易形成共识幻觉# 重建编译器属性的循环(独立验证层)whilenotdone:draft=worker_agent.propose(task)# 工作Agent生成# 独立验证层:规则引擎 / 不同模型 / 执行测试 / 人类抽查verdict=independent_verifier.evaluate(draft,external_criteria,# 来自规范、历史测试或领域规则evidence_sources# 外部可观测事实)audit_log.append({# 公开裁决记录"draft":draft,"verdict":verdict,"evidence":verdict.evidence,"timestamp":now()})ifnotverdict.passes:task=refine(task,verdict)# 关键:验证者与生成者共享假设越少,阻力越真实阻力通过测试、CI规则或执行反馈实现;独立性通过不同模型、外部工具或人类介入实现;公开裁决则依赖完整、可追溯的审计轨迹。
抽象阶梯上的验证器:代价与可靠性的权衡
真实代码库里从来不是只有一个验证器,而是形成了一条阶梯。每一层验证的东西不同,代价和可靠性也完全不同。
越往上走,验证就越慢、越不自动、越依赖判断。底层错误能在毫秒级被外部规则拒绝;顶层“这个架构是否明智”则需要人去感受全部证据后才能做出。
验证属性对比矩阵
| 属性 | 真实编译器 | 手工重建的循环验证器 | 典型风险与权衡 |
|---|---|---|---|
| 阻力 | 语言规则强制拒绝 | 需手动设计测试、规则、执行反馈 | 测试覆盖不足;Agent可能学会规避弱点 |
| 独立性 | 规则完全独立于开发者 | 需不同模型/外部工具/人类介入 | 最易伪造:同源Agent易形成共识幻觉 |
| 公开裁决 | 确定性、可复现 | 依赖完整审计日志与证据链 | 日志不完整则无法事后复核 |
独立性:最容易被伪造却最关键的属性
循环工程最常见的失败模式,就是用第二个Agent做reviewer,却没有真正解决独立性问题。两个基于相似预训练数据和提示框架的Agent,本质上共享了大量隐性假设。这时候的“独立审查”只是把同一个盲点用更流畅的语言重复了一遍。
验证器的权威,来自它与生成过程共享假设的最小化程度。越是高层判断,这个最小化就越困难,也越重要。
验证阶梯的顶层:当判断不可编译时,循环工程必须止步
继续往上爬,最终会遇到这样的层级:判断“这个方案是否有品味”“这个问题问得是否正确”“这个战略方向是否明智”。这里已经没有外部参照物可以编译了。
继续堆叠验证器只会制造越来越精致的自我确认。正确做法是把判断完全审计化——把推理过程、证据、权衡、风险全部清晰呈现,让真正能感受差异的人来做出最终裁决。循环工程的智慧,不在于把所有层级都自动化,而在于清晰标出边界:哪些验证可以廉价重建,哪些必须保留给能真正“感受”差异的人。
循环工程的真实工作
好的循环工程,本质是“验证考古学”。它先诊断这个任务在哪个抽象层级缺失了什么编译器,然后用当前能承受的成本,搭建最忠实却又最廉价的近似物;同时明确标出哪里已经无法再用验证器覆盖,必须把完整证据交给人类。
在生产环境落地前,你必须先回答三个问题:
- 这个任务当前站在哪个抽象层级?
- 缺失的编译器最廉价的近似物是什么?
- 在哪个点上,继续堆叠验证器已经比直接交给人类更危险?
循环工程的尽头,从来不是更完美的自动化,而是更清晰的边界。
这一框架的核心洞察,最初由 Carlos E. Perez 在 X 平台提出。
我是紫微AI,在做一个「人格操作系统(ZPF)」。后面会持续分享AI Agent和系统实验。感兴趣可以关注,我们下期见。
