AI agent Plan Drift 检测与再规划触发:什么时候继续执行,什么时候必须停下重做计划

HTMLPAGE 团队
20 分钟阅读

AI agent 的计划在真实环境里会持续漂移。本文讲清 drift signal、继续执行阈值、局部再规划与整链重算触发,避免系统拿旧计划硬闯新现实。

#AI agent #plan drift #replanning #工程实践

很多 AI agent 系统在生成计划那一刻看起来都很聪明,真正的问题出在后面:任务还没执行完,世界已经变了。用户改目标、依赖返回空结果、证据过期、权限范围调整、人工审批意见改变,这些都会让原计划逐步失效。

如果系统没有 drift 检测和再规划触发,最常见的结果不是彻底失败,而是拿着一份已经不适用的旧计划继续往下做,最后把本来可以及时收口的问题变成更大返工。

建议先结合 AI Agent 状态机设计指南AI agent Checkpoint 与断点恢复AI agent Artifact 设计AI agent 证据来源与可信度分层 一起看。

先给结论:发现 drift 后先分三类,不要一律重做计划

漂移类型典型例子推荐动作
轻微 drift某条 evidence 失效,但主目标不变局部替换证据
结构 drift某个关键步骤不再可行局部再规划
目标 drift用户目标或业务约束已变整链重做计划

只要系统把所有 drift 都当成“重新规划一下”,计划成本会失控;反过来如果从不重规划,旧计划又会持续污染执行链。

一、先定义哪些信号属于 drift,而不是普通噪音

更有用的 drift signal 通常包括:

  • 关键 evidence 过期或冲突
  • 某一步工具结果和原计划前提不一致
  • 用户明确修改目标或约束
  • 权限、预算、deadline 明显变化

而不是所有小误差都算 drift。否则系统会频繁重规划,执行效率比人工还差。

二、再规划触发最好显式记录原因,不要只跳回 PLAN

更稳的做法,是把 replan request 写成结构化事件:

{
  "runId": "run_123",
  "currentPlanVersion": 3,
  "trigger": "evidence_conflict",
  "scope": "partial",
  "affectedSteps": ["validate_vendor_policy"]
}

这样系统和人工都能知道:为什么重规划、重规划打算影响哪一段,而不是只看到状态突然回到 PLAN

如果要让再规划可复盘,这份 request 最好还带信号强度和预期动作:

{
  "signalStrength": "hard",
  "continueAllowed": false,
  "replanBudgetMs": 4000,
  "requiredOutcome": "new_plan_version"
}

这样系统不是只会说“该 replan 了”,而是明确说明为什么当前链路不能继续,以及这次再规划允许消耗多少额外预算。

三、局部再规划比整链重算更常见,但必须先知道影响范围

一个简单但有效的判断法是:

问题如果答案是“是”
原目标变了吗倾向整链重做
只是某个前提失效了吗倾向局部再规划
已完成步骤还能复用吗尽量保留已有 artifact
副作用已经发生了吗不能简单回滚重来

这也是为什么 drift 判断一定要和 artifact、ledger 一起看,而不是只靠当前 prompt 内容。

四、计划版本要显式化,否则再规划后很难复盘

如果系统会多次调整计划,就应该明确记录:

  • plan version
  • replan trigger
  • replaced steps
  • still valid artifacts

例如:

{
  "planVersion": 4,
  "supersedes": 3,
  "reason": "deadline_budget_changed",
  "retainedArtifacts": ["evidence_011", "draft_004"]
}

没有 plan version,团队后面只会知道“系统改过计划”,却不知道到底改了几次、每次为什么改。

在工程上,新的计划版本最好还带一份 plan diff,明确哪些东西保留、哪些东西被替换:

{
  "planDiff": {
    "replacedSteps": ["vendor_lookup"],
    "retainedSteps": ["policy_validate"],
    "retainedArtifacts": ["evidence_011"]
  }
}

这会让 replan 之后的执行者不必重新猜“旧链路里还有哪些东西能继续用”。

五、drift 检测也要防止系统过度敏感

另一类常见问题是:系统太容易触发 replan,最后每走一步都在回到 PLAN。避免这一点的关键通常有两个:

  • 先定义硬触发信号和软触发信号
  • 对软触发信号设置阈值,例如连续两次证据不一致才重规划

系统不是越敏感越好,而是越能稳定判断“现在真的有必要改路”越好。

一个更实用的分层通常长这样:

触发级别典型信号推荐动作
hard trigger目标改变、权限失效、副作用冲突立即停止旧计划
medium trigger关键证据冲突、关键步骤失败局部再规划
soft trigger非关键证据波动、轻微预算变化继续观察或阈值累计

只有把这层写清楚,系统才不会因为一点小波动就进入 replan loop。

六、上线后要看 drift 对 accepted run 的真实影响

建议至少记录:

指标用途
replan trigger rate看系统是否经常遇到计划漂移
partial vs full replan ratio看计划粒度是否合理
accepted run after replan看重规划是否真的挽回结果
artifact reuse after replan看再规划是否有效复用了已有产物
replan loop count看系统是否在短时间内反复重规划
false-positive drift rate看系统是否过度敏感

如果 replan rate 很高,但 accepted run 没提高,说明 drift 检测可能只是引入了额外复杂度。

七、失败案例:用户目标已经改了,Agent 还在执行旧计划

某个内容 agent 先生成“官网首页方案”,用户随后补充要求改成“招聘页 + 表单收集”。系统虽然记录了新消息,但原计划没有被判为目标 drift,后续继续基于旧计划生成首页模块,最后整条链都要返工。

修复后,团队把“目标字段改变”和“输出类型改变”列为硬触发信号,只要命中就停止旧计划并重建 plan version,返工量明显下降。

八、Plan Drift 与再规划 Checklist

  • 是否定义了明确的 drift signal,而不是所有误差都算漂移
  • 再规划触发是否被结构化记录,而不是简单回到 PLAN
  • 是否区分 hard / medium / soft trigger 级别
  • 是否区分局部再规划和整链重做
  • 计划版本是否显式可追溯
  • 新计划是否带 supersedes、planDiff 和 retainedArtifacts
  • 是否保留可复用 artifact,而不是每次都从零开始
  • replan 是否有独立预算,避免无限重算
  • 是否为软触发信号设置阈值,避免过度敏感
  • 是否监控 replan 后 accepted run 的真实改善

结语

AI agent 的计划不是一份生成后永远有效的文档,而是一条会随着证据、约束和外部状态持续漂移的执行协议。真正成熟的系统,不是从不重规划,而是知道什么时候该继续、什么时候该局部修补、什么时候必须果断停下重来。

延伸阅读: