我用三个AI智能体,为2.8亿老年人造了一个旅游助手(完整开源)

0 阅读7分钟

仓库地址github.com/adayu68/Sil…
一句话:首个完整覆盖「推荐 + 安全 + 适老化输出」全链路的银发旅游开源项目


为什么要做这个项目?

去年陪家里老人出去旅游,用携程帮他订景点——字小到他根本看不清,搜索框更是不知道怎么用。好不容易订好,景区里的台阶把膝盖不好的他折腾得够呛,原本开心的旅行变成了受罪。

那一次回来,我就在想:2.8 亿老年人,旅游市场万亿规模,但现有的旅游产品有没有一个是真正为老人设计的?

答案是:几乎没有。

于是花了几个月时间,做了这个项目:SilverJourney AI


现有平台到底哪里不行?

痛点现状影响
字体太小普通 12-14px,配色对比度低老年人看不清,放弃使用
忽略健康需求不考虑慢性病、行动能力推荐超出老人体力的目的地
安全无保障子女无法实时了解老人状态独自出行风险高,家属焦虑
交互门槛高需要打字搜索数字鸿沟,老年人根本用不来
出行材料缺失无定制化出行材料老人出行前准备不足
推荐不精准通用算法不懂银发需求推荐结果不适用

SilverJourney AI 是什么?

一句话:让老人安心出行,让子女放心放手。

核心能力:

  • 🎤 语音交互:Whisper 支持普通话 + 方言(粤语/川话/闽南话),老人说话就能用
  • 🤖 三智能体评分:健康 Agent + 安全 Agent + 兴趣 Agent,三维度联合评分
  • 🛡️ 安全守护:医疗资源距离 + 实时天气 + 人流密度,低于 2 星自动过滤
  • 📱 子女小程序:GPS 实时位置同步 + 异常自动预警推送
  • 📦 出行包生成:大字版行程图片 + 慢速语音导览 + 紧急联系卡

三智能体架构是核心,说说设计思路

这是项目最有意思的地方。

传统推荐系统用一个模型打分,银发旅游的问题是评价维度完全不同于普通用户

  • 普通用户关心:好玩、拍照好看、性价比
  • 老年用户关心:走多少步?有没有台阶?附近有没有医院?子女能不能联系到我?

所以我设计了三个独立 Agent,每个负责一个维度:

                    ┌──────────────┐
                    │  用户输入     │
                    │(语音/文字)  │
                    └──────┬───────┘
                           │
              ┌────────────┼────────────┐
              ▼            ▼            ▼
      ┌──────────────┐ ┌──────────┐ ┌──────────────┐
      │ HealthAgent  │ │SafetyAgent│ │InterestAgent │
      │ 康养适配     │ │ 安全评估  │ │  兴趣匹配    │
      │              │ │          │ │              │
      │ · 慢性病匹配 │ │· 医疗距离 │ │· 历史足迹    │
      │ · 步行强度   │ │· 天气风险 │ │· 同龄偏好    │
      │ · 无障碍设施 │ │· 人流密度 │ │· 文化习惯    │
      └──────┬───────┘ └────┬─────┘ └──────┬───────┘
             │              │              │
             └──────────────┼──────────────┘
                            ▼
                   ┌────────────────┐
                   │   Moderator    │
                   │  裁判器/融合器  │
                   │  加权融合评分   │
                   │  安全过滤兜底   │
                   └────────┬───────┘
                            ▼
                   ┌────────────────┐
                   │ Top-K 推荐结果 │
                   │  + 出行包生成  │
                   └────────────────┘

HealthAgent 怎么工作的?

@dataclass
class HealthProfile:
    """用户健康画像"""
    age: int = 65
    mobility_score: float = 3.0          # 行动能力 1-5
    chronic_diseases: List[str] = None   # ["高血压","糖尿病","心脏病","关节炎"]
    health_level: str = "good"           # excellent/good/moderate/limited
    travel_companion: str = "family"     # alone/family/group_tour

@dataclass
class POIHealthData:
    """POI健康评估所需数据"""
    estimated_daily_steps: int = 5000   # 预估日均步数
    stair_count: int = 0                # 台阶数量
    nearest_hospital_km: float = 5.0   # 最近医院距离
    has_wheelchair_access: bool = False # 轮椅通道
    has_rest_area: bool = True          # 休息区
    wellness_index: float = 3.0         # 康养指数

HealthAgent 会把用户的健康画像和 POI 数据交叉评估,比如:

  • 心脏病的用户 → 过滤掉日均步数超过 8000 步的景区
  • 关节炎的用户 → 台阶超过 100 级自动降分
  • 独自出行 → 最近医院必须在 3km 以内,否则安全分直接扣满

Moderator 裁判器的设计

三个 Agent 各自给出 0-5 星评分后,Moderator 负责融合:

最终分 = 健康分 × 0.4 + 安全分 × 0.35 + 兴趣分 × 0.25

但有一个兜底规则:安全分 < 2.0 星,无论其他维度多高,直接过滤,不进推荐列表

这个设计的逻辑是:对于老年人,安全是底线,不是可以被「综合分」拉高的维度。


适老化的细节

