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项目相同的许可证。 |