statelyai/agent
Create state-machine-powered LLM agents using XState
What it solves
它解决了 AI agent 的不可预测性,通过提供一个将 agent 的控制流与模型的决策过程分离的逻辑层。与其让模型拥有完全的控制权,这个工具允许开发者定义 agent 必须遵循的明确规则、边界与有效的转换。
How it works
它将模型请求与决策整合进 XState,通过将 agent 视为一个状态机。状态机定义了允许的动作(events)与规则(guards)。当 agent 需要做出选择时,它会使用 agent.decide 要求模型从当前允许的 events 中挑选一个。状态机随后会验证该选择是否被允许;如果一个 guard 拒绝了模型的提案,决策将重新尝试。这种架构允许 agent 被暂停,其状态(snapshot)可以被保存,随后再重新启动。
Who it’s for
对于需要对工作流进行严格控制、需要能够在不调用 API 的情况下可视化与测试 agent 逻辑,并支持 "human-in-the-loop" 交互的 AI agent 开发者。
Highlights
- Explicit Control Flow: 使用状态机来定义 agent 可以做与不能做的事情。
- Bounded Decisions: Bounded Decisions: 模型只能针对当前状态提出有效的 events。
- State Persistence: 能够保存 XState snapshots 以停止并在不同进程中程序中重新启动 agent。
- Provider Agnostic: 虽然它提供了 Vercel AI SDK 的 adapter,工作核心逻辑并不依赖于特定的模型提供商。
- Verifiable Logic: 状态机可以进行 linting、模拟与探索,而无需 API key。