若hermes agent无法调用openrouter模型,需检查api密钥注入、余额、模型id及配置生效情况;推荐按顺序执行环境变量设置、.env持久化、config.yaml显式配置、余额监控与一键切换五步排查法。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您已部署 Hermes Agent,但无法调用 OpenRouter 平台上的 200+ 模型,或出现额度耗尽、模型切换失败、请求被拒绝等现象,则可能是由于 API 密钥未正确注入、余额不足、模型标识错误或配置未生效所致。以下是解决此问题的步骤:
一、通过环境变量注入 OpenRouter API Key
该方式适用于开发调试与临时运行场景,密钥以明文形式加载至当前 Shell 会话,启动 Hermes Agent 时可直接读取,无需修改任何配置文件。
1、打开终端(Linux/macOS)或 PowerShell(Windows WSL2),确保位于 Hermes Agent 项目根目录外任意位置。
2、执行命令设置临时密钥变量:export OPENROUTER_API_KEY="sk-or-v1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"(请将引号内替换为您的实际密钥)。
3、设置默认模型标识:export OPENROUTER_MODEL="stepfun/step-3.5-flash"(可替换为任意 OpenRouter 支持的模型 ID,如 anthropic/claude-3.5-sonnet)。
4、验证变量是否生效:echo $OPENROUTER_API_KEY 应输出密钥前缀,非空即表示成功。
5、启动 Hermes Agent:hermes run --model openrouter 或直接运行 hermes 进入交互式 CLI。
二、通过 .env 文件持久化配置
该方式避免密钥硬编码进脚本或配置文件,支持跨会话复用,且与多数 Python 工具链兼容,是生产环境推荐做法。
1、进入 Hermes Agent 项目根目录:cd hermes-agent。
2、创建或编辑 .env 文件:nano .env(或使用 vim / code .env)。
3、在文件中写入两行内容(注意无空格、无引号):OPENROUTER_API_KEY=sk-or-v1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 和 OPENROUTER_MODEL=google/gemma-2-9b-it。
4、保存并退出编辑器,安装 python-dotenv(若尚未安装):pip3 install python-dotenv。
5、确认项目启动逻辑已加载 dotenv:检查 main.py 或 run_agent.py 是否包含 from dotenv import load_dotenv; load_dotenv()。
三、通过 config.yaml 显式声明 OpenRouter 配置
该方式适用于多后端共存、需精细控制 LLM 行为的场景,支持同时定义 base_url、模型路由、超时与重试策略,且不依赖环境变量注入机制。
1、定位 Hermes Agent 主配置文件,通常为 config.yaml 或 agent_config.yaml(若不存在则新建)。
2、在文件顶部或 llm 节点下添加如下 YAML 内容(严格保持缩进为两个空格):
llm:
Claude-Obsidian 风格个人知识库构建与自动整理。当用户提到以下任何场景时激活: 知识库、笔记整理、自动双向链接、Obsidian、第二大脑、卡片笔记、原子化笔记、 个人知识管理、PKM、Zettelkasten、卢曼笔记法、笔记原子化、笔记链接、 知识图谱笔记、raw/wiki/output三层、知...
provider: "openrouter"
base_url: "https://openrouter.ai/api/v1"
model: "anthropic/claude-3.5-sonnet"
api_key: "sk-or-v1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
3、保存文件后,检查 YAML 格式有效性,可使用在线 YAML linter 验证缩进与冒号对齐。
4、启动时显式指定配置路径:hermes run --config config.yaml。
四、启用 OpenRouter 余额监控与用量告警
OpenRouter 提供 HTTP 响应头 X-Ratelimit-Remaining 与 X-Ratelimit-Used,Hermes Agent 可通过日志解析或中间件捕获实时余额状态,防止突发超额扣费。
1、在终端中执行一次最小化测试请求,观察响应头:curl -I -H "Authorization: Bearer sk-or-v1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" https://openrouter.ai/api/v1/chat/completions。
2、确认返回头中包含 X-Ratelimit-Remaining: 999 与 X-Ratelimit-Used: 1 字段。
3、编辑 Hermes Agent 的日志配置(如 logging.yaml),在 request/response 日志模板中加入 %(headers)s 占位符。
4、启动时启用详细日志:hermes run --log-level DEBUG,在终端输出中搜索 X-Ratelimit-Remaining 关键字。
5、若需自动告警,可在 run_agent.py 中插入响应后钩子函数,当 X-Ratelimit-Remaining 时触发系统通知或写入本地告警文件。
五、模型一键切换的三种调用方式
Hermes Agent 支持运行时动态覆盖模型参数,无需重启服务或修改配置文件,实现真正意义上的“一键切换”。
1、CLI 命令行覆盖:hermes run --model openrouter/stepfun/step-3.5-flash(格式为 provider/model-id)。
2、交互式 CLI 中输入斜杠命令:/model openrouter/google/gemma-2-9b-it,当前会话立即切换模型。
3、HTTP API 请求中指定 model 字段:POST /v1/chat/completions 请求体中加入 {"model": "openrouter/mistralai/mistral-7b-instruct"}。










