hermes agent 连接异常通常由代理劫持 https 流量导致证书校验失败,解决方法包括导入代理根证书、临时禁用 ssl 校验(仅限调试)、配置 no_proxy 排除关键域名,或指定 ca_bundle 路径精准控制证书信任。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

当你在使用 Hermes Agent 时发现请求频繁断连、TLS 握手失败、HTTP 302 跳转异常或请求静默丢弃,基本可以确定是代理软件(如 Clash、Surge、Proxyman、Fiddler 或企业透明代理)正在劫持 HTTPS 流量并重签证书,而 Hermes 默认严格校验证书链,导致连接被拒绝或降级为明文传输。
确认代理是否正在劫持 HTTPS 流量
执行 curl -vI https://api.openai.com 2>&1 | grep "SSL certificate verify ok",若输出为空,且日志中出现 unable to get local issuer certificate 或 self signed certificate in certificate chain,说明代理已注入自签名 CA 证书,但系统或 Python 未信任该证书。
再运行 openssl s_client -connect api.openai.com:443 -showcerts 2>/dev/null | head -20,观察返回证书链首行是否含 CN=Clash for Windows CA、CN=Surge Proxy Root Authority 等非权威 CA 标识。
【关键判断】若证书链中出现非 Let's Encrypt/ISRG/DigiCert 等公开 CA 机构签名,且本地未导入对应根证书,则所有 HTTPS 请求必然被代理拒绝或降级为 HTTP 明文,Hermes Agent 连接中断。
将代理根证书导入系统信任库(推荐长期方案)
第一步:从代理软件导出根证书。
Clash for Windows → 设置 → 全局设置 → 点击“导出CA证书”;
Surge → 配置 → 证书 → 导出Root CA;
Fiddler → Tools → Options → HTTPS → Actions → Export Root Certificate to Desktop。
第二步:将导出的 .crt 文件复制到系统信任目录:
macOS:sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ./Clash-CA.crt
Ubuntu/Debian:sudo cp ./Clash-CA.crt /usr/local/share/ca-certificates/ && sudo update-ca-certificates
第三步:验证证书是否生效:python3 -c "import ssl; print(ssl.create_default_context().get_ca_certs())" 应返回包含该证书的列表;同时必须重启 Hermes Agent 进程,使 Python SSL 上下文重载新证书信任链。
临时禁用证书校验(仅限开发/内网调试)
方法一:修改 Hermes Agent 启动入口,在 main.py 或 hermes start 调用的初始化逻辑中插入 SSL 补丁代码,强制跳过证书验证。此操作会削弱 HTTPS 安全性,【严禁用于生产环境】。
方法二:在 ~/.hermes/hermes-agent/ 目录下新建 hermes_agent_ssl_patch.py,写入覆盖 requests 和 httpx 的补丁脚本,并确保其在 Hermes 启动前通过 PYTHONPATH 加载。该脚本需定义 NoVerifySession 类并自动执行 patch_httpx_disable_ssl() 逻辑。
这一步操作起来很简单,直接把文件拖进去就行,但注意:补丁仅对当前用户生效,切换用户或重装 Hermes 后需重新部署。
配置 no_proxy 排除关键 API 域名
① 打开 ~/.bashrc 或 ~/.zshrc,追加以下内容:export no_proxy="localhost,127.0.0.1,api.openai.com,generativelanguage.googleapis.com,galaxyship.kindee.com"
② 执行 source ~/.bashrc(或 source ~/.zshrc)使变量生效。
③ 检查是否生效:echo $no_proxy 应输出完整域名列表;hermes config show | grep proxy 确认无全局代理覆盖配置。
不这样做会导致 Hermes Agent 在调用模型 API 时仍走代理链路,即使证书已导入,也可能因代理策略拦截或超时重试机制引发二次断连。
指定 CA 证书路径(精准控制)
编辑 ~/.hermes/config.yaml,在 network: 区块下添加:ca_bundle: "/path/to/your/Clash-CA.crt"
路径必须为绝对路径,且该文件需具备读取权限:chmod 644 /path/to/your/Clash-CA.crt。
此配置优先级高于系统信任库,适用于多代理共存或需隔离信任域的场景。若路径错误或权限不足,Hermes 启动时会报 IOError: ca_bundle not found 并退出。











