跳转至

第 23 章 受控自进化

一个排障 Agent 已经成功解决过某类问题,下次遇到相似故障时,仍可能重新查资料、尝试错误参数,甚至遗漏上次确认过的关键步骤。一个代码 Agent 能完成大部分修改,却总在某类任务中漏掉测试。业务团队关心的是:怎样让已经走通的方法被稳定采用,让反复出现的问题逐渐减少,同时控制每次任务的时间和成本?

上一章帮助团队发现问题、比较改动。下面从实际使用开始:创建并接入经验库,把已验证的方法整理成可调用的资产,再用失败样本改进 Skill 和运行机制。

23.1 先选一类值得反复做好的任务

第一轮调优适合选择目标明确、重复出现、能检查结果的业务。业务负责人先说明什么算完成,Agent 维护者再从 Trace 中找出几条成功任务和几条失败任务,对照它们怎样执行。

选择方向时,先检查 Agent 是缺方法、重复生成相同代码,还是被工具或运行环境阻碍。

业务现象 先尝试什么 希望得到的变化
相似故障总要重新探索,方法只在特定条件下适用 建经验库,在任务开始或遇到相关问题时召回 更快找到有效路径,减少无效尝试
经常漏掉前置检查、测试或结果确认 补充或修改 Skill 同类任务更稳定地完成必要步骤
反复编写相近的统计查询、分页或清洗脚本 整理 SQL 模板、Script 或工具 减少重复生成与调试,统一业务口径
固定流程总要人工盯着推进 将稳定步骤接入 Workflow 让前置检查、执行和验收按约定推进
重复提交、恢复后状态不明、长任务忘记约束 修改 Harness,即 Agent 的执行与上下文管理机制 减少业务重复操作和运行中断带来的错误

例如,排障 Agent 查询范围过大,可以先在 Skill 中补充“按故障时间和对象缩小范围”;如果查询工具不支持过滤,就由工具维护者补能力。

23.2 建好经验库,让团队能检查挖掘出了什么

经验库适合保存“遇到什么情况,可以怎样处理”。它帮助不同任务复用方法,也让维护者能够从来源判断方法是否可靠。日志排障中的“先找首次异常,再分析连续重试”,比某次故障的最终答案更有复用价值。

先确认有可用轨迹。 在 Agent 观测与优化中选定 AgentSpace 和应用,打开一条真实任务,检查用户目标、关键工具调用与结果是否可见。如果只有最终回答,先补齐接入;经验需要知道方法怎样执行、依据什么得到结果。

再创建经验库并选择来源。 在经验库入口填写名称、说明,选择应用和挖掘起始时间。第一次可以围绕一类相近任务选取近期数据,让任务方法和工具条件比较一致。时间范围需要覆盖成功、失败以及失败后恢复的过程;不必为了增加条数,把规则已经过时的历史全部纳入。当前来源按所在 AgentSpace 组织,应用与起始时间在创建时确定,提交前应核对清楚。

创建后查看挖掘进展,再打开代表经验。 可以先选几条与高频业务最相关的内容,检查三件事:它解决什么问题,建议采取什么动作,什么条件下适用。随后回到来源 Trace,确认动作是否真的出现,结果是否支持这项建议。

例如,某条经验建议“查询不到日志时扩大时间窗口”。排障人员应进一步判断:当时是窗口太短,还是数据根本没有采集?前一种情况可以复用查询方法,后一种情况应先处理接入。经验的来源和不适用条件,能帮助团队避免把一次现场处置变成所有任务的固定要求。

这一阶段由熟悉业务的人抽查内容,Agent 维护者核对工具条件和接入范围。若结果只有“仔细分析、正确调用工具”等泛化要求,先补充代表性轨迹与问题信息;若应用或时间范围选错,按正确范围创建试用库。

image

图:经验随任务反馈修订;使用者重点检查内容、适用范围和来源,决定哪些方法进入试用。

23.3 把经验接入 Agent,并亲自验证一次召回

经验库建好以后,需要让目标 Agent 在执行时读取它。Agent 观测与优化的经验召回页面提供安装、配置和验证指引。以支持 Skill 的研发或排障 Agent 为例,维护者可以按下面的路径完成接入。

  1. 安装召回 Skill。 在目标 Agent 的项目中,使用页面给出的安装命令安装 alibabacloud-agentloop-experience,确认 Agent 能发现该 Skill。这里安装的是访问经验库的能力,具体经验会在运行时查询。

  2. 配置当前经验库。 从该库的召回页面取得地址,配置 API Key 和召回开关。使用项目配置文件时,核对 Agent 实际工作目录及生效配置,避免连接到另一项目的经验库。

  3. 允许必要调用。 按目标 Agent 的方式启用 Skill 及其所需工具权限。操作演示使用的 Agent 还需要 Skill 白名单和会话 Shell 权限;其他运行环境按自己的接入方式配置。

  4. 执行一次真实查询。 选一条已经检查过的经验,用相关业务问题测试,并查看返回的内容与来源。成功返回后,再让 Agent 执行完整任务,观察它在哪一步使用了经验。

