项目简介
Swarmonomicon 是一个基于 Rust 的多智能体系统,旨在为大型语言模型 (LLM) 客户端提供后端支持。它通过管理代理(Agent)、工具(Tool)和任务(Task Todo),帮助 LLM 应用访问外部数据和执行复杂操作,实现更智能、更协作的应用模式。
主要功能点
- 多功能代理: 提供多种预设代理(如 Git 助手、Haiku 生成器、项目初始化、浏览器自动化)和可扩展的自定义代理框架。
- 工具集成: 允许代理调用外部功能(如 Git 命令、项目模板、GPT 批量处理、Todo 列表管理)。
- 任务管理系统: 基于 MongoDB 的持久化任务列表,支持优先级、状态跟踪和 AI 增强。
- 实时通信: 支持 WebSocket 和 MQTT,实现客户端与服务器、以及服务器内部组件间的实时交互。
- 灵活的 API: 提供 REST API 用于代理管理、任务管理等,以及 WebSocket API 用于实时会话。
安装步骤
- 确保已安装 Rust 编译环境 (latest stable)。
- 确保已安装 Git。
- 确保本地运行着支持 OpenAI 兼容 API 的 LLM 服务,例如 LM Studio (默认地址 'http://127.0.0.1:1234') 或 Ollama ('http://localhost:11434')。根据配置选择,项目默认使用 Ollama。
- 确保安装并运行 MongoDB (默认连接 'mongodb://localhost:27017',数据库 'swarmonomicon') 和 Mosquitto MQTT 代理 (默认地址 'localhost:1883')。推荐使用提供的 Docker 脚本一键启动这些服务。
- 克隆仓库:'git clone https://github.com/DanEdens/Swarmonomicon.git'
- 进入项目目录:'cd Swarmonomicon'
- 构建项目:'cargo build'
- (可选)运行测试:'cargo test'
服务器配置 (for MCP Clients)
MCP 客户端连接 Swarmonomicon MCP 服务器时,需要配置服务器的启动命令和参数。Swarmonomicon 作为一个后台服务运行,推荐客户端通过其暴露的 API 或 MQTT 接口进行交互。主要的后台组件包括主 API 服务器、MQTT 待办任务接收器 (mqtt_intake) 和待办任务处理器 (todo_worker)。
客户端通常通过网络连接到已运行的 Swarmonomicon 服务。如果客户端需要启动服务,以下是可能的命令和参数配置示例(实际客户端配置界面通常以 JSON 格式展示):
{ "serverName": "Swarmonomicon API Server", "command": "cargo", "args": ["run", "--bin", "swarm"], "notes": "Launches the main API server (REST/WebSocket). Requires MongoDB and MQTT to be running. Access via http://127.0.0.1:3000" }
-
参数注释:
- 'serverName': 在客户端界面中显示的服务器名称。
- 'command': 启动服务器的可执行文件或命令 ('cargo' 用于运行 Rust 二进制文件)。
- 'args': 传递给命令的参数列表 ('run --bin swarm' 指定运行主 API 服务器二进制)。
- 'notes': 关于此配置的说明。
-
环境变量配置: Swarmonomicon 依赖环境变量进行配置,例如 'RTK_MONGO_URI' (MongoDB连接串), 'RTK_MONGO_DB' (MongoDB数据库名), 'AWSIP' (MQTT Broker IP), 'AWSPORT' (MQTT Broker Port), 'AI_ENDPOINT' (LLM API URL), 'AI_MODEL' (LLM模型名称)。客户端通常不需要直接配置这些,而应确保 Swarmonomicon 服务在启动时已正确配置这些环境变量。
基本使用方法
- 启动依赖服务: 确保 MongoDB 和 MQTT broker 正在运行(可以使用提供的 './docker-setup.sh' 或 './run_services.sh' 脚本)。
- 启动 Swarmonomicon 后台组件: 运行以下命令启动核心服务。推荐在后台或使用终端多窗口运行。
- 启动主 API/WebSocket 服务器:'cargo run --bin swarm' (监听 'http://localhost:3000')
- 启动 MQTT 待办任务接收器:'cargo run --bin mqtt_intake' (监听 MQTT 'mcp/+' 主题)
- 启动 MQTT 待办任务处理器:'cargo run --bin todo_worker' (定期检查 MongoDB 待办任务并由代理处理)
- 使用 API 交互(例如使用 curl):
- 列出所有代理:'curl http://localhost:3000/api/agents'
- 发送消息给指定代理(通过 HTTP POST 触发处理):'curl -X POST http://localhost:3000/api/agents/greeter/message -H "Content-Type: application/json" -d '{"content": "Hello Swarmonomicon"}''
- 添加待办任务给指定代理:'curl -X POST http://localhost:3000/api/agents/greeter/tasks -H "Content-Type: application/json" -d '{"description": "Welcome new user Jane", "priority": "High"}''
- 使用 MQTT 交互: 使用 MQTT 客户端向 'mcp/<target_agent>' 主题发布 JSON 消息(例如向 'mcp/user' 发布)。Payload 格式通常为 '{"description": "...", "priority": "..."}'。MQTT 接收器将把这些发布转换为 MongoDB 待办任务,任务处理器将从 MongoDB 中获取任务并由对应的代理处理。
- 使用 CLI 交互('src/bin/swarm.rs'): 'cargo run --bin swarm' 进入交互模式,或 'cargo run --bin swarm git -m "feat: add new feature"' 执行特定命令。
信息
分类
AI与计算