养老陪伴智能体本地化开源解决方案

一、方案概述

本方案面向养老院、社区养老服务站、护理站等机构场景,提供一套本地化部署、隐私可控、可运营、可跟踪的养老陪伴智能体系统。

核心原则:

  • 老人数据主权:原始语音、对话、情绪、偏好等个人数据保存在老人手机端,老人可随时授权或撤销;
  • 机构本地计算:ASR、LLM、TTS、陪伴策略等计算能力运行在机构端本地,不上传公网;
  • 家属只看摘要:家属端仅接收结构化陪伴摘要,不接触原始对话;
  • 社工专业介入:社工通过脱敏画像设计智能体方案,并跟踪效果;
  • 知识库可运营:免费源即开即用,付费源通过短信/电话授权后使用;
  • 方案可版本化:社工发布的陪伴方案支持版本管理、回滚和效果跟踪。

二、整体架构

┌─────────────────────────────────────────────────────────────┐
│                      老人端 App(数据主权端)                  │
│  本地加密存储:原始语音、对话、情绪、偏好、收听记录              │
│  功能:大按钮交互、语音对话、内容播放、授权管理                  │
│  授权:机构端计算 / 家属摘要 / 社工介入                         │
└──────────────────────────┬──────────────────────────────────┘
                           │ 局域网 HTTPS(脱敏片段)
                           ▼
┌─────────────────────────────────────────────────────────────┐
│                   机构端桌面程序(本地计算节点)                 │
│  容器化服务:ASR / LLM / TTS / 策略引擎 / 监控面板             │
│  管理功能:终端激活 / 服务监控 / 知识订阅 / 信息转发            │
│  数据边界:不保存原始语音、完整对话、家庭联系方式                │
└──────────────────────────┬──────────────────────────────────┘
                           │ TLS(结构化摘要 / 脱敏画像)
                           ▼
┌─────────────────────────────────────────────────────────────┐
│                     云端服务端(信息转发层)                    │
│  功能:家属摘要路由 / 社工画像路由 / 方案回传 / 授权校验        │
│  数据边界:不保存原始语音、完整对话、个人身份数据                │
└──────────────┬───────────────────────────┬──────────────────┘
               │                           │
               ▼                           ▼
┌──────────────────────┐      ┌──────────────────────────────┐
│      家属端           │      │       社工工作台              │
│  结构化陪伴摘要        │      │  脱敏画像 / 方案设计          │
│  风险提示 / 回电建议   │      │  版本管理 / 效果跟踪          │
└──────────────────────┘      └──────────────────────────────┘

               ▲
               │ 内容订阅 / 授权校验
               │
┌─────────────────────────────────────────────────────────────┐
│                   知识库统一网关(云端)                       │
│  免费源:公共领域小说、开源新闻、公开科普                      │
│  付费源:短信/电话授权后下发 Token                            │
│  数据边界:不保存老人个人身份数据                              │
└─────────────────────────────────────────────────────────────┘

三、角色与职责

角色职责数据权限
老人使用 App、管理授权、接收陪伴内容拥有全部原始数据,可随时撤销授权
机构安装机构端、管理终端、开通订阅、监控服务仅见脱敏统计和运行状态
家属接收陪伴摘要、风险提示仅见结构化摘要
社工查看脱敏画像、设计方案、跟踪效果仅见脱敏画像和方案指标
云端服务端信息转发、授权校验、方案回传不保存原始个人数据
知识库网关内容分发、授权管理、用量结算不保存个人身份数据

四、端到端业务流程

4.1 机构安装与初始化

  1. 机构在本地电脑安装机构端桌面程序;
  2. 程序自动生成机构实例 ID;
  3. 自动启动本地容器服务(ASR、LLM、TTS、策略引擎、监控面板);
  4. 窗口展示两个二维码:App 安装码和激活配置码。

4.2 老人扫码激活

  1. 老人或护理员扫描 App 安装码,下载老人端 App;
  2. 扫描激活配置码,写入机构服务地址和机构实例 ID;
  3. 老人端生成设备 ID 和本地加密密钥;
  4. 老人端向机构端发起激活请求;
  5. 机构端生成待激活记录;
  6. 老人端确认后完成激活,进入待授权状态。

4.3 老人日常使用

  1. 老人通过大按钮或语音发起对话;
  2. 老人端本地加密保存原始记录;
  3. 老人端将脱敏片段发送至机构端;
  4. 机构端返回 ASR、LLM、TTS 结果;
  5. 老人端播放陪伴内容;
  6. 老人可随时在 App 中查看授权状态并撤销。

