Expand description
统一 Agent 框架
提供模块化、可组合、可扩展的 Agent 架构
§架构概述
┌─────────────────────────────────────────────────────────────────────┐
│ 统一 Agent 框架 │
├─────────────────────────────────────────────────────────────────────┤
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ MoFAAgent Trait │ │
│ │ (统一 Agent 接口:id, capabilities, execute, interrupt) │ │
│ └───────────────────────────┬─────────────────────────────────┘ │
│ │ │
│ ┌───────────────────────────┼───────────────────────────────────┐ │
│ │ Modular Components (组件化设计) │ │
│ │ ┌──────────┐ ┌──────────┐ ┌────────┐ ┌──────────────┐ │ │
│ │ │ Reasoner │ │ Tool │ │ Memory │ │ Coordinator │ │ │
│ │ │ 推理器 │ │ 工具 │ │ 记忆 │ │ 协调器 │ │ │
│ │ └──────────┘ └──────────┘ └────────┘ └──────────────┘ │ │
│ └───────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ AgentRegistry (runtime 注册中心实现) │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ CoreAgentContext (统一上下文) │ │
│ └─────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘§核心概念
§MoFAAgent Trait
所有 Agent 实现的统一接口:
ⓘ
use mofa_kernel::agent::prelude::*;
#[async_trait]
impl MoFAAgent for MyAgent {
fn id(&self) -> &str { "my-agent" }
fn name(&self) -> &str { "My Agent" }
fn capabilities(&self) -> &AgentCapabilities { &self.caps }
async fn initialize(&mut self, ctx: &CoreAgentContext) -> AgentResult<()> {
Ok(())
}
async fn execute(&mut self, input: AgentInput, ctx: &CoreAgentContext) -> AgentResult<AgentOutput> {
Ok(AgentOutput::text("Hello!"))
}
async fn interrupt(&mut self) -> AgentResult<InterruptResult> {
Ok(InterruptResult::Acknowledged)
}
async fn shutdown(&mut self) -> AgentResult<()> {
Ok(())
}
fn state(&self) -> AgentState {
AgentState::Ready
}
}§AgentCapabilities
描述 Agent 的能力,用于发现和路由:
ⓘ
let caps = AgentCapabilities::builder()
.tag("llm")
.tag("coding")
.input_type(InputType::Text)
.output_type(OutputType::Text)
.supports_streaming(true)
.supports_tools(true)
.build();§CoreAgentContext
执行上下文,在 Agent 执行过程中传递状态:
ⓘ
let ctx = CoreAgentContext::new("execution-123");
ctx.set("user_id", "user-456").await;
ctx.emit_event(AgentEvent::new("task_started", json!({}))).await;§模块结构
core- AgentCore 微内核接口(最小化核心)traits- MoFAAgent trait 定义types- AgentInput, AgentOutput, AgentState 等类型capabilities- AgentCapabilities 能力描述context- CoreAgentContext 执行上下文error- 错误类型定义components- 组件 trait (Reasoner, Tool, Memory, Coordinator)config- 配置系统registry- Agent 注册中心tools- 统一工具系统
Re-exports§
pub use crate::plugin::AgentPlugin;pub use capabilities::AgentCapabilities;pub use capabilities::AgentCapabilitiesBuilder;pub use capabilities::AgentRequirements;pub use capabilities::AgentRequirementsBuilder;pub use capabilities::ReasoningStrategy;pub use context::AgentContext;pub use context::AgentEvent;pub use context::ContextConfig;pub use context::EventBus;pub use core::AgentLifecycle;pub use core::AgentMessage;pub use core::AgentMessaging;pub use core::AgentPluginSupport;pub use core::MoFAAgent;pub use error::AgentError;pub use error::AgentResult;pub use traits::AgentMetadata;pub use traits::AgentStats;pub use traits::DynAgent;pub use traits::HealthStatus;pub use types::event::execution as execution_events;pub use types::event::lifecycle;pub use types::event::message as message_events;pub use types::event::plugin as plugin_events;pub use types::event::state as state_events;pub use types::AgentInput;pub use types::AgentOutput;pub use types::AgentState;pub use types::ChatCompletionRequest;pub use types::ChatCompletionResponse;pub use types::ChatMessage;pub use types::ErrorCategory;pub use types::ErrorContext;pub use types::EventBuilder;pub use types::GlobalError;pub use types::GlobalEvent;pub use types::GlobalMessage;pub use types::GlobalResult;pub use types::InputType;pub use types::InterruptResult;pub use types::LLMProvider;pub use types::MessageContent;pub use types::MessageMetadata;pub use types::OutputContent;pub use types::OutputType;pub use types::ReasoningStep;pub use types::ReasoningStepType;pub use types::TokenUsage;pub use types::ToolCall;pub use types::ToolDefinition;pub use types::ToolUsage;pub use components::coordinator::CoordinationPattern;pub use components::coordinator::Coordinator;pub use components::memory::Memory;pub use components::memory::MemoryItem;pub use components::memory::MemoryStats;pub use components::memory::MemoryValue;pub use components::memory::Message;pub use components::memory::MessageRole;pub use components::reasoner::Reasoner;pub use components::reasoner::ReasoningResult;pub use components::tool::Tool;pub use components::tool::ToolDescriptor;pub use components::tool::ToolInput;pub use components::tool::ToolMetadata;pub use components::tool::ToolResult;pub use registry::AgentFactory;pub use config::AgentConfig;pub use config::AgentType;