本节要解决的事:计划里的“可以买到”是假设,工具返回的“已缺货”才是新观察。好的计划要能保留有效部分,并改掉已经失效的部分。
三家报价,先想清楚能省什么
需要 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 的交付条件。若用户允许拆单,可以开启另一条比较路径,但不能擅自把“同一家买齐”改成多家组合。
一份计划里要分开三种状态
“查 C 库存”是待办;“C 库存 12,来自本次查询”是观察;“选 C 作为候选”是基于观察和约束的决定。把这三种句子混在同一段自然语言里,很容易把待办读成已完成,或在条件变化后保留过时决定。
更新时可以问:哪条新观察出现了?它否定哪个假设?哪些结果依赖该假设?下一步缺什么证据?这样重规划变成有边界的修订,而不是每轮重新写一份漂亮清单。已经发生的动作也要保留,不因计划改写而从记录中消失。
A 缺货后,哪些节点仍有效?
先做预测,再逐步展开。这里是固定规则的教学回放,不是真实模型测评。
教学构造场景 · 按下方规则逐步回放;不调用真实模型,不代表实际成功率。
需要 10;A 总价 220、库存 12;B 220、库存 6;C 240、库存 12。
- 1. 检查前提
A 与 C 库存可满足,B 不满足。
- 2. 比较可行方案
A 总价 220 低于 C 的 240。
- 3. 推进计划
A 成为待确认候选,尚未自动下单。
A 与 C 库存可满足,B 不满足。
先预测,再核对结果与原因
保留 A 候选计划依据本次库存与预算共同成立。
什么时候应该少改,什么时候必须改
如果每一步输入稳定、分支少且失败可明确处理,固定流程往往更容易预测与验证。例如每份报价都先检查同样字段,不需要让模型每次发明检查顺序。计划的价值不来自每轮都换,而来自对当前信息有正确结构。
如果环境经常揭示新信息,例如规格缺失、供应商停售、交付日期变化,完全预先决定所有动作容易卡住。此时让计划在观察点修订更有价值。但修订应受总步数、成本和任务范围约束;不能因为一条低价方案失败就无限寻找更便宜的供应商。
另一个条件变化是预算从 300 降为 230。此时 C 即便有货,也不再可行,Agent 应报告当前没有满足全部条件的方案,或者提出需要用户改变哪个条件。不能为了让计划“看起来完成”偷偷减少数量或放宽颜色要求。没有可行解也是一种需要诚实报告的状态。
重规划还需要避免重复查询同一条没有变化的信息。若连续两次观察都没有新增证据,却反复在 A 与 C 之间切换,应检查选择规则和状态是否一致;仅仅换一份计划措辞不会让任务向前推进。
理解检查
问题一:A 缺货后,A 的报价记录要删除吗? 不必。报价仍是已观察的历史事实,只是当前方案不可行。保留它及时间有助于解释为何没选 A;需要失效的是依赖库存充足的决定。
问题二:B 有 6 盒、C 有 12 盒,为什么不自动拆单? 因为是否允许拆单属于任务条件,可能涉及运费、规格和管理成本。若原任务要求同一家买齐,不能靠新策略绕过限制。
问题三:每次工具返回后都重写整份计划,是否最适应环境? 不一定。这样增加成本并可能丢失已验证状态。应先判断反馈是否改变关键假设,只重算受影响部分,必要时才扩大搜索。
下一问
知道要分解任务还不够。下一节比较“每个点击一步”与“每家供应商一个子目标”:拆得更细,为什么反而可能更慢、更容易丢失全局约束?