大部分 AI 相关的 Emacs 包都推荐用 auth-source
来存取用到 API Key。不过除了 auth-source
外,Emacs 还内置了一个 secrets
包,可以和 org.freedesktop.Secrets
通信来管理 secret。
在 Linux 桌面环境上用得比较多的 Secrets API 实现应该是 KDE Wallet 和 GNOME Keyring,但我一直都没搞懂 KDE Wallet 是怎么工作的,所以我用的是 KeePassXC 的实现:
落实在 Emacs 中就是用 secrets-create-item
创建新的 API key 和用 secrets-get-secret
获取已经保存的 API key。
这里是一个给 gptel
接 API key 的例子:
(setq gptel-backend
(gptel-make-openai "OpenRouter"
:host "openrouter.ai"
:endpoint "/api/v1/chat/completions"
:stream t
:key (lambda ()
(secrets-get-secret "Main" "emacs-openrouter-api-key"))
:models '(google/gemini-2.5-pro-preview)))
至于具体怎么使用 KeePassXC 作为 Emacs 的钥匙圈,有兴趣的话可以看一下我博客上一篇文章。