agentor 0.3.0

Agent-native Actor runtime — an Actor-model execution platform designed for AI Agents
Documentation

Agentor

Agent-native Actor Runtime — 一个专为 AI Agent 设计的 Actor 模型执行平台,用 Rust 实现。

核心理念

Actor 模型是 Agent 计算的天然底层。每个 Agent 就是一个 Actor,拥有私有状态(记忆)、通过异步消息通信、由监督者管理生命周期。Agentor 针对 AI Agent 的特点(高延迟 LLM 调用、不确定性崩溃、动态协作、状态持久化)做了专门设计。

架构

ActorSystem
├── Supervisor (监督树,容错策略)
│   ├── AgentActor (Planner)    ← 私有记忆 + Checkpoint
│   ├── AgentActor (Executor)   ← 工具调用 + 流式输出
│   └── AgentActor (Reviewer)   ← 人机协作 (AwaitHuman)
├── Environment (凭证 & 配置注入)
├── TokenBudget (资源预算 & 熔断)
└── TraceCollector (全链路观测 & 回放)

核心能力

事务性消息信箱 — 两阶段 commit/nack,处理失败自动重试,超限进入 Dead Letter Queue

故障分类监督 — Transient/Logic/Critical 三级故障分类,不同故障类型对应不同恢复策略

流式拦截 — StreamInterceptor 实时检查流内容,检测到有害内容立即终止流

Agent 休眠/唤醒 — 空闲 Agent 可休眠释放资源,收到消息时自动唤醒并重放暂存消息

异步双向流通信 — Agent 间流式消息传递,支持 LLM streaming 中途中断

状态机与 Checkpointing — Agent 状态原子化持久化,崩溃后精准恢复

人机协作原语 — AwaitHuman 挂起/唤醒机制,Agent 可暂停等待人类审批

资源预算与熔断 — Token/成本预算管理,超限自动熔断

快速开始

use agentor::prelude::*;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    // 创建环境
    let env = Environment::new();
    env.set_secret("OPENAI_API_KEY", "sk-...");

    // 创建 ActorSystem
    let mut system = ActorSystem::with_environment("my-app", env);

    // 创建带 LLM 的 Agent
    let llm = LlmConnector::openai("sk-...", "gpt-4")?;
    let agent = AgentActor::new("planner")
        .with_llm(llm)
        .with_system_prompt("You are a helpful travel planner.");
    let agent_ref = system.spawn_default(Box::new(agent));

    // 发送消息(自动调用 LLM)
    agent_ref.tell(AgentMessage::UserPrompt("Plan a trip to Tokyo".into())).await?;

    // 关闭
    system.shutdown().await;
    Ok(())
}

模块结构

src/
├── actor/          # 核心 Actor 层 (Actor, ActorSystem, Mailbox, FailureKind, Hibernation)
├── agent/          # Agent 专用层 (AgentActor, AgentState, Checkpoint, LlmConnector)
├── supervisor/     # 监督树 (Supervisor, 故障分类策略)
├── stream/         # 流式通信 (StreamProducer/Consumer, StreamInterceptor)
├── environment/    # 环境 & 凭证 (Environment, Secret 注入)
├── budget/         # 资源预算 (TokenBudget, 熔断)
├── observe/        # 观测 & 回放 (TraceCollector → xtrace.sh)
└── prelude.rs      # 常用类型 re-export

技术栈

  • 异步运行时: tokio
  • LLM 连接: llm-connector — 12+ Provider(OpenAI, Anthropic, DeepSeek, Ollama...),统一流式接口
  • 可观测: xtrace — 全链路追踪 + 指标上报,OpenTelemetry 兼容
  • 追踪: tracing + xtrace XtraceLayer 自动采集
  • 序列化: serde + bincode (状态持久化)
  • 并发: dashmap + parking_lot
  • 无外部 Actor 框架依赖,从 tokio task + mpsc channel 自建,保持对 Agent 场景的完全控制

构建 & 测试

cargo build
cargo test
cargo run

License

MIT