例如,经验库中已有“日志只包含重试时,向前寻找首次异常”的方法,可以向排障 Agent 描述当前故障、时间范围和已经看到的重试现象,并要求先检查是否有相关经验。验收时查看实际调用记录、召回结果,以及后续是否有针对性地寻找前置异常。Agent 口头说“参考了历史经验”,还需要对应真实调用和执行动作。

image

图:目标 Agent 通过召回能力取得相关经验,再结合当前任务判断是否采用。

接入遇到问题时,可按现象定位:没有发起查询,检查 Skill 是否启用、触发说明和工具权限;查询失败,检查地址、空间、库名和凭证;查询成功但为空,先确认库中有相关内容、查询表达和过滤范围合适;命中了经验却没有采用,检查返回内容是否进入上下文、前提是否适用。把这些情况分开,能避免反复调整阈值却没有解决接入问题。

一次真实任务查到了相关经验,并能看出它怎样影响行动后,就可以进入效果比较。

23.4 用实验决定召回多少、什么时候用

经验可能缩短探索,也会增加检索和阅读开销。对短任务来说,多查一次经验未必划算;对复杂排障来说,一条相关方法可能节省多轮试错。因此,召回策略需要根据业务实验选择。

先保留一组不使用经验的运行作为 Baseline,再用相同模型、工具和任务测试候选策略。操作演示采用更换 Session ID、重新发起同一请求的方式观察差别。正式比较时也应使用新会话,并重置任务依赖的状态,避免上一轮已经留下的答案、文件或操作结果让下一轮变容易。

第一轮可以从少量、明确相关的经验开始,再逐项调整:

可调整的因素 如何试用 如何判断是否合适
召回阈值 比较更严格和更宽松的相关性要求 是否减少无关内容,是否漏掉本该有帮助的方法
返回数量 比较一条与少量多条经验 额外内容是否补充有效条件,还是增加阅读负担
触发时机 比较任务规划前查询、遇到相关失败后查询 是否在决策前提供帮助,是否出现每轮重复查询
放置位置与长度 调整当前任务、使用说明、经验的组织顺序;精简冗余描述 是否保留关键前提,Agent 是否正确理解并采用
使用要求 明确经验是历史参考,采用前检查当前条件 条件不符时能否放弃历史做法,继续调查

维护者在召回配置或 Agent 接入代码中调整这些因素。页面或演示里的参数用于开始测试,最终以本业务实验为准。

验收也要回到业务。排障任务看根因是否正确、证据是否完整、无效查询是否减少;代码任务看修改是否满足需求、测试是否有效;报告任务看数字和口径是否正确。再比较完整任务的耗时、Token、工具调用和费用,把召回开销也计入。运行有波动时重复测试,同时保留不需要经验的任务,检查是否增加无谓操作。决定采用前,再用未参与本轮挖掘的同类任务检查效果。

如果某条经验让 Agent 反复扩大范围、照搬历史参数,先缩小它的使用范围或在接入侧停止采用,保留出问题的任务作为反例。下一轮修改内容或召回策略后,再用同样任务验证。这样,团队调整的是具体使用方法,而不是笼统地判断“经验有没有用”。

23.5 把稳定方法变成 Skill、SQL、Script 与 Workflow

当一种做法已经足够稳定,团队可以把它直接整理成可使用的资产。经验便于按场景补充参考;Skill 适合表达任务方法;SQL 和 Script 适合承担重复计算;Workflow 适合推进固定步骤。它们可以组合使用。

以定期统计 Agent 失败率为例,业务人员先确认“任务”和“失败”的口径,维护者从已核对的成功轨迹中取出查询和检查过程,逐步整理成以下产物:

  • SQL 模板保留去重、计数和分组逻辑,把应用、时间范围等现场值改成参数;附上字段含义、时区、空结果解释和明细核对方式。下一次统计时,Agent 选择模板并填写参数。

  • Script 或工具封装分页读取、结果解析、去重和汇总等重复工作,接收短参数并返回结构化结果。维护者补齐依赖、错误提示和调用示例,Agent 就能复用经过检查的实现。

  • Skill说明何时使用这套统计方法、先确认什么口径、怎样选择模板、出现字段变化时如何处理,以及完成后怎样核对报告。

  • Workflow把“确认范围—执行统计—核对明细—生成报告”接成固定步骤,为空数据、查询失败和口径不匹配安排明确处理方式。

