系统架构与数据流
银龄智伴
多端协作与数据流转
老人通过娃娃语音对话、通过 App 查看信息、子女远程关怀、运营后台管理 — 五个系统如何各司其职、数据如何流转
V1.0 · 2026.05 · 银龄智伴项目组
系统全景
五个系统构成完整产品形态。娃娃是老人的主要交互入口(语音),App 提供可视化信息,子女通过微信接收关怀通知,后台管理服务运营团队,后端 + Agent 是连接一切的中枢。
🧸
智能娃娃
纯语音交互
蓝牙连手机
老人主要入口
📱
老人端 App
查看提醒/健康
对话记录
设置偏好
🖥️
后端服务
API 网关
数据存储
消息推送
🤖
Agent 智能体
对话引擎
意图理解
工具调用
👨‍👩‍👧
子女端
微信通知(一期)
App 内模式(二期)
系统上下文 · 交互关系
🧸
智能娃娃
语音输入/输出 · BLE
蓝牙音频
📱
老人端 App
BLE 中转 · 可视化
HTTPS API
🖥️
后端服务 · Fastify
用户管理 · 数据存储 · 推送 · 计费
内部调用
🤖
Agent 智能体
DeepSeek · Function Calling · RAG
通知 / API
⚙️
后台管理
运营 Dashboard · Prompt 管理
💬
微信服务号
子女接收通知(一期)
系统边界与职责
每个系统"只管自己该管的事"。下表明确各系统做什么、不做什么、数据归谁。
系统 核心职责 不负责 拥有数据 依赖
🧸 智能娃娃 采集老人语音、播放 AI 回复音频 不做任何计算、不存数据、不联网 无(纯透传设备) 手机蓝牙连接
📱 老人端 App BLE 中转音频、展示提醒/健康/对话记录、管理设置、本地降级反馈 不跑 AI 模型、不直接存业务数据 本地缓存(会话、设置、预置音频) 后端 API(WebSocket)· 手机 BLE
🖥️ 后端服务 API 网关、用户管理、数据持久化、定时任务、消息推送、计费、PII 脱敏 不做 AI 推理、不管理 Prompt 内容 所有业务数据(用户、对话、提醒、健康、产品) PostgreSQL · Redis · Agent · 第三方 API
🤖 Agent 智能体 对话理解、意图识别、工具调用、流式回复生成、情绪分析 不存数据、不管理用户、不发通知 无状态(每次调用独立) DeepSeek API · 后端(工具执行)
⚙️ 后台管理 运营看板、用户管理、产品管理、Prompt 模板、数据导出 不直接服务终端用户 操作日志 后端 API(管理员鉴权)
💬 子女端(微信) 接收老人情绪报告、异常告警、对话摘要 不直接与老人交互 无(消息由后端推送) 微信模板消息 API
关键约束:手机是娃娃的"大脑" — 娃娃通过蓝牙连手机,手机 App 后台运行(前台服务 + WakeLock),将音频转发给后端。手机不在身边时娃娃无法工作。
数据流全景
一次完整对话的数据旅程:从老人说话到收到回复,再到子女收到通知。
数据流转路径
🎤
老人说话
娃娃麦克风采集
BLE 音频流
📱
手机 App
BLE 接收 · 音频编码
WebSocket
🖥️
后端服务
PII 脱敏 · 语音识别
脱敏文本
🤖
Agent
意图理解 · 生成回复
🔊
娃娃播放
TTS 音频输出
BLE 音频
📱
手机 App
接收音频 · 转发
WebSocket 流
🖥️
后端服务
流式 TTS 合成 · 存储对话
流式文本
🤖
Agent
流式生成 · 情绪标签
🖥️
后端服务
检测到异常情绪
模板消息
💬
微信服务号
推送告警给子女
微信通知
👨‍👩‍👧
子女
查看老人状态
核心业务流程
四个关键场景的完整数据流,每个步骤标注了数据经过的系统边界。

流程一 · 老人通过娃娃语音对话

