EvoAgent

用语音或文字指挥 AI 智能体,
为 ESP32 板卡完成「写固件 → 编译 → OTA 部署 → 遥测验收 → 经验沉淀」的完整闭环

核心链路已验证、架构完整、持续迭代中的系统原型。双层自进化,人在环兜底。

我做的事:架构成什么样、硬件怎么接、问题怎么定位、最终怎么验收。 AI 负责写码与编译这类执行动作——但不是 AI 替我决定了上面这四件事。

An MCP (Model Context Protocol) server that turns an LLM agent into a hardware developer — firmware build / flash / OTA deployment, telemetry self-validation, TTS broadcasting, a tool factory, an experience memory, and a plugin poller for self-evolving capabilities. Bridges AI agents (voice or chat) to ESP32 boards over MQTT/HTTP/WebSocket. Python (asyncio), MIT licensed.

独立开发 · 跌倒检测 独立开发 · EvoAgent 独立开发 · 语音板 团队项目 · 体征监测 规划中 · 陪伴机器宠物

← 活体演示:本站的数据看板直连我这套系统的真实运行数据,不是截图。


先看数字

每个数字都标注了测量上下文;没测过的一律写"未测量",不做估算。

−73.4%
INT8 量化后模型体积
523,556 B → 139,376 B(3.756×)
−0.24 pp
量化带来的准确率损失
90.1176% → 89.8824%(425 例测试集,只改判 1 例)
129,714
模型参数量
96×96 灰度二分类 CNN
78.789 ms
单次 Invoke() 耗时
⚠️ 独立冒烟工程实测:160 MHz、黑图输入、不含摄像头采集与网络。不是端到端延迟
50,780 B
Tensor Arena 实测占用
预留 131,072 B,余量 61.3%
51
能力中枢 MCP 工具数
27 静态 + 24 动态(其中 12 个由系统自己生成)
5
次插件进化(智能体自造插件)
隔离环境开发 → 装入 → 健康检查 → 可回滚
42 天
进化审计日志跨度
241 条事件流,覆盖工具创建 / 部署 / 回滚 / 修复
5 小时
语音板从零 bring-up
独立定位 7 类问题(I2S 四连坑 + 欠压复位 + 唤醒词 + 引脚冲突)
未测量清单(主动披露) 功耗、端到端延迟、事件级误报率、跨人跨房间泛化、多频率基准、主固件的推理耗时与 arena 占用—— 这些都还没测。剪枝 / QAT / 知识蒸馏一件都没做过。 主动写出来比被追问时才发现要好。

系统长什么样

                              ┌──────────────┐
                              │     用户     │
                              └──────┬───────┘
                语音「你好小智」        │       文字(DSH 会话)
                     │               │              │
                     ▼               ▼              ▼
        ┌──────────────────┐  ┌────────────────────────────┐
        │ 语音链路         │  │ 智能体层                    │
        │                  │  │ ┌──────────────────────┐   │
        │ 语音板           │  │ │ DSH-1 干活者         │    │
        │ (evo-voice-      │  │ │ 写代码/编译/部署/排障 ◄── ┼── 插件装入
        │  terminal)       │  │ └──────────┬───────────┘    │
        │   │ WS/opus      │  │            │ 能力缺口       │
        │   ▼              │  │            ▼                │
        │ xiaozhi-server   │  │ ┌──────────────────────┐    │
        │ ASR→LLM→TTS      │  │ │ DSH-2 进化者          │   │
        └────────┬─────────┘  │ │ (隔离环境开发插件)     │──┼── req_*.json
                 │            │ └──────────────────────┘    │
                 │ 工具调用    └────────────────────────────┘
                 ▼
        ┌───────────────────────────────────────────────────┐
        │ 能力中枢 (fall-mcp) —— 51 工具                    │
        │ 部署/烧录/播报/自验收/门控/工具工厂/经验库/插件轮询│
        └───────┬──────────────────────────┬────────────────┘
                │ MQTT / HTTP / OTA        │ 遥测 · 事件回流
                ▼                          ▲
        ┌───────────────────────────────────────────────┐
        │ 硬件层 —— ESP32 板卡                          │
        │ 跌倒检测板 · 云端烧录板 · 业务板(OTA 双分区) │
        └───────────────────────────────────────────────┘

   进化回流:工具工厂/经验库 → 注入下一次任务 · DSH-2 插件 → 装入 DSH-1
   人在环:关键决策经语音板播报确认(confirm 队列)——AI 全自动不可信

完整机制说明见 EvoAgent 自进化系统。


项目


工程日志:13 个真实事故

这部分是我认为最值得看的内容——大多数项目介绍只讲"做成了什么", 而怎么找到根因才是工程能力真正的证据。

我从 13 个真实排障事故里挑出 6 个成体系地写了下来:现象 → 证据 → 排除过程 → 根因 → 修复 → 方法论。 包括一次「无日志复位」的硬件级定位(最终是功放瞬态电流拉垮电源轨触发欠压复位)。

→ 看排障案例


真话

它的边界在哪

  • OTA 只有 fail-safe(下载/写入/校验失败就继续跑旧固件),没有 bootloader 级"新固件启动崩溃自动退回"
  • 跌倒板的 v1.7.0 / v1.8.0 尚未上板验证(v1.0.1→v1.6.1 验证过)
  • 模型指标是帧级的,不等于事件级检出率
  • 系统 node 18 与 DSH 所需的 node ≥20 分工共存,靠包装脚本切换

我踩过并写下来的坑

  • 把"固定步长乱码"当成随机噪声 —— 其实是位错位
  • 无日志复位先怀疑软件死循环 —— 应该先查电
  • 以为"校验逻辑存在"就等于"校验有效" —— 实测发现它从来没生效过
  • 把安全扫描器的误报当噪声忽略 —— 误报本身不危险,"告警疲劳"才危险