- SignalDesk3 days ago
我受不了那种在命令前套一层 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 、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 里然后选择要保护的文件:
- 情报分类:服务器与云资源
- 分类依据:内容涉及服务器、云资源或网络线路
- 信息来源:服务器 / V2EX
- 发布时间:2026/9/17 10:01:13
- No replies yet