词元之母TOK.MOM - 平台充值汇率 1:1 即 1 人民币充值到账 1 美元,支持一个 Key 调用近 600+ 海内外模型,限时特价模型低至 1 折,欢迎上岸!
hermes_cli/runtime_provider.py — 凭据解析,_resolve_custom_runtime()hermes_cli/auth.py — provider 注册表,resolve_provider()hermes_cli/model_switch.py — 共享 /model 切换流水线(CLI + gateway)agent/auxiliary_client.py — 辅助模型路由providers/ — ABC + 注册表入口点(ProviderProfile、register_provider、get_provider_profile、list_providers)plugins/model-providers/<name>/ — 每个 provider 的插件(内置),声明 api_mode、base_url、env_vars、fallback_models 并在首次访问时将自身注册到注册表。用户插件位于 $HERMES_HOME/plugins/model-providers/<name>/,会覆盖同名的内置插件。providers/ 中的 get_provider_profile() 为给定 provider id 返回一个 ProviderProfile。runtime_provider.py 在解析 时调用它,以获取规范的 base_url、env_vars 优先级列表、api_mode 和 fallback_models,无需在多个文件中重复这些数据。在 plugins/model-providers/<your-provider>/(或 $HERMES_HOME/plugins/model-providers/<your-provider>/)下添加一个调用 register_provider() 的新插件,即可让 runtime_provider.py 自动识别它——无需在解析器本身中添加分支。config.yaml 中的模型/provider 配置hermes model 中最后选择的端点。plugins/model-providers/):gemini、google-gemini-cli)alibaba、alibaba-coding-plan)kimi-coding、kimi-coding-cn)minimax、minimax-cn、minimax-oauth)provider: custom)— 适用于任何 OpenAI 兼容端点的一等 providerconfig.yaml 中的 custom_providers 列表)providerapi_modebase_urlapi_keysourcehermes chatOPENROUTER_API_KEY 和 OPENAI_API_KEY)将错误的 API key 泄露给自定义端点。OPENROUTER_API_KEY 仅发送至 openrouter.ai 端点OPENAI_API_KEY 用于自定义端点及作为回退OPENAI_BASE_URL 也应正常工作anthropic 时,Hermes 使用:api_mode = anthropic_messagesagent/anthropic_adapter.py 进行转换ANTHROPIC_TOKEN / CLAUDE_CODE_OAUTH_TOKEN 值仍可作为显式覆盖api_mode = codex_responsesmain 时,Hermes 通过与普通对话相同的共享运行时路径进行解析。实际效果为:hermes model / config.yaml 保存的自定义端点同样有效(provider, model) 条目列表,当主模型遇到错误时依次尝试。旧版单对 fallback_model 字典仍被接受以保持向后兼容(并在首次写入时迁移)。AIAgent.__init__ 存储 fallback_model 字典并将 _fallback_activated 设为 False。_try_activate_fallback() 在 run_agent.py 主重试循环的三处被调用:_try_activate_fallback):Falseauxiliary_client.py 中的 resolve_provider_client() 构建带有正确认证的新客户端api_mode:openai-codex 使用 codex_responses,anthropic 使用 anthropic_messages,其余使用 chat_completionsself.model、self.provider、self.base_url、self.api_mode、self.client、self._client_kwargs_fallback_activated 设为 True——防止再次触发cli.py 读取 CLI_CONFIG["fallback_model"] → 传递给 AIAgent(fallback_model=...)gateway/run.py._load_fallback_model() 读取 config.yaml → 传递给 AIAgentprovider 和 model 键均须非空,否则回退被禁用tools/delegate_tool.py):子代理继承父代理的 provider,但不继承回退配置run_job() 从 config.yaml 读取 fallback_providers(或旧版 fallback_model)并传递给 AIAgent(fallback_model=...),与 gateway 的 _load_fallback_model() 模式一致。参见 Cron 内部机制。tests/test_fallback_model.py,其中包含覆盖所有支持 provider、单次触发语义及边界情况的完整测试。