Skip to content

coolight7/agentxx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

117 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Agentxx

Github agentxx

  • 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 是消息摘要
    • 消息分支,支持修改历史消息/模型重新生成消息
    • 多会话和历史会话
  • ✅Sub-Agent
    • 借由 Tool 实现, 允许 llm/代码 异步启动 SubAgent
    • Toolcall 支持并发,因此支持同时启动运行多个 Subagent
    • 内置实现:
      • subagent_task (仅隔离上下文)
      • tool_skill_search
  • ✅Middleware
    • 支持层次化栈式拦截 (层层执行 start,压栈对应的 end,再逐层向外退栈执行 end) agentCallStartagentCallEndmodelCallStartmodelCallEndtoolCallStarttoolCallEnd
  • ✅压缩上下文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执行
  • ❌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 文本转语音
  • ⬜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: 图执行核心
      • 原项目
      • 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+ 种编程语言和文件格式结构

编译

  • 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

About

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

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors