CMU AI AGENTS / 长任务怎样拆,计划为什么必须会变 / 第 17 课

“先想清楚再做”与边做边改,分别解决什么问题?

计划提供目标和中间结构,动作带来真实环境反馈。预先写好的计划不是事实,长任务需要根据失败和新信息重规划。

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

本节要解决的事:计划里的“可以买到”是假设,工具返回的“已缺货”才是新观察。好的计划要能保留有效部分,并改掉已经失效的部分。

三家报价,先想清楚能省什么

需要 10 盒蓝笔,预算 300。A 每盒 20、运费 20,总价 220;B 每盒 22、运费 0,总价 220;C 每盒 24、运费 0,总价 240。最初都只是目录报价,库存未核验。计划是先核对三家规格与库存,再比较到货时间,形成方案交给用户确认。

计划把目标拆成可检查的小任务,避免一边浏览一边忘掉蓝色、数量和预算。它还能提前发现依赖:没有含运总价就不能比较,没有确认就不能提交订单。但写出“核验库存”这几个字不会让库存自动充足,计划中的步骤也不是已经完成的事实。

一开始想得更长,为什么仍会走不通

执行时 A 返回库存 0,B 返回库存 6,C 返回库存 12。若任务要求同一家一次买齐,A 与 B 都不能满足,C 的 240 成为当前可行选项。坚持“价格最低所以选 A”,是让旧计划覆盖新证据;把全部计划删掉重新搜索,也浪费了已经核实的事实。

更合理的更新是:保留预算、规格和三份有效报价,标记 A 缺货、B 数量不足,撤销对 A 的候选选择,继续核验 C 的交付条件。若用户允许拆单,可以开启另一条比较路径,但不能擅自把“同一家买齐”改成多家组合。

官方原课件 · Lecture 5 · PDF 第 16 页执行前决定与执行中调整
开发者固定流程、先规划后执行、根据供应商失败反馈调整三种方式的对照

左边先固定供应商名单,中间由模型先计划再执行,右边执行反馈促使寻找其他供应商。下方强调重规划也有额外成本,应在反馈值得利用时使用。

一份计划里要分开三种状态

“查 C 库存”是待办;“C 库存 12,来自本次查询”是观察;“选 C 作为候选”是基于观察和约束的决定。把这三种句子混在同一段自然语言里,很容易把待办读成已完成,或在条件变化后保留过时决定。

更新时可以问:哪条新观察出现了?它否定哪个假设?哪些结果依赖该假设?下一步缺什么证据?这样重规划变成有边界的修订,而不是每轮重新写一份漂亮清单。已经发生的动作也要保留,不因计划改写而从记录中消失。

观察过程 · 改变条件

A 缺货后,哪些节点仍有效?

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

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

这一轮的输入

需要 10;A 总价 220、库存 12;B 220、库存 6;C 240、库存 12。

  1. 1. 检查前提

    A 与 C 库存可满足,B 不满足。

  2. 2. 比较可行方案

    A 总价 220 低于 C 的 240。

  3. 3. 推进计划

    A 成为待确认候选,尚未自动下单。

检查前提

A 与 C 库存可满足,B 不满足。

1 / 3
先预测,再核对结果与原因保留 A 候选

计划依据本次库存与预算共同成立。

什么时候应该少改,什么时候必须改

如果每一步输入稳定、分支少且失败可明确处理,固定流程往往更容易预测与验证。例如每份报价都先检查同样字段,不需要让模型每次发明检查顺序。计划的价值不来自每轮都换,而来自对当前信息有正确结构。

如果环境经常揭示新信息,例如规格缺失、供应商停售、交付日期变化,完全预先决定所有动作容易卡住。此时让计划在观察点修订更有价值。但修订应受总步数、成本和任务范围约束;不能因为一条低价方案失败就无限寻找更便宜的供应商。

另一个条件变化是预算从 300 降为 230。此时 C 即便有货,也不再可行,Agent 应报告当前没有满足全部条件的方案,或者提出需要用户改变哪个条件。不能为了让计划“看起来完成”偷偷减少数量或放宽颜色要求。没有可行解也是一种需要诚实报告的状态。

重规划还需要避免重复查询同一条没有变化的信息。若连续两次观察都没有新增证据,却反复在 A 与 C 之间切换,应检查选择规则和状态是否一致;仅仅换一份计划措辞不会让任务向前推进。

理解检查

问题一:A 缺货后,A 的报价记录要删除吗? 不必。报价仍是已观察的历史事实,只是当前方案不可行。保留它及时间有助于解释为何没选 A;需要失效的是依赖库存充足的决定。

问题二:B 有 6 盒、C 有 12 盒,为什么不自动拆单? 因为是否允许拆单属于任务条件,可能涉及运费、规格和管理成本。若原任务要求同一家买齐,不能靠新策略绕过限制。

问题三:每次工具返回后都重写整份计划,是否最适应环境? 不一定。这样增加成本并可能丢失已验证状态。应先判断反馈是否改变关键假设,只重算受影响部分,必要时才扩大搜索。

下一问

知道要分解任务还不够。下一节比较“每个点击一步”与“每家供应商一个子目标”:拆得更细,为什么反而可能更慢、更容易丢失全局约束?