分享一个极简且支持 BYOK AI 的开源邮件客户端 Skim
Windows 上的邮件客户端要么臃肿得像 Outlook,要么古板得像 Thunderbird,这种反差让我想尝试用 Tauri 2 撸一个轻量级的。于是有了 Skim,一个主打离线优先、极简且支持“自带 Key (BYOK)”的 AI 邮件工具。
下一篇
分享一个把手写照片转成字体文件的开源工作流 →
最让我兴奋的是它的 AI 实现方式。它不是简单的 RAG 挂载,而是一个真正的 Tool-calling 循环。当你使用“询问收件箱”功能时,模型会自主调用 search_emails 和 read_email 等工具,通过多轮检索后给出带引用的回答。而且它完全开放,支持 Anthropic、OpenRouter 甚至本地的 Ollama。
在实操部署和优化上,这个项目有几个非常硬核的细节值得开发者参考:
一、极致的体积控制
为了把安装包压到 5MB 以下,作者在 Cargo.toml 里对每个依赖的 feature flag 都做了精细审计,甚至通过配置 panic = "abort" 砍掉了 6MB 的 unwind tables。
rustls = { version = "0.23", default-features = false, features = ["ring"] }
# 禁用 aws-lc-rs 以避免编译重复的加密库,直接省掉约 2MB 冗余二、安全沙箱机制
对待 HTML 邮件采取的是“敌对态度”,采用了三层过滤:
1. 使用 Rust 的 ammonia 库进行初步清洗。
2. 在一个禁用 allow-scripts 的沙箱 iframe 中渲染。
3. 顶层覆盖一套严格的 App 级 CSP 策略。
三、离线优先的架构
所有操作(归档、删除、发送)先在本地 SQLite 事务中完成并进入操作队列,UI 瞬间更新,后台异步同步。搜索则利用了 SQLite 的 FTS5 和 bm25 算法,离线状态下依然秒出结果。
这种不依赖 Electron、利用系统 WebView2 的开发路径,对于想做轻量级桌面应用的同学来说非常有参考价值。
