Skip to content

coolight7/agentxx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

218 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Agentxx

Github agentxx

  • C++ 实现的 AI Agent,减少内存占用、程序包体积、摆脱复杂依赖,为普通性能的手机、电脑等设备上运行设计

兼容性

  • 跨系统支持:
    • ✅可编译为独立可执行程序/动态库,摆脱额外的动态库依赖,仅依赖基本的系统库
    • ✅Linux x86_64 + ✅WSL扩展功能
    • ✅Windows 10+ x86_64
    • ⬜支持Linux交叉编译 Windows/Android 可执行程序和库
    • 未测试,理论上支持:
      • ⬜Android Arm64 (计划验证兼容)
      • Macos Arm64
      • IOS Arm64
    • ⬜编译优化,控制导出符号,裁剪体积
  • libagentxx Lang Binding:
    • ✅C++ (自身开发语言)
    • ⬜Flutter/Dart
  • 生成库链接方式:
    • ✅动态链接库libagentxx; 统一多平台名称,仅后缀区别.so/.dll/.dylib.
    • ✅静态链接库libagentxx_static; 统一多平台名称,仅后缀区别.a/.lib. 支持静态链接所有依赖库,合并生成独立可运行的 agentxx_cli, 已在 linux/win 验证. 同理可静态链接libagentxx_static及其静态依赖库,即可得到让自己的程序也摆脱动态库依赖
    • 可修改CMakeLists.txt实现静态链接 C++标准库 libstdc++编译器运行时库 msvcrt/libgcc, 但静态链接标准库和编译器运行时库有很大风险,谨慎考虑!
    • 默认编译提供 动态库libagentxx、静态库libagentxx_static, 且统一动态链接 libstdc++/libgcc/msvcrt(/MD|/MDd)

编译后的体积和依赖库

  • Agentxx 编译后输出的 可执行程序agentxx_cli、动态库libagentxx 都会尽量静态链接依赖库,保持编译结果对动态库的依赖尽量少
  • 以下是编译添加了所有支持的功能,如果需要进一步裁剪体积,可以移除 VectorScan/Hyperscan 等可选库、采用 -Os 体积编译优化,可以大幅缩减体积
System agentxx_cli libagentxx compiler TIP
Windows 11.9 MB 5.14 MB MSVC (Visual Studio 18 2026 MSVC 19.51.36247.0) x86_64 -O2 打包时建议带上msvc运行时
Linux 28 MB 11 MB GCC 16.1.0 x86_64 -O3 打包时建议带上 libstdc++.so.6,libgcc_s.so.1
Linux (-deps) 21 MB 4.4 MB - 移除依赖 vectorScan/hyperscan

计划实现

基础模块

  • Toolcall
    • ✅返回值自动转换字符编码到 utf8
    • ✅filesystem (支持 同步/asio io_uring/IOCP 协程异步 文件读写)
      • 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)
      • 读取文件内容时自动转换字符编码到 utf8
      • ⬜写入文件内容时保持文件原有字符编码
    • ✅execute_command (支持 同步/Boost.process 协程异步执行)
      • ✅execute_linux_command
      • ✅execute_windows_command (检测到 WSL 环境时,允许在 linux/wsl 直接执行 windows 命令)
      • ⬜execute_python_command
      • ⬜execute_javascript_command
      • ✅拦截输出,超过限制长度时自动压缩、截取摘要存储到 share_store
      • ✅自动转换输出字符编码到 Utf8
    • ✅web_search (支持 asio 协程异步网络请求)
      • 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)
    • ✅ui_control (windows 系统上控制鼠标键盘)
    • ✅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 是消息摘要
    • 消息分支,支持修改历史消息/模型重新生成消息
    • 多会话和历史会话
  • 中断恢复
    • HITL支持,在 Node 暂停,等待用户响应,然后恢复执行
    • 支持用户取消执行
  • 异常处理和自动重试
    • Toolcall/LLM 节点支持自动重试,支持自定义重试次数
    • Toolcall/LLM 节点异常时自动添加消息到上下文,保持角色消息顺序正确
    • 保持 Middleware 拦截执行的顺序和异常处理正确
    • ⬜触发异常时,保持上下文角色顺序正确、内容完整
    • ⬜轮次开始时,自动检查和修复上下文角色顺序和内容
  • Sub-Agent
    • 借由 Tool 实现, 允许 llm/代码 异步启动 SubAgent
    • Toolcall 支持并发,因此支持同时启动运行多个 Subagent
    • 内置实现:
      • subagent_task (仅隔离上下文)
      • tool_skill_search
  • Middleware
    • 支持层次化栈式拦截 (层层执行 start,压栈对应的 end,再逐层向外退栈执行 end) agentCallStartagentCallEndmodelCallStartmodelCallEndtoolCallStarttoolCallEnd
  • PlanningMiddleware
    • 分为两层规划
    • mermaid/stateDiagram-v2 状态图描述大方向的任务规划
    • todo_list 描述近期需要实现的任务细节步骤
  • 压缩上下文 SummarizationMiddleware
    • Api TokenUsage / 自动估算 tokens,达到阈值时自动启动压缩
    • toolcall 各自实现压缩处理
      • 裁剪历史消息中过时的 (filesystem)文件读写、(planning)任务规划、(share_store)变量读写消息
    • 将部分重要的长消息内容暂存到 share_store,而不压缩,模型需要时可以提取
    • LLM 总结压缩
    • 保留最近消息
  • Memory
    • 持久记忆
    • 总结共享记忆
    • 自定义加载记忆消息
  • 权限限制 PermissionMiddleware
    • ✅允许指定 tool 调用前拦截,决定 允许、拒绝 或 中断提示询问
    • ⬜预设常见的权限限制
    • ⬜沙盒执行 Shell/File RW
  • 事件通知
    • ✅支持注册事件功能/订阅事件通知,事件触发时通知订阅者
    • 预设功能:
      • 定时通知
      • 定长延时循环通知
  • Skill支持 SkillMiddleware
    • 文件夹扫描/metadata读取收集 + filesystem文件内容读取 + execute_command执行
  • MCP支持 (Neograph已实现,但暂时使用有问题)
    • MCP client
    • Mcp Server
      • CodeGraph
      • Websearch
  • Self-upgrade
    • 自动循环调整系统提示词、工具提示词等,评估效果
    • 自动测试
    • 空闲时自动优化 skill、prompt
  • LLM Api
    • ✅Openai API
    • Anthropic API
  • 自定义配置
    • LLM Api (BaseUrl/ApiKey/ModelName/ExtraArgs)
    • System Prompt
    • ⬜分离 System/Tool Prompt 到独立配置,以便支持自定义和Self-upgrade自动调整适配
  • 扩展
    • ✅CodeGraph
      • ⬜根据 .gitignore/.gitmodules 等排序分析优先级,把 third_party/test 等目录排后
    • ✅RAG
      • 文本分割方式:
        • ✅分块 + 默认20%相邻分块重叠
        • ✅定长分割
        • ✅字符分割
        • ✅结构分割 (较长的再进行 字符分割/定长分割)
        • ⬜语义分割
    • PaddleOCR (图片转文本)
    • SD.cpp 图片视频生成
    • FunASR 语音识别
    • Qwen3-TTS 文本转语音
  • Server
    • Agent2App Api Server
    • Openai Api Server
    • ACP Server
    • A2A Server
  • ⬜测试
    • Agent 整体稳定性测试
      • ✅在 llm/toolcall 等各种节点触发中断/异常时,保持上下文角色顺序正确、内容完整
      • 程序突然终止、重启,启动后的自动修复

