Files
note_sync/有趣的项目/AI桌面陪伴助手/AI桌面陪伴助手方案.v1备份.md
2026-09-14 17:02:12 +08:00

6.2 KiB
Raw Permalink Blame History

AI 桌面陪伴助手 · 方案

状态: 🧭 方案已定稿(2026-09-12),尚未动手实现 一句话: N5095(16G) 当"AI 大脑",ESP32 头部 MCU 接管"屏+电机"实时外设,走 UART 分层。

1. 最终形态

一个桌面设备,能:

  • 听 — 实时语音输入(唤醒、STT、打断)
  • 说 — 文转语音回复
  • 看 — 摄像头视觉理解
  • 记住 — 跨会话长期记忆
  • 控 — 控制智能家居(米家)
  • 动 — 小屏幕 + 电机云台,"转身面向使用者"

2. 核心架构分叉(已定)

决策点 结论 理由
模型运行 云端 API(Claude 系列) 前期倾向云端,能力强、上手快;本地无 GPU 需求
智能家居 倾向 Home Assistant + Xiaomi Miot Auto 统一接口控米家、可扩展;备选 python-miio 跑 demo
记忆 需自建向量库 + 长期摘要 pipecat 不内置记忆
屏幕连接 不用 HDMI,屏接 ESP32(SPI) 屏和电机同属"头部 MCU",一体走 UART,线缆少、延迟低
摄像头 单目 USB 1080p,不需要双目 只要方向不要距离,双目深度能力用不上

3. 硬件分工

N5095 (16G)  "AI 大脑"
  pipecat + vision-agents
  听(DoA+STT) / 说(TTS) / 看(vision)
  朝向融合(人脸 + 声源DoA)
  ──► 云端 LLM (Claude)
        │ UART 串口
        ▼
ESP32       "头部 MCU"
  ├─ SPI → 圆屏 GC9A01(表情/内容)
  └─ PWM → 电机云台(PID 跟随)
  收指令, 本地渲染表情

硬件 BOM

模块 选型 接法 备注
算力 闲置 N5095 / 16G — 云端 API,本地无 GPU 需求,15W 低功耗适合常开
麦克风 硬件 DoA 阵列(XMOS XVF3510/3610 类) USB 输出"角度 + 干净波束音频",对 CPU 负担小;比裸麦阵 + 软件算法省事
屏幕 SPI 圆屏 GC9A01(或方屏 ST7789) 接 ESP32 本地渲表情,不走 HDMI
电机云台 舵机 MG996R/DS3218 或步进(NEMA14+TMC2209) 接 ESP32 PID 跟随;避开南 SG90 小舵机(屏有重量会抖/发热)
头部 MCU ESP32(板载 USB 转串口,如 DevKit) — 屏 + 电机 + UART 收指令
摄像头 USB 1080p 单目(十余~数十元) USB → N5095 AI 视觉主路,直连低延迟

4. N5095 ↔ ESP32 通信(选型)

  • 介质: USB 转 TTL / ESP32 板载串口 → N5095 呈现为 /dev/ttyUSB0,波特率 115200
  • 主通道: 串口 UART(低延迟、可靠、共地不出错)
  • 数据方向:
    • N5095 → ESP32: 表情 / 转向 / 文字 {"t":"face","face":"happy","dir":30,"text":"..."}
    • ESP32 → N5095: 完成确认 / 告警 {"t":"ack","done":true}
  • 帧协议: 帧式文本([SOF][长度][JSON][校验][EOF]),处理粘包/断包
  • 备选: WiFi/MQTT 做旁路(多设备调度时),HC-05 蓝牙做无线调试

关键原则: 串口是字节流不是消息流,两侧都要实现按帧切包。

5. 摄像头决策

  • 主力: 单目 USB 1080p 直连 N5095,vision-agents 直接吞流
  • 不要双目: 只需"人在画面哪个方向"(人脸框偏移换算角度),不需要深度/距离
  • 何时才上双目/深度相机: 设备要自己移动避障、精确保持跟随距离、理解三维结构时才需要;桌面固定伴侣不做
  • ESP32-CAM(可选副路): 能接但只当配角(如俯视监控/趣味镜);主力视觉别用它——它走 WiFi 传 JPEG,多一跳压缩+WiFi,延迟和 CPU 开销都大,且会跟屏/电机抢 ESP32 资源

6. 朝向融合(核心算法,让它"追着你")

两个信号源都可以给朝向:

信号源 何时为准
摄像头人脸检测(vision-agents) 看见人脸 → 以人脸为准
麦克风 DoA 看不见人脸但听到声音 → 以 DoA 为准
  • 融合 + 卡尔曼/低通滤波平滑云台转向,避免抽搐
  • 这就是 vision-agents 不只是"能看"的原因

7. 记忆方案(自建向量库,选型已定)

核心原理:向量库不是把记忆直接塞给 LLM,而是"检索最相关片段、只注入少量":

对话时:
  当前输入 ──► 转向量 ──► 检索最相关 3~5 段 ──► 仅这几段(数百~2k token)拼进 prompt

做对就省 token(按需挑),不是把历史全塞进去。每次注入 500~2000 token 级别。

选型

层 方案 说明
记忆管理层 Mem0 专门做 AI 长期记忆的开源库,自带提取/检索/存储一条龙,推荐
向量存储 Chroma(嵌入式,零运维) 起步最省事;量大再上 Qdrant/Milvus
embedding 云端 embedding API 便宜;起步够用
兜底(更轻) 纯文本 MEMORY.md / SQLite 记忆量小时连向量库都不必上

推荐:Mem0(自带 Chroma 支持)+ 云端 embedding,pip 安装配 API key 即可跑。

token 消耗

  • ✅ 只读相关片段 → 省,不会因记忆多而线性暴涨
  • ❌ 把整个记忆库/全部历史塞进上下文 → 必炸,别这么用
  • 检索端 embedding 模型很便宜

存储空间

  • 向量式存储,个人千条级记忆:几十 MB,N5095 磁盘随意放,完全不用担心

8. 技术栈分工(pipecat 管什么)

  • pipecat: 听(STT) / 说(TTS) / 视觉输入 → 云端 LLM 的实时管线 + 打断处理
  • vision-agents: 视觉 agent 能力(人脸检测、看摄像头/屏幕)—— pipecat 团队出品,向下兼容
  • 需自己在 pipecat 之外实现的模块:
    1. 表情渲染 App(发指令给 ESP32,或 ESP32 端帮渲)
    2. 云台控制 App(朝向融合 → 角度命令走 UART)
    3. 记忆库(Mem0 + Chroma,见方案 7 节)
    4. 米家控制(HA REST API 或 python-miio)

pipecat/vision-agents 不碰屏幕和电机,这两块是外部模块,通过 Pipecat 会话/回调接入。

9. 下一步(待推进)

  1. 先在 N5095 跑通 pipecat"听↔云↔说"闭环(普通麦克风,不接硬件)
  2. 调研并落地: pipecat / vision-agents 项目部署方式, Home Assistant + Xiaomi Miot Auto 接米家
  3. 再逐步接视觉 → 记忆 → 朝向 → 硬件

第 1~7 节为架构决策,第 8 节为推进顺序。硬件选型可在采购前复核。