Skip to content

cv70/adk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rust智能体框架

一个基于Rust语言的异步智能体框架,实现感知-决策-行动循环架构。

特性

  • ✅ 基于tokio的异步运行时
  • ✅ 模块化设计(感知、决策、行动分离)
  • ✅ 灵活的工具注册系统
  • ✅ 配置文件支持(TOML + 环境变量)
  • ✅ 状态管理与记忆机制
  • ✅ 结合ReAct规划模式进行推理与行动的智能决策
  • ✅ 长期记忆存储与语义检索
  • ✅ 工具链编排
  • ✅ 动态发现与工具调用
  • ✅ 完整的测试和文档支持

安装

git clone https://github.com/yourname/rust-agent.git
cd rust-agent
cargo build --release

使用示例

基础智能体

use rust_agent::{Agent, AgentConfig, ToolRegistry};
use rust_agent::tools::{TextTool, TimeTool};

// 创建工具注册表
let mut tools = ToolRegistry::new();
tools.register(TextTool);
tools.register(TimeTool);

// 创建智能体
let agent = Agent::new(AgentConfig::default(), Arc::new(tools), channels);

// 启动智能体
agent.run().await?;

ReAct规划模式

use rust_agent::{ReActPlanner, AgentState, ToolRegistry};

let tools = Arc::new(ToolRegistry::new());
let mut state = AgentState::default();
let planner = ReActPlanner::new(tools.clone());

let result = planner.plan(&mut state, "搜索Rust编程语言的最新版本并告诉我").await?;
println!("规划结果: {}", result);

工具链编排

use rust_agent::{ChainFactory, ToolRegistry};

let tools = Arc::new(ToolRegistry::new());
let factory = ChainFactory::new(tools.clone());

let chain = factory.create_search_chain();
let mut state = AgentState::default();
let result = chain.execute(&mut state, "查找2025年Rust的最新特性").await?;
println!("链式执行结果: {:?}", result);

记忆管理

use rust_agent::{MemoryManager, SimpleEmbedder, InMemoryVectorDB};

let embedder = Arc::new(SimpleEmbedder {});
let db = Arc::new(InMemoryVectorDB::new(embedder.clone()));
let memory_manager = MemoryManager::new(db, embedder);

// 存储记忆
memory_manager.store("Rust是一种系统编程语言", HashMap::new()).await?;

// 检索记忆
let results = memory_manager.retrieve("系统编程语言", 5).await?;
println!("检索到的记忆: {:?}", results);

MCP服务器集成

use rust_agent::{McpToolRegistrar, McpClient};

let registrar = McpToolRegistrar::new("http://localhost:8080".to_string());
let tools = registrar.register_all().await?;

// 工具会自动从MCP服务器发现并注册
let agent = Agent::new(AgentConfig::default(), tools, channels);

配置文件

创建config/agent.toml

[agent]
name = "MyAgent"
version = "0.1.0"
log_level = "info"

[tools]
mcp_server_url = "http://localhost:8080"
enabled_tools = ["text_processor", "get_time"]

[environment]
cache_dir = "/tmp/agent-cache"

[planning]
max_steps = 5
react_enabled = true

[memory]
vector_db_type = "in_memory"
embedding_model = "simple"

工具列表

工具名称 功能
text_processor 文本处理(大小写转换、去空格)
get_time 获取当前时间
search 搜索工具(需自定义实现)
calculator 计算器工具(需自定义实现)
web_search 网络搜索工具(需自定义实现)

扩展开发

添加新工具

实现Tool trait:

pub struct MyCustomTool;

impl Tool for MyCustomTool {
    fn name(&self) -> &str { "my_tool" }
    fn description(&self) -> &str { "自定义工具描述" }
    
    async fn execute(&self, args: Value) -> Result<Value, String> {
        // 实现工具逻辑
        Ok(serde_json::Value::String("结果".to_string()))
    }
}

创建自定义链

let mut chain = Chain::new(tools.clone());
chain.add_step(ChainStep {
    name: "step1".to_string(),
    tool_name: "tool1".to_string(),
    input_mapping: HashMap::from([("input".to_string(), "input".to_string())]),
    output_key: Some("result1".to_string()),
})
.add_step(ChainStep {
    name: "step2".to_string(),
    tool_name: "tool2".to_string(),
    input_mapping: HashMap::from([("input".to_string(), "result1".to_string())]),
    output_key: Some("final_result".to_string()),
});

贡献

欢迎提交Issue和Pull Request!

许可证

MIT

About

基于Rust语言的异步智能体框架,实现感知-决策-行动循环架构

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages