线上 Agent 出现 badcase 后,团队通常要查日志、复现、归因、修改、评测和发布。每一步都合理,但只要依赖人跨平台搬运信息,迭代就会停在等待上。
此时,瓶颈已经从模型能力转向研发流程:整条链路仍按“人是默认执行者”设计。
业务 Agent 团队更缺一套迭代系统:它能自行执行、留下证据、接受约束,并在必要时停下来。
这篇文章讨论的 Loop,就是如何让 Agent 研发形成一个能自行执行、持续验证、受控停止的闭环。
一、先看完整的 Agent 研发流程
Agent 研发并不只是修改一段 Prompt。一个线上 Agent 的行为,通常由模型、Prompt、上下文、知识库、工具、工作流、权限和运行环境共同决定。
因此,一次看似简单的 badcase 修复,背后可能涉及下面这些步骤:
需求定义:明确问题、影响范围和成功标准方案规划:判断应该修改 Prompt、RAG、工具、流程还是模型开发集成:完成代码、配置、数据和评测用例变更隔离验证:在独立环境中部署候选版本并复现问题离线评测:检查收益、回归、安全、延迟和成本灰度部署:让少量真实流量验证候选版本线上观测:收集结果、轨迹、用户反馈和异常指标问题回流:把新的 badcase 加入下一轮分析与评测传统流程是一条由人推动的流水线。研发人员负责把上一步的结果搬到下一步,遇到异常再人工判断。只要其中一个平台只有 GUI、一个评测任务没有结构化结果、一次部署无法自动回滚,整条流水线就会停下来等人。
OpenAI 在 Harness Engineering 的实践中提到,随着 Agent 的执行能力提高,稀缺资源逐渐变成人的时间和注意力。团队需要让应用界面、日志、指标和测试都能被 Agent 直接读取和验证,而不是继续让人充当信息搬运工。OpenAI:Harness engineering
Anthropic 对 Agent 评测的总结也指出,没有评测体系时,团队很容易陷入被动修复:等线上投诉、人工复现、修一个问题,再祈祷没有引入新的回归。Anthropic:Demystifying evals for AI agents
Loop Engineering 做的事情,是把这条人工流水线改造成一个能持续运行的反馈闭环。
二、Loop要解决的是受控闭环
最简单的循环是“执行失败后再试一次”。它可以跑得很久,却未必会接近正确答案。
一个可用于生产环境的 Loop,至少要回答七个问题:
| 问题 | 需要沉淀的内容 |
|---|---|
| 为什么开始 | 触发信号、问题定义、业务影响 |
| 要做到什么 | 成功标准、护栏指标、停止条件 |
| 可以改什么 | 代码、Prompt、工具、知识库和配置边界 |
| 在哪里执行 | 独立分支、工作树、容器或虚拟机沙箱 |
| 如何证明有效 | 评测集、Judge、结果校验和对照版本 |
| 如何记住过程 | 计划、实验记录、差异报告、失败原因 |
| 何时需要人 | 高风险发布、指标冲突、低置信度归因 |
完整流程可以抽象为四个持续运转的部分:持续集成、持续评估、持续部署和持续反馈。
这张图能成立,要满足两个条件:每一步都能被机器调用,每一次判断都有可检查的依据。
如果缺少前者,Agent 只能给人提建议;如果缺少后者,Agent 只是在自动放大试错速度。
三、持续集成:让每次改动都可复现
传统 CI 关注代码能否编译、测试能否通过。Agent 的持续集成范围更大,因为影响行为的资产远不止代码。
建议将下面这些内容统一版本化:
运行资产: - 业务代码与工作流定义 - System Prompt与任务模板 - 工具描述、参数Schema和权限策略 - RAG检索配置、知识库版本和重排策略 - 模型名称、推理参数和上下文策略验证资产: - 评测数据集及切分版本 - Judge提示词、评分标准和模型版本 - 规则检查器与结果校验脚本 - 基线版本、护栏阈值和发布策略否则,团队看到“新版本提升了 3%”,却无法回答到底是哪段 Prompt、哪个 Judge、哪批数据和哪个模型共同产生了这个结果。
3.1 上下文要变成工程产物
长时间运行的 Agent 很容易丢失上下文。把所有信息留在聊天记录里,只能解决当前会话的问题,无法支持中断恢复、多人复核和跨 Agent 交接。
每轮迭代至少应该生成六类产物:
| 产物 | 回答的问题 |
|---|---|
| 需求卡 | 为什么要改,影响了谁 |
| 验收标准 | 什么结果算修好,什么情况不能上线 |
| 执行计划 | 准备修改什么,明确不修改什么 |
| 实验清单 | 使用了哪个版本、环境、数据集和 Judge |
| 修复举证 | 哪些 case 变好、哪些退化,原因是什么 |
| 发布记录 | 谁或什么策略批准上线,回滚点在哪里 |
一张合格的需求卡,不应该只写“优化回答质量”。它需要把模糊目标压缩成可验证的任务。
问题:用户要求生成固定字数内容时,Agent经常先追问,导致任务未完成影响范围: - 明确、低风险的内容生成任务 - 带字数、格式或角色约束的请求成功标准: - 任务完成率提高 - 字数与格式遵循率不下降 - 高风险或信息不足的请求仍能正确澄清禁止退化: - 不得取消必要的安全拒答 - 不得对所有请求都跳过澄清这样的上下文可以被分析 Agent、修复 Agent 和评测 Agent 分别读取。即使某个 Agent 的会话被压缩或任务中断,下一次也能从持久化状态继续,而不是重新猜测前因后果。
3.2 平台能力要从“给人用”改成“可编排”
如果部署、评测和日志查询只能点击网页,Agent 无法真正接管流程。需要把高频操作提供成 CLI、API、MCP 或 Skill,并满足几个基本条件:
- 输入和输出结构化,错误原因可被程序读取。
- 支持幂等调用,重复执行不会产生多个不可控任务。
- 长任务可以查询状态、取消和超时退出。
- 涉及生产的操作支持 dry-run、权限分级和审批。
- 每次调用都带上任务、实验、版本和操作者标识。
工具是否先进不是重点。真正影响 Loop 稳定性的,是 Agent 能不能知道“调用成功了吗、作用在哪个版本、失败后应该继续还是停止”。
四、隔离沙箱:允许Agent试错,但不能让错误外溢
自主迭代意味着 Agent 会修改文件、安装依赖、运行代码、部署服务,甚至调用内部数据。没有隔离环境,这些能力越强,风险越大。
可以按任务风险选择不同级别的隔离:
| 隔离方式 | 适用场景 | 主要边界 |
|---|---|---|
| 独立分支或工作树 | 只修改代码和Prompt | 文件冲突、版本回滚 |
| 独立容器 | 构建、单测、离线评测 | 进程、依赖、CPU和内存 |
| 微虚拟机或独立VM | 执行不可信代码、复杂工具链 | 内核、网络、文件系统 |
| 独立集群或专用节点 | 高敏数据、强合规任务 | 租户、凭证、网络和基础设施 |
E2B 使用按需 Linux 虚拟机为 Agent 提供隔离执行环境;Daytona 的沙箱提供独立内核、文件系统、网络栈和资源配额,也支持快照与恢复。E2B Documentation、Daytona Sandboxes
自建团队可以使用 Kubernetes 的 RuntimeClass,为不可信任务选择采用硬件虚拟化或用户态内核的运行时;Kubernetes 也明确说明,更强隔离会带来额外开销,需要按风险选择。Kubernetes RuntimeClass
一个实验沙箱通常需要以下边界:
生命周期:一轮实验一个环境,结束后销毁或归档代码:绑定指定分支和commit,不读取其他实验目录凭证:按任务临时签发,默认不能访问生产写接口网络:使用域名白名单,阻止任意外连和横向访问资源:限制CPU、内存、磁盘、Token、时长和重试次数数据:脱敏样本,按租户或任务隔离存储审计:保留命令、工具调用、文件差异、日志和评测结果沙箱还解决了一个效率问题:多个候选方案可以并行实验。分析 Agent 可以提出不同假设,编排 Agent 为每个假设创建独立环境,修复 Agent 分别实现,评测 Agent在相同数据集上比较结果。失败的环境直接销毁,通过的候选版本再进入发布流水线。
五、持续评估:从“一笔请求”找到“一类问题”
Agent 的一笔请求,不只是输入和最终回答。它还包含规划、检索、工具调用、环境变化、重试和最终状态。评测如果只看最后一句话,很容易把“说自己完成了”误判成“真的完成了”。
Anthropic 将完整执行记录称为 transcript 或 trace,将任务结束后的真实环境状态称为 outcome。对业务 Agent 来说,这两部分都要评。Anthropic:The structure of an evaluation
5.1 一笔请求应该怎么评
可以将单请求评测拆成四层:
| 层级 | 关注内容 | 适合的评测方式 |
|---|---|---|
| 结果层 | 任务是否真的完成 | 数据库状态、API结果、文件或业务指标校验 |
| 约束层 | 格式、安全、权限是否符合要求 | 规则、Schema、策略引擎 |
| 轨迹层 | 工具选择、参数、顺序和错误恢复 | Trace规则、轨迹Judge |
| 体验层 | 正确性、完整性、表达与帮助程度 | LLM-as-Judge、人工复核 |
一笔评测结果不宜只有一个总分。更实用的输出是结构化诊断:
request_id: req_1024task_success: 0constraint_score: 1.0trajectory_score: 0.4quality_score: 0.6latency_ms: 8200token_cost: 0.13failure_stage: tool_executionfailure_type: wrong_parameterresponsible_component: tool_schemaevidence: - Agent选择了正确工具,但时间范围参数为空 - 工具返回校验错误后,Agent重复调用了三次confidence: 0.88recommended_action: 修订工具参数说明并增加缺参恢复评测规则检查负责确定性的部分,结果校验负责“事情有没有办成”,Judge 处理需要语义判断的部分,人工则用于低置信度、高风险和校准样本。LangSmith 的评测实践也采用代码规则、LLM-as-Judge、成对比较和人工评审的组合,而不是让一种评分方法承担所有判断。LangSmith Evaluation
5.2 Judge也需要被评测
Judge 给出的不是天然真相。它可能受位置顺序、提示词、模型版本和输出长度影响,也可能把一种合理路径错判为失败。
上线前至少要做三件事:
- 用一批人工标注样本检查 Judge 与人的一致性。
- 对关键版本使用成对比较,直接判断 challenger 和 champion 谁更好。
- 定期抽取 Judge 高分、低分和低置信度样本,由业务专家复核。
如果 Judge 的评分标准发生变化,也要像代码一样留下版本。否则分数曲线改变时,团队无法区分是 Agent 变了,还是尺子变了。
5.3 从单请求归因到失败模式聚合
线上可能每天产生大量请求。逐条阅读只会重新回到人工瓶颈,Loop 需要把相似问题合并成可处理的“失败模式”。
一个实用的聚合流程是:
第一步:筛选 收集用户差评、任务失败、异常重试、超时和Judge低分请求第二步:归因 标注失败阶段、失败类型、责任组件、证据和置信度第三步:聚类 结合语义向量、工具轨迹和归因标签合并相似case第四步:排序 综合发生频率、业务严重度、修复成本和归因置信度第五步:生成任务 为高优先级模式生成需求卡、代表case和验收标准不要只看总体平均分。一个低频但会产生错误退款的 case,优先级可能高于一批措辞不够自然的回答。聚合后的排序应该体现业务损失,而不是只体现样本数量。
六、让评测驱动有效迭代
当修复 Agent 能看到所有题目、答案和评分理由时,它很容易走捷径:针对具体 case 增加硬编码规则,或者不断向 System Prompt 填补例外。
这会让评测分数上涨,却让系统越来越脆弱。
6.1 数据集需要承担不同职责
| 数据集 | 用途 | 修复Agent可见信息 |
|---|---|---|
| 分析集 | 理解失败、提出假设 | 输入、输出、Trace、评分和理由 |
| 验证集 | 判断方案是否泛化 | 汇总分和有限诊断 |
| 隐藏保留集 | 防止针对题目优化 | 仅由独立评测流程访问 |
| 回归集 | 保护已经稳定的能力 | 通过或失败及必要证据 |
| 安全集 | 检查越权、泄露和危险操作 | 仅安全守门流程访问 |
能力评测和回归评测也要分开。能力评测关注“现在还做不好的任务能否提高”,初始通过率可以较低;回归评测关注“过去已经做对的任务是否仍然稳定”,通过率应该接近团队设定的硬门槛。Anthropic 建议把逐渐成熟的能力题转入回归集,持续保护已有能力。Anthropic:Capability vs. regression evals
6.2 使用champion-challenger保留正确路径
自主迭代不应该让每一轮都从上一轮继续。上一轮可能已经退化,沿着它继续优化只会越走越偏。
更稳妥的方式是保留历史 champion:
champion:当前满足全部护栏的最佳版本challenger:本轮产生的候选版本晋升条件: - 核心任务指标达到最小有效提升 - 回归集和安全集不突破门槛 - 隐藏验证集没有过拟合信号 - 延迟、Token和调用成本在预算内 - 修复证据能够解释收益来自哪里challenger 失败后,下一轮重新从 champion 出发。这样既保留了探索空间,也避免错误策略成为新的起点。
由于模型输出存在随机性,关键任务还要重复运行。Anthropic 区分了 pass@k 和 pass^k:前者衡量多次尝试中至少成功一次的能力,后者衡量连续多次都成功的稳定性。面向用户的生产 Agent 往往更应该关注后者,因为用户不会因为系统“偶尔能做对”而满意。Anthropic:Non-determinism in agent evaluations
七、多Agent协同:按上下文边界拆,而不是按角色数量拆
把一个任务交给五个 Agent,不代表效率会提高。多 Agent 的价值主要来自三件事:隔离上下文、并行探索和独立验证。
7.1 上下文过长时,主Agent要从执行者变成控制面
长任务的问题不只在于超过上下文窗口。信息越积越多,早期的目标、约束和失败证据会被埋在大量日志与工具输出中。即使窗口还能装下,Agent 也可能开始重复分析、忘记边界,或者把已经否决的方案重新捡回来。
直接压缩整段对话可以缓解长度问题,却不能解决职责混杂。更稳的做法是让主 Agent 退出具体执行,只管理全局状态:
| 主Agent保留 | SubAgent负责 |
|---|---|
| 业务目标、成功标准和禁止项 | 阅读指定的一组Trace并完成归因 |
| 当前阶段、依赖关系和任务队列 | 修改限定目录中的Prompt或代码 |
| champion、候选版本和实验状态 | 运行一组评测并生成差异报告 |
| 总Token、时长、并发和重试预算 | 对一个候选方案做独立安全审查 |
| 任务是否继续、暂停或升级给人 | 返回证据,不替主Agent做全局决策 |
每个 SubAgent 一次只完成一个能验收的任务。“专注一件事”要落实到输入、输出和完成条件,专家名称本身没有约束力。任务包可以这样设计:
task_id: attribution_042parent_trace_id: loop_20260712_01agent_role: badcase_analystsingle_goal: 对指定30条失败Trace完成归因和聚类input_refs: - artifact://traces/batch_042.jsonl - artifact://rubrics/quality_v6.yamlrequired_output: schema: attribution_report_v2 location: artifact://reports/attribution_042.jsondone_when: - 每条Trace都有失败阶段、责任组件和证据 - 相似case已经聚类 - 低置信度case单独列出constraints: - 不修改Prompt和业务代码 - 不读取隐藏验证集budget: max_turns: 8 max_tool_calls: 20 max_output_tokens: 6000SubAgent 最好从干净上下文启动,只接收这份任务包和必要产物。完整历史仍保存在外部 Trace 与文件系统中,需要时按引用读取。这样既降低单个上下文的压力,也避免父 Agent 的猜测、情绪化结论或无关工具输出传给评测 Agent。
任务能否并行,要看依赖关系。多个独立候选方案可以并行;“先归因,再依据归因修复”必须串行。编排层应显式维护依赖图,不要让几个 Agent 在共享目录里边聊边猜下一步。
7.2 Agent身份是一份可执行的职责合同
“你是一名资深评测专家”只能影响模型语气,无法形成稳定边界。生产系统中的 Agent 身份需要同时定义职责、工具、记忆和权限。
agent_id: evaluator_v3identity_version: 3.2objective: 独立判断challenger能否替代championresponsibilities: - 运行指定评测集 - 检查收益、回归和过拟合 - 生成修复举证报告input_contract: - experiment_manifest_v2 - candidate_artifactoutput_contract: - evidence_report_v3 - release_recommendationtools: allow: [eval.run, eval.compare, trace.read] deny: [repo.write, prompt.edit, deploy.production]memory: read: [evaluation_rules, historical_baselines] write: [evaluation_results]escalate_when: - Judge与确定性校验冲突 - 指标收益和安全护栏冲突 - 输入产物缺少版本或来源身份卡要跟代码一起版本化。修改职责、工具或记忆范围,相当于修改一个服务的接口和权限,应该重新跑回归评测。
还要避免一个常见错误:几个 Agent 共用同一身份和同一组凭证,只是在名称上分别叫“分析师”“开发者”“评测员”。这种设计没有真正隔离能力。评测 Agent 不应拥有修改候选版本的权限,发布 Agent 也不应读取隐藏集后临时改 Prompt。职责分离只有落实到工具白名单、凭证和数据权限上才有效。
7.3 记忆要分层,也要有清理规则
上下文窗口只是 Agent 当前能看到的信息,不等于完整记忆。自主 Loop 需要把记忆拆开管理:
| 记忆层 | 保存内容 | 典型载体 | 生命周期 |
|---|---|---|---|
| 工作记忆 | 当前步骤、临时推理、最近工具结果 | Context Window | 当前SubAgent任务 |
| 任务状态 | 目标、计划、进度、依赖、预算、阻塞原因 | 状态文件、工作流数据库 | 当前Loop |
| 情节记忆 | 历史实验、失败路径、发布和回滚记录 | 实验库、Trace仓库 | 跨版本保留 |
| 语义与程序记忆 | 稳定业务知识、规范、评测方法和操作步骤 | 知识库、Skill、版本化文档 | 长期维护 |
主 Agent 恢复任务时,应该先读取任务状态,再按需检索历史实验。不要一启动就把所有旧对话、日志和知识文档塞进上下文。稳定规则可以进入 Skill,历史实验通过检索获取,原始 Trace 留在外部存储,需要举证时再展开。
记忆写入也要有门槛。未经验证的推测只能留在当前任务的分析记录中;已经通过评测或人工确认的结论,才有资格进入长期记忆。每条长期记忆至少保留来源、版本、适用范围、写入者和更新时间。
memory_id: lesson_tool_timeout_07type: episodiccontent: 连续轮询超时来自评测队列拥堵,不应修改业务Promptsource_refs: - trace://eval/20260711/8891 - incident://evaluation-platform/20260711verified_by: human_reviewapplies_to: evaluation_pipeline_v4expires_at: 2026-10-12过期策略同样重要。模型版本、接口参数和业务规则会变化,旧经验如果没有有效期和适用范围,可能比没有记忆更危险。删除、纠错和合并重复记忆应该成为日常维护动作。
多 Agent 共享状态时,可以使用“黑板”模式:各 Agent 读取同一任务状态,但只能写入自己负责的字段或产物。共享的应该是事实与状态,不是所有 Agent 的完整思考过程。
7.4 Agent之间传什么,比使用哪个协议更重要
多 Agent 系统经常把 A2A、MCP 和 ACP 混在一起。它们解决的不是同一个问题:
| 协议或契约 | 主要连接对象 | 适合解决的问题 |
|---|---|---|
| 内部消息契约 | 同一编排系统中的Agent和任务节点 | 结构化分工、状态流转、幂等和审计 |
| A2A | 不同框架、服务或组织中的独立Agent | 能力发现、任务委托、进度更新和结果交付 |
| MCP | Agent应用与工具、资源、Prompt服务 | 读取上下文、调用外部系统和执行动作 |
| ACP | IDE或客户端与编码Agent | 会话、终端输出及编辑器与Agent互操作 |
A2A 使用 Agent Card 描述能力,并以 Task、Message 和 Artifact 管理长任务、状态与结果。官方规范还特意区分了沟通消息和任务产物:Message 用来交互,真正的交付结果应保存为 Artifact。A2A Core Concepts
MCP 采用 Host、Client、Server 架构,通过 JSON-RPC 定义工具、资源、Prompt和通知,主要解决 Agent 如何连接外部能力。它不是多 Agent 任务编排器。MCP Architecture
本文中的 ACP 指 Agent Client Protocol,它定义 IDE、编辑器、CLI 等客户端如何接入编码 Agent。Agent Client Protocol 另一个曾使用 ACP 缩写的 Agent Communication Protocol 已在 Linux Foundation 体系下并入 A2A,讨论 Agent 间通信时优先使用 A2A 可以减少歧义。Linux Foundation:ACP merged with A2A
协议解决互操作,业务系统仍需要自己的消息契约。一个可追踪的交接消息至少要包含下面这些字段:
protocol_version: loop-message/2.0message_id: msg_8f20trace_id: loop_20260712_01idempotency_key: attribution_042_v1sender: orchestrator_v2receiver: badcase_analyst_v4task_type: failure_attributioncontext_summary: 工具缺参类失败在灰度版本中明显增加input_artifacts: - uri: artifact://traces/batch_042.jsonl sha256: 7ac9... access_scope: read_onceexpected_output: schema: attribution_report_v2 delivery: artifactpermissions: tools: [trace.read, report.write] data_scope: tenant_anonymizeddeadline: 2026-07-12T18:00:00+08:00callback: task://loop_20260712_01/events大文件、完整 Trace、代码差异和评测数据不要直接复制进消息。消息里保存摘要、URI、Schema、校验值和访问范围,接收方按需读取。这样能减少 Token 消耗,也避免同一份数据在多个 Agent 上下文中产生不同副本。
数据传输还要处理四件事:使用 Trace ID 串联全链路,用幂等键避免重复执行,用 Schema 做输入输出校验,用权限范围限制接收方能读到什么。认证凭证应走传输层或密钥系统,不要混进任务正文和长期记忆。
7.5 确定性任务应该逐渐退出Agent上下文
自主 Loop 运行一段时间后,团队通常会发现一些步骤已经完全确定:创建沙箱、部署指定 commit、轮询评测状态、计算分数、检查 JSON 格式、生成固定报表。这些任务继续交给模型,不会带来更好的判断,只会增加 Token、延迟和随机失败。
可以用下面这张表决定执行方式:
| 任务特征 | 执行方式 | 例子 |
|---|---|---|
| 输入明确、步骤固定、结果可精确校验 | 脚本或工作流节点 | 部署、轮询、汇总分数、Schema校验 |
| 目标明确但路径需要判断 | Agent调用脚本 | 选择评测集、根据异常决定是否重试 |
| 问题模糊、需要提出和比较假设 | Agent | badcase归因、修复策略、指标冲突分析 |
| 风险高且需要业务责任 | 人工或策略审批 | 扩大生产权限、全量发布、高风险操作 |
脚本化不等于把流程写死。它只是把已经确定的部分固化,让 Agent 把上下文用在真正需要判断的地方。
一次自主迭代: 1_编排Agent: 读取需求卡,选择下一项实验 2_部署脚本: 创建沙箱并部署指定commit 3_评测脚本: 发起任务、轮询状态、下载结果 4_分析Agent: 读取压缩报告,判断失败模式和下一步假设 5_统计脚本: 计算champion与challenger差异及置信区间 6_评测Agent: 检查修复举证和准出条件 7_发布脚本: 按已批准策略执行灰度或回滚脚本输出也要为 Agent 设计。与其返回几万行日志,不如先生成机器可读摘要,并保留原始日志引用:
status: failedstage: evaluation_pollingerror_code: QUEUE_TIMEOUTretryable: trueattempts: 2summary: 评测任务仍在排队,候选服务未出现异常raw_log: artifact://logs/eval_8891.logrecommended_next_action: 延迟重试,不修改候选版本Token 预算要进入编排状态,而不是等账单出来后再复盘。每个 Agent 都应有输入上下文、输出、工具调用、轮次和最长运行时间限制。稳定指令使用缓存或 Skill;历史资料按需检索;SubAgent 只接收当前任务包;脚本先压缩高噪声结果;连续几轮没有新证据时立即停止。
主 Agent 做全局判断时,也不需要读取每个 SubAgent 的完整过程。它只读取结论、证据引用、风险和建议动作。原始过程留给审计与争议复核。
7.6 用编排层管理分工、状态与权限
一套用于自主迭代的最小分工可以这样设计:
| Agent | 主要职责 | 不应拥有的权限 |
|---|---|---|
| 编排Agent | 管理状态、分发任务、判断下一步 | 不直接修改业务实现 |
| 分析Agent | 阅读Trace、归因、聚类、形成需求卡 | 不决定候选版本晋升 |
| 修复Agent | 修改代码、Prompt、工具或工作流 | 不读取隐藏验证集 |
| 评测Agent | 运行评测、比较版本、检查修复证据 | 不沿用修复Agent的推理上下文 |
| 发布Agent | 执行预发、灰度、监控和回滚策略 | 不绕过生产审批规则 |
Multica 这类产品提供了另一层能力:把 Agent 作为工作空间中的成员,允许任务分配、评论协作、队列管理和运行状态查看。其本地 daemon 可以领取任务并驱动 Codex、Claude Code 等本地编码工具。Multica Docs、How Multica works
但协作平台不等于完整的业务工作流引擎。截至 2026 年 7 月,Multica 社区仍有关于补充原生工作流编排的公开需求,包括顺序、条件分支、审批、失败重试和状态流转。Multica Workflow Orchestration Issue
因此,实际落地时可以把它放在“人和 Agent 的任务协作层”,下方仍然需要状态机、CI/CD、沙箱、评测平台和权限系统。LangGraph Supervisor 与 Microsoft Magentic orchestration 等方案更偏运行时协调。先定义状态、输入、输出、权限和停止条件,再选择框架,落地会顺得多。
八、持续部署:缩短可验证路径
候选版本通过离线评测后,仍然不能直接全量上线。离线数据无法完全覆盖真实用户、真实工具状态和实时业务环境。
一条适合 Agent 的持续部署路径可以分为五步:
提交检查: 运行静态规则、单测和小规模回归集预发回放: 在隔离环境回放脱敏的历史请求影子验证: 候选版本读取真实请求,但不影响用户和真实业务状态灰度放量: 按用户、租户、场景或风险等级逐步增加流量全量发布: 持续观察任务成功率、护栏指标、成本和异常分布GitHub Actions 的 deployment environments 支持按环境限制分支、保护密钥、增加审批和自定义部署保护规则。这类机制适合把评测、安全扫描或观测指标接到生产发布之前。GitHub Deployment Environments
发布策略需要区分风险:
| 变更类型 | 建议准出方式 |
|---|---|
| 文案和低风险Prompt微调 | 自动回归通过后小流量灰度 |
| 工具描述、检索和工作流变更 | 预发回放、影子流量、人工抽检 |
| 新增写操作或扩大权限 | 安全评审、双人审批、强制灰度 |
| 支付、删除、外发等高风险动作 | 人工确认或策略引擎逐笔授权 |
每次发布都要绑定回滚点。回滚触发条件应提前写入策略,例如任务成功率显著下降、危险操作出现、工具错误率突增、成本越过预算或 Judge 与用户反馈明显背离。
发布 Agent 只负责执行这些规则,不能在现场临时降低门槛。它的自主权来自预先批准的行动边界。
九、持续反馈:把线上流量变成下一轮评测资产
Agent 上线之后,真实请求会暴露离线数据没有覆盖的新问题。持续反馈要做的,是让这些信号自动进入下一轮,而不是沉在日志系统里等人发现。
线上信号通常来自四个方向:
- 用户主动反馈,包括差评、重试、改写和投诉。
- 系统结果,包括任务失败、业务状态不一致、工具异常和超时。
- 在线 Judge,对抽样 Trace 进行质量、安全和轨迹评分。
- 分布异常,包括某类请求突然增加、工具路径改变、Token 或延迟漂移。
LangSmith 将离线评测和在线评测连接为同一个反馈过程:生产 Trace 经过在线 evaluator 发现问题,失败请求进入人工标注队列或数据集,修复后再通过离线实验验证并重新发布。LangSmith Evaluation Concepts
不是所有线上请求都需要调用昂贵 Judge。可以采用分层采样:
100%检查: - 规则、Schema、权限、工具错误和任务状态重点Judge: - 用户差评、异常重试、高价值任务和新版本灰度流量随机抽样: - 正常流量,用于发现未知问题和监控分布漂移人工复核: - 高风险、低置信度、Judge冲突和新失败模式被确认的 badcase 进入数据集时,还要处理隐私、脱敏、保留期限和访问权限。尤其不能把生产中的敏感信息直接交给所有修复 Agent,或让分析集和隐藏验证集互相泄漏。
到这里,Loop 才真正闭合:线上同时是下一轮需求和评测数据的来源。
十、自主可控的关键,是把“停止”也设计进去
很多团队设计了如何开始,却没有设计何时停止。一个 Agent 连续运行十几个小时,如果只是在机械重试,并不比人工低效更先进。
Loop 至少需要以下终止状态:
completed:候选版本达到准出标准,已发布或等待批准no_improvement:连续多轮没有有效提升budget_exhausted:Token、费用、时长或实验次数达到上限environment_failed:评测或部署环境无法提供可信结果conflicting_metrics:核心收益和护栏指标无法同时满足low_confidence:归因或Judge置信度不足,需要人工判断policy_blocked:权限、安全或合规策略拒绝继续遇到相同异常时,也不能无限重试。编排 Agent 应先判断问题来自候选版本、评测任务还是基础设施;无法恢复时保存状态和证据,再升级给人。
人仍然负责最难替代的部分:定义业务目标、确定损失函数、处理指标冲突、批准高风险动作。Agent 接管的是可描述、可执行、可验证的重复工作。
这条边界越清楚,自主程度反而越高。
十一、从一个最小Loop开始
不需要一开始就建设覆盖全部业务的自治平台。可以先选择一个高频、低风险、容易验证的失败模式,例如格式不遵循、工具缺参或安全场景下的错误拒答。
第一阶段只打通一条窄链路:
输入:一批已经确认的同类badcaseAgent能力: - 读取需求卡和代表Trace - 在限定目录修改Prompt或工具定义 - 创建独立实验环境 - 发起评测并获取结构化结果 - 生成champion与challenger对比报告人工闸门: - 确认问题定义 - 审核评测标准 - 决定是否进入灰度输出: - 可复现的候选版本 - 完整修复举证 - 明确的上线或放弃结论跑通以后,再逐步加入线上自动采样、失败聚类、并行候选、影子流量和自动回滚。每增加一项自主能力,同时补齐对应的观测、权限和停止规则。
可以用下面的成熟度判断团队走到了哪一步:
| 阶段 | 工作方式 |
|---|---|
| 人工救火 | 人逐条发现、归因、修改和发布 |
| AI辅助 | AI分析case,人串联平台并做所有决定 |
| 自动实验 | Agent能在沙箱中修改、部署和评测 |
| 受控闭环 | 多Agent协作,自动比较候选并生成修复举证 |
| 自主迭代 | 线上信号自动回流,低风险变更按策略灰度,高风险由人审批 |
判断成熟度,可以观察 Agent 在无人盯守时能否保持可追踪、可解释、可回滚。连续运行时长只是一个表面数字。
十二、最后
Agent 研发过去优化的是某一次回答,现在要优化的是一条持续产生改进的链路。
Prompt 决定一轮里怎么思考,Context 决定它看见什么,Harness 提供工具和边界,Loop 则负责让需求、执行、验证、发布和反馈不断接上下一轮。
当代码、Prompt、评测集和 Judge 都有版本;当部署、日志和评测都能通过 CLI 或 API 调用;当每次实验都运行在隔离沙箱;当不同 Agent 分别负责分析、修复和独立验收;当发布有灰度、有回滚、有人工闸门,Agent 才真正具备自主迭代的条件。
这时,人不再追着每一个 badcase 跑。
人负责定义什么叫“更聪明”,Loop 负责持续证明它是否真的变聪明了。
学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋
📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~