9.0
重磅
AI SCORE
技术实践2026-08-22 18:45
AI Agent 不应自己管理状态:解耦推理引擎与状态机
dev.to · AI#Agent#架构#LLM
Editor brief · 编辑速览
LLM 作为推理引擎与状态管理器耦合会导致超时时产生幻觉行为(如重复扣款),提出外层确定性状态机拦截意图、记录_pending、执行_call 的架构模式。
在构建 AI Agent 时,标准教程的做法是:在每一轮对话中将聊天历史以滑动窗口的形式直接传回 LLM。LLM 同时充当推理引擎和状态管理器。
对于简单的聊天机器人,这样做没有问题。但对于在生产环境中执行操作(API 调用、数据库写入)的 Agent 来说,这种架构是一颗定时炸弹。
LLM 是概率性的。如果一个 Agent 执行了工具调用(例如 charge_credit_card),而 API 超时了,LLM 就只能根据错误字符串来猜测发生了什么。扣款是通过了但连接断开了?还是一开始就失败了?
如果由 LLM 来拥有状态,它可能会幻觉出一笔成功的扣款,或者更糟——幻觉出一次失败然后重试该操作,导致对客户重复扣费。
推理引擎(LLM)应该与状态机完全解耦。
LLM 输出意图:"I want to call charge_credit_card."
外层循环执行它:一个确定性的、传统的状态机(用 Python/TS 编写)拦截该意图,将其作为 pending 状态记录到数据库,然后执行调用。
带外验证:如果调用超时,外层循环不会盲目地问 LLM 该怎么做。外层循环暂停 Agent,运行带外验证(例如检查 Stripe 账本),更新确切的确定性结果(成功或失败),然后才将状态交回给 LLM。
不要再让你的 LLM 管理自己的状态了。把它们当作纯粹的转换函数:Context -> Intent。你的确定性 harness 必须处理其余所有事情。