Expand description
统一 Agent 运行器
提供统一的 Agent 执行接口,可以运行任何实现了 MoFAAgent 的 Agent。
§架构
┌─────────────────────────────────────────────────────────────────────┐
│ AgentRunner<T: MoFAAgent> │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 状态管理 │ │
│ │ • RunnerState: Initializing, Running, Paused, Stopping │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 执行模式 │ │
│ │ • Single: 单次执行 │ │
│ │ • EventLoop: 事件循环(支持 AgentMessaging) │ │
│ │ • Stream: 流式执行 │ │
│ └─────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘§示例
§基本使用
ⓘ
use mofa_runtime::runner::AgentRunner;
use mofa_runtime::agent::MoFAAgent;
#[tokio::main]
async fn main() -> AgentResult<()> {
let agent = MyAgent::new();
let mut runner = AgentRunner::new(agent).await?;
// 执行任务
let input = AgentInput::text("Hello, Agent!");
let output = runner.execute(input).await?;
// 关闭
runner.shutdown().await?;
Ok(())
}§事件循环模式
ⓘ
use mofa_runtime::runner::AgentRunner;
use mofa_runtime::agent::{MoFAAgent, AgentMessaging};
struct MyEventAgent { }
#[async_trait]
impl MoFAAgent for MyEventAgent { /* ... */ }
#[async_trait]
impl AgentMessaging for MyEventAgent { /* ... */ }
#[tokio::main]
async fn main() -> AgentResult<()> {
let agent = MyEventAgent::new();
let mut runner = AgentRunner::new(agent).await?;
// 运行事件循环
runner.run_event_loop().await?;
Ok(())
}Structs§
- Agent
Runner - 统一 Agent 运行器
- Agent
Runner Builder - AgentRunner 构建器
- Runner
Stats - 运行器统计信息
Enums§
- Runner
State - 运行器状态
Functions§
- run_
agents - 创建并运行 Agent(多次执行)