功能

  • 支持 DXGI/DGI 捕获屏幕帧
  • 操作键鼠
    • Tool/ui_control
  • 翻译/划词翻译
    • ✅支持接收各种程序、浏览器的选择文本事件
    • 截图识别屏幕文本,允许复制、分析、翻译
  • 根据图片内容,提取文本和提示并指定文本在图片上的位置
    • 实现类似游戏中图片内容中的多个提示点,点击扩展到文本内容或提示信息
  • 根据文本/音视频,生成评论/弹幕
  • 图片/视频生成
    • 通过 llm 优化提示词后生成返回,可自动检查生成结果,调整提示词重新生成
  • ASR/TTS
  • 匹配歌词
  • 操作live2d/3d模型动作
  • ⬜部分扩展功能独立编译为 exe,以便支持 WSL 连接扩展获取数据

目录结构

  • agent:
    • C++ 实现 Agent
    • 大部分手写,非AI实现,计划基础框架实现差不多后由AI完善和检查,以及补充测试
  • agent/lib: libagentxx
    • 核心库,包含了内置实现的 toolcall、node、middleware 等,分离编译以便嵌入其他 app 开发使用
  • agent/client: agentxx_cli
    • 命令行可执行程序,计划用于启动服务、实现命令行用户交互
  • agent/test: agentxx_test
    • 测试
  • agent/third_party:
    • neo-graph: 图执行核心
      • 原项目
      • Fork 修改
        • Toolcall
          • 调整 Tool 默认为异步执行
          • 支持并发启动多个 Tool 同时开始执行
          • toolcall 增加参数 thread_id
          • McpTool 增加异步操作
        • NodeInput 允许修改 state,以便支持修改 messages 消息上下文
        • ChatMessage 支持记录修改历史,以实现记录模型重新生成消息、修改用户消息
        • LLMCallNode 当 messages 中存在 system message 时不再额外添加
        • GraphState 增加 overwrite 函数以支持强制覆盖变量
    • codegraph-cpp: 分析代码/md文件关系.
      • 原项目
      • Fork 修改:
        • 从仅支持 c++/python 解析,扩展到支持 js/ts/dart/rust/go/java/kotlin/bash/markdown 等 20+ 种编程语言和文件格式结构
        • 扩展 Windows 编译运行支持
    • 正则表达式库支持: 可根据编译选项自定义选择支持
      • Vectorscan: 优先选择,但仅在 Linux 支持
      • Hyperscan: 次选,兼容 Windows/Linux
      • std::regex: 兜底

编译

  • C++ Standard: Requires C++26 +.
  • 编译器推荐
    • Linux/gcc 16.1. 此前使用 gcc 13.2 编译时,部分协程函数会导致编译器自身崩溃
    • Windows/msvc/visual studio 2026. 也可尝试 vs2022 等旧版本, 未验证是否支持
  • 国内网络环境推荐先挂VPN代理,部分步骤需要手动或自动下载 Github 仓库
  • 拉取项目源码和依赖库
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

LICENSE

  • MIT License
  • 根据 动态链接、静态链接 库的不同,可能会携带他们的开源协议

About

C++ AI Agent. C++ 实现的 agent,并支持嵌入普通 app 中辅助实现ai功能

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages