mailogy
granawkins/mailogy加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你有没有想过,如果能像问 ChatGPT 一样问自己的邮件记录——"我去年在亚马逊花了多少钱?""我注册过哪些订阅服务?""把所有发票汇总成 CSV 发给我"——那会是什么体验?
Mailogy 就是来解决这个问题的:它把你的 Gmail 邮件导出文件(.mbox 格式)变成一个本地 SQLite 数据库,然后用自然语言 LLM(支持 GPT-4、Mistral、Ollama 等任意兼容模型)来查询这个数据库,让你可以用日常对话的方式挖掘邮件里的信息宝藏。
电子邮件诞生 50 多年了,我们每个人平均拥有数万封邮件,其中埋藏着消费记录、订阅服务、登录凭证、收据发票等大量有价值的信息。然而这些数据分散在 Gmail/Outlook/QQ邮箱里,搜索功能只能做简单的关键词匹配,无法做语义理解和跨邮件聚合分析。
Mailogy 的作者正是发现了这个痛点:需要整理多年的订阅记录时,现有的邮件搜索工具完全不够用。Google Takeout 可以导出全部邮件,但导出来只是一堆 .mbox 文件,无法直接分析。他选择用 LLM 作为"翻译层"——把自然语言问题转成 SQL 查询,在本地 SQLite 数据库中执行,返回用户需要的结构化结果。
这个思路非常聪明:邮件数据永远留在本地,不需要把私密内容上传到任何云端服务,隐私安全性极高。
Mailogy 的使用流程非常清晰:
第一步:导出 Gmail 数据 通过 Google Takeout 下载全部邮件的 .mbox 文件(约 10GB 量级可能需要等待数小时)。
第二步:本地解析入库
pip install -r requirements.txt
python -m mailogy path_to_your_mbox_file.mbox
程序会将 .mbox 中的每一封邮件解析并存储到本地 SQLite 数据库(位于 ~/.mailbox/ 目录),包括发件人、收件人、时间、主题、正文、链接和附件信息。
第三步:自然语言查询
python -m mailogy
进入交互式对话,你可以用自然语言提问:
多模型支持 是 Mailogy 的一大亮点。默认使用 OpenAI GPT-4,但通过配置文件(~/.mailbox/config.yaml)可以无缝切换到 Mistral、Ollama 本地模型等任何兼容 OpenAI 接口的服务:
llm_base_url: http://127.0.0.1:11434 # Ollama 本地地址
llm_model: ollama_chat/mistral
Mailogy 核心代码约 600 行,采用经典的模块化分层结构:
| 模块 | 职责 |
|---|---|
parse_message.py | 解析 .mbox 邮件格式,提取结构化字段(发件人/收件人/时间/链接等),使用 BeautifulSoup 处理 HTML 邮件 |
database.py | SQLite 数据库封装,创建 messages 表,注册 REGEXP 函数供 SQL 查询使用 |
llm_client.py | 基于 LiteLLM 封装多模型 LLM 调用,支持 OpenAI/Mistral/Ollama 等,携带完整数据库 Schema 作为上下文 |
initialize.py | 入口程序,处理初始化流程、logo 输出和交互引导 |
prompts.py | 管理 LLM 提示词模板 |
数据库 Schema 直接作为注释内嵌在 database.py 源码中,这是刻意为之的设计——Mailogy 把 Schema 信息通过 script_prompt 发送给 LLM,让它能理解表结构后生成正确的 SQL 查询。这种"Schema as context"的模式非常巧妙,保证了 LLM 生成的 SQL 准确率。
Mailogy 不支持容器化部署,没有 Dockerfile 或 docker-compose.yml,也无 Web UI,纯命令行交互。这意味着:
✅ 优势:轻量级,无需 Docker,对运行环境要求极低,CPU 即可运行
❌ 劣势:需要手动安装 Python 环境、配置 API Key,非技术用户上手有门槛
对于 AI 爱好者来说,这个难度其实很低:装好 Python(3.9+),pip install -r requirements.txt,配置一个 OpenAI API Key,就能跑起来。但如果要让家人或非技术背景的朋友使用,门槛就比较高了。
1. LLM 生成 SQL 的准确性依赖模型能力 当用户的问题涉及复杂的 JOIN、多条件筛选或模糊语义时,LLM 可能生成错误或不完整的 SQL,导致查询结果不符合预期。
2. 邮件格式兼容性问题 mailogy 主要针对 Gmail 导出的 .mbox 格式优化,对其他邮件客户端(Outlook、QQ邮箱等)的导出格式兼容性未经充分测试。
3. SQLite 明文存储 所有邮件内容以明文存入本地 SQLite 数据库(约 10GB+),虽然数据不离开本机,但任何能访问这台电脑的人都可以直接读取邮件内容,敏感场景下存在数据泄露风险。
4. 没有自动化更新机制 用户的 Gmail 数据是静态快照,不支持增量同步。再次导入新邮件时需要手动执行,且每次导入会完整扫描历史邮件(尽管已有数据不会重复插入)。
Mailogy 用极简的架构解决了一个真实痛点:让普通用户能以自然语言的方式查询、分析自己的邮件数据,且数据始终保留在本地。相比将邮件上传到第三方 AI 服务(隐私风险极高),这种"本地 LLM + 本地数据库"的设计更加安全可控。
虽然目前仅有 103 stars,用户规模较小,但其"数据不出本机"的设计理念与当前 AI 隐私保护趋势高度契合。随着 Ollama 等本地模型的能力提升,Mailogy 这类工具的实用价值会越来越大。
项目信息