这部分是我花时间最多的,也是最容易被忽视的。

界面设计规范

元素普通标准银发标准说明
正文字号14px18px+老年人视力退化
最小触控面积44×44px60×60px手抖、关节炎用户
颜色对比度4.5:17:1白内障/老花眼
行间距1.41.8阅读疲劳
按钮文字图标为主文字为主老人不懂图标含义

语音交互

用 OpenAI Whisper 做语音识别,特别优化了:

  • 方言识别(粤语/四川话/闽南话)
  • 慢语速处理(老年人说话较慢,断句多)
  • 兜底文字提示(语音识别失败时,放大文字输入框)

出行包生成

这是用户反馈最好的功能。老人出发前,系统自动生成:

  1. 大字版行程图片(微信可直接分享给子女)
  2. 语音版行程导览(慢速 TTS,用老人熟悉的语气)
  3. 紧急联系卡(景区急救电话 + 子女电话 + 最近医院)

微信小程序:子女端的设计

老人在外,子女最担心的就是联系不上。

子女端小程序做了:

  • 实时位置:老人授权后,GPS 每 5 分钟同步一次位置
  • 异常预警:超过预设安全区域 → 自动微信推送给子女
  • 一键呼叫:子女端一键拨打老人电话

这个功能是我问了十几位老人家属后加进去的,他们几乎每个人都说「这个最重要」。


技术栈

后端
├── Python 3.9+
├── Flask(RESTful API)
├── SQLAlchemy + SQLite(POI数据库)
└── ReportLab(PDF出行包生成)

AI├── 三智能体规则引擎(无需外部大模型,可本地运行)
├── OpenAI Whisper(语音识别,本地部署)
└── Moderator 加权融合器

前端
├── Streamlit(老人端 Web APP,大字体深色主题)
└── 微信小程序原生(WXML/WXSS/JS,子女端)

工程化
├── pytest(完整单元测试套件)
├── GitHub Actions CI(多Python版本测试+Codecov)
└── i18n 国际化(中/英双语)

和主流平台的对比

维度携程 / 飞猪SilverJourney AI
界面适老化普通字号✅ 18px+ · 高对比度 · 大按钮
健康评估✅ 慢性病 · 步行量 · 无障碍设施
安全评估✅ 医疗距离 · 天气 · 人流密度
子女联动✅ 实时位置 + 异常预警
语音交互普通话✅ Whisper 多方言
出行材料✅ 大字版行程 + 语音导览
推荐架构单一协同过滤✅ 三智能体协作 + 裁判器
开源完全闭源✅ MIT,可二次开发

快速上手

# 克隆项目
git clone https://github.com/adayu68/SilverJourneyAI.git
cd SilverJourneyAI

# 安装依赖
pip install -r requirements.txt

# 启动 Web 界面(老人端)
streamlit run app.py

# 启动 API 服务(子女小程序后端)
python api_server.py

浏览器打开 http://localhost:8501,就能看到完整界面。


项目结构

SilverJourneyAI/
├── silverjourney/
│   ├── agents/
│   │   ├── health_agent.py     # 康养评估 Agent
│   │   ├── safety_agent.py     # 安全评估 Agent
│   │   ├── interest_agent.py   # 兴趣匹配 Agent
│   │   └── moderator.py        # 裁判器/结果融合
│   ├── database/
│   │   ├── models.py           # SQLAlchemy 数据模型
│   │   └── seed_data.py        # 13 城市 POI 种子数据
│   └── utils/
│       └── base_agent.py       # Agent 抽象基类
├── miniprogram/                # 微信小程序源码
│   ├── pages/
│   │   ├── index/              # 老人端首页
│   │   ├── recommend/          # 推荐结果页
│   │   ├── family/             # 子女端
│   │   └── travel-pack/        # 出行包页面
│   └── cloudfunctions/         # 云函数
├── tests/                      # pytest 测试套件
├── app.py                      # Streamlit 主入口
├── api_server.py               # Flask API 服务
└── requirements.txt

当前进度和路线图

v1.0.0(已发布)

  • 三智能体核心引擎
  • Streamlit Web 界面(适老化)
  • 微信小程序(老人端 + 子女端)
  • 13 城市 POI 数据库
  • PDF 出行包生成
  • 完整测试套件

v1.1(开发中)

  • 接入真实天气 API(中央气象台)
  • 更多城市 POI 数据(50 城)
  • 出行包支持更多格式

v2.0(规划中)

  • 接入 LLM,实现自然语言对话式规划
  • 老年人旅游保险联动
  • 社区功能(同龄旅伴匹配)

写在最后

这个项目还有很多可以完善的地方,但我更希望它能作为一个起点,让更多开发者关注银发群体的数字化需求。

老年人用不来智能手机,不是他们的问题,是我们没做好。

如果你觉得这个方向有意义,欢迎:

  • ⭐ 给项目点个 Star
  • 🐛 提 Issue 反馈问题
  • 🔧 提 PR 贡献代码
  • 📣 分享给身边关注银发科技的朋友

仓库地址github.com/adayu68/Sil…


如果你身边有老人用过类似产品,或者有更好的设计思路,欢迎在评论区分享——这个项目需要更多真实用户的声音。