openclaw/hermes-agent使用免费百炼模型并在额度使用完自动切换其它免费模型
百炼免费模型自动切换定时任务
人只需做这三步,定时任务由openclaw/hermes-agent自动创建
步骤
1、先配置好一个额度充足的百炼的模型和apikey
2、发送该文章链接给openclaw/hermes-agent,让他参考文档实现自动切换模型逻辑
3、定期根据自己百炼模型的免费额度列表提供给智能体最新的模型列表更新到定时任务里

概述
本系统实现了一个智能的模型故障转移机制,用于解决阿里云百炼平台免费额度耗尽时出现的 403 错误问题。通过定时检测和自动轮换,确保服务持续可用。
背景
阿里云百炼(DashScope)平台提供多种免费模型供开发者使用,但每个模型都有免费额度限制(FreeTier)。当额度耗尽时,API 会返回 403 错误,提示 AllocationQuota.FreeTierOnly 或类似信息。
为避免手动干预,我们设计了自动切换机制:
- 定时检测会话记录和日志中的 403 错误
- 一旦发现额度耗尽,自动切换到下一个可用模型
- 循环轮换所有免费模型,最大化利用额度
系统架构
┌─────────────────────────────────────────────────────────────┐
│ Hermes Agent │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌───────────────────────────────────┐ │
│ │ Cron 定时器 │───▶│ model-failover.py 检测脚本 │ │
│ │ (每5分钟) │ │ │ │
│ └──────────────┘ │ 1. 检查会话记录 │ │
│ │ 2. 检查日志文件 │ │
│ │ 3. 检测 403 错误模式 │ │
│ │ 4. 自动切换模型 │ │
│ └───────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────────────┐ │
│ │ config.yaml 模型配置 │ │
│ │ default: <当前模型> │ │
│ └───────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
核心组件
1. 模型轮换脚本
位置: ~/.hermes/scripts/model-failover.py
功能:
- 检测会话记录和日志中的 403 错误
- 从免费模型列表中选择下一个模型
- 更新 config.yaml 中的模型配置
2. 定时任务配置
位置: ~/.hermes/cron/jobs.json
任务名称: model-failover-check
执行频率: 每 5 分钟一次(可自定义)
3. 配置文件
位置: ~/.hermes/config.yaml
关键配置项:
model:
default: glm-5 # 当前使用的模型
provider: custom # 使用自定义 provider
base_url: https://dashscope.aliyuncs.com/compatible-mode/v1
api_key: sk-xxx # API 密钥
支持的免费模型列表
脚本内置以下免费模型,按优先级排序:(注意这里可能会更新,需要手动定期更新列表)
| 序号 | 模型名称 | 说明 |
|---|---|---|
| 1 | tongyi-xiaomi-analysis-pro | 通义小米分析增强版 |
| 2 | qwen3.5-122b-a10b | Qwen 3.5 122B |
| 3 | qwen3.5-35b-a3b | Qwen 3.5 35B |
| 4 | qwen3.6-flash-2026-04-16 | Qwen 3.6 Flash |
| 5 | qwen3.5-plus | Qwen 3.5 Plus |
| 6 | qwen3.6-35b-a3b | Qwen 3.6 35B |
| 7 | qwen3.5-plus-2026-02-15 | Qwen 3.5 Plus 新版 |
| 8 | glm-5 | GLM-5(智谱) |
| 9 | qwen3-max-2026-01-23 | Qwen 3 Max |
| 10 | qwen3.5-27b | Qwen 3.5 27B |
| 11 | tongyi-xiaomi-analysis-flash | 通义小米分析 Flash |
| 12 | glm-5.1 | GLM-5.1(智谱) |
| 13 | qwen3.6-plus-2026-04-02 | Qwen 3.6 Plus |
| 14 | qwen3-vl-flash-2026-01-22 | Qwen 3 VL Flash(视觉) |
| 15 | qwen3.5-flash-2026-02-23 | Qwen 3.5 Flash |
| 16 | qwen3.5-397b-a17b | Qwen 3.5 397B |
| 17 | qwen3.6-flash | Qwen 3.6 Flash |
| 18 | MiniMax-M2.5 | MiniMax M2.5 |
| 19 | qwen-flash-character-2026-02-26 | Qwen 角色版 |
| 20 | qwen-flash-character | Qwen 角色版 |
总计: 20 个免费模型可供轮换
工作流程
┌─────────────────────────────────────────────────────────────────┐
│ 模型故障转移流程 │
└─────────────────────────────────────────────────────────────────┘
┌──────────────────┐
│ 定时任务触发 │
│ (每 5 分钟) │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ 读取当前模型配置 │
│ from config.yaml │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ 检查会话记录 │───────▶ sessions/*.jsonl
│ (最近 10 分钟) │ sessions/*.json
└────────┬─────────┘
│
▼
┌──────────────────┐
│ 检查日志文件 │───────▶ agent.log
│ (最近 100 行) │ errors.log
└────────┬─────────┘
│
▼
┌──────────────────┐
│ 搜索 403 错误 │
│ 模式匹配: │
│ 403.*AllocationQuota
│ 403.*FreeTierOnly│
└────────┬─────────┘
│
┌────────┴─────────┐
│ │
▼ ▼
┌─────────┐ ┌─────────┐
│ 发现403 │ │ 无错误 │
└─────────┘ └─────────┘
│ │
▼ ▼
┌───────────────┐ ┌───────────────┐
│ 选择下一个模型│ │ 输出 OK: │
│ (轮换索引) │ │ no_error │
└────────┬──────┘ └───────────────┘
│
▼
┌───────────────┐
│ 更新 config │
│ default: 新模型│
└────────┬──────┘
│
▼
┌───────────────┐
│ 输出 SWITCHED:│
│ <新模型名称> │
└───────────────┘
输出状态码
脚本运行后会输出状态信息,供定时任务处理器判断:
| 状态码 | 格式 | 含义 | 处理建议 |
|---|---|---|---|
| SWITCHED | SWITCHED:<模型名> |
模型已成功切换 | 向用户报告切换结果 |
| FAILED | FAILED:<原因> |
切换失败 | 向用户报告错误 |
| OK | OK:<状态> |
检查完成但无需切换 | 无需通知 |
安装与配置
步骤 1: 创建脚本目录
mkdir -p ~/.hermes/scripts
mkdir -p ~/.hermes/logs
步骤 2: 安装脚本
将 model-failover.py 放入 ~/.hermes/scripts/ 目录。
步骤 3: 配置定时任务
通过 Hermes 命令创建定时任务:
# 使用 Hermes cronjob 工具
hermes cron create \
--name model-failover-check \
--script model-failover.py \
--schedule "every 5m"
或手动编辑 ~/.hermes/cron/jobs.json:
{
"jobs": [{
"id": "model-failover",
"name": "model-failover-check",
"script": "model-failover.py",
"schedule": {
"kind": "interval",
"interval": "5m"
},
"enabled": true
}]
}
步骤 4: 验证配置
# 检查当前模型
grep "default:" ~/.hermes/config.yaml
# 检查定时任务状态
cat ~/.hermes/cron/jobs.json
# 手动测试脚本
python3 ~/.hermes/scripts/model-failover.py
日志记录
系统会自动记录运行日志:
日志位置: ~/.hermes/logs/model-failover.log
日志格式:
2026-04-19 01:05:00 INFO: ==================================================
2026-04-19 01:05:00 INFO: 开始模型故障转移检查
2026-04-19 01:05:00 INFO: 当前模型:glm-5 (provider: custom)
2026-04-19 01:05:01 INFO: 在 session_xxx.jsonl 中检测到 403 错误
2026-04-19 01:05:01 INFO: 选择新模型:qwen3.5-plus
2026-04-19 01:05:02 INFO: ✅ 模型切换成功:glm-5 -> qwen3.5-plus
2026-04-19 01:05:02 INFO: 模型故障转移检查完成
自定义配置
修改检测频率
编辑 jobs.json 中的 schedule 字段:
"schedule": {
"kind": "interval",
"interval": "10m" // 改为 10 分钟
}
添加新模型
编辑 model-failover.py 中的 FREE_MODELS 列表:
FREE_MODELS = [
"your-new-model", # 添加新模型
# ... 其他模型
]
调整检测窗口
修改脚本中的时间参数:
# 会话文件检测窗口(默认 10 分钟)
cutoff_time = datetime.now() - timedelta(minutes=10)
# 日志文件检测行数(默认 100 行)
lines = f.readlines()[-100:]
故障排除
问题: 脚本无法检测到 403 错误
检查项:
- 会话文件是否存在
- 日志文件是否更新
- 正则表达式是否匹配实际错误格式
解决方案:
# 查看最近的错误
grep -i "403" ~/.hermes/logs/agent.log | tail -20
# 查看会话文件
ls -la ~/.hermes/sessions/
问题: 模型切换后仍然报错
可能原因:
- 新模型额度也已耗尽
- API 配置错误
解决方案:
# 查看切换历史
cat ~/.hermes/logs/model-failover.log
# 检查当前配置
grep -A5 "^model:" ~/.hermes/config.yaml
问题: 定时任务未运行
检查项:
- Hermes gateway 服务是否运行
- 任务是否启用
# 检查 gateway 状态
cat ~/.hermes/gateway_state.json
# 检查任务状态
cat ~/.hermes/cron/jobs.json | grep -A10 "model-failover"
技术细节
错误检测模式
脚本使用正则表达式匹配以下模式:
error_pattern = re.compile(
r"403.*AllocationQuota|AllocationQuota.*403|"
r"403.*FreeTierOnly|FreeTierOnly.*403",
re.IGNORECASE
)
轮换算法
模型轮换采用循环索引机制:
# 当前模型位置
current_pos = FREE_MODELS.index(current_model)
# 下一个索引(循环)
next_index = (current_pos + 1) % len(FREE_MODELS)
# 保存索引到 .model_index 文件
配置更新方法
使用正则表达式替换:
content = re.sub(
r"default:\s*\S+",
f"default: {new_model}",
content
)
最佳实践
- 定期检查日志: 关注
model-failover.log了解切换频率 - 监控模型使用: 记录每个模型的使用时长
- 及时更新模型列表: 百炼可能新增免费模型
- 设置合理检测频率: 5-10 分钟为宜,避免过于频繁
- 备用 API Key: 考虑配置多个账号的 API Key
相关文件清单
| 文件 | 路径 | 说明 |
|---|---|---|
| 检测脚本 | ~/.hermes/scripts/model-failover.py | 核心逻辑 |
| 配置文件 | ~/.hermes/config.yaml | 模型配置 |
| 定时任务 | ~/.hermes/cron/jobs.json | 任务定义 |
| 运行日志 | ~/.hermes/logs/model-failover.log | 切换记录 |
| 轮换索引 | ~/.hermes/.model_index | 当前索引 |
| 会话记录 | ~/.hermes/sessions/*.jsonl | 错误检测源 |
| 系统日志 | ~/.hermes/logs/agent.log | 错误检测源 |
更新历史
- 2026-04-19: 初始版本,支持 20 个免费模型轮换
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)