步骤 🧸 娃娃 📱 老人端 App 🖥️ 后端服务 🤖 Agent 💬 子女端
1 老人按住按钮说话
麦克风采集音频
2 通过 BLE 发送音频流 BLE 接收音频
前台服务保活
3 WebSocket 连接
流式上传音频

断网时播放本地预置音频
流式接收音频
PII 脱敏 → 讯飞 ASR
4 构建上下文
加载用户画像 + 历史
5 调用 Agent 流式生成回复
边生成边输出,触发 Function Call
6 执行工具调用
(设提醒/查天气/推荐)
持续输出文本 + 情绪标签
7 流式 TTS 合成
音频片段边合成边推送

存储对话记录
8 接收音频片段 → BLE 流式转发 WebSocket 推送音频流
9 播放 TTS 音频
老人听到回复
10 情绪分析异常?
触发告警
收到微信通知
"老人情绪低落"
手机保活要求:App 必须以前台服务运行(Android Foreground Service + iOS Background Modes),维持 BLE 连接和网络请求。息屏时通过 WakeLock 保持 CPU 唤醒。
延迟目标:语音采集 → 首字播放 < 3 秒。流式处理下,ASR、Agent、TTS 三阶段重叠执行,首字响应时间可缩短 30-50%。
本地降级:当 App 检测到网络断开或后端不可达时,直接向娃娃播放预置本地音频("我现在连不上网啦,请帮我检查一下手机"),避免娃娃"无响应"。BLE 断连时娃娃内置蜂鸣提示。

流程二 · 老人通过 App 文字对话

步骤 📱 老人端 App 🖥️ 后端服务 🤖 Agent 💬 子女端
1 老人输入文字 / 点击快捷按钮
2 POST /api/chat/message 接收消息 · 加载上下文
3 调用 Agent 生成回复 + Function Call
4 显示文字回复
可选:TTS 播报
返回 reply + actions
存储对话记录
返回文本 + 情绪
5 异常? → 推送通知 收到微信告警
娃娃 vs App 对话的差异:数据流完全一致,唯一的区别是输入/输出通道 — 娃娃走 BLE 音频流,App 走文字输入框。后端和 Agent 不感知终端类型,统一处理。

流程三 · 子女关怀与远程管理

场景 👨‍👩‍👧 子女 💬 微信服务号 🖥️ 后端服务 📱 老人端 App 🤖 Agent
日报 每日 20:00 生成日报
对话次数、情绪趋势、健康提醒完成率
分析情绪趋势
收到日报推送
"今日对话 12 次,情绪平稳"
模板消息推送 调用微信 API
告警 检测到异常情绪/未按时吃药
收到告警
"老人情绪持续低落,建议联系"
模板消息推送 紧急通知
设置 设置提醒 / 修改偏好 存储设置 同步生效
一期方案:子女通过微信服务号接收通知,不单独开发 App。关注服务号 → 绑定老人账号 → 自动接收日报和告警。
二期扩展:在老人端 App 内增加"子女模式",支持查看完整对话记录、远程设置提醒、修改 AI 偏好。

流程四 · 后台运营管理

场景 ⚙️ 后台管理 🖥️ 后端服务 🤖 Agent 📱 老人端
看板 查看 DAU、对话量、成本、异常 聚合统计数据
Prompt 修改 AI 人设 / 推荐规则 更新 prompt_templates 表 下次对话使用新 Prompt 对话风格变化
产品 上架/下架推荐产品 更新 products 表 + 向量索引 RAG 检索范围变化
排查 查看异常对话追踪 查询 agent_traces 表
关键数据归属
数据存在哪、谁能访问、保留多久。
数据类型 存储位置 娃娃 老人端 子女端 后台 保留策略
语音原始音频 对象存储 可查 30 天自动清理
对话文字记录 PostgreSQL 自己的 全部 180 天归档
用户画像 PostgreSQL + Redis 自己的 全部 永久
提醒数据 PostgreSQL 自己的 只读 全部 永久
健康数据 PostgreSQL 自己的 只读 全部 永久
情绪报告 PostgreSQL 汇总 全部 90 天
Agent 追踪 PostgreSQL 全部 90 天
操作日志 PostgreSQL 全部 180 天
技术约束与边界条件

