AI Agent 系统里,最难的不是规划,而是如何定义“完成”

65 阅读3分钟

做 AI Agent / 自动化系统一段时间之后,我慢慢意识到一个有点反直觉的问题:

最难的地方,往往不是模型够不够聪明,也不是规划能不能拆对步骤,而是——这个任务什么时候才算“完成”。

Demo 很容易,系统很难

如果只是做 demo,其实一切都很清晰:

  • 用户输入一个任务
  • Agent 拆解步骤
  • 调用工具
  • 最后一步跑完 → done

happy path 非常顺。

但只要系统开始“认真工作”,问题就马上变得模糊起来。

现实世界里的「不完成」

在真实的 Agent / 自动化系统中,我遇到过大量这种情况:

  • 中间步骤部分成功、部分失败
  • 某个工具超时了,但其实已经产生了副作用
  • 重试是安全的,还是会重复执行?
  • 文件生成成功了,但后续校验失败,这算成功还是失败?
  • Agent 表面上“跑完了”,但其实留下了一个半成品状态

这时候你会发现,一个看似简单的问题开始变得很难回答:

这个任务,现在到底算不算完成?

Planner 说 done,Executor 扔在重试、回滚、执行

很多 Agent 架构里,规划层(Planner)和执行层(Executor)是分开的。

一个很常见的现象是:

  • Planner 认为目标已经达成
  • Executor 却在处理重试、补偿、清理、回滚

从“语义目标”上看,任务完成了;
从“系统状态”上看,事情远没结束。

如果这两者没有一个明确、可验证的“完成定义”,系统就会逐渐变得不可预测。

「完成」不是一个布尔值

后来逐渐意识到:

在长时间运行的 Agent 系统里,完成(done)几乎从来不是一个 true / false。

它更像是以下这些因素的组合:

  • 状态机是否进入了一个可接受的终态
  • 核心不变量(invariants)是否被满足
  • 是否超过了时间或重试预算
  • 是否需要外部信号(人、系统、监控)来确认
  • 当前状态是否“足够安全”以停止进一步行动

很多时候,“完成”其实是一个运营决策,而不只是程序判断。

这也是为什么很多 Agent 系统看起来很聪明,但用起来很累

模型能力在进步,工具调用在进步,但系统层面的这些问题如果没有被认真对待,结果往往是:

  • 行为不可预测
  • 失败很难解释
  • 系统不敢自动跑,只能人工盯着

最后大家会得出一个错误结论:
“是不是模型还不够好?”

但很多失败,根本不是模型问题,而是系统从一开始就没想清楚什么叫完成

一点开放式的思考

最近我也把这个问题拿出来和其他工程师交流,发现做调度器、分布式系统、长期自动化的人,踩过几乎一模一样的坑。 例如:给每个任务绑定可观测的终态校验规则、把补偿逻辑纳入任务状态机。

可能也没有一个放之四海而皆准的答案,但至少有一件事是确定的:

如果一个 Agent 系统没办法清晰定义“done”,那它迟早会在规模化运行时出问题。


这不是总结,也不是教程,只是一次工程层面的困惑记录。
如果你也在做类似系统,可能会对这个问题有自己的答案。

至少对我来说,这个问题比“用什么模型”要重要得多。