4.4 家属摘要接收

  1. 老人在 App 中开启”家属摘要”授权;
  2. 老人端生成结构化摘要(陪伴时长、情绪趋势、回电建议等);
  3. 摘要经机构端转发至云端服务端;
  4. 服务端推送至家属端;
  5. 家属仅能看到摘要,无法查看原始对话或录音。

4.5 社工专业介入

  1. 老人在 App 中开启”社工介入”授权;
  2. 老人端生成脱敏画像(兴趣标签、情绪趋势、风险信号);
  3. 画像经机构端转发至云端服务端;
  4. 社工在工作台查看脱敏信息;
  5. 社工设计智能体陪伴方案并发布版本;
  6. 方案经服务端回传至机构端,老人端确认后生效;
  7. 社工持续跟踪方案效果,可回滚或发布新版本。

4.6 知识订阅管理

  1. 机构端查看可用知识源列表;
  2. 免费源一键开通;
  3. 付费源通过短信/电话授权后获取 Token;
  4. 机构可随时关闭不需要的订阅;
  5. 知识库网关按授权范围分发内容,不保存老人个人数据。

五、核心数据库设计

5.1 老人端本地库 elder_app.db

CREATE TABLE elder_profile (
    elder_id TEXT PRIMARY KEY,
    device_id TEXT NOT NULL,
    nickname TEXT,
    language TEXT DEFAULT 'zh-CN',
    created_at TEXT NOT NULL,
    updated_at TEXT NOT NULL
);

CREATE TABLE elder_raw_record (
    id TEXT PRIMARY KEY,
    elder_id TEXT NOT NULL,
    type TEXT NOT NULL,
    content_ref TEXT,
    created_at TEXT NOT NULL
);

CREATE TABLE elder_authorization (
    id TEXT PRIMARY KEY,
    elder_id TEXT NOT NULL,
    target_type TEXT NOT NULL,
    target_id TEXT NOT NULL,
    scope TEXT NOT NULL,
    status TEXT NOT NULL,
    granted_at TEXT NOT NULL,
    revoked_at TEXT
);

CREATE TABLE family_contact (
    id TEXT PRIMARY KEY,
    elder_id TEXT NOT NULL,
    name TEXT,
    relation TEXT,
    channel TEXT,
    contact_ref TEXT,
    enabled INTEGER DEFAULT 1
);

CREATE TABLE elder_preference (
    id TEXT PRIMARY KEY,
    elder_id TEXT NOT NULL,
    category TEXT NOT NULL,
    weight REAL DEFAULT 0.5,
    updated_at TEXT NOT NULL
);

CREATE TABLE elder_session (
    id TEXT PRIMARY KEY,
    elder_id TEXT NOT NULL,
    start_at TEXT NOT NULL,
    end_at TEXT,
    duration_sec INTEGER,
    mood_summary TEXT,
    risk_flag INTEGER DEFAULT 0
);

CREATE TABLE elder_scheme_version (
    id TEXT PRIMARY KEY,
    elder_id TEXT NOT NULL,
    version TEXT NOT NULL,
    scheme_id TEXT NOT NULL,
    config_json TEXT NOT NULL,
    activated_at TEXT NOT NULL,
    deactivated_at TEXT
);

5.2 机构端本地库 instance_local.db

CREATE TABLE instance_profile (
    instance_id TEXT PRIMARY KEY,
    name TEXT NOT NULL,
    location TEXT,
    created_at TEXT NOT NULL
);

CREATE TABLE instance_elder_binding (
    id TEXT PRIMARY KEY,
    instance_id TEXT NOT NULL,
    elder_id TEXT NOT NULL,
    status TEXT NOT NULL,
    bound_at TEXT NOT NULL
);

CREATE TABLE service_log (
    id TEXT PRIMARY KEY,
    instance_id TEXT NOT NULL,
    elder_id TEXT,
    service_type TEXT NOT NULL,
    status TEXT NOT NULL,
    latency_ms INTEGER,
    created_at TEXT NOT NULL
);

CREATE TABLE daily_stats (
    id TEXT PRIMARY KEY,
    instance_id TEXT NOT NULL,
    elder_id TEXT,
    date TEXT NOT NULL,
    session_count INTEGER DEFAULT 0,
    total_duration_sec INTEGER DEFAULT 0,
    mood_anxiety_count INTEGER DEFAULT 0,
    mood_low_count INTEGER DEFAULT 0,
    risk_event_count INTEGER DEFAULT 0
);

