Skip to content

LLM Providers

源码版本v2026.7.20

职责

把「provider 名(nvidia、kimi、openai、openrouter…)」翻译成「具体的 hostname、消息预处理、extra_body、模型列表」。Hermes 不用继承体系做 provider 抽象,而是用 ProviderProfile 数据类 + 一组钩子,profile 作为插件注册,实现「声明即接入」。支持 Nous Portal、OpenRouter、OpenAI 及自定义 endpoint。

关键文件

数据流

  1. init_agent:276 拿到用户配置的 provider 名。
  2. get_provider_profile:65(首次触发懒发现:扫描 plugins/model-providers/<name>/,导入并 register_provider)。
  3. 拿到 ProviderProfile 后:
  4. 主循环用组装好的请求调用 provider API(重试子循环:1227)。
  5. 自定义 provider 的 extra_body 合并在 _merge_custom_provider_extra_body:257 完成。

小结

Provider 抽象的关键词是「profile + 钩子」而非「继承」。新增 provider 只需在 plugins/model-providers/ 建个子目录、声明一个 ProviderProfileregister_provider,无需改 base。懒发现保证启动快、按需加载。

非官方社区学习站,内容以 MIT 许可的 NousResearch/hermes-agent 源码为依据。