204 lines
5.4 KiB
Markdown
204 lines
5.4 KiB
Markdown
|
# OpenManus C++版本
|
|||
|
|
|||
|
这是OpenManus项目的C++实现版本,旨在提供与原始Python版本相同的功能。
|
|||
|
|
|||
|
## 项目结构
|
|||
|
|
|||
|
```
|
|||
|
cpp/
|
|||
|
├── include/ # 头文件目录
|
|||
|
│ ├── agent_base.h # 代理基类
|
|||
|
│ ├── manus.h # Manus代理
|
|||
|
│ ├── tool_base.h # 工具基类
|
|||
|
│ ├── tool_call.h # 工具调用类
|
|||
|
│ ├── tool_call_agent.h # 工具调用代理
|
|||
|
│ ├── tool_collection.h # 工具集合类
|
|||
|
│ ├── flow/ # 流程头文件目录
|
|||
|
│ │ ├── base_flow.h # 流程基类
|
|||
|
│ │ ├── planning_flow.h # 规划流程
|
|||
|
│ │ └── flow_factory.h # 流程工厂
|
|||
|
│ └── tools/ # 工具头文件目录
|
|||
|
│ └── terminate.h # 终止工具
|
|||
|
├── src/ # 源文件目录
|
|||
|
│ ├── agent_base.cpp # 代理基类实现
|
|||
|
│ ├── manus.cpp # Manus代理实现
|
|||
|
│ ├── tool_base.cpp # 工具基类实现
|
|||
|
│ ├── tool_call.cpp # 工具调用类实现
|
|||
|
│ ├── tool_call_agent.cpp # 工具调用代理实现
|
|||
|
│ ├── tool_collection.cpp # 工具集合类实现
|
|||
|
│ ├── flow/ # 流程实现目录
|
|||
|
│ │ ├── base_flow.cpp # 流程基类实现
|
|||
|
│ │ ├── planning_flow.cpp # 规划流程实现
|
|||
|
│ │ └── flow_factory.cpp # 流程工厂实现
|
|||
|
│ └── tools/ # 工具实现目录
|
|||
|
│ └── terminate.cpp # 终止工具实现
|
|||
|
├── server/ # MCP服务器目录
|
|||
|
│ ├── mcp_server_main.cpp # MCP服务器主程序
|
|||
|
│ └── CMakeLists.txt # 服务器构建文件
|
|||
|
├── main.cpp # 主程序入口
|
|||
|
├── mcp/ # MCP协议库
|
|||
|
└── CMakeLists.txt # CMake构建文件
|
|||
|
```
|
|||
|
|
|||
|
## 已完成工作
|
|||
|
|
|||
|
1. **基础框架搭建**
|
|||
|
- 创建了基本的项目结构和CMakeLists.txt文件
|
|||
|
- 实现了基础代理类(AgentBase)
|
|||
|
- 实现了工具集合类(ToolCollection)
|
|||
|
- 实现了工具基类(ToolBase)
|
|||
|
- 实现了工具调用类(ToolCall)
|
|||
|
- 实现了工具调用代理类(ToolCallAgent)
|
|||
|
- 实现了Manus代理类
|
|||
|
|
|||
|
2. **流程层实现**
|
|||
|
- 实现了流程基类(BaseFlow)
|
|||
|
- 实现了规划流程(PlanningFlow)
|
|||
|
- 实现了流程工厂(FlowFactory)
|
|||
|
- 修改了主程序,使用流程层执行任务
|
|||
|
|
|||
|
3. **工具实现**
|
|||
|
- 实现了终止工具(Terminate),用于终止代理执行
|
|||
|
- 实现了Python执行工具(PythonExecute),可以执行Python代码
|
|||
|
|
|||
|
4. **MCP服务器**
|
|||
|
- 实现了基本的MCP服务器
|
|||
|
- 实现了PythonExecute工具,可以执行Python代码
|
|||
|
|
|||
|
5. **LLM集成**
|
|||
|
- 使用httplib.h实现了与LLM API的通信
|
|||
|
- 实现了think方法,能够调用LLM API获取下一步行动
|
|||
|
- 实现了工具调用的解析和执行
|
|||
|
- 添加了Authorization头部,支持API密钥认证
|
|||
|
|
|||
|
6. **配置系统**
|
|||
|
- 实现了TOML格式的配置文件读取
|
|||
|
- 支持从配置文件中读取LLM API、工具和代理等参数
|
|||
|
- 支持在运行时指定配置文件路径
|
|||
|
|
|||
|
7. **编译与运行**
|
|||
|
- 成功编译并运行了基本框架
|
|||
|
- 解决了与MCP协议库的集成问题
|
|||
|
|
|||
|
## 未完成工作
|
|||
|
|
|||
|
1. **工具实现**
|
|||
|
- Google搜索工具(GoogleSearch)
|
|||
|
- 浏览器使用工具(BrowserUseTool)
|
|||
|
- 文件保存工具(FileSaver)
|
|||
|
- 其他工具...
|
|||
|
|
|||
|
2. **LLM集成完善**
|
|||
|
- 添加更多的LLM模型支持
|
|||
|
- 实现流式响应处理
|
|||
|
- 添加更多的提示模板
|
|||
|
|
|||
|
3. **MCP协议完整集成**
|
|||
|
- 完善客户端与MCP服务器的通信
|
|||
|
- 实现完整的请求-响应流程
|
|||
|
|
|||
|
4. **错误处理与日志**
|
|||
|
- 添加更完善的错误处理机制
|
|||
|
- 实现日志记录功能
|
|||
|
|
|||
|
5. **测试与文档**
|
|||
|
- 编写单元测试
|
|||
|
- 编写集成测试
|
|||
|
- 完善API文档
|
|||
|
|
|||
|
## 配置文件
|
|||
|
|
|||
|
OpenManus使用TOML格式的配置文件来配置LLM API、工具和代理等参数。默认配置文件为`config.toml`,位于可执行文件所在目录。
|
|||
|
|
|||
|
### 配置文件示例
|
|||
|
|
|||
|
```toml
|
|||
|
# OpenManus配置文件
|
|||
|
|
|||
|
[llm]
|
|||
|
# LLM API主机
|
|||
|
host = "localhost"
|
|||
|
# LLM API端口
|
|||
|
port = 8000
|
|||
|
# LLM API路径
|
|||
|
path = "/chat/completions"
|
|||
|
# LLM API密钥
|
|||
|
api_key = "your_api_key_here"
|
|||
|
# LLM模型名称
|
|||
|
model = "gpt-3.5-turbo"
|
|||
|
# 是否启用流式响应
|
|||
|
stream = false
|
|||
|
|
|||
|
[tools]
|
|||
|
# 是否启用Python执行工具
|
|||
|
enable_python_execute = true
|
|||
|
# 是否启用Google搜索工具
|
|||
|
enable_google_search = false
|
|||
|
# 是否启用浏览器使用工具
|
|||
|
enable_browser_use = false
|
|||
|
# 是否启用文件保存工具
|
|||
|
enable_file_saver = false
|
|||
|
|
|||
|
[agent]
|
|||
|
# 最大步骤数
|
|||
|
max_steps = 30
|
|||
|
# 系统提示
|
|||
|
system_prompt = "你是Manus,一个通用的智能助手,可以使用多种工具解决各种任务。"
|
|||
|
# 下一步提示
|
|||
|
next_step_prompt = "请思考下一步行动,使用可用的工具来解决用户的问题。"
|
|||
|
```
|
|||
|
|
|||
|
### 运行时指定配置文件
|
|||
|
|
|||
|
可以在运行时通过命令行参数指定配置文件路径:
|
|||
|
|
|||
|
```bash
|
|||
|
./openmanus_cpp /path/to/your/config.toml
|
|||
|
```
|
|||
|
|
|||
|
## 构建与运行
|
|||
|
|
|||
|
### 构建主程序
|
|||
|
|
|||
|
```bash
|
|||
|
cd cpp
|
|||
|
mkdir -p build
|
|||
|
cd build
|
|||
|
cmake ..
|
|||
|
make
|
|||
|
```
|
|||
|
|
|||
|
### 运行主程序
|
|||
|
|
|||
|
```bash
|
|||
|
./openmanus_cpp
|
|||
|
```
|
|||
|
|
|||
|
### 构建MCP服务器
|
|||
|
|
|||
|
```bash
|
|||
|
cd cpp/server
|
|||
|
mkdir -p build
|
|||
|
cd build
|
|||
|
cmake ..
|
|||
|
make
|
|||
|
```
|
|||
|
|
|||
|
### 运行MCP服务器
|
|||
|
|
|||
|
```bash
|
|||
|
./openmanus_mcp_server
|
|||
|
```
|
|||
|
|
|||
|
## 依赖
|
|||
|
|
|||
|
- C++17
|
|||
|
- CMake 3.10+
|
|||
|
- nlohmann/json (包含在mcp/common目录中)
|
|||
|
- httplib.h (包含在项目中)
|
|||
|
- Python 3 (用于PythonExecute工具)
|
|||
|
- LLM API服务 (如OpenAI API或本地部署的LLM服务)
|
|||
|
|
|||
|
## 许可证
|
|||
|
|
|||
|
与原始OpenManus项目相同的许可证。
|