CMU AI AGENTS / 历史越来越长,经验应该放在哪里 / 第 16 课

一次成功经验,怎样才能变成下次可靠的技能?

从轨迹归纳候选步骤,经适用条件、独立测试、版本管理与失败反馈决定加入、修复或退役;成功轨迹也可能含侥幸和错误因果。

完整讲解 · 条件对照 · 理解检查所在单元与学习顺序官方课件全页浏览

本节要解决的事:把一次成功写成流程很容易;证明它值得在下一次使用,需要反例和独立验证。

重试三次成功,能总结为“失败就重试”吗

某次库存查询第一次超时、第二次超时、第三次返回 5。Agent 写下一条技能:“工具报错时重试三次。”下一次工具返回权限拒绝,照着重试三次仍然失败。第三次任务是创建订单,第一次返回超时但订单实际上已经创建,盲目再试甚至可能重复创建。

原经验只能支持“在某些可安全重复的临时故障下,有限重试可能有用”,不能支持“所有错误都重试”。成功轨迹里还可能有偶然因素:服务刚好恢复、人工修好了权限、缓存恰好更新。时间上的先后不自动构成因果关系。

从经历到技能,中间至少有四道问题

先判定经历是否真的成功,使用第一单元的环境验收,而非最后一句自评。再提炼候选,写清适用条件:只读、可重复、错误属于临时故障、次数和等待有上限。随后拿不同案例练习,观察它是否选择正确行动。最后决定加入、修改或拒绝,而不是每完成一次任务就自动往技能库追加规则。

官方原课件 · Lecture 4 · PDF 第 25 页技能不是存入之后就结束
Learn 经 episode、judge、induce、admit 进入 memory;Use 取回执行;Maintain 根据结果增加、修复、退役

沿三条链读:学习阶段需要准入,使用阶段产生新结果,维护阶段还可能撤销旧技能。请特别注意 retire;坏经验不应只靠追加更多文字来掩盖。

给候选技能一组能暴露问题的样本

样本 A:只读查询临时超时,稍后恢复。样本 B:同样查询明确权限不足。样本 C:有副作用的创建订单返回超时,执行结果未知。A 可以在有界策略下重试;B 应修正权限或报告阻塞;C 应先用请求标识查询是否已创建,再决定恢复方式。三个例子保留“出现错误”共同表象,却改变真正决定动作的条件。

观察过程 · 改变条件

重试技能的准入测试

先做预测,再逐步展开。这里是固定规则的教学回放,不是真实模型测评。

教学构造场景 · 按下方规则逐步回放;不调用真实模型,不代表实际成功率。

这一轮的输入

动作 get_stock,错误 timeout;最多允许两次额外尝试。

  1. 1. 识别动作

    只读、重复不会额外创建对象。

  2. 2. 识别错误

    临时超时,符合候选适用条件。

  3. 3. 执行有界策略

    等待后重试一次,收到库存 5,记录结果。

识别动作

只读、重复不会额外创建对象。

1 / 3
先预测,再核对结果与原因本例适用

成功依赖错误类型与动作可重复性,不只依赖“失败”二字。

可执行技能更容易检查,也仍会犯错

代码形式可以运行静态检查和测试,例如参数存在但从未使用,就能从实现中发现。然而测试通过只覆盖测试情景,不保证所有网站、权限状态和数据格式都成立。自然语言技能也需要验收标准,不能只凭步骤读起来专业就准入。

官方原课件 · Lecture 4 · PDF 第 31 页代码技能可以检查参数是否真的生效
候选技能练习后决定加入或修订,下方展示 color 参数未使用及补充处理

这页把“接口里声明了参数”和“函数真的用参数改变行为”分开。我们测试重试规则时也要看实际分支,而不是只看文档里写了哪些承诺。

另一个对照是同站点与新站点。A 站排序入口是下拉框,B 站可能是侧栏;“按价格排序”的意图可迁移,点击某个坐标的操作未必可迁移。技能需要把稳定目标和环境绑定步骤分开,并让失败反馈能触发修订。

官方原课件 · Lecture 4 · PDF 第 34 页同一操作意图,换站点会换实现
课件比较在一个网站归纳技能后到另一个网站评价,下拉排序与侧栏排序不同

不要把站点上的一次成功等同于跨站泛化。这里要检查的是可迁移范围,而不是记住某个网站的固定界面。

版本记录至少包含候选来源、适用条件、通过和失败的样本以及变更原因。评价样本最好不全是归纳时看过的轨迹,否则可能只是背下了原题。上线使用后还要记录误用、成本和失败类型:新版本成功率提高,却增加大量无效重试,也值得检查。

理解检查

问题一:三次尝试后成功,能否证明第三次重试是必要步骤? 不能。服务可能第二次后已恢复,次数只是一次轨迹的观察。应比较不同等待与重试条件,并设置上限,而不是把偶然次数写成规律。

问题二:代码技能通过单元测试,是否就可以忽略新站点? 不可以。测试覆盖的选择器和交互前提可能只在原站成立,迁移需要独立验证和明确适用范围。

问题三:旧技能失败一次,是否立即永久删除? 不一定。先定位是环境变化、调用不适用、实现错误还是评价误判,再决定修复、收窄范围或退役。维护应有证据,而不是仅凭一次情绪化判断。

下一问

技能解决局部方法,完整任务还需要安排先后顺序。下一节从三家供应商开始:计划怎样指导行动,又怎样被真实的缺货反馈改变?