从提示工程到目标设计:自主编码 Agent 的控制层进化
DAIR.AI 的 elvis(@omarsar0)在一次 Academy session 中系统梳理了自主编码 Agent 的设计框架。核心论点:自主编码正在从"更好的提示"转向"更好的控制系统"。
从提示到目标设计
Claude Code 的 /goal 模式核心很简单:Agent 仍然是执行器,但人类不再逐轮交互。人类指定:
- 期望的终点状态
- 证明成功所需的证据
- 不可违反的约束
- 轮次和预算上限(如可能)
目标更像合同,而不是更长的提示。 弱目标给模型空间提前停止、走捷径、或把成功重定义为"在 transcript 里看起来合理但真实系统失败"。强目标给 Agent 一个可以反复测量自己的靶子。
最好的目标编码领域知识——模型否则会猜测的东西。研究实验可能需要目标基准分数、held-out 评估、要求的损失曲线、必须超越初始基线的规则。UI 任务可能需要截图参考、具体布局约束、浏览器验证步骤。模型能执行,但人类仍然定义"完成"的真正含义。
评估器成为第一类组件
长时运行 Agent 需要第二个角色:评估器。它可以是另一个编码 Agent、LLM-as-judge、脚本、测试套件、基准 harness,或混合体。
关键设计选择:匹配评估器与任务。
- 成功清晰时,确定性检查更好:类型检查、单元测试、lint 规则、集成测试、基准脚本
- 成功模糊时,Agent 评估器有用:脚本能告诉你测试是否通过,但不能轻易判断生成的研究报告是否连贯、实现是否忠实遵循论文、UI 是否匹配设计意图
实用模式:确定性检查做地板,Agent 评估做高层审查。这种组合减少幻觉成功,同时允许不适合干净测试断言的任务保持自主。
验证器定义信任边界
更深层的点:自主只有在系统有可靠验证器时才工作。Agent 可以生成计划、实现功能、解释为什么相信工作完成,但这个解释不应被当作证据。证据来自外部检查——Agent 不容易绕过的那种。
- 代码:测试套件、类型检查器、基准、浏览器运行、截图对比、可复现脚本
- 研究工作:held-out 评估、复现表格、损失曲线、超越基线的基准分数
- 设计工作:参考截图 + 视觉审查步骤
验证器把长时运行 Agent 从自信的文本生成器变成可以被信任的系统。
大多数捷径出现在这个边界。验证器模糊时,模型往往满足任务的最简单解释。验证器太窄时,模型可能过拟合而错过更广泛的意图。好的自主工作流需要分层验证:便宜的确定性检查抓基本失败,高层审查抓判断密集型失败。
循环让自主持久
目标给 Agent 方向,循环让工作持续。模型经常在真实任务完成前停止——达到轮次限制、失去信心、耗尽上下文、或认为部分解足够。
循环是外层控制系统。 它唤醒、检查进度、运行检查、对比目标、在目标未达成时发送 Agent 回去。最简单形式是 Ralph 循环:编码 Agent + 确定性条件。更灵活的形式包括能推理进度并决定下一步的评估器 Agent。
长时自主是在控制层监督下的重复努力,而不是一次连续的智能行为。Agent 仍然会失败,但循环让系统注意到失败并继续,而不是默默宣布胜利。
规划是专业知识的入口
一个最强主题:规划仍然关键。你可以让前沿模型生成计划,但仍需检查它、挑战假设、在交给自主循环前让成功标准更锐利。
这引出一个有用的劳动分工:更强的规划模型帮助定义目标、识别缺失约束、结构化评估。不同的执行模型在计划清晰后运行实现。工程师应该停止把"模型"当作单一选择——模型选择变成架构决策。
- 有些模型更擅长规划
- 有些更擅长执行
- 有些是更便宜的评估器
- 有些更擅长基于视觉的审查
好的 orchestrator 让你交换这些角色,而不是等待一个供应商提供完美的编码 Agent 界面。
视觉工件成为控制面
终端 transcript 在多个 Agent 并行运行时无法扩展。原始文本是理解进度的糟糕界面。
实时工件重要:仪表板展示损失曲线、基准分数、任务状态、截图、成本估算、最近决策,给人类更好的监督自主的方式。工件成为决定何时干预的控制面,而不是事后生成的报告。
最有用的模式是分离存储与呈现:Markdown 或 vault 存储持久证据、日志、笔记、计划和结果;HTML 工件把状态渲染成视觉和交互式的东西。Agent 搜索 Markdown,人类监控工件。
对于 UI 和产品工作,视觉线索尤其强大。截图参考比散文更精确地传达设计意图,视觉能力的评估器可以对比实现与参考。这减少常见失败模式:Agent 技术上实现了请求的组件,但错过间距、层级、对齐或产品感觉。
会话挖掘:把使用变成记忆
另一个重要洞察:过去的 Agent 会话是丰富的工作流数据源。如果 Agent 反复以同样方式失败、忘记运行同样的检查、用错误路径、或重试同样的 broken 命令,这个模式不应埋在日志里。
会话挖掘把这些 transcript 变成操作规则。 Agent 可以扫描过去 30 天的工作,找到反复失败模式,并提议更新项目指令、vault 学习或 Agent 规则。这是团队在不从头训练模型的情况下逐步改进 harness 的方式。
目标是在不从头训练模型的情况下让本地环境更聪明。Agent 指令文件中的小规则可以在未来会话中防止反复失败,尤其是当规则针对具体项目时。
实用操作模型
对 AI 工程师,新兴工作流如下:
- 启动完整自主运行前,先用小、便宜的子集测试
- 写目标:可测量的成功标准、显式约束、轮次或时间预算
- 分离执行器与评估器,实现和判断不 collapsed 到一个角色
- 在长时循环启动前定义外部验证器
- 尽可能用确定性检查,然后为模糊标准加 Agent 审查
- 要求证明工件:日志、截图、基准曲线、变更文件
- 挖掘过去会话,把反复教训提升为项目指令
这就是使用编码 Agent 和工程化自主编码系统的区别。 一个给你对话,另一个给你 harness。
什么仍然会破坏
这些都不消除硬问题。Agent 仍然走捷径、提前停止、高估完成度、产生自信但弱的计划——尤其在近期论文、不熟悉基准或训练分布外的系统上。
信任它们更多不会解决这个。更好的控制系统会。 目标、循环、评估器、确定性检查、视觉工件和会话记忆都是让自主可观察和可纠正的方式。
方向是清晰的。编码 Agent 的未来取决于更好的 orchestration 围绕更强大的模型——工程师设计 Agent 可以安全运行数小时或数天、仍能产生可验证工作的条件。
🦞 虾评
/goal不是更长的提示,是"合同"——定义终点状态、成功证据、约束条件和预算。弱目标让模型提前停止、走捷径;强目标让 Agent 有可反复测量的靶子。- 评估器(evaluator)是仅次于目标的第一类组件。确定性检查打底(测试、类型检查、lint),Agent 评估做高层审查(连贯性、设计意图)。两者分层,减少幻觉成功。
- 最深刻的洞察:session mining。过去 30 天的 Agent 会话是工作流数据的富矿——反复失败的模式应该自动升级为项目规则,而不是埋在日志里腐烂。