问题域/PD-53

Agent 状态机

Agent State Machine

通过状态枚举和上下文管理器实现安全的 Agent 生命周期状态转换

子问题

1.状态转换安全

2.异常状态恢复

3.循环检测

4.资源清理

5.多路径终止信号协调

6.跨层状态传播(Flow→Agent)

7.步数限制与 token 限制双重保护

各项目的解法1 solutions

Signals

横向对比

维度OpenManus
状态模型4 态 str 枚举(IDLE/RUNNING/FINISHED/ERROR),ERROR 为瞬态非终态
转换守护asynccontextmanager + try/except/finally,异常时 ERROR 后自动恢复前态
重入防护run() 入口 IDLE 守卫,非 IDLE 直接 raise RuntimeError
终止信号子类直接赋值 self.state=FINISHED,多路径:special tool / token limit / max_steps
循环检测精确字符串匹配最近 N 条 assistant 消息,threshold=2,累积式 prompt 注入
资源清理两层清理:ToolCallAgent 遍历工具 cleanup + BaseAgent 调用 SANDBOX_CLIENT.cleanup

最佳实践

1.asynccontextmanager 管理状态转换

2.重复检测注入策略变更提示

3.str 枚举使状态值可直接 JSON 序列化

4.run() 入口 IDLE 守卫防止重入

5.两层资源清理:工具级 + 沙箱级