娃娃 → 手机蓝牙

协议BLE (Bluetooth Low Energy)
音频格式Opus 编码,16kHz 采样
传输延迟< 100ms(BLE 范围内)
有效距离~10 米(室内)
断连处理App 提示"娃娃未连接",自动重连

手机保活策略

AndroidForeground Service + WakeLock + 电池优化白名单
iOSBackground Modes (BLE + Audio)
电量消耗~3-5% / 小时(待机)
网络要求WiFi 或 4G,最低 100kbps
断网处理本地缓存消息,恢复后同步;语音场景播放本地预置音频兜底(见下方降级策略)

一期 vs 二期边界

能力 一期(MVP) 二期
娃娃交互 语音对话(按住说话) 免唤醒 + 连续对话
子女端 微信服务号通知(日报 + 告警) App 内子女模式(完整功能)
健康设备 不接入 蓝牙血压计/血糖仪
产品推荐 基础 RAG + 标签匹配 用户行为 + 协同过滤
Agent 能力 提醒 / 天气 / 推荐 / 聊天 日程管理 / 菜谱 / 用药提醒
娃娃联网 仅 BLE,依赖手机 Wi-Fi 模块(ESP32),娃娃可直连后端
关键改进空间
以下四项改进针对 <3 秒延迟目标和适老化场景的鲁棒性,建议在一期开发中优先落地。

流式传输协议优化

当前 App 与后端之间使用 HTTPS 传输音频,存在连接建立开销和头部冗余,不利于双向流式传输。

建议:App ↔ 后端通信改为 WebSocketgRPC 双向流,减少网络握手时间。同时采用全链路流式处理:Agent 文本边生成边送入 TTS,TTS 音频片段边合成边推送到 App 并通过 BLE 传给娃娃,避免串行等待。
当前HTTPS 请求/响应,串行 ASR → Agent → TTS
优化后WebSocket 双向流,流式 ASR → 流式 Agent → 流式 TTS
延迟收益首字响应时间可缩短 30-50%

本地降级反馈策略

老人手机极易遇到网络断开或 App 被杀后台的情况。对语音交互而言,"没反应"比"报错"更致命——老人会以为娃娃坏了。

建议:App 端增加本地降级反馈职责。当检测到无法连接后端时,直接向娃娃发送预置本地音频,如"我现在连不上网啦,请帮我检查一下手机"。避免老人在娃娃端遇到"死机"般的无响应状态。
断网场景播放预置音频"连不上网,请检查手机"
App 被杀娃娃播放"手机好像休息了,帮我看看"
BLE 断连娃娃内置蜂鸣提示音(硬件层)

PII 脱敏网关

老人语音中可能涉及健康状况、家庭住址、家庭矛盾等敏感信息。直接将带个人标识的数据发给外部 ASR/LLM 存在隐私合规风险。

建议:在 Agent 调用外部 LLM 之前,加入脱敏网关(正则过滤 + NER 识别),确保上传到第三方模型的数据去除 PII(姓名、电话、地址、身份证号、疾病名称等)。脱敏后的数据仍保留语义完整性,不影响对话质量。
过滤内容姓名、电话、地址、身份证、银行卡、疾病诊断
处理方式正则替换为占位符(如 [姓名] [电话])
位置后端服务 → Agent 之间,或 Agent → LLM 之前

娃娃直连能力(二期)

BLE 网关模式将手机 App 作为音频中转站,强依赖 Foreground Service + WakeLock。国内深度定制 Android 系统(华为、小米、OPPO)对后台查杀非常激进,单靠应用层保活难以保证 100% 稳定。

建议:二期硬件迭代时,在娃娃端增加 Wi-Fi 模块(ESP32),使娃娃具备直连后端能力。手机 App 逐步降级为"配置台"和"可视化屏幕",从根本上解决保活痛点。
一期BLE → 手机 → 后端(手机是必需中转)
二期Wi-Fi → 后端(手机变为可选)
成本ESP32 模组 ~¥5-8,可选保留 BLE 双通道
银龄智伴 · 系统架构与数据流 · V1.0