Skip to content

yechang15/Elsa

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

118 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Elsa

你的兴趣,AI 为你播报。

截图

主页 详情页
主页 详情页
工具与技能 记忆管理
工具与技能 记忆管理

一款 macOS 原生 AI 个人助理,以个性化播客为核心交互形式。基于你的兴趣话题自动订阅 RSS 信息源,通过 LLM 生成二人对话式播客脚本,再经 TTS 合成语音播放。内置可扩展的 Skills & Tools 系统,支持调用日历、天气、邮件等三方工具,配合长期记忆持久化,让 AI 真正了解你、持续服务你。

Platform Swift License


功能特性

个人助理

  • Skills & Tools — 可扩展的工具调用系统,内置日历、天气、邮件等工具;通过编写 Skill 规则,让 AI 在播客或对话中自动调用三方能力
  • 长期记忆 — 持久化存储用户兴趣、收听习惯与偏好,AI 越用越懂你
  • 行为追踪 — 分析收听行为,自动优化内容推荐权重
  • 对话问答 — 内置 Chat 界面,可随时向 AI 提问,上下文感知记忆

个性化播客

  • 兴趣话题管理 — 选择感兴趣的领域,系统自动映射到相关 RSS 源
  • RSS 订阅 — 自动拉取内容,支持手动添加/管理订阅源
  • AI 播客生成 — 基于 RSS 内容,LLM 生成自然的二人对话脚本
  • TTS 语音合成 — 支持火山引擎豆包 TTS、macOS 系统 TTS、OpenAI TTS、ElevenLabs
  • 音频播放器 — 播放/暂停、进度控制、倍速播放
  • 周期性自动生成 — 定时拉取内容并生成播客,无需手动触发

环境要求

  • macOS 14.0+
  • Xcode 15.0+
  • 火山引擎豆包 API Key(LLM + TTS),或其他 OpenAI 兼容接口

快速开始

1. 克隆仓库并打开项目

git clone https://github.com/yechang15/Elsa.git
cd Elsa
open Elsa/PodcastApp.xcodeproj

2. 配置 API Key

首次运行后,在应用的「设置」界面配置:

LLM(播客脚本生成 & 对话)

  • 支持豆包(Doubao)或任意 OpenAI 兼容接口
  • 填入 API Key、Base URL 和模型名称
  • 豆包模型示例:doubao-seed-2-0-pro-260215

TTS(语音合成)

  • 推荐:火山引擎豆包 TTS(双向流式,音质最佳)
  • 备选:macOS 系统 TTS(免费,无需配置)
  • 其他:OpenAI TTS、ElevenLabs

3. 运行

在 Xcode 中选择 My Mac 目标,按 Cmd+R 运行。首次启动会进入话题选择界面,选择感兴趣的领域后即可开始使用。


文档

文档 说明
PRD 产品需求与版本规划
架构设计 项目架构与模块说明
Tools & Skills 设计 工具系统设计文档
记忆系统设计 记忆与个性化系统
行为追踪设计 用户行为分析系统
UI 设计 界面设计规范

项目结构

├── Elsa/
│   ├── PodcastApp.xcodeproj
│   └── PodcastApp/
│       ├── App/              # 应用入口与全局状态
│       ├── Models/           # SwiftData 数据模型
│       ├── Services/         # 业务逻辑层
│       │   ├── LLM/          # LLM 服务(豆包/OpenAI 兼容)
│       │   ├── TTS/          # TTS 语音合成(火山引擎双向流式)
│       │   ├── RSS/          # RSS 订阅与解析
│       │   ├── Audio/        # 音频播放
│       │   └── Tools/        # Skills & Tools 系统
│       ├── Views/            # SwiftUI 视图
│       └── ViewModels/       # 视图模型
├── docs/                     # 设计文档
├── README.md
└── LICENSE

技术架构

┌──────────────────────────────────────────────────────────────────────────────────────────────┐
│                                    User Interface Layer                                       │
│                          Chat Interface  │  Podcast Player  │  Settings & Tools              │
└────────────────────────────────┬─────────────────────────────────────────────────────────────┘
                                 │
┌────────────────────────────────┴─────────────────────────────────────────────────────────────┐
│                                      Agent Core                                               │
│  ┌─────────────────────┐    ┌─────────────────────┐    ┌─────────────────────┐             │
│  │   LLM Service       │    │  Memory Manager     │    │  Behavior Tracker   │             │
│  │ (Doubao/OpenAI 兼容)│    │ (长期/短期记忆)      │    │ (行为分析/偏好)      │             │
│  └─────────────────────┘    └─────────────────────┘    └─────────────────────┘             │
└────────────────────────────────┬─────────────────────────────────────────────────────────────┘
                                 │
┌────────────────────────────────┴─────────────────────────────────────────────────────────────┐
│                                   Application Services                                        │
│  ┌──────────────────┐    ┌──────────────────┐    ┌──────────────────┐                      │
│  │  Skills Engine   │    │  Chat Service    │    │  Podcast Service │                      │
│  │  • Skill 规则    │    │  • 对话管理      │    │  • RSS 订阅      │                      │
│  │  • Tool 编排     │    │  • 上下文        │    │  • 脚本生成      │                      │
│  │  • 结果聚合      │    │  • 记忆检索      │    │  • TTS 合成      │                      │
│  └────────┬─────────┘    └──────────────────┘    └──────────────────┘                      │
│           │                                                                                   │
│           ├──────────────┬──────────────┬──────────────┬──────────────┐                     │
│           ▼              ▼              ▼              ▼              ▼                     │
│      ┌────────┐     ┌────────┐     ┌────────┐     ┌────────┐     ┌────────┐               │
│      │Weather │     │Calendar│     │ Email  │     │  RSS   │     │  ...   │               │
│      │  Tool  │     │  Tool  │     │  Tool  │     │  Tool  │     │ (扩展) │               │
│      └────────┘     └────────┘     └────────┘     └────────┘     └────────┘               │
└────────────────────────────────────┬─────────────────────────────────────────────────────────┘
                                     │
┌────────────────────────────────────┴─────────────────────────────────────────────────────────┐
│                              External Services & APIs                                         │
│    LLM API (Doubao)  │  TTS API (Volcengine)  │  System APIs (Calendar/Weather)  │  RSS    │
└──────────────────────────────────────────────────────────────────────────────────────────────┘

核心 Agent 能力: 记忆持久化 • Skills & Tools • 智能对话 • 自动化任务


技术栈

技术
UI SwiftUI
数据持久化 SwiftData
音频 AVFoundation
LLM 豆包(Doubao)/ OpenAI 兼容接口
TTS 火山引擎豆包 TTS(双向流式 WebSocket)

TODO

  • 记忆管理优化 — 提升长期记忆的检索精度与更新策略
  • 内容生成优化 — Skills 调用逻辑与系统提示词调优,提升播客质量
  • 用户体验优化 — 界面交互细节打磨
  • 话题与 RSS 源优化 — 扩充默认话题库,改善 RSS 源匹配质量
  • 对话功能优化 — 增强 Chat 上下文管理与多轮对话体验

贡献

欢迎提交 Issue 和 Pull Request。

项目预留了以下扩展点,适合社区贡献:

  • 新的数据源适配器(RSS 之外的内容源)
  • 新的 TTS 引擎接入(实现 TTSEngine 协议)
  • 新的 AgentTool 工具(实现 AgentTool 协议)
  • 播客生成策略优化(Prompt 工程)

License

MIT

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages