# 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 节为推进顺序。硬件选型可在采购前复核。*