爱意满满的作品展示区。
ratazzi

[开源]谁在读取你的 .env?先过 Touch ID:一个完全本地的 macOS 文件系统

  •  
  •   ratazzi ·
    PRO
    ·
    ratazzi · 20h 31m ago · 644 views

    我受不了那种在命令前套一层 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 里然后选择要保护的文件:

    3 replies    2026-09-17 22:28:09 +08:00
    Tubbs
        1
    Tubbs  
       19h 35m ago
    能不能用 Fuse-T 代替 macFUSE ,macFUSE 启动内核扩展还是太麻烦了
    ratazzi
        2
    ratazzi  
    OP
    PRO
       19h 16m ago
    @Tubbs 这个需要仔细研究下,如果能不依赖内核扩展确实体验会好很多
    ratazzi
        3
    ratazzi  
    OP
    PRO
       8h 4m ago
    @Tubbs Fuse-T 行不通,文件内容会被缓存,然后不会经过授权
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   953 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 22:32 · PVG 06:32 · LAX 15:32 · JFK 18:32
    ♥ Do have faith in what you're doing.