有开发者在本地通过 Hermes 接入 xAI 的 API 时,聊天接口持续返回 502 与 upstream_unreachable 错误。排查发现,直连 api.x.ai 会超时,而通过本机代理可正常访问,由此将问题锁定在 Hermes 安装包内的代理实现上。该实现使用 Python 的 aiohttp 库创建 ClientSession 会话,而 aiohttp 默认不读取代理环境变量,导致仅设置 HTTP_PROXY、HTTPS_PROXY 并不生效。修复方式是在 hermes_cli/proxy/server.py 中创建会话的位置补上 trust_env=True 参数,同时保留原有参数,并配置代理环境变量,将 localhost 与 127.0.0.1 加入 NO_PROXY,避免本地请求被错误导入代理。重启服务后,模型列表已能正常返回,但作者指出这尚不能证明完整对话链路已恢复,仍需实际发起对话验证。由于直接修改安装文件可能在版本升级时被覆盖,建议先行备份。作者总结的排查思路是:先对比直连与代理访问的结果,再检查客户端是否真正读取了代理配置。该案例对在代理环境下使用 AI CLI 工具接入境外模型 API 的开发者具有直接参考价值。
事件分析
这一案例暴露出 Python 异步 HTTP 库在代理兼容性上的常见盲区:aiohttp 的 trust_env 默认关闭,与 requests 等同步库行为不一致,容易让开发者误以为环境变量配置无效,转而怀疑网络或服务端故障。对国内用户而言,接入 xAI、OpenAI、Anthropic 等境外模型 API 普遍依赖代理,客户端是否正确读取代理配置直接决定工具可用性。随着 Claude Code、Hermes 等本地 CLI 工具流行,此类代理适配问题预计会反复出现。后续若上游在代码中默认启用环境变量读取或提供显式代理配置项,可减少用户手动改包的需求;短期内,社区排查经验的沉淀仍是主要解决途径。值得注意的是,模型列表返回正常并不等于推理链路畅通,完整验证应覆盖实际对话流程。
核心观点:代理兼容性是 AI CLI 工具落地时最易被忽视的基础细节,一行 trust_env 之差即是可用与不可用的分界。
原文链接:Linux.do