CREATE TABLE scheme_execution (
    id TEXT PRIMARY KEY,
    instance_id TEXT NOT NULL,
    elder_id TEXT NOT NULL,
    scheme_id TEXT NOT NULL,
    version TEXT NOT NULL,
    activated_at TEXT NOT NULL,
    deactivated_at TEXT,
    last_evaluated_at TEXT
);

CREATE TABLE risk_event (
    id TEXT PRIMARY KEY,
    instance_id TEXT NOT NULL,
    elder_id TEXT NOT NULL,
    level TEXT NOT NULL,
    reason TEXT,
    handled INTEGER DEFAULT 0,
    created_at TEXT NOT NULL
);

CREATE TABLE kb_subscription (
    id TEXT PRIMARY KEY,
    instance_id TEXT NOT NULL,
    source_id TEXT NOT NULL,
    status TEXT NOT NULL,
    token_ref TEXT,
    subscribed_at TEXT NOT NULL,
    expired_at TEXT
);

5.3 知识库网关库 kb_gateway.db

CREATE TABLE kb_source (
    id TEXT PRIMARY KEY,
    name TEXT NOT NULL,
    type TEXT NOT NULL,
    access_mode TEXT NOT NULL,
    content_type TEXT NOT NULL,
    copyright_tag TEXT NOT NULL,
    enabled INTEGER DEFAULT 1
);

CREATE TABLE kb_content (
    id TEXT PRIMARY KEY,
    source_id TEXT NOT NULL,
    title TEXT,
    summary TEXT,
    text_url TEXT,
    audio_url TEXT,
    duration_sec INTEGER,
    language TEXT,
    tags TEXT,
    published_at TEXT,
    cached_at TEXT
);

CREATE TABLE kb_auth (
    id TEXT PRIMARY KEY,
    instance_id TEXT NOT NULL,
    phone_hash TEXT NOT NULL,
    status TEXT NOT NULL,
    created_at TEXT NOT NULL,
    expired_at TEXT
);

CREATE TABLE kb_auth_code (
    id TEXT PRIMARY KEY,
    phone_hash TEXT NOT NULL,
    code TEXT NOT NULL,
    channel TEXT NOT NULL,
    used INTEGER DEFAULT 0,
    created_at TEXT NOT NULL,
    expired_at TEXT NOT NULL
);

CREATE TABLE kb_token (
    id TEXT PRIMARY KEY,
    instance_id TEXT NOT NULL,
    token TEXT NOT NULL,
    scope TEXT,
    status TEXT NOT NULL,
    created_at TEXT NOT NULL,
    expired_at TEXT NOT NULL
);

CREATE TABLE kb_usage (
    id TEXT PRIMARY KEY,
    instance_id TEXT NOT NULL,
    source_id TEXT,
    content_id TEXT,
    bytes INTEGER DEFAULT 0,
    play_seconds INTEGER DEFAULT 0,
    created_at TEXT NOT NULL
);

六、API 接口设计

6.1 老人端 → 机构端

接口方法说明
/v1/compute/asrPOST提交脱敏音频片段,返回文本和情绪标签
/v1/compute/chatPOST提交文本或事件,返回陪伴回复
/v1/compute/ttsPOST提交文本,返回音频流
/v1/compute/strategyPOST提交陪伴事件,返回推送策略
/v1/elder/activatePOST扫码后激活绑定
/v1/elder/authorizePOST授权机构端参与计算
/v1/elder/revokePOST撤销授权

6.2 机构端 → 社工工作台(经云端)

接口方法说明
/v1/social/elder/{id}/profileGET获取脱敏画像
/v1/social/schemesGET获取可用方案模板
/v1/social/schemesPOST创建新方案
/v1/social/schemes/{id}/versionsPOST发布新版本
/v1/social/schemes/{id}/versions/{ver}/rollbackPOST回滚版本
/v1/social/elder/{id}/trackingGET获取单老人跟踪指标
/v1/social/cohort/trackingGET获取群体对照指标

6.3 机构端 → 家属端(经云端)

接口方法说明
/v1/family/summaryPOST推送结构化摘要
/v1/family/alertPOST推送中高风险提醒
/v1/family/elder/{id}/statusGET家属查询当前状态

6.4 机构端 → 知识库网关

接口方法说明
/v1/kb/sourcesGET获取可用内容源
/v1/kb/subscribePOST开通订阅
/v1/kb/unsubscribePOST关闭订阅
/v1/kb/auth/smsPOST发送短信授权码
/v1/kb/auth/verifyPOST校验授权码并换取 Token
/v1/kb/usage/reportPOST上报用量

