| Crates.io | rwkv-agent-kit |
| lib.rs | rwkv-agent-kit |
| version | 0.1.1 |
| created_at | 2025-09-08 04:05:08.721442+00 |
| updated_at | 2025-09-08 04:48:46.733792+00 |
| description | RWKV-Agent-Kit: A high-performance memory system for AI applications with advanced RAG capabilities, vector-graph hybrid storage, and adaptive learning. Built with Rust for scalability and efficiency. |
| homepage | |
| repository | https://github.com/Ai00-X/rwkv-agent-kit |
| max_upload_size | |
| id | 1828815 |
| size | 886,986 |
中文版 | English
一个高性能的智能体开发工具包,基于RWKV大语言模型,提供多智能体系统、记忆管理、向量检索和工具集成等功能。专为构建智能对话系统和AI应用而设计。
在你的 Cargo.toml 文件中添加依赖:
[dependencies]
rwkv-agent-kit = "0.1.0"
tokio = { version = "1.0", features = ["full"] }
anyhow = "1.0"
[dependencies]
rwkv-agent-kit = { git = "https://github.com/Ai00-X/rwkv-agent-kit.git" }
tokio = { version = "1.0", features = ["full"] }
anyhow = "1.0"
[dependencies]
rwkv-agent-kit = { version = "0.1.0", features = ["embedding", "tools"] }
git clone https://github.com/Ai00-X/rwkv-agent-kit.git
cd rwkv-agent-kit
model/ 目录下:model.st - RWKV模型文件tokenizer.json - 分词器文件chat.state - 对话状态文件(可选)tool-call.state - 工具调用状态文件(可选)cargo build --release
项目提供了一个完整的对话示例,展示多轮对话和记忆功能:
# 确保已准备好模型文件
cargo run --example chat_demo
预期输出:
[DEBUG] 已清理数据库中的历史记录
=== 第1轮对话 ===
[USER] 你好,我的名字叫小明,是一名程序员。
[ASSISTANT] 你好小明!很高兴认识你这位程序员...
=== 第2轮对话 ===
[USER] 我最喜欢的编程语言是Rust,你知道为什么吗?
[ASSISTANT] 根据我们之前的对话,我知道你是小明...
可能遇到的问题:
模型文件缺失
Error: 无法加载模型文件
解决方案:确保 model/ 目录下有必要的模型文件
内存不足
Error: 内存分配失败
解决方案:确保系统有足够内存(建议4GB+)
权限问题
Error: 无法创建数据库文件
解决方案:确保对 data/ 目录有写入权限
查看 examples/ 目录了解更多使用示例:
# 查看所有可用示例
ls examples/
# 运行特定示例
cargo run --example <示例名称>
use rwkv_agent_kit::RwkvAgentKitBuilder;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// 使用默认配置快速启动
let mut kit = RwkvAgentKitBuilder::new()
.with_default_agents()
.build()
.await?;
// 开始对话
let response = kit.chat("chat", "你好,请介绍一下Rust编程语言").await?;
println!("AI回复: {}", response);
Ok(())
}
use rwkv_agent_kit::{
RwkvAgentKit, RwkvAgentKitConfig,
agents::{AgentFactory, AgentType},
rwkv::config::ModelConfig,
db::DatabaseConfig,
};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
// 1. 创建配置
let config = RwkvAgentKitConfig {
model: ModelConfig {
model_path: "./model/model.st".to_string(),
tokenizer_path: "./model/tokenizer.json".to_string(),
state_path: Some("./model/chat.state".to_string()),
..Default::default()
},
database: DatabaseConfig::default(),
agents: vec![
AgentFactory::create_config(AgentType::Chat),
AgentFactory::create_config(AgentType::ConversationSummarizer),
],
};
// 2. 启动 RWKV Agent Kit
let mut kit = RwkvAgentKit::from_config(config).await?;
// 3. 与智能体对话
let response = kit.chat("chat", "你好,请介绍一下Rust编程语言").await?;
println!("AI回复: {}", response);
// 4. 查看对话历史
let session_id = kit.database_manager.get_active_session().await?.unwrap();
let events = kit.database_manager.list_memory_events(session_id).await?;
println!("对话历史共 {} 条记录", events.len());
Ok(())
}
RWKV Agent Kit
├── core/ # 核心功能模块
│ ├── rwkv_singleton.rs # RWKV模型单例管理
│ ├── service.rs # 核心服务
│ ├── tools.rs # 工具注册表
│ └── error_handler.rs # 错误处理
├── agent/ # 智能体框架
│ ├── agent.rs # 智能体基础实现
│ ├── config.rs # 智能体配置
│ ├── memory.rs # 记忆配置
│ └── prompt.rs # 提示词构建器
├── agents/ # 预定义智能体
│ ├── chat.rs # 对话智能体
│ ├── conversation_summarizer.rs # 对话总结智能体
│ ├── router.rs # 路由智能体
│ └── workflow_aggregator.rs # 工作流聚合智能体
├── db/ # 数据库模块
│ ├── manager.rs # 数据库管理器
│ ├── sqlite.rs # SQLite实现
│ ├── embedding.rs # 嵌入服务
│ └── query_optimizer.rs # 查询优化器
└── rwkv/ # RWKV模块
├── config.rs # RWKV配置
└── state.rs # 状态管理
用户输入 → 智能体路由 → RWKV推理 → 记忆存储 → 响应生成
↓ ↑
工具调用 → 工具执行 → 结果处理 → 记忆更新 → 上下文增强
use rwkv_agent_kit::rwkv::config::ModelConfig;
let model_config = ModelConfig {
model_path: "./model/model.st".to_string(),
tokenizer_path: "./model/tokenizer.json".to_string(),
state_path: Some("./model/chat.state".to_string()),
max_tokens: 2048,
temperature: 0.7,
top_p: 0.9,
presence_penalty: 0.0,
frequency_penalty: 0.0,
};
use rwkv_agent_kit::db::DatabaseConfig;
let db_config = DatabaseConfig {
database_url: "./data/agent_kit.db".to_string(),
max_connections: 10,
enable_wal: true,
cache_size: 1000,
};
use rwkv_agent_kit::agent::{AgentConfig, MemoryConfig};
use rwkv_agent_kit::agents::chat::ChatPromptBuilder;
use std::sync::Arc;
let agent_config = AgentConfig {
name: "assistant".to_string(),
description: "专业助手智能体".to_string(),
prompt_builder: Some(Arc::new(ChatPromptBuilder::with_nick("小助手"))),
memory: MemoryConfig {
enabled: true,
max_context_length: 4000,
semantic_chunk_threshold: 7,
},
save_conversations: true,
bnf_schema: None,
stop_sequences: None,
};
use rwkv_agent_kit::core::tools::{Tool, ToolRegistry};
use async_trait::async_trait;
struct WeatherTool;
#[async_trait]
impl Tool for WeatherTool {
fn name(&self) -> &str { "get_weather" }
fn description(&self) -> &str { "获取天气信息" }
async fn execute(&self, params: serde_json::Value) -> anyhow::Result<String> {
// 实现天气查询逻辑
Ok("今天天气晴朗,温度25°C".to_string())
}
}
// 注册工具
let tools = kit.tools.clone();
{
let mut registry = tools.write().await;
registry.register(Box::new(WeatherTool));
}
// 语义搜索
let embedding_service = rwkv_agent_kit::db::embedding::get_global_embedding_service()?;
let query_embedding = embedding_service.lock().await
.encode_single("机器学习相关内容").await?;
// 检索相关记忆事件
let similar_events = kit.database_manager
.search_similar_events(&query_embedding, 10).await?;
for event in similar_events {
println!("相关记忆: {} (相似度: {:.3})",
event.text, event.similarity_score);
}
// 创建新会话
let session_id = kit.database_manager.create_session("用户123").await?;
// 切换会话
kit.database_manager.set_active_session(session_id).await?;
// 获取会话历史
let events = kit.database_manager.list_memory_events(session_id).await?;
from_config(config: RwkvAgentKitConfig) -> Result<Self> - 从配置创建实例register_agent(config: AgentConfig) -> Result<()> - 注册新智能体chat(agent_name: &str, message: &str) -> Result<String> - 与智能体对话list_agents() -> Vec<String> - 列出所有可用智能体create_session(user_id: &str) -> Result<Uuid> - 创建新会话list_memory_events(session_id: Uuid) -> Result<Vec<MemoryEvent>> - 获取记忆事件search_similar_events(embedding: &[f32], limit: usize) -> Result<Vec<MemoryEvent>> - 语义搜索create_semantic_chunk(content: &str, summary: &str) -> Result<Uuid> - 创建语义片段查看 examples/ 目录中的示例:
chat_demo.rs - 基本对话示例embedding_demo.rs - 向量嵌入示例model_download_test.rs - 模型下载测试运行示例:
cargo run --example chat_demo
src/agents/ 目录下创建新文件AgentType 枚举中添加新类型AgentFactory 中添加创建逻辑Tool trait本项目采用 MIT 或 Apache-2.0 双重许可证。详见 LICENSE 文件。
感谢所有为开源社区做出贡献的开发者们!
RWKV Agent Kit - 让AI智能体拥有真正的记忆和思考能力 🚀