本文档是给 Claude Code 的项目说明书,描述要构建什么、为什么这样设计。 实际代码实现请参考
ROADMAP.md按阶段进行,每个阶段建议开一个新的 Claude Code 会话。
一个跑在本地电脑上的工具,把你的多个邮箱(Gmail / QQ邮箱 / 163邮箱 / 126邮箱,Outlook 后续支持)汇总到一起,用你自选的 LLM(DeepSeek、OpenAI 或任何 OpenAI 兼容接口)做两件事:
- 每日摘要:定时(比如每天早上8点)抓取最近邮件,分析「今天必须处理 / 本周跟进 / 仅供参考 / 可忽略」分类,每条带优先级和邮件链接。
- 辅助回信:针对某封邮件,你加入想表达的意思,点「生成」,AI 结合邮件内容与上下文,拟出一段得体的后续回复,你可以再编辑,最后按「确认发送」按钮才会真正发出。
- 本地脚本,不是网页 artifact:IMAP/SMTP 是底层网络协议,浏览器无法直接建立这种原始连接,所以这必须是一个跑在本机、有完整网络权限的 Python 程序。
- LLM 提供商不绑定:所有调用走 OpenAI 兼容的
chat/completions接口,用户在设置里自己填api_key/base_url/model,DeepSeek、OpenAI、其他兼容服务都能直接用。 - 发送动作必须人工确认:分类、起草都可以自动,但「真正发出去」这一步默认卡一个确认环节——AI 判断错了收件人或语气,发出去的邮件没有撤回键。这是默认行为,不是死锁限制,后续可以为「已知安全」的模板回复单独放开。
- 每个邮箱账户的认证方式不同,必须分开说明:
邮箱 认证方式 备注 Gmail IMAP + 应用专用密码(或 OAuth2) 二选一,应用密码更快 QQ邮箱 IMAP + 授权码(16位,邮箱设置里生成),不是QQ密码 imap.qq.com/smtp.qq.com163 / 126邮箱 IMAP + 客户端授权密码(生成方式同QQ) 统一用 imap.163.com/smtp.163.com兼容性最好Outlook 必须走 OAuth2,2026年4月后密码和应用专用密码全部失效 复杂度显著更高,单独支持,见 ROADMAP
- Python 3.11+
imaplib/smtplib(标准库,邮件协议层)- Streamlit(本地网页界面)
- 任意 OpenAI 兼容 SDK 调用方式(
openai库) - 系统自带定时任务(macOS/Linux 用
cron,Windows 用「任务计划程序」)触发脚本,而不是程序自己常驻轮询
ARCHITECTURE.md—— 模块分工、每个文件的职责和接口ROADMAP.md—— 分阶段版本计划,每阶段可独立验收