- C++ 实现 AI Agent,减少内存占用、程序包体积,为普通性能的手机、电脑等设备上运行而设计
- Toolcall:
- ✅返回值自动转换字符编码到 utf8
- ✅filesystem (支持
同步/asio 协程异步文件读写)- ls (file/dir/recursive-dir/limit)
- read_text (full / offset-limit)
- read_binary (full / byte-offset-limit)
- write (text/binary)
- edit_text
- glob
- grep (multi text/regex multi-filepath)
- ✅execute_command (支持
同步/Boost.process 协程异步执行)- execute_linux_command
- execute_windows_command (检测到 WSL 环境时,允许在 linux/wsl 直接执行 windows 命令)
- ⬜execute_python_command
- ⬜execute_javascript_command
- ✅拦截输出,自动压缩、提取摘要存储到 share_store
- ✅web_search
- web_search (内置 HTML 转 markdown, 支持直接使用普通网页搜索api)
- web_fetch_url_markdown (html to markdown)
- web_fetch_url (raw resp body)
- ⬜subagent 对接外部 llm agent 实现搜索
- ✅planning
- 分为两层规划
- mermaid/stateDiagram-v2 状态图描述大方向的任务规划
- todo_list 描述近期需要实现的任务细节步骤
- ✅Sub-Agent
- ✅RAGSearch
- ⬜tool_skill_search (延迟加载 tool/skill)
- ✅get_current_datetime 获取系统时间戳、本地时间、UTC时间
- ✅Tree-Messages
- share_store (允许存取变量,在 llm-messages、skill、tool 之间传递数据)
- 支持
line_offset/line_limit文本分页读取 - 压缩上下文时会将部分内容存储到
share_store - 自动拦截 tool/subagent 返回值,太长时存储原始内容到
share_store, 并留下摘要和 id
- 支持
- ⬜消息摘要,支持存储原始消息到
share_store后,能识别出 message content 是消息摘要 - 消息分支,支持修改历史消息/模型重新生成消息
- 多会话和历史会话
- share_store (允许存取变量,在 llm-messages、skill、tool 之间传递数据)
- ✅Sub-Agent
- 借由 Tool 实现, 允许 llm/代码 异步启动 SubAgent
- Toolcall 支持并发,因此支持同时启动运行多个 Subagent
- 内置实现:
- subagent_task (仅隔离上下文)
- tool_skill_search
- ✅Middleware
- 支持层次化栈式拦截 (层层执行 start,压栈对应的 end,再逐层向外退栈执行 end)
agentCallStart、agentCallEnd、modelCallStart、modelCallEnd、toolCallStart、toolCallEnd
- 支持层次化栈式拦截 (层层执行 start,压栈对应的 end,再逐层向外退栈执行 end)
- ✅压缩上下文
SummarizationMiddleware- 自动估算 tokens,达到阈值时自动启动压缩
- toolcall 各自实现压缩处理
- 裁剪历史消息中过时的 (filesystem)文件读写、(planning)任务规划、(share_store)变量读写消息
- 将部分重要的长消息内容暂存到
share_store,而不压缩,模型需要时可以提取 - LLM 总结压缩
- 保留最近消息
- ⬜Memory
- 持久记忆
- 总结共享记忆
- 自定义加载记忆消息
- ✅异常处理和自动重试
- Toolcall/LLM 节点自动重试
- Toolcall/LLM 节点异常时自动添加消息到上下文,保持消息顺序正确
- 保持 Middleware 拦截执行的顺序和异常处理正确
- ✅中断恢复
- HITL支持,在 Node 暂停,等待用户响应,然后恢复执行
- 支持用户取消执行
- ✅Permission
- ✅允许指定 tool 调用前拦截,决定 允许、拒绝 或中断提示询问
- ⬜预设常见的权限限制
- ⬜沙盒执行 shell/file RW
- ✅Skill支持
SkillMiddlewareHandle- 文件夹扫描/metadata读取收集 +
filesystem文件内容读取 +execute_command执行
- 文件夹扫描/metadata读取收集 +
- ❌MCP支持 (Neograph已实现,但暂时使用有问题)
- MCP client
- Mcp Server
- CodeGraph
- Websearch
- ⬜Self-upgrade
- 自动循环调整系统提示词、工具提示词等,评估效果
- 自动测试
- 空闲时自动优化 skill、prompt
- ⬜扩展
- ✅CodeGraph
- ⬜根据 .gitignore/.gitmodules 等排序分析优先级,把 third_party/test 等目录排后
- ✅RAG
- 文本分割方式:
- 分块 + 20%重叠
- ✅定长分割
- ⬜字符分割
- ⬜结构分割 (较长的再进行字符分割)
- ⬜语义分割
- 文本分割方式:
- PaddleOCR (图片转文本)
- SD.cpp 图片视频生成
- FunASR 语音识别
- Qwen3-TTS 文本转语音
- ✅CodeGraph
- ⬜Server:
- Openai api server
- ACP server
- A2A server
- ⬜翻译/划词翻译
- ⬜根据文本/音视频,生成评论/弹幕
- ⬜根据图片内容,提取文本和提示并指定文本在图片上的位置
- 实现类似游戏中图片内容中的多个提示点,点击扩展到文本内容或提示信息
- ⬜图片/视频生成,通过 llm 优化提示词后生成返回,可自动检查生成结果,调整提示词重新生成
- ⬜ASR/TTS
- ⬜匹配歌词
- ⬜操作键鼠
- ⬜操作live2d/3d模型动作
agent:- c++ 实现 Agent
agent/lib:- 核心库,包含了内置实现的 toolcall、node、middleware 等,分离编译以便嵌入其他 app 开发使用
agent/client:- 命令行可执行程序,计划用于启动服务、实现命令行用户交互
agent/test:- 测试
agent/third_party:neo-graph: 图执行核心codegraph-cpp: 分析代码/md文件关系.
-
C++ Standard: Requires C++23 or higher.
-
编译器推荐
- Linux/gcc 16.1. 此前使用 gcc 13.2 编译时,部分协程函数会导致编译器自身崩溃
-
拉取项目源码和依赖库
git clone https://github.com/coolight7/agentxx
cd agentxx
git submodule update --init- 安装 codegraph-cpp 依赖
cd {项目根目录}/agent/third_party/codegraph-cpp
npm install --legacy-peer-deps