当前位置: 首页 > news >正文

Agent 状态机实战:让任务可暂停、可恢复、可重放

本文由 AI 辅助生成并经结构化整理,代码为教学示例。

Agent 若只靠 while 循环推进,遇到重启、审批或超时后,很难知道任务走到哪一步。生产级实现应把执行过程建模为显式状态机,并持久化每次变化。

1. 状态模型

CREATED -> PLANNING -> RUNNING -> WAITING_APPROVAL-> FAILED              -> SUCCEEDED

状态机带来三项能力:可恢复、可审计、可控。模型可以建议下一步,但只有系统能批准状态转换。

2. 声明合法转换

from enum import StrEnum
class State(StrEnum):CREATED="created"; PLANNING="planning"; RUNNING="running"WAITING="waiting_approval"; SUCCEEDED="succeeded"; FAILED="failed"TRANSITIONS = {State.CREATED: {State.PLANNING, State.FAILED},State.PLANNING: {State.RUNNING, State.FAILED},State.RUNNING: {State.WAITING, State.SUCCEEDED, State.FAILED},State.WAITING: {State.RUNNING, State.FAILED},
}

未声明的转换直接拒绝,终态不再接受后继状态。

3. 用乐观锁避免并发推进

UPDATE agent_runs
SET state=:next, version=version+1
WHERE id=:id AND state=:current AND version=:version;

影响行数为零,说明其他 Worker 已抢先推进,当前执行器应重新读取而不是覆盖。

4. 检查点存什么

{"run_id":"run_123","state":"running","step":4,"tool_results":["call_7","call_8"],"pending_action":null,"version":9
}

大对象放对象存储,数据库保存引用与校验值。恢复时加载最后检查点,再判断未完成工具调用能否安全重试。

5. 副作用必须幂等

idempotency_key = f"{run_id}:{step_id}:{tool_name}"

执行前写调用记录,执行后保存结果。恢复时如果同一键已成功,直接复用结果,避免重复发信或重复扣款。

6. 审批是一种正常状态

进入 WAITING_APPROVAL 后应释放 Worker,保存动作预览、风险等级、确认令牌和过期时间。用户确认产生新事件,再由调度器重新入队。

7. 失败与重试分离

技术性失败可以指数退避重试;业务拒绝不重试。保存稳定错误码、尝试次数和下次执行时间,避免无限循环。

验收清单

  • 杀进程后任务能继续;
  • 两个 Worker 不会重复推进;
  • 重放事件不会重复产生副作用;
  • 非法转换会被拒绝并记录;
  • 审批等待不占计算资源;
  • 每次转换能关联触发事件。

结语

状态机把 Agent 的不确定推理装进确定执行骨架。系统必须知道这一步是否允许、是否执行过,以及失败后从哪里恢复。

http://www.jsqmd.com/news/1292979/

相关文章:

  • 2026年护墙板环保防水与工厂直销解读 - 万相科技
  • 太原汽车凹陷修复怎么选?极致汽车凹陷修复真实口碑与高性价比实测 - 百航
  • 2026.7长沙靠谱蔚来汽车贴膜店top5推荐,捷程新能源车改口碑好又正规 - 界川
  • 绵阳家具采购全攻略:行业痛点拆解与靠谱门店选购指南 - 国麟测评
  • 高端AI工程化和落地:真正的高手,要懂得“取舍”
  • Anthropic 密码学红队:算法过了“专家评审”,为什么仍可能被 AI 在 60 小时内砍半安全强度?
  • STM32 RTC精度误差分析与校准实战:从半年快13分钟案例到系统解决方案
  • Elsevier Tracker:科研投稿状态智能追踪解决方案
  • STM32 USB DFU固件升级实战:从原理到配置与避坑指南
  • 职场技能迭代:从提示词到AI管理能力的跃迁
  • 贺州 BBA 豪车维修行业盘点:车主痛点、行业现状与门店如何选择 - 国麟测评
  • 2026年宁波地区ERP管理系统相关企业名录梳理 - 起跑123
  • 2026年全国场景下汽车继电器优质厂家推荐参考 - 起跑123
  • 打工人福音!实测6款AI一键Word转PPT工具,百度文库凭什么排第一?
  • 2026天津防水公司推荐排行榜 全场景适配推荐清单 - 博客万
  • 学网络安全真的可以完全不上班?看这一篇就够了
  • 湘桥区业主必看!2026潮州本地化防水修缮,告别反复渗漏、常年漏水 - 吉林同城获客
  • 2026青岛钻石回收探店实录:如何打消顾虑,让闲置变现更安心? - 奢侈品回收探店ing
  • 莲都业主必看!2026宅仕达本地化防水,告别反复渗漏/漏水 - 吉林同城获客
  • Golang 适配器模式与外观模式 — 结构型设计模式入门
  • Blender Python自动化:代码驱动角色嘴部骨骼与形态键动画
  • 2026污水处理厂淤泥干化土工管袋选型5大维度对比指南 - 博客万
  • JetBrains IDE试用重置终极指南:30天无限续期的简单方法
  • 技术视角下的随身WiFi实名认证:不是“麻烦”,是“刚需”!随身wifi实名认证有必要吗?
  • 学即所考:编程猫与猿编程自研工具的竞赛认可度对比 - 资讯在线
  • 呼和浩特托克托黄金回收|闲置婚嫁金、投资金条变现避坑指南 - 淡泊明志。
  • 2026老婆饼用户评价好的品牌大盘点:正规合规实力强口碑产品详解 兼服务商选型避坑FAQ大全 - 产业观察报
  • 2026年南明区正规私立高中收费究竟是多少呢? - 企业推荐官
  • 2026焦作全屋定制厂家推荐:水深似海,实体源头工厂硬核突围 - 兔兔不是荼荼
  • Altium Designer导入嘉立创EDA元件库:原理图、封装与3D模型迁移全攻略