EvoAgent
端侧 AI · 嵌入式系统 · 自进化

用语音或文字指挥 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 独立开发 · 语音板 团队项目 · 体征监测 规划中 · 陪伴机器宠物

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

I2S / UART / MQTT 信号链

实测数据

先看数字

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

−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 会话 语音链路 语音板 evo-voice-v1 ESP32-S3 · 裸 I2S xiaozhi-server ASR → LLM → TTS 智能体层 DSH-1 干活者 写代码 / 编译 / 部署 / 排障 DSH-2 进化者 隔离环境造插件 能力缺口 → 写 req_*.json 插件装入 ← 健康检查通过 能力中枢 fall-mcp 部署 / 烧录 / 播报 / 自验收 / 门控 / 工具工厂 / 经验库 / 插件轮询 51 个 MCP 工具 硬件层 · ESP32 板卡 跌倒检测板 雷达 + 视觉 · 端侧 INT8 云端烧录板 串口执行器 v12 业务 / 显示板 双分区 OTA 工具 / 经验回流 遥测 / 事件回流 人在环:关键决策经语音板播报确认(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 分工共存,靠包装脚本切换

我踩过并写下来的坑

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