第30篇:凭证池——多账号轮流用
Hermes 功能详解第30篇:Credential Pools。多组 API 密钥轮换。
第30篇:凭证池——多账号轮流用
等等,标题不是“凭证池”吗?怎么开头讲的是检查点?别急,这一篇咱们把两个事儿一起办了——先聊聊新版本里默认关闭的“后悔药”功能,再回到咱们的老朋友:多账号轮换。
先说说这个“后悔药”
你有没有过这种时刻:Agent 帮你改代码,一顿操作猛如虎,结果把好好的文件改坏了?以前只能干瞪眼,现在 Hermes 给你准备了检查点(Checkpoint)——在“危险操作”之前自动拍一张快照,出事儿了随时回滚。
不过注意,v2 里这个功能默认是关的,因为快照存多了也挺占地方。想用就手动开:
# 本次会话开启
hermes chat --checkpoints
# 或者全局开启(编辑 ~/.hermes/config.yaml)
checkpoints:
enabled: true
开启后,Agent 会在写文件和执行危险命令(比如 rm、sed -i、git reset 这类)之前自动存档。而且它用的是独立的影子仓库(~/.hermes/checkpoints/store/),不会碰你项目真正的 .git,放心。
怎么用?就几个命令
在会话里直接敲:
/rollback # 列出所有快照
/rollback 3 # 恢复到第3个快照(保留你手动改的东西)
/rollback 3 --all # 完全恢复,你手动改的也没了
/rollback diff 3 # 先看看第3个快照和现在差多少
/rollback 3 config.py # 只恢复这一个文件
在终端外面也能管:
hermes checkpoints # 看总大小、项目数
hermes checkpoints prune # 手动清理过期/孤儿快照
hermes checkpoints clear # 全部清空(会先问你)
配置项一览
checkpoints:
enabled: false # 总开关,默认关
max_snapshots: 20 # 每个项目最多留20个快照
max_total_size_mb: 500 # 总大小上限500MB
max_file_size_mb: 10 # 超过10MB的文件不拍
auto_prune: true # 自动清理,默认开
retention_days: 7 # 超过7天的自动删
min_interval_hours: 24 # 至少隔24小时才跑一次清理
好,现在说回凭证池
其实这一篇的“正主”是多账号轮流用。想象你有一堆 API key 或者账号,不想手动切换,那就把它们放进凭证池,让 Agent 每次随机挑一个用。
具体做法很简单:用 hermes auth add 把凭证加进池子,Agent 调用外部服务时会自动轮换。这样既能分摊请求量,又能避免单个账号被限流。
# 加第二个 OpenRouter key
hermes auth add openrouter --api-key sk-or-v1-your-second-key
# 或者让浏览器登录帮你生成一个(OpenRouter OAuth PKCE,最终仍存成一个普通 API key)
hermes auth add openrouter --type oauth
# 加第二个 Anthropic key
hermes auth add anthropic --type api-key --api-key sk-ant-api03-your-second-key
加完用 hermes auth list 看看池子:
openrouter (2 credentials):
#1 OPENROUTER_API_KEY api_key id=ab12cd34 priority=0 env:OPENROUTER_API_KEY ←
#2 backup-key api_key id=ef56gh78 priority=1 manual
← 表示当前选中的凭证;id= 是这个条目的 id(当标签有歧义时,hermes auth remove <provider> <target> 可以用它来指定);priority= 是 fill_first 策略下池子尝试凭证的顺序。
顺便提一句:凭证池主要给 API key 类服务用(OpenRouter、Anthropic 这些)。如果你用的是 Nous Portal,一个 OAuth 就覆盖 300+ 模型,基本不需要搞池子。
每次请求时,Agent 从池子里按策略挑一个。如果某个账号报错(比如 429 限流),它会自动换下一个重试。轮换策略可以在 hermes auth 里选“Set rotation strategy”,也可以写在 config.yaml:
credential_pool_strategies:
openrouter: round_robin
anthropic: least_used
| 策略 | 行为 |
|---|---|
fill_first(默认) |
一直用第一个健康的 key,直到它耗尽,再换下一个;顺序由每个凭证的 priority 决定(用 hermes auth priority 调整) |
round_robin |
均匀轮换,每次选择后换下一个 |
least_used |
总是挑请求计数最少的 key |
random |
在健康的 key 里随机选 |
想调整顺序,可以用 hermes auth priority <provider> <target> <n> 把某个凭证挪到优先级 n(0 表示最先尝试),其余的会自动重新编号;hermes auth add <provider> --priority 0 则是在添加时直接放到最前面。
几个容易踩的坑
- Codex 登录要不同账号:每次
hermes auth add openai-codex都会变成池子里的一个条目,但只有不同的 OpenAI 账号才算独立轮换。同一个账号登两次,上游其实是同一套 token,OpenAI 会把旧的那个吊销,第二个条目一点配额都加不了。加的时候 Hermes 会警告你“这和第 N 个 openai-codex 凭证是同一个账号”——换个账号登,或者干脆只留一个。 - Codex 的 400 报错:如果看到“model is not supported when using Codex with a ChatGPT account”,池子只会把这个 key 在这个模型上暂时禁用,换下一个 key,其他模型照用不误。所有 key 都不支持这个模型,才会走 fallback。
- Anthropic 的 429 是按模型算的:某个 Claude 模型限流了,只冷却这个模型,同一个 key 的其他 Claude 模型还能继续用。
- 配额冷却对正在跑的会话也是临时的:429/402 把会话切到别的 key 之后,它每轮开始都会检查原来那个 key 的冷却好了没,好了就切回去——不用一直烧备用 key 的钱。
小结
- 检查点:默认关,需要时开,
/rollback一键后悔 - 凭证池:多账号轮流用,避免限流,
hermes auth add加进去就能用
两个功能都是“平时不起眼,关键时刻救命”的类型。下一篇咱们聊聊别的,下期见!
📖 官方文档
本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › user-guide/features/credential-pools