CmdCode API Key 轮换机制

CmdCode 的 API 代理(proxy.php)为 OpenCode Go 和 MiniMax 两大供应商实现了双重保险的密钥轮换机制,确保在限流(429)或密钥过期时服务不中断。

双重保险总览

保险层机制触发
第一层 · 实时 429API 返回 429 时自动尝试组内下一个密钥每条请求实时生效
第二层 · 每日 7:00系统 crontab + Hermes Cron 双重触发,强制轮换到链中下一个起始位置0 7 * * *

OpenCode Go 五密钥链

五个独立 provider(opencode-go 至 opencode-go4)各持一个密钥,组成轮换链:

opencode-go opencode-go1 opencode-go2 opencode-go3 opencode-go4

MiniMax 三密钥起点轮换

单个 provider(minimax)内含 3 个密钥,双重轮换保护:

key[0] key[1] key[2] key[0] ···

实现架构

轮换状态文件

存储在服务器 /vhost/tmp/provider_rotation.json

{
  "opencode-go": {"current": 0, "rotated_at": "2026-05-20 07:00:00"},
  "minimax":     {"current": 0, "rotated_at": "2026-05-20 07:00:00"}
}

代理端点

端点功能使用方式
/rotate_provider手动/cron 触发轮换(group=opencode-go|minimax|all)POST {"_path":"/rotate_provider","group":"all"}
/rotation_status查看当前所有轮换组状态POST {"_path":"/rotation_status"}

双重 Cron 保险

来源文件/任务调度
系统 crontab/etc/cron.d/provider-key-rotation0 7 * * *
Hermes Cron每日7点APIKey轮换 (ID: 6f590506005a)0 7 * * *

涉及文件清单

文件改动
/cmdcode-solo/config.enc.php新增 ROTATION_STATE_FILE + ROTATION_GROUPS 定义
/cmdcode-solo/proxy.php4 个轮换函数 + 2 个端点 + 主循环展开 + minimax 起点 + memory 函数同步
/cmdcode-solo/ui.htmlCHAT_PROVIDER 注释更新,前端无需改代码
/root/scripts/rotate-provider-keys.sh新增 cron 轮换脚本

验证命令

# 查看当前轮换状态
curl -s https://cmdcode.cn/cmdcode-minimax-toolset/proxy.php \
  -H 'Content-Type: application/json' \
  -d '{"_token":"TOKEN","_path":"/rotation_status"}'
# 手动触发轮换
curl -s https://cmdcode.cn/cmdcode-minimax-toolset/proxy.php \
  -H 'Content-Type: application/json' \
  -d '{"_token":"TOKEN","_path":"/rotate_provider","group":"opencode-go"}'
来源:Hermes Agent 部署记录 · 仅供学习参考