我受不了那种在命令前套一层 wrapper:
secret-tool run -- psql ...
# .envrc
export DATABASE_URL="$(op read 'op://Private/dev/DATABASE_URL')"
这种方式在终端里能用,但每个入口都必须主动配合。换成 IDE 、GUI 数据库客户端、后台服务或者 AI Agent ,又要重新想怎么注入;原本能直接运行的命令,也都变成了某个工具的子命令。
我想要的体验更简单:
Secret 就是普通文件。原来的工具和命令完全不改,直接打开就能用。
所以做了 Floria ,一个用于密钥和配置的 macOS 本地文件系统。
工具看到的仍然是普通文件或 SSH Agent ; Floria 在文件被读取时动态生成内容。
大致原理
Floria 通过 macFUSE 挂载一个文件系统。Secret 平时以密文保存,不存在于项目目录,也不会预先导出成环境变量。 当程序打开文件时,Floria 才识别当前 App 、项目和 Git worktree ;必要时弹出 Touch ID ,在内存中生成内容并返回。对 psql 、direnv 、IDE 或 AI Agent 来说,它读到的仍然只是普通文件。
所以不需要给命令套 wrapper ,也不用为每个 worktree 复制 .env 或维护软链接。
目前支持:
- worktree 开箱即用:可设置新建 worktree 后无需复制 .env 、创建软链接或重新配置 direnv
- .env 、direnv 、INI 、.pgpass
- 带历史版本的加密编辑
- 按 App 决定是否允许读取
- Touch ID 确认
- 受限的 SSH Agent
- 不记录明文的本地审计
- 默认不联网,数据和审计都留在本机
- 可选 iCloud 同步,且只同步密文
项目还处于 early preview ,目前只测试过 macOS 26/27 、Apple Silicon 和 macFUSE ,安装时需要进行一次系统扩展配置。
GitHub:ratazzi/floria
使用实践:给 AI 能力,而不是凭据
目前这个还没做成 SKILL
需要访问 PostgreSQL 就调用 psql ,需要服务器就调用 ssh ,需要云资源就调用 aws 或 kubectl 。Agent 不应该 cat .env 、读取 .pgpass 或导出环境变量。
AI 正确的操作方式:Floria 的文件系统规则负责实际限制读取:可以拒绝 Agent 直接打开凭据,同时允许 psql 、ssh 等目标程序使用它,并记录完整审计。
最终 AI 拿到的是查询结果或操作能力,而不是密码、Token 和私钥本身。
Floria 想做的不是让 AI 更方便地拿到 Secret ,而是让 AI 不需要拿到 Secret 。
依赖
因为依赖 macFUSE 的内核扩展,所以需要重启好几次,如果介意这个的话那么这个方案可能不适合你


直接将项目目录拖到 app 里然后选择要保护的文件:
