ByteNoteByteNote
别再让读密钥命令连打三遍
字

字节笔记本

2026年10月9日 · 约 4 分钟读完

别再让读密钥命令连打三遍

API中转
¥120

同一条读密钥命令被脚本连打三遍,指纹页也会跟着响。Hacker News 今日还挂着 Once: Cache CLI Commands,本轮 API 核到 70 星、2 个 fork,许可证 MIT,创建和最近推送都是 2026-10-08。语言 Go,只用标准库。安装写成 go install github.com/alex0ptr/once@latest,要 Go 1.27 以上,只谈 macOS 和 Linux。没有发布页资产。正文不写真人姓名。

它不是通用对象缓存。一次成功的标准输出会被短命守护进程记住,相同租户、目录和参数在过期前复用。--ttl 必填,没有默认值。超过 64 MiB 的输出会穿过但不缓存。非零退出、标准输入、标准错误都不进缓存。墙钟到期,机器睡过一觉也算。套接字目录权限 0700,路径在 XDG_RUNTIME_DIR/once-<uid>/。

缓存窗口

先写死过期,再包命令

用法是双横线隔开:once --ttl DURATION [--until TIME] [--tenant KEY] [--refresh] [--no-dir] -- COMMAND [ARGS...]。另有 once status、once clear、once help。--until 给绝对截止,README 举例 2026-10-09T06:00 或当天 22:00。--tenant 也可读环境变量。--refresh 强制重跑。--no-dir 不把当前目录编进 HMAC 键,适合从不同目录读同一条密钥。租户默认空,多项目要自己隔开。

守护进程在最后一条过期后退出,不是常驻服务。键按租户、目录和参数做 HMAC,不要指望改环境变量却不改参数还能命中。本轮没有在本机起守护进程。README 举例把租户写成一次生成的标识,再包住读密钥命令,TTL 8 小时或 12 小时,并加上 --no-dir。也可以和 mise.toml 的 exec 一起用。每日切断用 --until 指到今晚某一刻。

开关一览

今天怎么接到这条命令

bash
go install github.com/alex0ptr/once@latest
once --ttl 8h --no-dir -- your-secret-read-command
once status
once clear

把真实密钥、账号和本机路径换成自己的占位。不要在仓库里写活的令牌。--ttl 30m、1h、24h 都能用,单位按 Go 的 Duration。强制刷新加 --refresh。本轮不把个人密钥管理器的子命令抄进正文。

读这篇记住四组约束。一,只缓存成功的标准输出,最大 64 MiB。二,过期按墙钟,睡眠也算。三,星数还低,热度以 HN 挂榜和 README 为准。四,不是 Redis,也不是 Make。站内刚写过边缘决策和框架发版,和这条命令行缓存不是一条产品线。Open TTS 榜脚本仓只有 2 星,不并进。Holo4 是计算机使用权重,更不该拿来垫这篇。HN 首页同时挂着 Deno 加盟、Whistle 和 MXC,那三篇站内已有。Once 只有七十星,发资讯是因为命令短、约束清楚、今日仍在首页,不是因为爆款。Windows 不在 README 支持列表里,不要自行补一条。没有发行资产,升级就重装 latest。status 只看本机守护进程,clear 清掉已缓存的标准输出,不要当成远程缓存管理。租户键和环境变量要自己定,多仓库共用一台机器时尤其容易串。本轮不在正文里写具体密钥工具的子命令。日榜上的大仓本轮都已写过,不拿来垫这条七十星命令。

相关文章

分享: