2026-01-27 16:01:27 +08:00
2026-01-27 16:01:27 +08:00
2026-01-07 11:56:12 +08:00
2026-01-27 14:42:05 +08:00
2026-01-17 19:34:40 +08:00
2026-01-27 14:31:07 +08:00
2026-01-26 11:54:03 +08:00

往事拾遗 (Life Echo)

一个基于实时 WebSocket 长连接的智能语音对话回忆录生成系统

📖 项目简介

往事拾遗 (Life Echo) 是一个创新的回忆录生成平台,通过 AI 智能对话引导用户回顾人生历程,并将口语对话自动整理为结构化的回忆录章节,最终生成精美的 PDF 电子书。

核心功能

  • 🎙️ 实时语音对话 - 基于 WebSocket 的实时双向语音交互
  • 🤖 智能访谈引导 - AI Agent 根据传记结构动态引导用户讲述人生故事
  • 📝 自动内容整理 - 将口语对话自动整理为优雅的书面语章节
  • 📚 结构化回忆录 - 基于传记结构自动组织章节内容
  • 📄 PDF 导出 - 生成精美的回忆录 PDF 文档
  • 💾 本地数据存储 - Android 端使用 Room 数据库实现离线数据管理

🏗️ 项目结构

life-echo/
├── api/                          # 后端服务FastAPI
│   ├── agents/                  # LangChain Agent对话引导、记忆整理
│   ├── database/                # 数据库模型和连接PostgreSQL
│   ├── routers/                 # API 路由REST + WebSocket
│   ├── services/                # 业务服务ASR、TTS、PDF、LLM
│   ├── tasks/                   # Celery 后台任务
│   ├── docs/                    # API 详细文档
│   ├── main.py                  # FastAPI 应用入口
│   └── README.md                # API 服务文档
│
├── app-android/                 # Android 应用
│   └── app/
│       └── src/main/java/com/huaga/life_echo/
│           ├── data/            # 数据层Room、Repository
│           ├── network/          # 网络层WebSocket、REST API
│           ├── ui/              # UI 层Jetpack Compose
│           ├── feature/          # 功能模块(语音录制等)
│           └── navigation/      # 导航管理
│   └── README.md                # Android 应用文档
│
└── docs/                        # 项目文档
    ├── 开发计划.md              # 开发计划与任务分解
    ├── 数据库设计.md            # 数据库设计文档
    ├── AGENT.md                 # Agent 设计文档
    └── v1_features_*.md         # 功能需求文档

🚀 快速开始

前置要求

  • 后端开发

    • Python 3.10+
    • Docker & Docker Compose用于 PostgreSQL、Redis
    • LLM API KeyDeepSeek 或兼容 OpenAI 的服务)
  • Android 开发

    • Android Studio Hedgehog | 2023.1.1+
    • JDK 11+
    • Android SDKAPI 24+

后端服务启动

详细步骤请参考 api/README.md

# 1. 进入 API 目录
cd api

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

# 3. 配置环境变量(创建 .env 文件)
# 参考 api/README.md 中的环境变量配置说明

# 4. 启动 PostgreSQL 和 Redis
docker-compose -f docker-compose.dev.yml up -d

# 5. 启动 FastAPI 服务
uvicorn main:app --reload --host 0.0.0.0 --port 8000

# 6. 启动 Celery Worker另一个终端
celery -A tasks.celery_app worker --loglevel=info --pool=solo

Android 应用启动

详细步骤请参考 app-android/README.md

# 1. 使用 Android Studio 打开项目
# File -> Open -> 选择 app-android 目录

# 2. 同步 Gradle 依赖
# Android Studio 会自动同步,或点击 Sync Now

# 3. 配置 API 地址(开发环境)
# 编辑 app/src/main/java/com/huaga/life_echo/config/AppConfig.kt
# 修改 BASE_URL 和 WS_BASE_URL

# 4. 运行应用
# 点击 Run 按钮或使用快捷键 Shift+F10

🛠️ 技术栈

后端技术栈

技术 版本 用途
FastAPI 0.115.0 Web 框架REST API 和 WebSocket
LangChain 0.3.7 AI Agent 框架(对话引导、内容整理)
PostgreSQL 17 关系型数据库
SQLAlchemy 2.0.36 ORM 框架
Redis 7 缓存和会话存储
Celery 5.3 异步任务队列
OpenAI API - ASR语音识别、TTS语音合成
DeepSeek API - LLM大语言模型
ReportLab + WeasyPrint - PDF 生成

Android 技术栈

技术 版本 用途
Kotlin 1.9+ 编程语言
Jetpack Compose - 声明式 UI 框架
Ktor - HTTP 客户端和 WebSocket
Room - 本地数据库SQLite
Coroutines + Flow - 异步编程和响应式数据流
DataStore - 键值对存储Token 管理)
Coil - 图片加载库

📚 文档导航

项目文档

API 文档

Android 文档

🔐 认证系统

系统使用 JWTJSON Web Token进行认证采用访问令牌Access Token+ 刷新令牌Refresh Token机制

  • 访问令牌:有效期 2 小时,用于 API 请求认证
  • 刷新令牌:有效期 30 天,用于刷新访问令牌

详细认证流程请参考 api/README.md#认证系统

🌟 功能特性

已实现功能

  • 用户注册与登录(手机号 + 密码)
  • JWT 认证系统(访问令牌 + 刷新令牌)
  • 实时 WebSocket 语音对话
  • AI 智能对话引导(基于传记结构)
  • 语音识别ASR和语音合成TTS
  • 对话内容自动整理为章节
  • 回忆录章节管理
  • PDF 导出功能
  • Android 本地数据存储Room
  • 离线数据同步
  • 用户套餐与订单管理
  • 常见问题FAQ和反馈系统

开发中功能

  • 🔄 更多传记结构模板
  • 🔄 图片上传与管理
  • 🔄 章节编辑功能
  • 🔄 多语言支持

📝 开发指南

添加新的 API 路由

  1. api/routers/ 目录创建新的路由文件
  2. 定义路由函数
  3. api/main.py 中注册路由

添加新的数据库模型

  1. api/database/models.py 中定义模型类
  2. 继承 Base
  3. 运行数据库迁移

添加新的 Android 功能

  1. app-android/app/src/main/java/com/huaga/life_echo/ 下创建功能模块
  2. 遵循 MVVM 架构模式
  3. 使用 Compose 构建 UI

🔒 安全注意事项

  1. 环境变量安全:确保 .env 文件不被提交到版本控制
  2. SECRET_KEY 安全:生产环境必须使用强随机字符串
  3. CORS 配置:生产环境应限制为特定域名
  4. API Key 安全:妥善保管 LLM API Key
  5. 密码安全:密码使用 bcrypt 哈希存储

详细安全建议请参考 api/README.md#安全注意事项

🤝 贡献指南

  1. Fork 本项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

📄 许可证

MIT License

📮 联系方式

如有问题或建议,请通过以下方式联系:

  • 提交 Issue
  • 发送反馈(应用内反馈功能)

往事拾遗 - 让每一段人生故事都被温柔记录

Description
No description provided
Readme 14 MiB
Languages
Python 67.9%
TypeScript 25.4%
HTML 3.4%
CSS 1.4%
Shell 1.3%
Other 0.5%