Hermes Agent 代理网络设置 + Fallback 降级
2026-10-13
记录时间:2026-06-19
最后更新:2026-06-19
适用环境:Windows 10(git-bash/MSYS)
Hermes Home:~/AppData/Local/hermes/
概述
Hermes Agent 没有内置的 proxy 配置项(无 hermes config set proxy 类的命令)。但 Hermes 底层使用 Python 的 httpx / aiohttp / requests 等标准 HTTP 库,这些库都遵循标准的代理环境变量。
因此,设置代理的方式就是通过环境变量,让 Hermes 的所有 API 请求走代理。
适用场景
- 需要将 LLM API 请求(OpenAI / OpenRouter 等)走代理网络
- 本地网络可以直接访问某些 API(如 DeepSeek),不需要走代理
- 需要 GPT 和 DeepSeek 自动切换的容灾方案
- 需要使用分流代理(Clash / v2ray / SSR / sing-box 等)
当前架构
┌─────────────────────────────────────────────────────┐
│ Hermes Agent │
│ │
│ 主模型: gpt-5.4-mini (openai-codex, OAuth) │
│ └─ HTTP_PROXY=http://127.0.0.1:7897 → OpenAI │
│ │
│ 失败时自动切换 ↓ │
│ │
│ Fallback: deepseek-v4-flash (custom:ds-hermes) │
│ └─ NO_PROXY → 直连 api.deepseek.com │
└─────────────────────────────────────────────────────┘
核心思路:GPT 必须走代理(直连不通),当 GPT 因代理故障 / 限流 / 超时而失败时,Hermes 内置的 fallback 机制自动切换到 DeepSeek(直连)。
配置方法
Step 1:写入 .env(代理设置)
实际路径:~/AppData/Local/hermes/.env
HTTP_PROXY=http://127.0.0.1:7897
HTTPS_PROXY=http://127.0.0.1:7897
NO_PROXY=localhost,127.0.0.1,::1,api.deepseek.com
注意: NO_PROXY 中加入了 api.deepseek.com,这样 DeepSeek 的请求绕过代理直连。当代理故障导致 GPT 请求失败时,fallback 到 DeepSeek 仍可正常工作。
生效方式:
- CLI 模式:退出重进,或在对话内执行 /reload
- Gateway 模式:hermes gateway restart
Step 2:配置 Fallback Provider
通过 CLI 添加(推荐):
hermes fallback add
# → 选 provider: custom:ds-hermes
# → 选 model: deepseek-v4-flash
或直接编辑 config.yaml:
fallback_providers:
- provider: custom:ds-hermes
model: deepseek-v4-flash
同时建议降低重试次数以便快速降级:
agent:
api_max_retries: 1 # 失败 1 次即切换 fallback,避免空转等待
当前生效配置(2026-06-19)
| 项目 | 值 |
|---|---|
| 主模型 | gpt-5.4-mini (openai-codex, OAuth) |
| 代理 | HTTP_PROXY=http://127.0.0.1:7897(GPT 对话、浏览器、搜索) |
| Fallback | deepseek-v4-flash (provider: deepseek, 直连) |
| NO_PROXY | localhost,127.0.0.1,::1,api.deepseek.com |
| api_max_retries | 1(失败即切换,避免空转) |
| auxiliary.web_extract | provider: deepseek(Web 搜索内容处理走 DeepSeek 直连) |
工作流程
GPT 对话请求
└─ 通过代理 (7897) → OpenAI Codex API ✅
Web 搜索 / 浏览器请求
├─ HTTP 获取 → 通过代理 (7897) ✅
└─ 内容处理 → DeepSeek 直连 ✅(auxiliary.web_extract)
GPT 故障时:
├─ api_max_retries=1 → 1次重试后触发 fallback
└─ Fallback → DeepSeek 直连(NO_PROXY 绕过代理) ✅
验证代理是否生效
测试代理连通性
# 测试代理是否在监听
netstat -ano | grep 7897
# 测试通过代理访问 OpenAI
curl -x http://127.0.0.1:7897 -s -o /dev/null -w "OpenAI via proxy: %{http_code}\n" \
--connect-timeout 10 https://api.openai.com/v1/models
# 返回 401 表示代理正常(未传递 API Key)
测试 NO_PROXY 直连
# 测试 DeepSeek 直连(绕过代理)
curl -s -o /dev/null -w "DeepSeek direct: %{http_code}\n" \
--connect-timeout 10 https://api.deepseek.com/v1/models
# 返回 401 表示直连正常
查看 Hermes 日志
cat ~/AppData/Local/hermes/logs/gateway.log | grep -i "proxy\|connect\|timeout\|fallback"
cat ~/AppData/Local/hermes/logs/errors.log | grep -i "proxy\|connect\|timeout\|fallback"
Fallback 机制详解
触发条件(自动生效,无需手动干预)
| 触发条件 | 行为 |
|---|---|
| 429 Rate Limited | 自动切下一个 fallback |
| 402 Billing/Quota 耗尽 | 自动切下一个 fallback |
| 5xx 服务端错误 | 自动切下一个 fallback |
| 连接超时/网络错误 | 自动切下一个 fallback |
| 空回复/格式错误 | 自动切下一个 fallback |
| Safety Refusal | 自动切下一个 fallback |
| Token 耗尽/授权失效 | 自动切下一个 fallback |
相关 CLI 命令
hermes fallback list # 查看当前 fallback 链
hermes fallback add # 交互式添加 fallback provider
hermes fallback remove # 删除某个 fallback
hermes fallback clear # 清空全部 fallback
Fallback 链支持多级
fallback_providers:
- provider: custom:ds-hermes
model: deepseek-v4-flash
- provider: openrouter
model: openai/gpt-4o
按顺序尝试,直到有一个成功。
代理端口参考
| 代理软件 | 默认本地端口 |
|---|---|
| Clash / Clash Meta | 7890 |
| v2rayN / X-ray | 10808 / 10809 |
| sing-box | 2080 |
| SSR | 1080 |
| ProxyChains | 9050 |
常见问题排查
Q1:设置代理后 API 请求变慢或超时
可能原因: - 代理服务器未正常运行 - 代理服务器网络不稳定 - 代理端口写错
排查:
1. netstat -ano | grep 7897 确认代理在监听
2. curl -x http://127.0.0.1:7897 -v https://api.openai.com/v1/models,观察 CONNECT 阶段输出
3. 确认 api_max_retries 为 1,避免失败后空转等待
Q2:设置代理后本地服务异常
原因:NO_PROXY 未设置或设置不完整。
解决:确保包含 localhost,127.0.0.1,::1。
Q3:代理故障,GPT 和 DeepSeek 都用不了
原因:NO_PROXY 中未加入 api.deepseek.com,导致 DeepSeek 请求也被送往已故障的代理。
解决:在 NO_PROXY 中加入 api.deepseek.com,这样 DeepSeek 的请求绕过代理直连。
Q4:Fallback 没有生效
排查:
1. hermes fallback list 确认 fallback 链配置正确
2. 检查日志中是否有 fallback 关键字
3. 确认 fallback provider 的 API Key 有效
恢复方案
清除代理配置
# 从 .env 中移除代理行
cat ~/AppData/Local/hermes/.env | grep -v -i proxy > ~/AppData/Local/hermes/.env.clean
mv ~/AppData/Local/hermes/.env.clean ~/AppData/Local/hermes/.env
清除 Fallback 配置
hermes fallback clear
或编辑 config.yaml,将 fallback_providers 设为空列表:
fallback_providers: []
恢复 api_max_retries
hermes config set agent.api_max_retries 3
恢复后重启
hermes gateway restart
参考文档
- Hermes 环境变量配置:https://hermes-agent.nousresearch.com/docs/reference/environment-variables
- Hermes 配置文档:https://hermes-agent.nousresearch.com/docs/user-guide/configuration
- Hermes Fallback Providers(官方文档):https://hermes-agent.nousresearch.com/docs/user-guide/features/fallback-providers
.env文件位置:~/AppData/Local/hermes/.envconfig.yaml位置:~/AppData/Local/hermes/config.yaml- 代理软件配置请参考各自官方文档
修改记录
| 日期 | 修改内容 |
|---|---|
| 2026-06-19 | 初始创建,基础代理设置 |
| 2026-06-19 | 更新实际 Hermes Home 路径 (~/AppData/Local/hermes/) |
| 2026-06-19 | 代理端口改为 7897 |
| 2026-06-19 | 新增 Fallback Provider 配置章节 |
| 2026-06-19 | 新增 GPT + DeepSeek 混合架构说明 |
| 2026-06-19 | 新增 NO_PROXY 绕过 DeepSeek 方案 |
| 2026-06-19 | 新增恢复方案 |