开始时不必一次交齐四种资产。若最大开销来自重复生成查询,先交付 SQL 模板;若问题是经常漏验收,先修 Skill;只有步骤和异常分支已稳定时,再接入 Workflow。团队可以让 Agent 根据轨迹起草这些内容,由熟悉业务和工具的人检查后放入项目仓库或现有资产管理系统。

采用前,换一组时间和应用参数执行,检查结果是否仍正确;加入空数据、重复记录和字段变化的样本,确认异常能够被发现。随后从一个新任务发起完整请求,检查 Agent 能否找到资产、选择合适入口并正确调用。文件已经生成,还要完成这一步使用验证。

这类调优让稳定部分少依赖临场生成,并把口径和验收方法分享给整个团队。资产的执行和发布,接入现有的开发与交付方式即可。

23.6 用失败样本推动 Skill 甚至 Harness 工程的改进

面对已确认的 Badcase,先写清楚“应该在哪一步采取什么行动”。Skill 维护者可以把原 Skill、实际失败轨迹、相邻成功任务和预期行为交给优化助手,生成局部修改建议。SkillForge 提供了依据轨迹诊断、生成补丁和候选的能力;使用者重点检查改动是否解决问题、是否保留原有有效方法,再把候选交给实验。

一个标准演示案例中,表格 Agent 向不存在的工作表写入,失败后才查询工作表列表,改用实际目标;另一次写入因为公式括号不完整而失败。由此可以提出三个具体修改:写入前确认目标工作表、提交前检查公式、完成后回读目标单元格。审查时能逐项对应执行证据,不需要把整份 Skill 重写成更长的通用注意事项。

image

图:将失败与成功轨迹交给优化助手,得到可比较的 Skill 修改建议;维护者选择候选并组织任务验证。

代码团队也可以采用同样方法。若 Agent 经常改完代码就结束,先看它是否加载了对应 Skill,测试命令是否存在,测试环境是否可用。方法缺失时补上“执行相关测试并检查结果”;环境缺失时安排环境修复。新 Skill 用目标 Badcase、原本成功的任务和不应触发该 Skill 的任务一起检验,确认修复没有变成所有任务的额外负担。

有些问题则要由运行环境维护者处理。以“提交已经发生,但会话恢复后再次提交”为例,业务人员提供重复操作记录,Agent 开发者对照 Trace 找到中断位置,运行环境维护者修改恢复行为:区分尚未开始、已经开始但结果未知、已经完成;结果未知时先核对业务状态,再决定后续动作。这属于 Harness 改进,交付的是执行代码或配置。

这类改动需要有针对性的验收。在可控环境中分别模拟提交前中断、提交后结果尚未保存等情况,检查恢复后是否重复操作、最终业务状态是否正确。对长任务遗忘约束的问题,则选择真正会触发上下文压缩的任务,检查压缩后目标、关键限制和未完成事项是否仍被遵守。验证任务应触发原来的问题,才有理由采用修改。

23.7 从人工选择候选,到受控采用改进

团队可以按工作成熟度逐步增加自动化。业务目标与验收要求始终是起点,变化的是哪些重复工作交给系统完成。

工作方式 团队怎样开展 一轮结束时得到什么
手动调优 专家挑选问题、查看轨迹,维护者改一条 Skill、一份查询或一处运行配置 一项具体修改和对应任务的验证结果
半自动调优 系统整理失败模式、挖掘经验或生成候选;人比较方案、安排实验、决定采用 经审查的候选、实验差异和采用范围
受控自动调优 对已规定范围的变更,由接入流程自动运行检查和实验,满足条件后采用,异常时交给负责人 按规则采用的改进,以及可检查的运行反馈

image

图:自动化程度提高后,系统承担更多重复操作;业务目标、采用条件和异常处理仍需明确。

经验挖掘与运行时召回可以先接起来;Skill 候选生成可以先交给维护者审查。跨资产的自动实验、生产发布和恢复,则由团队把已有能力接入自己的运行与交付系统。适合先自动化的,是高频、范围清楚、结果容易检查的动作。

每次决定采用时,负责人确认四件事:目标问题是否改善,原有任务是否退化,额外代价是否可接受,目标 Agent 是否实际使用了被验证的内容。记录原版本、候选差异、实验结果和采用范围,保留出现异常时恢复原配置的办法。经验召回出了问题,需要调整召回或采用设置;仅暂停挖掘不会停止旧经验继续影响任务。

image

图:问题、修改、实验和实际采用相互关联,方便团队判断效果,并在出现退化时定位和恢复。

采用之后继续检查新任务,把有效方法留给下一次执行,把反例交回Dataset评估实验。数据飞轮的价值,最终体现在任务更稳定地完成,以及团队能说明每一项改进为什么值得保留。