6.5 机构端内部监控

接口方法说明
/v1/instance/statusGET获取服务健康度
/v1/instance/eldersGET获取终端列表及状态
/v1/instance/stats/todayGET获取今日聚合统计

七、部署指南

7.1 环境准备

Ubuntu 机构端

sudo apt update
sudo apt install -y docker.io podman

Windows 机构端

wsl --update
wsl --enable-containers

老人端 Android

  • 最低 Android 8.0;
  • 使用 SQLCipher 加密本地数据库;
  • 密钥写入 Android Keystore;
  • 局域网访问使用 HTTPS。

7.2 机构端桌面程序

采用 Tauri 2.0 构建,支持自动更新。

pnpm tauri add updater
pnpm tauri add process

构建签名:

export TAURI_SIGNING_PRIVATE_KEY="..."
export TAURI_SIGNING_PRIVATE_KEY_PASSWORD="..."

前端检查更新:

import { check } from "@tauri-apps/plugin-updater";
import { relaunch } from "@tauri-apps/plugin-process";

const update = await check();
if (update) {
  await update.downloadAndInstall();
  await relaunch();
}

7.3 容器服务编排

services:
  asr:
    image: kb-elder/asr-sensevoice:latest
    ports: ["7860:7860"]
    volumes: ["./models/asr:/models"]

  llm:
    image: kb-elder/llm-qwen:latest
    ports: ["8080:8080"]
    volumes: ["./models/llm:/models"]

  tts:
    image: kb-elder/tts-piper:latest
    ports: ["8090:8090"]

  strategy:
    image: kb-elder/strategy-engine:latest
    ports: ["8095:8095"]
    volumes: ["./data/instance:/data"]

  gateway:
    image: kb-elder/family-gateway:latest
    ports: ["8100:8100"]

AMD 显卡场景可使用 llama.cpp、Ollama 或本地 CPU 推理。

7.4 知识库网关部署

docker compose -f kb-gateway/docker-compose.yml up -d

网关配置项:

  • 免费源白名单;
  • 付费源授权策略;
  • 短信/语音验证码服务;
  • Token 签发与校验;
  • 用量上报接口;
  • 版权内容访问控制。

7.5 云端服务端部署

云端服务端为无状态转发层,可水平扩展。

核心职责:

  • 校验机构端凭证;
  • 路由家属摘要;
  • 路由社工脱敏画像;
  • 回传社工方案;
  • 校验老人授权状态;
  • 不保存原始语音和完整对话。

八、隐私与合规边界

数据类型存储位置可见方
原始语音老人端本地加密仅老人本人
完整对话老人端本地加密仅老人本人
家庭联系方式老人端本地加密仅老人本人
脱敏计算请求临时传输机构端(计算后丢弃)
运行日志机构端机构管理员
聚合统计机构端机构管理员
结构化摘要经服务端转发家属
脱敏画像经服务端转发社工
智能体方案经服务端回传机构端 / 老人端
知识内容索引知识库网关机构端

所有授权均可由老人端随时撤销。撤销后,机构端和服务端应立即停止对应信息转发。高风险事件(跌倒、自伤、长时间无响应)必须转人工处理。

九、推荐技术组合

模块推荐实现说明
老人端存储Room + SQLCipher本地加密,Keystore 保护密钥
机构端桌面Tauri 2.0轻量、支持自动更新
容器运行时Docker / Podman / WSL ContainersWindows 可用 wslc
ASRSenseVoiceSmall / FunASR支持中文和情绪识别
LLMQwen / Llama / DeepSeek本地推理
TTSPiper / CosyVoice3本地生成有声内容
方案沙箱WasmEdge可选,用于社工方案插件化
更新tauri-plugin-updaterEd25519 签名校验
开源协议MIT / Apache-2.0 / CC BY优先宽松协议组件

十、方案优势总结

  1. 隐私可控:原始数据留在老人端,授权可撤销;
  2. 部署简单:机构端一键安装,自动更新;
  3. 本地计算:不依赖公网,断网仍可本地陪伴;
  4. 专业介入:社工可设计方案并跟踪效果;
  5. 家属无扰:仅接收结构化摘要,不暴露原始对话;
  6. 知识可运营:免费源即开即用,付费源授权后使用;
  7. 方案可迭代:版本管理、回滚、群体对照分析;
  8. 开源友好:优先采用宽松协议组件,便于本地化部署和二次开发。

孟繁永

An author on this site.

Leave a Reply