构建真正交付价值的自主目标循环:从机械重试到认知闭环的工程实践
深度解析自主智能体循环的工程架构,揭示为何传统测试驱动循环在未知领域失效,详细拆解开发线束、双智能体分离、权威模型、三层循环架构等核心机制,提供从零构建可信自主迭代系统的完整方法论。
自主智能体循环的演进历程揭示了一个深刻的工程悖论:最早的循环几乎不配称为循环,它们只是给智能体一份计划,让它工作直到测试通过,再返回失败信息。这种模式在测试能够完整描述任务时行之有效,但一旦任务变成增长我们尚不理解的产品能力,它就彻底失效了。智能体持续在移动,但移动从来不是问题所在。测试只能保护我们已知的领域,而真正关键的失败往往潜伏在测试覆盖范围之外。一个界面看起来完工了却不存储任何数据,智能体给出正确答案却理由错误,评分器奖励用户根本不想要的行为。更多的轮次只会让这些失败变得更廉价、更快速。
在《收敛问题》一文中曾提出智能体拥有回合而人类拥有回合的观点,但未曾详述智能体在这两个边界之间需要什么。它需要一个线束,这条线束必须完成三件事:暴露真实失败、定位缺失能力、在会话结束后保留经验教训。这与仅靠重试提示词的智能体截然不同,它是一台完全不同的机器。研发过程中始终存在两个系统。显而易见的是功能本身,不那么显而易见却同等重要的,是决定智能体下一步该改什么的决策过程。我们必须同时工程化这两个系统。
开发线束的架构包含人类边界、循环控制器、开发智能体、仓库状态、正在开发的功能、产品智能体、产品表面、状态与效果、行为驱动器、评分器等核心组件。线束知道功能应该如何工作,产品智能体只接收用户会接收到的内容。开发智能体修改功能,驱动器通过用户会使用的同一表面接近功能,评分器读取发生了什么,控制器再从证据中选择下一个缺口。仓库状态将决策带入下一次会话。产品智能体通常将另一个智能体置于功能内部,这两个智能体必须严格分离。开发智能体知晓代码和预期结果,产品智能体获得全新对话且仅拥有产品暴露的工具。
若它们共享上下文,测试就毫无价值,因为产品智能体能凭借用户永远不会提供的知识而成功。同样的线束也能在没有产品智能体时工作,驱动器可以使用浏览器、API、命令或硬件模拟器。一切重要的东西都在提示词之外。提示词获得大部分关注是因为它易于查看,但循环更依赖于周围的世界。首先,线束需要可复现的起点。数据、服务、模型、环境、服务代码必须与记录的运行完全匹配。
重置应将系统返回该点,预检应证明它确实做到了。如果世界不健康,线束记录无分数。基础设施麻烦不是功能失败的证据,这一区分防止了大量虚假修复。缺失数据可能看起来像推理薄弱,陈旧代码可能看起来像契约破裂。其次,线束需要真实需求。我们使用一小批人类编写或批准的请求语料。
驱动器通过全新交互发送一条未经修改的请求,记录回答、工具调用、被拒动作、可见结果和持久化效果。效果最为关键。软件能描述正确动作却不执行,能渲染合理界面却不改变底层系统。提示词因此只是运行的众多输入之一。固定装置、代码版本、模型、契约、评分器应与它并列。缺少这些输入的分数只是一个数字。
每个循环都需要确定性地板。测试、验证器、模式、效果检查守护功能已赢得的行为。地板起步即绿,若转红,该回归即成为下一个任务。地板无法告诉我们下一步构建什么。为此,我们驱动真实请求并审视短板。某些短板支持机械评分,另一些需要截图、重复采样或懂业务的人。
这些信号可能嘈杂。一次完美运行证明成功可能,却很难说明成功可靠。信号选择方向,地板保存既往进步。这种分离让循环保持诚实。新能力能在不抹去身后路径的情况下推动产品前进。一旦世界与度量存在,回合本身就很简单。
恢复固定装置并检查运行系统,运行确定性地板,通过全新交互发送一条批准请求,收集行为、可见结果和持久化效果,分类最大缺口,通过每个必需层级关闭该缺口,为该行为添加确定性检查,再次发送同一请求并记录结果。一个缺口不等于一个文件,它意味着一个因果主张。缺失能力可能跨越数据模型、工具契约、运行时、智能体指令、界面和效果检查。回合应关闭这条完整路径:请求到表示到操作到持久化效果到可见证明。部分路径制造最令人信服的失败。界面存在却无数据产生,工具返回成功却状态未变。
一条从请求到效果的窄而通的路径,胜过五层未完成的可能性。分类步骤防止随机修复。症状可能属于世界、领域、契约、运行时、引导、表面或线束。没有这一步,每个智能体失败都变成提示词问题,每个视觉失败都变成前端问题。循环改动最近的东西而非正确的东西。改动单一因果缺口也使结果可归因。
若一回合改动五个独立杠杆,没人知道该保留哪条经验。评分器是威胁模型的一部分。自主循环会优化它能触及的任何度量,包括坏的度量。因此线束需要权威模型。我们的模型有三层:自由文件是正常实现杠杆,循环可在指定范围内改动和度量它们;提议文件跨越边界,循环可记录证据并建议变更,但由人决定;冻结文件定义考试,包含批准语料、固定装置、现有阶梯、评分规则、判断量规。权威向度量收敛,智能体权威随之递减。
循环可改产品,不可改决定产品是否改进的证据。循环可为观察到的失败添加回归检查,不可削弱现有检查或降低阈值。它也不可在同一回合改动产品杠杆和该杠杆的度量,否则就是给自己的修复打分。习得的评判者需要同等保护。视觉评判者保持为证据,直到其排名与重复人工排名一致。这限制了循环权威,却让结果可信。
第二个循环改进第一个。每个产品回合也在测试线束。驱动器可能隐藏失败,固定装置可能遗漏必要案例,评分器可能惩罚正确行为,流程可能两次浪费同一小时。我们每回合结束时问一个问题:什么耗费了本可由规则或检查预防的时间?首次发生成为证据,重复摩擦可改变驱动器、事实或固定程序。自我改进发生在循环将特定失败提升为耐用约束时。它不在每次惊讶后重写操作系统。
有时正确的改动是减法。虚假警告或误导性阶梯教会循环避开良好行为。实际上有三个不同速度运行的循环。产品循环每回合关闭一项能力。线束循环在重复证据暴露研发失败时改变。方向循环位于两者之外。
人读一批证据,决定继续、重定向或停止。内循环改进产品,外循环决定流程与方向是否该变。保持循环分离至关重要。开发智能体可提议新方向,不可决定自己的结果够好。仓库是控制平面。这一切不能只活在当下对话里。
智能体会话结束、上下文压缩、下次会话在无旧推理的情况下开始。我们在 goals 目录下保存一个小包:goal.md 存目标、排除项、完成条件;facts.md 存后续回合不得重新发现的决策;plan.md 存初始地板和预期能力顺序;LOOP.md 存程序、权威、预算、停止规则;STATE.md 存当前队列、失败、下一行动;corpus 存批准请求;rounds 存提示词、输出、分数、截图、决策。LOOP.md 在流程变更时改变,STATE.md 每回合后改变。这种区分让会话可丢弃而不让工作健忘。新智能体读取目标、程序、状态、证据,再从同一决策继续。这不仅是上下文保存。
文件让研发过程可被审视。我们能看到循环为何选该缺口、哪些证据支撑改动、下一次运行是否改进了同一请求。人仍决定何时足够。我们以小批次运行内循环。三回合通常产生足够决策证据,又不给系统留漂移空间。在边界,人选择继续队列、重定向下一批或停止。
循环在无法复现或归因失败时更早停止,也在世界不健康或修复需冻结变更时停止。这就是收敛帖子里的人类拥有的回合。智能体拥有其中的轮次。边界存在是因为分数无法决定产品方向。大多数工单不需要这些。若完整测试描述了工作,给智能体测试让它完成即可。
线束在用途必须揭示能力序列时赚回成本。系统还必须暴露线束可观测的效果。从三个请求、一个固定装置、一条评分命令、一个循环文件、一个状态文件、三回合预算开始。只在失败证明必要时添加新控制。智能体循环的质量不在于运行多久或产生多少提交。而在于一回合后留下了什么。
好的回合留下工作的能力、证明其工作的证据、和不再为同一教训买单的线束。那是值得独自面对复杂功能的智能体循环。 。