仓库地址: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 星,无论其他维度多高,直接过滤,不进推荐列表。
这个设计的逻辑是:对于老年人,安全是底线,不是可以被「综合分」拉高的维度。
适老化的细节
这部分是我花时间最多的,也是最容易被忽视的。
界面设计规范
| 元素 | 普通标准 | 银发标准 | 说明 |
|---|---|---|---|
| 正文字号 | 14px | 18px+ | 老年人视力退化 |
| 最小触控面积 | 44×44px | 60×60px | 手抖、关节炎用户 |
| 颜色对比度 | 4.5:1 | 7:1 | 白内障/老花眼 |
| 行间距 | 1.4 | 1.8 | 阅读疲劳 |
| 按钮文字 | 图标为主 | 文字为主 | 老人不懂图标含义 |
语音交互
用 OpenAI Whisper 做语音识别,特别优化了:
- 方言识别(粤语/四川话/闽南话)
- 慢语速处理(老年人说话较慢,断句多)
- 兜底文字提示(语音识别失败时,放大文字输入框)
出行包生成
这是用户反馈最好的功能。老人出发前,系统自动生成:
- 大字版行程图片(微信可直接分享给子女)
- 语音版行程导览(慢速 TTS,用老人熟悉的语气)
- 紧急联系卡(景区急救电话 + 子女电话 + 最近医院)
微信小程序:子女端的设计
老人在外,子女最担心的就是联系不上。
子女端小程序做了:
- 实时位置:老人授权后,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 贡献代码
- 📣 分享给身边关注银发科技的朋友
如果你身边有老人用过类似产品,或者有更好的设计思路,欢迎在评论区分享——这个项目需要更多真实用户的声音。