Personal AI Assistant 是一个智能个人效率助手,能够理解自然语言指令并自动完成日历查询、会议调整、邮件通知等复杂任务。
- 🗣️ 自然语言交互:支持"帮我把下周三下午的会议改到周五"等复杂指令
- 📅 智能日历管理:查询、创建、更新、删除日历事件
⚠️ 冲突检测:自动检测时间冲突并提供备选方案- 📧 自动邮件通知:会议变更后自动发送邮件通知参会人
- 🕐 时间推理:精准解析相对时间和模糊时间表达
- 🔄 状态管理:基于LangGraph构建有状态的工作流
用户:"帮我把下周三下午的团队周会改到周五下午"
Agent自动执行:
✅ 解析时间:下周三下午 → 2026-06-10 14:00
✅ 查询事件:找到"团队周会"
✅ 冲突检测:检查周五下午是否有空闲
✅ 更新日历:修改事件时间
✅ 发送邮件:通知所有参会人
✅ 返回结果:"已成功将会议改到周五下午2点,并通知了3位参会人"- Python 3.10+
- DeepSeek API Key(可选,无Key时使用规则匹配降级)
- SMTP邮箱账号(可选,用于邮件通知功能)
- 克隆仓库
git clone
https://github.com/your-username/AIPersonalAssistant.git
cd AIPersonalAssistant- 创建虚拟环境
python -m .venv .venv
source .venv/bin/activate # Linux/Mac或者
.venv\Scripts\activate # Windows- 安装依赖
pip install -r requirements.txt- 配置环境变量
cp .env.example .env
编辑 .env 文件,填入你的API密钥- 运行应用
python main.py| 类别 | 技术 |
|---|---|
| 核心框架 | LangChain + LangGraph |
| LLM服务 | DeepSeek(兼容OpenAI SDK,支持规则降级) |
| 日历存储 | SQLite(本地数据库,离线可用) |
| 邮件服务 | SMTP(QQ/163/Gmail/Outlook) |
| 时间处理 | 自研TimeParser + pytz |
| 数据验证 | Pydantic v2 |
详细技术选型请参考 技术方案文档。
AIPersonalAssistant/
├── config/ # 配置管理
├── models/ # 数据模型
├── tools/ # 工具层(Calendar/Gmail/TimeParser)
├── agents/ # Agent核心(LangGraph状态图)
│ ├── nodes/ # 状态图节点
│ └── prompts/ # Prompt模板
├── services/ # 业务服务层
├── utils/ # 工具函数
├── tests/ # 测试套件
├── main.py # 应用入口
└── cli.py # CLI交互界面
- 项目初始化
- 配置管理和日志系统
- 数据模型和工具类
- CalendarTool开发(SQLite本地存储)
- GmailTool开发(SMTP邮件发送)
- TimeParser优化(中文自然语言时间解析)
- 意图识别模块(LLM + 规则降级)
- 时间推理模块
- 冲突检测模块
- 执行引擎(日历 + 邮件)
- LangGraph六节点工作流整合
详细任务分解见 技术方案文档。
- 复制
.env.example为.env - 编辑
.env填入配置:
# DeepSeek API(可选,无Key时自动使用规则匹配)
DEEPSEEK_API_KEY=sk-your-key-here
# SMTP邮件(可选,未配置时优雅降级)
EMAIL_SENDER=your-email@qq.com
EMAIL_PASSWORD=your-smtp-auth-code- QQ邮箱:设置 → 账户 → POP3/SMTP服务 → 生成授权码
- 163邮箱:设置 → POP3/SMTP/IMAP → 开启 → 新增授权码
- Gmail:需要开启"应用专用密码"
运行所有测试
pytest
运行单元测试
pytest tests/unit/
运行集成测试
pytest tests/integration/
生成覆盖率报告
pytest --cov=. --cov-report=html- 任务完成率:≥ 92%(目标)
- 平均响应时间:< 10秒
- 意图识别准确率:≥ 95%
- 时间解析准确率:≥ 98%
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
本项目采用 MIT 许可证 - 详见 LICENSE 文件
- 项目Issues:提交问题
- 邮箱:firstname.dh2005@outlook.com
感谢以下开源项目:
如果这个项目对你有帮助,请考虑给它一个 ⭐️ Star!
Made with ❤️ by CoderDongHuang