📃作者主页:编程的一拳超人
⛺️ 欢迎关注:👍点赞 👂🏽留言 🌟收藏 💞 💞 💞
于高山之巅,方见大河奔涌;于群峰之上,更觉长风浩荡。
📌专栏系列:C++ AI Agent 实战 / 大模型工具调用 / 智能编程助手
⭐如果本文对你有帮助,欢迎点赞、收藏、关注三连支持!
💬问题交流:评论区留言或私信,看到必回
- C++ 手写 AI 编程 Agent(2):环境搭建与 CMake 依赖管理
- 3. 环境搭建
- 3.1 依赖安装
- 3.2 CMakeLists.txt
- 3.3 项目目录结构
- 📚 系列目录
C++ 手写 AI 编程 Agent(2):环境搭建与 CMake 依赖管理
适用标准:C++17 |难度:入门 |阅读时间:约 10 分钟
本文是「C++ 手写 AI 编程 Agent」12篇系列的第2篇,搭建开发环境。
3. 环境搭建
3.1 依赖安装
本项目依赖三个核心库:
| 库 | 用途 | 版本要求 |
|---|---|---|
| nlohmann/json | JSON 解析与构造 | ≥ 3.11.0 |
| cpr | HTTP 客户端(调用 LLM API) | ≥ 1.10.0 |
| fmt | 字符串格式化与日志输出 | ≥ 10.0.0 |
推荐使用 vcpkg 或 Conan 管理依赖。以 vcpkg 为例:
# 安装 vcpkg(如果尚未安装)gitclone https://github.com/microsoft/vcpkg.gitcdvcpkg&&./bootstrap-vcpkg.sh# Linux/macOS# .\bootstrap-vcpkg.bat # Windows# 安装依赖vcpkginstallnlohmann-json cprfmt3.2 CMakeLists.txt
cmake_minimum_required(VERSION 3.16) project(cpp_ai_agent VERSION 1.0.0 LANGUAGES CXX) # 要求 C++17 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # 查找依赖 find_package(nlohmann_json CONFIG REQUIRED) find_package(cpr CONFIG REQUIRED) find_package(fmt CONFIG REQUIRED) # 添加可执行文件 add_executable(agent src/main.cpp src/agent.cpp src/tool_registry.cpp src/file_tools.cpp src/compile_tool.cpp src/shell_tool.cpp src/llm_client.cpp src/message_manager.cpp ) # 链接依赖 target_link_libraries(agent PRIVATE nlohmann_json::nlohmann_json cpr::cpr fmt::fmt ) # 包含目录 target_include_directories(agent PRIVATE ${CMAKE_SOURCE_DIR}/include ) # 编译选项 if(MSVC) target_compile_options(agent PRIVATE /W4 /utf-8) else() target_compile_options(agent PRIVATE -Wall -Wextra -pedantic) endif()3.3 项目目录结构
cpp_ai_agent/ ├── CMakeLists.txt ├── system_prompt.txt # Agent 系统提示词 ├── include/ │ ├── agent.h # Agent 核心类 │ ├── tool_registry.h # 工具注册表 │ ├── file_tools.h # 文件操作工具 │ ├── compile_tool.h # 编译工具 │ ├── shell_tool.h # Shell 执行工具 │ ├── llm_client.h # LLM API 客户端 │ ├── message_manager.h # 消息管理器 │ └── types.h # 公共类型定义 ├── src/ │ ├── main.cpp # 入口 + REPL │ ├── agent.cpp # Agent 核心循环实现 │ ├── tool_registry.cpp # 工具注册表实现 │ ├── file_tools.cpp # 文件工具实现 │ ├── compile_tool.cpp # 编译工具实现 │ ├── shell_tool.cpp # Shell 工具实现 │ ├── llm_client.cpp # LLM 客户端实现 │ └── message_manager.cpp # 消息管理实现 └── workspace/ # Agent 的工作目录(运行时创建)📚 系列目录
- 第1篇:AI Agent概念入门与ReAct架构设计
- ✅第2篇:环境搭建与CMake依赖管理(当前阅读)
- 第3篇:工具注册表与文件操作工具集
- 第4篇:编译诊断工具与Shell执行引擎
- 第5篇:工具超时缓存与链式组合模式
- 第6篇:Agent核心循环消息管理与LLM调用
- 第7篇:Token窗口管理与错误恢复策略
- 第8篇:记忆系统规划引擎与多Agent协作
- 第9篇:Prompt工程从System Prompt到AB测试
- 第10篇:主程序整合与端到端实战演示
- 第11篇:Reflexion与Tree-of-Thought等高级模式
- 第12篇:性能优化安全防护与FAQ总结
⬅️上一篇:第1篇:AI Agent概念入门与ReAct架构设计
➡️下一篇:第3篇:工具注册表与文件操作工具集