Oopenvela-robotInitial commit
87624305创建于 4月11日历史提交

架构

架构图

查看交互式架构图 (HTML) · Excalidraw 源文件

模块概览

agent/
├── include/                  # 公共头文件
├── src/
│   ├── agent_main.c       # 入口
│   ├── core/                 # Agent 核心
│   │   ├── agent_loop.c      # ReAct 循环
│   │   ├── agent_trace.c     # 结构化追踪
│   │   ├── context_builder.c # 上下文构建
│   │   ├── message_bus.c     # 消息总线
│   │   ├── message_bus_tap.c # 消息监听
│   │   ├── memory_store.c    # 长期记忆
│   │   └── session_mgr.c     # 会话管理
│   ├── llm/                  # LLM 代理层
│   │   ├── llm_proxy.c       # OpenAI API 代理
│   │   ├── llm_parse.c       # 响应解析
│   │   ├── llm_vision.c      # 视觉模型
│   │   ├── llm_router.c      # 多后端路由
│   │   └── llm_cache.c       # 响应缓存
│   ├── tools/                # 工具系统
│   │   ├── tool_registry.c   # 工具注册表
│   │   ├── tool_*.c          # 20+ 内置工具
│   │   ├── mcp_server.c      # MCP 服务器
│   │   ├── mcp_client.c      # MCP Client(远程工具)
│   │   ├── skill_loader.c    # 技能加载
│   │   └── tool_guard.c      # 安全加固
│   ├── channels/             # 接入通道
│   │   ├── nsh_commands.c    # NSH CLI
│   │   ├── cmd_*.c           # CLI 子命令
│   │   ├── feishu_*.c        # 飞书 Bot
│   │   ├── weixin_channel.c  # 微信 Bot
│   │   ├── mqtt_channel.c    # MQTT 通道
│   │   └── ws_server.c       # WebSocket 服务器
│   ├── voice/                # 语音管线
│   │   ├── voice_channel.c   # 语音通道
│   │   ├── voice_tts.c       # TTS 抽象层
│   │   ├── voice_asr.c       # ASR 抽象层
│   │   ├── volc_tts*.c       # 火山 TTS 后端
│   │   ├── volc_asr.c        # 火山 ASR 后端
│   │   ├── audio_capture.c   # 音频采集
│   │   └── audio_playback.c  # 音频播放
│   ├── infra/                # 基础设施
│   │   ├── config_store.c    # 配置存储
│   │   ├── cron_service.c    # 定时任务
│   │   ├── heartbeat.c       # 心跳检查
│   │   ├── network_manager.c # 网络管理
│   │   ├── http_proxy.c      # HTTP 代理
│   │   └── vela_tls.c        # mbedTLS HTTPS
│   ├── node/                 # 分布式节点
│   │   ├── node_client.c     # Node 客户端
│   │   └── node_manager.c    # Hub 管理
│   └── stubs.c               # 平台兼容 stub
├── CMakeLists.txt
└── Kconfig

数据流

用户输入 (CLI/飞书/WS/MQTT/Voice)
    ↓
message_bus (inbound)
    ↓
agent_loop (ReAct 循环)
    ├── context_builder → 系统提示 + Skills 摘要
    ├── llm_proxy → LLM API 调用
    ├── tool_registry → 工具执行
    │   ├── 内置工具(直接调用)
    │   ├── mcp_bridge(本地 MCP Server)
    │   ├── node_manager(远程 Node)
    │   └── mcp_client(远程 MCP Server via Streamable HTTP)
    └── session_mgr → 会话持久化
    ↓
message_bus (outbound)
    ↓
用户输出 (CLI/飞书/WS/MQTT/TTS)

内存管理

机制 说明
堆检测 mallinfo() 实时查询,内存不足时拒绝请求
内存池 预分配工具输出缓冲区,避免频繁 malloc
流式输出 1KB 起步按需扩展到 64KB
安全分配 动态计算安全大小,保留 32KB 给其他子系统

安全机制

机制 说明
工具白名单 tool_enabled_<name> 持久化开关
敏感工具限流 60s 窗口内最多 10 次调用
输入大小检查 单次工具调用上限 32KB
Shell 三级策略 Allowlist / Full / Deny
日志脱敏 API Key 等敏感信息不打印