跳到主要内容

AI 提供商

本页介绍如何为 Hermes Agent 配置推理提供商——从 OpenRouter、Anthropic 等云端 API,到 Ollama、vLLM 等自托管端点,再到高级路由和故障转移配置。使用 Hermes 至少需要配置一个提供商。

推理提供商

你需要至少一种连接 LLM 的方式。使用 hermes model 交互式切换提供商和模型,或直接配置:

提供商配置方式
Nous Portalhermes model(OAuth,订阅制)
OpenAI Codexhermes model(ChatGPT OAuth,使用 Codex 模型)
GitHub Copilothermes model(OAuth 设备码流程,COPILOT_GITHUB_TOKENGH_TOKENgh auth token
GitHub Copilot ACPhermes model(启动本地 copilot --acp --stdio
Anthropichermes model(通过 OAuth 使用 Claude Max + 额外用量额度;也支持 Anthropic API 密钥或手动 setup-token——详见下方说明)
OpenRouter~/.hermes/.env 中设置 OPENROUTER_API_KEY
NovitaAI~/.hermes/.env 中设置 NOVITA_API_KEY(提供商:novita,200+ 模型,Model API,Agent Sandbox,GPU Cloud)
AI Gateway~/.hermes/.env 中设置 AI_GATEWAY_API_KEY(提供商:ai-gateway
z.ai / GLM~/.hermes/.env 中设置 GLM_API_KEY(提供商:zai
Kimi / Moonshot~/.hermes/.env 中设置 KIMI_API_KEY(提供商:kimi-coding
Kimi / Moonshot(中国)~/.hermes/.env 中设置 KIMI_CN_API_KEY(提供商:kimi-coding-cn;别名:kimi-cnmoonshot-cn
Arcee AI~/.hermes/.env 中设置 ARCEEAI_API_KEY(提供商:arcee;别名:arcee-aiarceeai
GMI Cloud~/.hermes/.env 中设置 GMI_API_KEY(提供商:gmi;别名:gmi-cloudgmicloud
MiniMax~/.hermes/.env 中设置 MINIMAX_API_KEY(提供商:minimax
MiniMax 中国~/.hermes/.env 中设置 MINIMAX_CN_API_KEY(提供商:minimax-cn
阿里云~/.hermes/.env 中设置 DASHSCOPE_API_KEY(提供商:alibaba
阿里云编码计划DASHSCOPE_API_KEY(提供商:alibaba-coding-plan,别名:alibaba_coding)——独立计费 SKU,不同端点
Kilo Code~/.hermes/.env 中设置 KILOCODE_API_KEY(提供商:kilocode
小米 MiMo~/.hermes/.env 中设置 XIAOMI_API_KEY(提供商:xiaomi,别名:mimoxiaomi-mimo
腾讯 TokenHub~/.hermes/.env 中设置 TOKENHUB_API_KEY(提供商:tencent-tokenhub,别名:tencenttokenhubtencentmaas
OpenCode Zen~/.hermes/.env 中设置 OPENCODE_ZEN_API_KEY(提供商:opencode-zen
OpenCode Go~/.hermes/.env 中设置 OPENCODE_GO_API_KEY(提供商:opencode-go
DeepSeek~/.hermes/.env 中设置 DEEPSEEK_API_KEY(提供商:deepseek
Hugging Face~/.hermes/.env 中设置 HF_TOKEN(提供商:huggingface,别名:hf
Google / Gemini~/.hermes/.env 中设置 GOOGLE_API_KEY(或 GEMINI_API_KEY)(提供商:gemini
Google Gemini(OAuth)hermes model → "Google Gemini (OAuth)"(提供商:google-gemini-cli,支持免费层级,浏览器 PKCE 登录)
LM Studiohermes model → "LM Studio"(提供商:lmstudio,可选 LM_API_KEY
自定义端点hermes model → 选择"自定义端点"(保存在 config.yaml 中)

官方 API 密钥路径请参阅专属的 Google Gemini 指南

模型键别名

model: 配置部分,你可以使用 default:model: 作为模型 ID 的键名。model: { default: my-model }model: { model: my-model } 效果完全相同。

Google Gemini via OAuth(google-gemini-cli

google-gemini-cli 提供商使用 Google 的 Cloud Code Assist 后端——与 Google 自家 gemini-cli 工具所用的 API 相同。支持免费层级(个人账户每日配额充足)和付费层级(通过 GCP 项目使用 Standard/Enterprise)。

快速开始:

hermes model
# → 选择 "Google Gemini (OAuth)"
# → 查看政策警告,确认
# → 浏览器打开 accounts.google.com,登录
# → 完成——Hermes 在首次请求时自动配置免费层级

Hermes 默认使用 Google 的公开 gemini-cli 桌面 OAuth 客户端——与 Google 在其开源 gemini-cli 中内置的凭据相同。桌面 OAuth 客户端不是保密的(PKCE 提供安全性)。你不需要安装 gemini-cli 或注册自己的 GCP OAuth 客户端。

认证方式:

  • 针对 accounts.google.com 的 PKCE 授权码流程
  • 浏览器回调地址为 http://127.0.0.1:8085/oauth2callback(如端口被占用则使用临时端口回退)
  • 令牌存储在 ~/.hermes/auth/google_oauth.json(权限 0600,原子写入,跨进程 fcntl 锁)
  • 在过期前 60 秒自动刷新
  • 无头环境(SSH、HERMES_HEADLESS=1)→ 粘贴模式回退
  • 并发刷新去重——两个并发请求不会重复刷新
  • invalid_grant(刷新令牌被吊销)→ 删除凭据文件,提示用户重新登录

推理方式:

  • 流量发送至 https://cloudcode-pa.googleapis.com/v1internal:generateContent (流式传输使用 :streamGenerateContent?alt=sse),而非付费的 v1beta/openai 端点
  • 请求体封装为 {project, model, user_prompt_id, request}
  • OpenAI 格式的 messages[]tools[]tool_choice 被转换为 Gemini 原生的 contents[]tools[].functionDeclarationstoolConfig 格式
  • 响应被转换回 OpenAI 格式,使 Hermes 其余部分正常工作

层级与项目 ID:

你的情况需要做什么
个人 Google 账号,使用免费层级无需操作——登录即可开始聊天
Workspace / Standard / Enterprise 账号HERMES_GEMINI_PROJECT_IDGOOGLE_CLOUD_PROJECT 设置为你的 GCP 项目 ID
VPC-SC 保护的组织Hermes 检测到 SECURITY_POLICY_VIOLATED 后会自动强制使用 standard-tier

免费层级会在首次使用时自动配置 Google 管理的项目,无需任何 GCP 设置。

配额监控:

/gquota

以进度条形式显示每个模型剩余的 Code Assist 配额:

Gemini Code Assist quota (project: 123-abc)

gemini-2.5-pro ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░ 85%
gemini-2.5-flash [input] ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░ 92%
政策风险

Google 认为将 Gemini CLI OAuth 客户端用于第三方软件违反政策。部分用户报告账号受到限制。为降低风险,建议通过 gemini 提供商使用你自己的 API 密钥。Hermes 会在 OAuth 开始前显示警告并要求明确确认。

自定义 OAuth 客户端(可选):

如果你希望注册自己的 Google OAuth 客户端——例如,将配额和授权限定在你自己的 GCP 项目内——请设置:

HERMES_GEMINI_CLIENT_ID=your-client.apps.googleusercontent.com
HERMES_GEMINI_CLIENT_SECRET=... # 桌面客户端可选

console.cloud.google.com/apis/credentials 注册一个桌面应用 OAuth 客户端,并启用 Generative Language API。

Codex 注意事项

OpenAI Codex 提供商通过设备码进行认证(打开 URL,输入代码)。Hermes 将凭据存储在 ~/.hermes/auth.json 中,并可在 ~/.codex/auth.json 存在时导入现有 Codex CLI 凭据。无需安装 Codex CLI。

注意

即使使用 Nous Portal、Codex 或自定义端点,某些工具(视觉分析、网页摘要、MoA)仍会使用独立的"辅助"模型。默认情况下(auxiliary.*.provider: "auto"),Hermes 将这些任务路由到你的主聊天模型——即你在 hermes model 中选择的同一个模型。你可以单独覆盖每个任务,将其路由到更便宜/更快的模型(例如 OpenRouter 上的 Gemini Flash)——参见辅助模型

Nous 工具网关

付费 Nous Portal 订阅者还可访问**工具网关**——通过订阅路由的网页搜索、图像生成、TTS 和浏览器自动化,无需额外 API 密钥。在 hermes model 设置期间会自动提供,或稍后通过 hermes tools 启用。

模型管理的两个命令

Hermes 有两个服务于不同目的的模型命令:

命令运行位置作用
hermes model终端(任何会话之外)完整的设置向导——添加提供商、运行 OAuth、输入 API 密钥、配置端点
/model在 Hermes 聊天会话中已配置的提供商和模型之间快速切换

如果你想切换到尚未设置的提供商(例如你只配置了 OpenRouter,想使用 Anthropic),你需要 hermes model,而非 /model。先退出会话(Ctrl+C/quit),运行 hermes model,完成提供商设置,然后开启新会话。

Anthropic(原生)

通过 Anthropic API 直接使用 Claude 模型——无需 OpenRouter 代理。支持三种认证方式:

需要 Claude Max 的"额外用量"额度

当你通过 hermes model → Anthropic OAuth(或通过 hermes auth add anthropic --type oauth)进行认证时,Hermes 以 Claude Code 的身份向你的 Anthropic 账户发送请求。仅在你订阅了 Claude Max 计划且购买了额外用量额度时有效。 Max 基础计划的额度(Claude Code 默认包含的用量)不会被 Hermes 消耗——只有你在此基础上添加的额外/超出额度会被消耗。Claude Pro 订阅者无法使用此路径。

如果你没有 Max + 额外额度,请改用 ANTHROPIC_API_KEY——请求将按使用量从该密钥关联的组织中扣费(标准 API 定价,与任何 Claude 订阅无关)。

# 使用 API 密钥(按使用量付费)
export ANTHROPIC_API_KEY=***
hermes chat --provider anthropic --model claude-sonnet-4-6

# 推荐:通过 `hermes model` 进行认证
# 有 Claude Code 凭据时,Hermes 会直接使用其凭据存储
hermes model

# 使用 setup-token 手动覆盖(回退/旧版方式)
export ANTHROPIC_TOKEN=*** # setup-token 或手动 OAuth 令牌
hermes chat --provider anthropic

# 自动检测 Claude Code 凭据(如果你已使用 Claude Code)
hermes chat --provider anthropic # 自动读取 Claude Code 凭据文件

通过 hermes model 选择 Anthropic OAuth 时,Hermes 优先使用 Claude Code 自己的凭据存储,而非将令牌复制到 ~/.hermes/.env。这样可以保持可刷新的 Claude 凭据的可刷新性。

或永久设置:

model:
provider: "anthropic"
default: "claude-sonnet-4-6"
别名

--provider claude--provider claude-code 也可作为 --provider anthropic 的简写。

GitHub Copilot

Hermes 以一等提供商身份支持 GitHub Copilot,提供两种模式:

copilot — 直连 Copilot API(推荐)。通过你的 GitHub Copilot 订阅访问 GPT-5.x、Claude、Gemini 及其他模型。

hermes chat --provider copilot --model gpt-5.4

认证选项(按以下顺序检查):

  1. COPILOT_GITHUB_TOKEN 环境变量
  2. GH_TOKEN 环境变量
  3. GITHUB_TOKEN 环境变量
  4. gh auth token CLI 回退

若未找到令牌,hermes model 会提供 OAuth 设备码登录——与 Copilot CLI 和 opencode 使用的流程相同。

令牌类型

Copilot API 支持经典个人访问令牌(ghp_*)。支持的令牌类型:

类型前缀获取方式
OAuth 令牌gho_hermes model → GitHub Copilot → 通过 GitHub 登录
细粒度 PATgithub_pat_GitHub 设置 → 开发者设置 → 细粒度令牌(需要 Copilot Requests 权限)
GitHub App 令牌ghu_通过 GitHub App 安装

如果 gh auth token 返回 ghp_* 令牌,请通过 hermes model 进行 OAuth 认证。

Hermes 中的 Copilot 认证行为

Hermes 将受支持的 GitHub 令牌(gho_*github_pat_*ghu_*)直接发送至 api.githubcopilot.com,并包含 Copilot 特定的请求头(Editor-VersionCopilot-Integration-IdOpenai-Intentx-initiator)。

收到 HTTP 401 时,Hermes 会在回退之前执行一次凭据恢复:

  1. 通过正常优先级链重新解析令牌(COPILOT_GITHUB_TOKENGH_TOKENGITHUB_TOKENgh auth token
  2. 使用刷新后的请求头重建共享 OpenAI 客户端
  3. 重试请求一次

某些旧版社区代理使用 api.github.com/copilot_internal/v2/token 交换流程。该端点对某些账号类型可能不可用(返回 404)。因此 Hermes 将直接令牌认证作为主要路径,并依赖运行时凭据刷新 + 重试来提高鲁棒性。

API 路由:GPT-5+ 模型(gpt-5-mini 除外)自动使用 Responses API。所有其他模型(GPT-4o、Claude、Gemini 等)使用 Chat Completions。模型从 Copilot 实时目录中自动检测。

copilot-acp — Copilot ACP Agent 后端。将本地 Copilot CLI 作为子进程启动:

hermes chat --provider copilot-acp --model copilot-acp
# 需要 PATH 中存在 GitHub Copilot CLI 并已有 `copilot login` 会话

永久配置:

model:
provider: "copilot"
default: "gpt-5.4"
环境变量描述
COPILOT_GITHUB_TOKENCopilot API 的 GitHub 令牌(最高优先级)
HERMES_COPILOT_ACP_COMMAND覆盖 Copilot CLI 二进制路径(默认:copilot
HERMES_COPILOT_ACP_ARGS覆盖 ACP 参数(默认:--acp --stdio

一等 API 密钥提供商

这些提供商有内置支持和专属提供商 ID。设置 API 密钥并使用 --provider 选择:

# NovitaAI Model API
hermes chat --provider novita --model moonshotai/kimi-k2.5
# 需要:在 ~/.hermes/.env 中设置 NOVITA_API_KEY

# z.ai / ZhipuAI GLM
hermes chat --provider zai --model glm-5
# 需要:在 ~/.hermes/.env 中设置 GLM_API_KEY

# Kimi / Moonshot AI(国际版:api.moonshot.ai)
hermes chat --provider kimi-coding --model kimi-for-coding
# 需要:在 ~/.hermes/.env 中设置 KIMI_API_KEY

# Kimi / Moonshot AI(中国版:api.moonshot.cn)
hermes chat --provider kimi-coding-cn --model kimi-k2.5
# 需要:在 ~/.hermes/.env 中设置 KIMI_CN_API_KEY

# MiniMax(全球端点)
hermes chat --provider minimax --model MiniMax-M2.7
# 需要:在 ~/.hermes/.env 中设置 MINIMAX_API_KEY

# MiniMax(中国端点)
hermes chat --provider minimax-cn --model MiniMax-M2.7
# 需要:在 ~/.hermes/.env 中设置 MINIMAX_CN_API_KEY

# 阿里云 / DashScope(Qwen 模型)
hermes chat --provider alibaba --model qwen3.5-plus
# 需要:在 ~/.hermes/.env 中设置 DASHSCOPE_API_KEY

# 小米 MiMo
hermes chat --provider xiaomi --model mimo-v2-pro
# 需要:在 ~/.hermes/.env 中设置 XIAOMI_API_KEY

# 腾讯 TokenHub(Hy3 Preview)
hermes chat --provider tencent-tokenhub --model hy3-preview
# 需要:在 ~/.hermes/.env 中设置 TOKENHUB_API_KEY

# Arcee AI(Trinity 模型)
hermes chat --provider arcee --model trinity-large-thinking
# 需要:在 ~/.hermes/.env 中设置 ARCEEAI_API_KEY

# GMI Cloud
# 使用 GMI 的 /v1/models 端点返回的精确模型 ID。
hermes chat --provider gmi --model zai-org/GLM-5.1-FP8
# 需要:在 ~/.hermes/.env 中设置 GMI_API_KEY

或在 config.yaml 中永久设置提供商:

model:
provider: "gmi"
default: "zai-org/GLM-5.1-FP8"

基础 URL 可通过 NOVITA_BASE_URLGLM_BASE_URLKIMI_BASE_URLMINIMAX_BASE_URLMINIMAX_CN_BASE_URLDASHSCOPE_BASE_URLXIAOMI_BASE_URLGMI_BASE_URLTOKENHUB_BASE_URL 环境变量覆盖。

Z.AI 端点自动检测

使用 Z.AI / GLM 提供商时,Hermes 会自动探测多个端点(全球版、中国版、编码专版),找到能接受你 API 密钥的端点。无需手动设置 GLM_BASE_URL——工作端点会自动检测并缓存。

xAI(Grok)——Responses API + 提示缓存

xAI 通过 Responses API(codex_responses 传输层)接入,支持 Grok 4 模型的自动推理——无需 reasoning_effort 参数,服务器默认进行推理。在 ~/.hermes/.env 中设置 XAI_API_KEY,并在 hermes model 中选择 xAI,或使用 grok 作为快捷方式直接 /model grok-4-1-fast-reasoning

使用 xAI 作为提供商(任何包含 x.ai 的 base URL)时,Hermes 会通过在每个 API 请求中发送 x-grok-conv-id 请求头自动启用提示缓存。这会将同一会话中的请求路由到同一台服务器,使 xAI 基础设施能够复用缓存的系统提示和对话历史。

无需配置——检测到 xAI 端点且存在会话 ID 时缓存自动激活。这可以降低多轮对话的延迟和成本。

xAI 还提供专属 TTS 端点(/v1/tts)。在 hermes tools → 语音与 TTS 中选择 xAI TTS,或参阅语音与 TTS 页面进行配置。

NovitaAI

NovitaAI 是面向构建者和 Agent 的 AI 原生云端平台。其三条产品线分别是:200+ 模型的 Model API、构建和运行 AI Agent 的 Agent Sandbox,以及可扩展计算的 GPU Cloud,全部在一个平台提供。

# 使用任意可用模型
hermes chat --provider novita --model moonshotai/kimi-k2.5
# 需要:NOVITA_API_KEY 在 ~/.hermes/.env 中

# 简短别名
hermes chat --provider novita-ai --model deepseek/deepseek-v3-0324

或在 config.yaml 中永久设置:

model:
provider: "novita"
default: "moonshotai/kimi-k2.5"
base_url: "https://api.novita.ai/openai/v1"

novita.ai/settings/key-management 获取你的 API 密钥。base URL 可通过 NOVITA_BASE_URL 覆盖。

Ollama Cloud——托管 Ollama 模型,支持 OAuth + API 密钥

Ollama Cloud 托管与本地 Ollama 相同的开源权重目录,无需 GPU。在 hermes model 中选择 Ollama Cloud,粘贴来自 ollama.com/settings/keys 的 API 密钥,Hermes 会自动发现可用模型。

hermes model
# → 选择 "Ollama Cloud"
# → 粘贴你的 OLLAMA_API_KEY
# → 从发现的模型中选择(gpt-oss:120b、glm-4.6:cloud、qwen3-coder:480b-cloud 等)

或直接在 config.yaml 中配置:

model:
provider: "ollama-cloud"
default: "gpt-oss:120b"

模型目录从 ollama.com/v1/models 动态获取,缓存一小时。model:tag 标记(例如 qwen3-coder:480b-cloud)在规范化过程中会保留——不要使用连字符。

Ollama Cloud 与本地 Ollama

两者使用相同的 OpenAI 兼容 API。云版是一等提供商(--provider ollama-cloudOLLAMA_API_KEY);本地 Ollama 通过自定义端点流程访问(base URL http://localhost:11434/v1,无需密钥)。用云版运行本地无法运行的大模型;用本地版保障隐私或离线使用。

AWS Bedrock

通过 AWS Bedrock 使用 Anthropic Claude、Amazon Nova、DeepSeek v3.2、Meta Llama 4 及其他模型。使用 AWS SDK(boto3)凭据链——无需 API 密钥,使用标准 AWS 认证即可。

# 最简单——使用 ~/.aws/credentials 中的命名配置文件
hermes chat --provider bedrock --model us.anthropic.claude-sonnet-4-6

# 或使用显式环境变量
AWS_PROFILE=myprofile AWS_REGION=us-east-1 hermes chat --provider bedrock --model us.anthropic.claude-sonnet-4-6

或在 config.yaml 中永久配置:

model:
provider: "bedrock"
default: "us.anthropic.claude-sonnet-4-6"
bedrock:
region: "us-east-1" # 或设置 AWS_REGION
# profile: "myprofile" # 或设置 AWS_PROFILE
# discovery: true # 从 IAM 自动发现区域
# guardrail: # 可选 Bedrock Guardrails
# guardrail_identifier: "your-guardrail-id"
# guardrail_version: "DRAFT"

认证使用标准 boto3 链:显式 AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY~/.aws/credentials 中的 AWS_PROFILE、EC2/ECS/Lambda 上的 IAM 角色、IMDS 或 SSO。如果你已通过 AWS CLI 完成认证,则无需设置环境变量。

Bedrock 底层使用 Converse API——请求被转换为 Bedrock 的模型无关格式,因此同一配置适用于 Claude、Nova、DeepSeek 和 Llama 模型。仅在调用非默认区域端点时才需要设置 BEDROCK_BASE_URL

IAM 设置、区域选择和跨区域推理的详细演示,请参阅 AWS Bedrock 指南

Qwen Portal(OAuth)

通过浏览器 OAuth 登录使用阿里巴巴的 Qwen Portal。在 hermes model 中选择 Qwen OAuth (Portal),通过浏览器登录,Hermes 会持久化刷新令牌。

hermes model
# → 选择 "Qwen OAuth (Portal)"
# → 浏览器打开;使用阿里巴巴账号登录
# → 确认——凭据保存到 ~/.hermes/auth.json

hermes chat # 使用 portal.qwen.ai/v1 端点

或在 config.yaml 中配置:

model:
provider: "qwen-oauth"
default: "qwen3-coder-plus"

仅在门户端点更换时才需要设置 HERMES_QWEN_BASE_URL(默认:https://portal.qwen.ai/v1)。

Qwen OAuth 与 DashScope(阿里云)

qwen-oauth 使用面向消费者的 Qwen Portal 进行 OAuth 登录——适合个人用户。alibaba 提供商使用 DashScope 企业 API,需要 DASHSCOPE_API_KEY——适合程序化/生产工作负载。两者都路由到 Qwen 系列模型,但端点不同。

阿里云编码计划

如果你订阅了阿里巴巴的编码计划(与标准 DashScope API 访问独立的计费 SKU),Hermes 将其作为独立的一等提供商公开:alibaba-coding-plan。端点:https://coding-intl.dashscope.aliyuncs.com/v1。与普通 alibaba 提供商一样兼容 OpenAI,但有不同的 base URL 和计费界面。

model:
provider: alibaba_coding # alibaba-coding-plan 的别名
model: qwen3-coder-plus

或从 CLI:

hermes chat --provider alibaba_coding --model qwen3-coder-plus

alibaba_coding 使用你的 alibaba 条目已在使用的同一个 DASHSCOPE_API_KEY——无需单独的密钥,只是路由目标不同。在此提供商注册之前,在 config.yaml 中设置 provider: alibaba_coding 的用户会静默回退到 OpenRouter 路由。

MiniMax(OAuth)

通过浏览器 OAuth 登录使用 MiniMax-M2.7——无需 API 密钥。在 hermes model 中选择 MiniMax (OAuth),通过浏览器登录,Hermes 会持久化访问令牌和刷新令牌。底层使用兼容 Anthropic Messages 的端点(/anthropic)。

hermes model
# → 选择 "MiniMax (OAuth)"
# → 浏览器打开;使用 MiniMax 账号登录(全球版或中国区)
# → 确认——凭据保存到 ~/.hermes/auth.json

hermes chat # 使用 api.minimax.io/anthropic 端点

或在 config.yaml 中配置:

model:
provider: "minimax-oauth"
default: "MiniMax-M2.7"

支持的模型:MiniMax-M2.7(主模型)和 MiniMax-M2.7-highspeed(默认辅助模型)。OAuth 路径忽略 MINIMAX_API_KEY / MINIMAX_BASE_URL

MiniMax OAuth 与 API 密钥

minimax-oauth 使用 MiniMax 面向消费者的门户进行 OAuth 登录——无需计费设置。minimaxminimax-cn 提供商使用 MINIMAX_API_KEY / MINIMAX_CN_API_KEY——适合程序化访问。完整演示请参阅 MiniMax OAuth 指南

NVIDIA NIM

通过 build.nvidia.com(免费 API 密钥)或本地 NIM 端点使用 Nemotron 及其他开源模型。

# 云端(build.nvidia.com)
hermes chat --provider nvidia --model nvidia/nemotron-3-super-120b-a12b
# 需要:在 ~/.hermes/.env 中设置 NVIDIA_API_KEY

# 本地 NIM 端点——覆盖 base URL
NVIDIA_BASE_URL=http://localhost:8000/v1 hermes chat --provider nvidia --model nvidia/nemotron-3-super-120b-a12b

或在 config.yaml 中永久设置:

model:
provider: "nvidia"
default: "nvidia/nemotron-3-super-120b-a12b"
本地 NIM

对于本地部署(DGX Spark、本地 GPU),设置 NVIDIA_BASE_URL=http://localhost:8000/v1。NIM 与 build.nvidia.com 使用相同的 OpenAI 兼容聊天补全 API,因此在云端和本地之间切换只需更改一个环境变量。

GMI Cloud

通过 GMI Cloud 使用开源和推理模型——OpenAI 兼容 API,API 密钥认证。

# GMI Cloud
hermes chat --provider gmi --model deepseek-ai/DeepSeek-R1
# 需要:在 ~/.hermes/.env 中设置 GMI_API_KEY

或在 config.yaml 中永久设置:

model:
provider: "gmi"
default: "deepseek-ai/DeepSeek-R1"

base URL 可通过 GMI_BASE_URL 覆盖(默认:https://api.gmi-serving.com/v1)。

StepFun

通过 StepFun 使用 Step 系列模型——OpenAI 兼容 API,API 密钥认证。

# StepFun
hermes chat --provider stepfun --model step-3-mini
# 需要:在 ~/.hermes/.env 中设置 STEPFUN_API_KEY

或在 config.yaml 中永久设置:

model:
provider: "stepfun"
default: "step-3-mini"

base URL 可通过 STEPFUN_BASE_URL 覆盖(默认:https://api.stepfun.com/v1)。

Hugging Face 推理提供商

Hugging Face 推理提供商通过统一的 OpenAI 兼容端点(router.huggingface.co/v1)路由到 20+ 个开源模型。请求会自动路由到最快的可用后端(Groq、Together、SambaNova 等),并支持自动故障转移。

# 使用任意可用模型
hermes chat --provider huggingface --model Qwen/Qwen3-235B-A22B-Thinking-2507
# 需要:在 ~/.hermes/.env 中设置 HF_TOKEN

# 简短别名
hermes chat --provider hf --model deepseek-ai/DeepSeek-V3.2

或在 config.yaml 中永久设置:

model:
provider: "huggingface"
default: "Qwen/Qwen3-235B-A22B-Thinking-2507"

huggingface.co/settings/tokens 获取你的令牌——确保启用"Make calls to Inference Providers"权限。免费层级包含(每月 $0.10 额度,不在提供商费率基础上加价)。

你可以在模型名称后附加路由后缀::fastest(默认)、:cheapest:provider_name 以强制使用特定后端。

base URL 可通过 HF_BASE_URL 覆盖。

自定义与自托管 LLM 提供商

Hermes Agent 兼容任何 OpenAI 兼容的 API 端点。只要服务器实现了 /v1/chat/completions,你就可以将 Hermes 指向它。这意味着你可以使用本地模型、GPU 推理服务器、多提供商路由器或任何第三方 API。

通用配置

配置自定义端点的三种方式:

交互式设置(推荐):

hermes model
# 选择"自定义端点(自托管 / VLLM 等)"
# 输入:API base URL、API 密钥、模型名称

手动配置(config.yaml):

# 在 ~/.hermes/config.yaml 中
model:
default: your-model-name
provider: custom
base_url: http://localhost:8000/v1
api_key: your-key-or-leave-empty-for-local
旧版环境变量

.env 中的 OPENAI_BASE_URLLLM_MODEL移除。Hermes 的任何部分都不再读取它们——config.yaml 是模型和端点配置的唯一真实来源。如果你的 .env 中有过时条目,下次运行 hermes setup 或配置迁移时会自动清除。请使用 hermes model 或直接编辑 config.yaml

两种方式都会持久化到 config.yaml,这是模型、提供商和 base URL 的真实来源。

/model 切换模型

hermes model 与 /model

hermes model(在终端中运行,在任何聊天会话之外)是完整的提供商设置向导。用于添加新提供商、运行 OAuth 流程、输入 API 密钥和配置自定义端点。

/model(在活跃的 Hermes 聊天会话中输入)只能在已设置的提供商和模型之间切换。它无法添加新提供商、运行 OAuth 或提示输入 API 密钥。如果你只配置了一个提供商(例如 OpenRouter),/model 将只显示该提供商的模型。

要添加新提供商: 退出会话(Ctrl+C/quit),运行 hermes model,设置新提供商,然后开启新会话。

配置好至少一个自定义端点后,可以在会话中途切换模型:

/model custom:qwen-2.5 # 切换到自定义端点上的模型
/model custom # 从端点自动检测模型
/model openrouter:claude-sonnet-4 # 切换回云端提供商

如果你配置了命名自定义提供商(见下文),使用三段式语法:

/model custom:local:qwen-2.5 # 使用 "local" 自定义提供商和 qwen-2.5 模型
/model custom:work:llama3 # 使用 "work" 自定义提供商和 llama3

切换提供商时,Hermes 会将 base URL 和提供商持久化到配置中,重启后仍然生效。从自定义端点切换回内置提供商时,过时的 base URL 会自动清除。

提示

/model custom(不带模型名称)会查询端点的 /models API,如果只加载了一个模型则自动选择。适用于运行单个模型的本地服务器。

以下所有内容都遵循相同的模式——只需更改 URL、密钥和模型名称即可。


Ollama——本地模型,零配置

Ollama 只需一个命令即可在本地运行开源权重模型。最适合:快速本地实验、隐私敏感工作、离线使用。通过 OpenAI 兼容 API 支持工具调用。

# 安装并运行模型
ollama pull qwen2.5-coder:32b
ollama serve # 在端口 11434 上启动

然后配置 Hermes:

hermes model
# 选择"自定义端点(自托管 / VLLM 等)"
# 输入 URL: http://localhost:11434/v1
# 跳过 API 密钥(Ollama 不需要)
# 输入模型名称(例如 qwen2.5-coder:32b)

或直接配置 config.yaml

model:
default: qwen2.5-coder:32b
provider: custom
base_url: http://localhost:11434/v1
context_length: 32768 # 参见下方警告
Ollama 默认上下文长度极小

Ollama 默认不使用模型的完整上下文窗口。根据你的显存,默认值为:

可用显存默认上下文
小于 24 GB4,096 个 token
24–48 GB32,768 个 token
48+ GB256,000 个 token

对于带工具的 Agent 使用,至少需要 16k–32k 上下文。4k 时,仅系统提示 + 工具模式就能填满窗口,没有空间给对话。

增加上下文的方法(选其一):

# 方案一:通过环境变量设置服务器全局配置(推荐)
OLLAMA_CONTEXT_LENGTH=32768 ollama serve

# 方案二:对于 systemd 管理的 Ollama
sudo systemctl edit ollama.service
# 添加:Environment="OLLAMA_CONTEXT_LENGTH=32768"
# 然后:sudo systemctl daemon-reload && sudo systemctl restart ollama

# 方案三:烘焙到自定义模型(每模型持久化)
echo -e "FROM qwen2.5-coder:32b\nPARAMETER num_ctx 32768" > Modelfile
ollama create qwen2.5-coder-32k -f Modelfile

无法通过 OpenAI 兼容 API/v1/chat/completions)设置上下文长度。必须在服务器端或通过 Modelfile 配置。这是将 Ollama 与 Hermes 等工具集成时混乱的第一根源。

验证上下文已正确设置:

ollama ps
# 查看 CONTEXT 列——应该显示你配置的值
提示

使用 ollama list 列出可用模型。使用 ollama pull <model>Ollama 模型库 拉取任意模型。Ollama 自动处理 GPU 卸载——大多数配置无需手动配置。


vLLM——高性能 GPU 推理

vLLM 是生产 LLM 服务的标准。最适合:在 GPU 硬件上实现最大吞吐量、服务大型模型、连续批处理。

pip install vllm
vllm serve meta-llama/Llama-3.1-70B-Instruct \
--port 8000 \
--max-model-len 65536 \
--tensor-parallel-size 2 \
--enable-auto-tool-choice \
--tool-call-parser hermes

然后配置 Hermes:

hermes model
# 选择"自定义端点(自托管 / VLLM 等)"
# 输入 URL: http://localhost:8000/v1
# 跳过 API 密钥(或如果配置了 --api-key 则输入)
# 输入模型名称: meta-llama/Llama-3.1-70B-Instruct

上下文长度: vLLM 默认读取模型的 max_position_embeddings。如果超过显存,会报错并要求降低 --max-model-len。也可以使用 --max-model-len auto 自动找到最大可用值。设置 --gpu-memory-utilization 0.95(默认 0.9)以在显存中容纳更多上下文。

工具调用需要显式标志:

标志用途
--enable-auto-tool-choicetool_choice: "auto" 所需(Hermes 的默认值)
--tool-call-parser <name>模型工具调用格式的解析器

支持的解析器:hermes(Qwen 2.5、Hermes 2/3)、llama3_json(Llama 3.x)、mistraldeepseek_v3deepseek_v31xlampythonic。没有这些标志,工具调用将作为文本输出。

提示

vLLM 支持人类可读的大小:--max-model-len 64k(小写 k = 1000,大写 K = 1024)。


SGLang——RadixAttention 高速服务

SGLang 是 vLLM 的替代方案,具有 RadixAttention 用于 KV 缓存复用。最适合:多轮对话(前缀缓存)、约束解码、结构化输出。

pip install "sglang[all]"
python -m sglang.launch_server \
--model meta-llama/Llama-3.1-70B-Instruct \
--port 30000 \
--context-length 65536 \
--tp 2 \
--tool-call-parser qwen

然后配置 Hermes:

hermes model
# 选择"自定义端点(自托管 / VLLM 等)"
# 输入 URL: http://localhost:30000/v1
# 输入模型名称: meta-llama/Llama-3.1-70B-Instruct

上下文长度: SGLang 默认从模型配置中读取。使用 --context-length 覆盖。如果需要超过模型声明的最大值,设置 SGLANG_ALLOW_OVERWRITE_LONGER_CONTEXT_LEN=1

工具调用: 使用 --tool-call-parser 配合适合你模型系列的解析器:qwen(Qwen 2.5)、llama3llama4deepseekv3mistralglm。没有此标志,工具调用将以纯文本返回。

SGLang 默认最多 128 个输出 token

如果响应似乎被截断,请在请求中添加 max_tokens 或在服务器上设置 --default-max-tokens。SGLang 的默认每次响应只有 128 个 token。


llama.cpp / llama-server——CPU 与 Metal 推理

llama.cpp 在 CPU、Apple Silicon(Metal)和消费级 GPU 上运行量化模型。最适合:没有数据中心 GPU 的模型运行、Mac 用户、边缘部署。

# 构建并启动 llama-server
cmake -B build && cmake --build build --config Release
./build/bin/llama-server \
--jinja -fa \
-c 32768 \
-ngl 99 \
-m models/qwen2.5-coder-32b-instruct-Q4_K_M.gguf \
--port 8080 --host 0.0.0.0

上下文长度(-c): 最新版本默认为 0,从 GGUF 元数据读取模型的训练上下文。对于训练上下文为 128k+ 的模型,这可能会因尝试分配完整 KV 缓存而 OOM。建议将 -c 显式设置为你需要的值(Agent 使用建议 32k–64k)。如果使用并行槽(-np),总上下文在槽位间分配——-c 32768 -np 4 时每个槽位只有 8k。

然后配置 Hermes 指向它:

hermes model
# 选择"自定义端点(自托管 / VLLM 等)"
# 输入 URL: http://localhost:8080/v1
# 跳过 API 密钥(本地服务器不需要)
# 输入模型名称——或留空以自动检测(仅当只加载了一个模型时)

这会将端点保存到 config.yaml,跨会话持久化。

工具调用需要 --jinja

没有 --jinja,llama-server 会完全忽略 tools 参数。模型会尝试在响应文本中写入 JSON 来调用工具,但 Hermes 无法识别为工具调用——你会看到像 {"name": "web_search", ...} 这样的原始 JSON 作为消息打印出来,而不是实际的搜索。

原生工具调用支持(最佳性能):Llama 3.x、Qwen 2.5(包括 Coder)、Hermes 2/3、Mistral、DeepSeek、Functionary。所有其他模型使用通用处理程序,可以工作但效率可能较低。完整列表请参阅 llama.cpp 函数调用文档

你可以通过检查 http://localhost:8080/props 验证工具支持是否激活——chat_template 字段应该存在。

提示

Hugging Face 下载 GGUF 模型。Q4_K_M 量化在质量与内存使用之间取得最佳平衡。


LM Studio——带本地模型的桌面应用

LM Studio 是一个带 GUI 的本地模型运行桌面应用。最适合:偏好可视化界面的用户、快速模型测试、macOS/Windows/Linux 开发者。

从 LM Studio 应用启动服务器(开发者标签页 → 启动服务器),或使用 CLI:

lms server start # 在端口 1234 上启动
lms load qwen2.5-coder --context-length 32768

然后配置 Hermes:

hermes model
# 选择 "LM Studio"
# 按 Enter 使用 http://localhost:1234/v1
# 从发现的模型中选择一个
# 如果启用了 LM Studio 服务器认证,根据提示输入 LM_API_KEY

Hermes 会自动加载上下文长度为 64K 的 LM Studio 模型。

在 LM Studio 中更改上下文长度:

  1. 点击模型选择器旁边的齿轮图标
  2. 将"Context Length"设置为至少 64000 以获得流畅体验
  3. 重新加载模型使更改生效
  4. 如果你的机器无法容纳 64000,考虑使用上下文长度更大的较小模型。

或使用 CLI:lms load model-name --context-length 64000

可以用 CLI 估算模型是否能容纳:lms load model-name --context-length 64000 --estimate-only

设置持久的每模型默认值:我的模型标签页 → 模型上的齿轮图标 → 设置上下文大小。

工具调用: LM Studio 0.3.6 起支持。具有原生工具调用训练(Qwen 2.5、Llama 3.x、Mistral、Hermes)的模型会自动检测并显示工具徽章。其他模型使用通用回退,可能不那么可靠。


WSL2 网络(Windows 用户)

由于 Hermes Agent 需要 Unix 环境,Windows 用户在 WSL2 中运行它。如果你的模型服务器(Ollama、LM Studio 等)运行在 Windows 主机上,你需要桥接网络——WSL2 使用带有独立子网的虚拟网络适配器,因此 WSL2 内的 localhost 指向 Linux 虚拟机,而非 Windows 主机。

两者都在 WSL2 中?没问题。

如果你的模型服务器也运行在 WSL2 中(vLLM、SGLang 和 llama-server 常见情况),localhost 按预期工作——它们共享同一个网络命名空间。跳过此节。

方案一:镜像网络模式(推荐)

适用于 Windows 11 22H2+,镜像模式使 localhost 在 Windows 和 WSL2 之间双向工作——最简单的修复。

  1. 创建或编辑 %USERPROFILE%\.wslconfig(例如 C:\Users\YourName\.wslconfig):

    [wsl2]
    networkingMode=mirrored
  2. 从 PowerShell 重启 WSL:

    wsl --shutdown
  3. 重新打开 WSL2 终端。localhost 现在可以访问 Windows 服务:

    curl http://localhost:11434/v1/models # Windows 上的 Ollama——有效
Hyper-V 防火墙

在某些 Windows 11 版本上,Hyper-V 防火墙默认阻止镜像连接。如果启用镜像模式后 localhost 仍然无效,在管理员 PowerShell 中运行:

Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction Allow

方案二:使用 Windows 主机 IP(Windows 10 / 旧版本)

如果无法使用镜像模式,从 WSL2 内部找到 Windows 主机 IP 并替代 localhost

# 获取 Windows 主机 IP(WSL2 虚拟网络的默认网关)
ip route show | grep -i default | awk '{ print $3 }'
# 示例输出: 172.29.192.1

在 Hermes 配置中使用该 IP:

model:
default: qwen2.5-coder:32b
provider: custom
base_url: http://172.29.192.1:11434/v1 # Windows 主机 IP,而非 localhost
动态辅助工具

WSL2 重启后主机 IP 可能改变。可以在 Shell 中动态获取:

export WSL_HOST=$(ip route show | grep -i default | awk '{ print $3 }')
echo "Windows host at: $WSL_HOST"
curl http://$WSL_HOST:11434/v1/models # 测试 Ollama

或使用机器的 mDNS 名称(需要 WSL2 中的 libnss-mdns):

sudo apt install libnss-mdns
curl http://$(hostname).local:11434/v1/models

服务器绑定地址(NAT 模式必需)

如果你使用方案二(NAT 模式配合主机 IP),Windows 上的模型服务器必须接受来自 127.0.0.1 以外的连接。大多数服务器默认只监听 localhost——WSL2 在 NAT 模式下的连接来自不同的虚拟子网,会被拒绝。在镜像模式下,localhost 直接映射,默认的 127.0.0.1 绑定正常工作。

服务器默认绑定修复方法
Ollama127.0.0.1在启动 Ollama 前设置 OLLAMA_HOST=0.0.0.0 环境变量(在 Windows 上:系统设置 → 环境变量,或编辑 Ollama 服务)
LM Studio127.0.0.1在开发者标签页 → 服务器设置中启用**"在网络上提供服务"**
llama-server127.0.0.1在启动命令中添加 --host 0.0.0.0
vLLM0.0.0.0默认已绑定到所有接口
SGLang127.0.0.1在启动命令中添加 --host 0.0.0.0

Windows 上的 Ollama(详细步骤): Ollama 作为 Windows 服务运行。设置 OLLAMA_HOST

  1. 打开系统属性环境变量
  2. 添加新的系统变量OLLAMA_HOST = 0.0.0.0
  3. 重启 Ollama 服务(或重启电脑)

Windows 防火墙

Windows 防火墙将 WSL2 视为独立网络(在 NAT 和镜像模式下均是如此)。如果按照上述步骤操作后连接仍然失败,请为模型服务器端口添加防火墙规则:

# 在管理员 PowerShell 中运行——将 PORT 替换为服务器端口
New-NetFirewallRule -DisplayName "Allow WSL2 to Model Server" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 11434

常用端口:Ollama 11434、vLLM 8000、SGLang 30000、llama-server 8080、LM Studio 1234

快速验证

在 WSL2 内部测试能否访问模型服务器:

# 将 URL 替换为你的服务器地址和端口
curl http://localhost:11434/v1/models # 镜像模式
curl http://172.29.192.1:11434/v1/models # NAT 模式(使用你的实际主机 IP)

如果得到列出模型的 JSON 响应,则配置正确。在 Hermes 配置中使用相同的 URL 作为 base_url


本地模型故障排查

这些问题影响所有与 Hermes 一起使用的本地推理服务器

WSL2 到 Windows 托管模型服务器的"连接被拒绝"

如果你在 WSL2 中运行 Hermes 而模型服务器在 Windows 主机上,http://localhost:<port> 在 WSL2 默认的 NAT 网络模式下无法工作。参见上方的 WSL2 网络获取修复方案。

工具调用以文本形式出现而非实际执行

模型输出类似 {"name": "web_search", "arguments": {...}} 的消息,而非真正调用工具。

原因: 服务器未启用工具调用,或模型通过服务器的工具调用实现不支持它。

服务器修复
llama.cpp在启动命令中添加 --jinja
vLLM添加 --enable-auto-tool-choice --tool-call-parser hermes
SGLang添加 --tool-call-parser qwen(或适当的解析器)
Ollama工具调用默认启用——确保你的模型支持(使用 ollama show model-name 检查)
LM Studio更新到 0.3.6+ 并使用带原生工具支持的模型

模型似乎遗忘上下文或给出不连贯的响应

原因: 上下文窗口太小。当对话超过上下文限制时,大多数服务器会静默丢弃较早的消息。Hermes 的系统提示 + 工具模式单独就可能消耗 4k–8k token。

诊断:

# 检查 Hermes 认为的上下文是多少
# 查看启动行:"Context limit: X tokens"

# 检查服务器的实际上下文
# Ollama: ollama ps(CONTEXT 列)
# llama.cpp: curl http://localhost:8080/props | jq '.default_generation_settings.n_ctx'
# vLLM: 检查启动参数中的 --max-model-len

修复: 将上下文设置为 Agent 使用的至少 32,768 个 token。每个服务器的具体标志参见上方各自的章节。

启动时显示"Context limit: 2048 tokens"

Hermes 从服务器的 /v1/models 端点自动检测上下文长度。如果服务器报告了较低的值(或根本不报告),Hermes 使用模型声明的限制,这可能有误。

修复:config.yaml 中显式设置:

model:
default: your-model
provider: custom
base_url: http://localhost:11434/v1
context_length: 32768

响应在句子中间被截断

可能原因:

  1. 服务器上输出上限(max_tokens)太低 — SGLang 默认每次响应 128 个 token。在服务器上设置 --default-max-tokens,或在 config.yaml 中配置 Hermes 的 model.max_tokens。注意:max_tokens 只控制响应长度——与对话历史的长度无关(那是 context_length)。
  2. 上下文耗尽 — 模型填满了上下文窗口。增加 model.context_length 或在 Hermes 中启用上下文压缩

LiteLLM 代理——多提供商网关

LiteLLM 是一个 OpenAI 兼容的代理,将 100+ 个 LLM 提供商统一在一个 API 后面。最适合:无需更改配置即可在提供商之间切换、负载均衡、故障转移链、预算控制。

# 安装并启动
pip install "litellm[proxy]"
litellm --model anthropic/claude-sonnet-4 --port 4000

# 或使用配置文件配置多个模型:
litellm --config litellm_config.yaml --port 4000

然后使用 hermes model → 自定义端点 → http://localhost:4000/v1 配置 Hermes。

带故障转移的 litellm_config.yaml 示例:

model_list:
- model_name: "best"
litellm_params:
model: anthropic/claude-sonnet-4
api_key: sk-ant-...
- model_name: "best"
litellm_params:
model: openai/gpt-4o
api_key: sk-...
router_settings:
routing_strategy: "latency-based-routing"

ClawRouter——成本优化路由

ClawRouter 由 BlockRunAI 开发,是一个基于查询复杂度自动选择模型的本地路由代理。它从 14 个维度对请求进行分类,并路由到能处理任务的最便宜模型。支付方式为 USDC 加密货币(无需 API 密钥)。

# 安装并启动
npx @blockrun/clawrouter # 在端口 8402 上启动

然后使用 hermes model → 自定义端点 → http://localhost:8402/v1 → 模型名称 blockrun/auto 配置 Hermes。

路由配置文件:

配置文件策略节省
blockrun/auto均衡质量/成本74-100%
blockrun/eco尽可能便宜95-100%
blockrun/premium最佳质量模型0%
blockrun/free仅免费模型100%
blockrun/agentic针对工具使用优化不定
备注

ClawRouter 需要在 Base 或 Solana 上充值 USDC 钱包以支付费用。所有请求通过 BlockRun 的后端 API 路由。运行 npx @blockrun/clawrouter doctor 检查钱包状态。


其他兼容提供商

任何具有 OpenAI 兼容 API 的服务均可使用。一些热门选项:

提供商Base URL说明
Together AIhttps://api.together.xyz/v1云托管开源模型
Groqhttps://api.groq.com/openai/v1超快速推理
DeepSeekhttps://api.deepseek.com/v1DeepSeek 模型
Fireworks AIhttps://api.fireworks.ai/inference/v1快速开源模型托管
GMI Cloudhttps://api.gmi-serving.com/v1托管的 OpenAI 兼容推理
Cerebrashttps://api.cerebras.ai/v1晶圆级芯片推理
Mistral AIhttps://api.mistral.ai/v1Mistral 模型
OpenAIhttps://api.openai.com/v1直连 OpenAI
Azure OpenAIhttps://YOUR.openai.azure.com/企业级 OpenAI
LocalAIhttp://localhost:8080/v1自托管,多模型
Janhttp://localhost:1337/v1带本地模型的桌面应用

使用 hermes model → 自定义端点配置上述任意服务,或在 config.yaml 中配置:

model:
default: meta-llama/Llama-3.1-70B-Instruct-Turbo
provider: custom
base_url: https://api.together.xyz/v1
api_key: your-together-key

上下文长度检测

两个容易混淆的设置

context_length总上下文窗口——输入输出 token 的合并预算(例如 Claude Opus 4.6 为 200,000)。Hermes 使用这个值来决定何时压缩历史记录,以及验证 API 请求。

model.max_tokens输出上限——模型在单次响应中最多可生成的 token 数。与对话历史的长度无关。业界标准名称 max_tokens 常引起混淆;Anthropic 的原生 API 已将其重命名为 max_output_tokens 以求清晰。

当自动检测获取的窗口大小有误时,设置 context_length。 只有当你需要限制单个响应的长度时,才设置 model.max_tokens

Hermes 使用多源解析链来检测你的模型和提供商的正确上下文窗口:

  1. 配置覆盖 — config.yaml 中的 model.context_length(最高优先级)
  2. 自定义提供商按模型custom_providers[].models.<id>.context_length
  3. 持久缓存 — 之前发现的值(重启后仍有效)
  4. 端点 /models — 查询服务器的 API(本地/自定义端点)
  5. Anthropic /v1/models — 向 Anthropic API 查询 max_input_tokens(仅 API 密钥用户)
  6. OpenRouter API — 来自 OpenRouter 的实时模型元数据
  7. Nous Portal — 通过后缀匹配将 Nous 模型 ID 与 OpenRouter 元数据对比
  8. models.dev — 社区维护的注册表,包含 100+ 提供商的 3800+ 个模型的提供商特定上下文长度
  9. 回退默认值 — 宽泛的模型系列模式(默认 128K)

对于大多数配置,这开箱即用。该系统感知提供商——同一模型在不同提供商处可能有不同的上下文限制(例如,claude-opus-4.6 在 Anthropic 直连时为 1M,在 GitHub Copilot 上为 128K)。

显式设置上下文长度,在模型配置中添加 context_length

model:
default: "qwen3.5:9b"
base_url: "http://localhost:8080/v1"
context_length: 131072 # token 数

对于自定义端点,也可以按模型设置上下文长度:

custom_providers:
- name: "My Local LLM"
base_url: "http://localhost:11434/v1"
models:
qwen3.5:27b:
context_length: 32768
deepseek-r1:70b:
context_length: 65536

配置自定义端点时,hermes model 会提示输入上下文长度。留空则使用自动检测。

何时需要手动设置
  • 你使用的 Ollama 自定义 num_ctx 低于模型最大值
  • 你想将上下文限制在模型最大值以下(例如在 128k 模型上限制为 8k 以节省显存)
  • 你在不暴露 /v1/models 的代理后面运行

命名自定义提供商

如果你使用多个自定义端点(例如本地开发服务器和远程 GPU 服务器),可以在 config.yaml 中将它们定义为命名自定义提供商:

custom_providers:
- name: local
base_url: http://localhost:8080/v1
# api_key 省略——Hermes 对无密钥的本地服务器使用 "no-key-required"
- name: work
base_url: https://gpu-server.internal.corp/v1
key_env: CORP_API_KEY
api_mode: chat_completions # 可选,从 URL 自动检测
- name: anthropic-proxy
base_url: https://proxy.example.com/anthropic
key_env: ANTHROPIC_PROXY_KEY
api_mode: anthropic_messages # 用于 Anthropic 兼容代理

在会话中使用三段式语法切换:

/model custom:local:qwen-2.5 # 使用 "local" 端点和 qwen-2.5
/model custom:work:llama3-70b # 使用 "work" 端点和 llama3-70b
/model custom:anthropic-proxy:claude-sonnet-4 # 使用代理

你也可以从交互式 hermes model 菜单中选择命名自定义提供商。


实用配方:Together AI、Groq、Perplexity

其他兼容提供商中列出的云提供商都支持 OpenAI 的 REST 方言,因此都可以通过 custom_providers: 以相同方式接入。以下是三个实用配方,直接添加到 ~/.hermes/config.yaml 并将相应的 API 密钥放入 ~/.hermes/.env 即可。

Together AI

托管开源模型(Llama、MiniMax、Gemma、DeepSeek、Qwen),价格显著低于第一方 API。适合多模型部署。

# ~/.hermes/config.yaml
custom_providers:
- name: together
base_url: https://api.together.xyz/v1
key_env: TOGETHER_API_KEY
# api_mode: chat_completions # 默认——无需设置

model:
default: MiniMaxAI/MiniMax-M2.7 # 或 together.ai/models 中的任意模型
provider: custom:together
# ~/.hermes/.env
TOGETHER_API_KEY=your-together-key

会话中切换模型:

/model custom:together:meta-llama/Llama-3.3-70B-Instruct-Turbo
/model custom:together:google/gemma-4-31b-it
/model custom:together:deepseek-ai/DeepSeek-V3

Together 的 /v1/models 端点正常工作,hermes model 可以自动发现可用模型。

Groq

超快推理(Llama-3.3-70B 约 500 tok/s)。目录较小,但延迟敏感的交互式用途表现出色。

# ~/.hermes/config.yaml
custom_providers:
- name: groq
base_url: https://api.groq.com/openai/v1
key_env: GROQ_API_KEY

model:
default: llama-3.3-70b-versatile
provider: custom:groq
# ~/.hermes/.env
GROQ_API_KEY=your-groq-key

Perplexity

适合需要模型自动进行实时网页搜索和引用的场景。对可用模型要求严格——请在 perplexity.ai/settings/api 查看当前列表。

# ~/.hermes/config.yaml
custom_providers:
- name: perplexity
base_url: https://api.perplexity.ai
key_env: PERPLEXITY_API_KEY

model:
default: sonar
provider: custom:perplexity
# ~/.hermes/.env
PERPLEXITY_API_KEY=your-perplexity-key

多提供商一体化配置

三个配方可以组合使用——全部放在一起,用 /model custom:<name>:<model> 按轮切换:

custom_providers:
- name: together
base_url: https://api.together.xyz/v1
key_env: TOGETHER_API_KEY
- name: groq
base_url: https://api.groq.com/openai/v1
key_env: GROQ_API_KEY
- name: perplexity
base_url: https://api.perplexity.ai
key_env: PERPLEXITY_API_KEY

model:
default: MiniMaxAI/MiniMax-M2.7
provider: custom:together # 启动使用 Together;之后可自由切换
故障排查
  • 在这些名称的 CLI 验证器修复(#15083)之后,hermes doctor 不应打印任何 Unknown provider 警告。
  • 如果某个提供商的 /v1/models 端点不可达(Perplexity 是常见情况),hermes model 会在警告后持久化模型而非直接拒绝——参见 #15136。
  • 如需完全跳过 custom_providers: 并使用带 CUSTOM_BASE_URL 环境变量的裸 provider: custom,参见 #15103。

选择合适的配置方案

使用场景推荐方案
直接可用OpenRouter(默认)或 Nous Portal
本地模型,易于设置Ollama
生产 GPU 服务vLLM 或 SGLang
Mac / 无 GPUOllama 或 llama.cpp
多提供商路由LiteLLM 代理或 OpenRouter
成本优化ClawRouter 或带 sort: "price" 的 OpenRouter
最大隐私保护Ollama、vLLM 或 llama.cpp(完全本地)
企业级 / Azure带自定义端点的 Azure OpenAI
中国 AI 模型z.ai(GLM)、Kimi/Moonshot(kimi-codingkimi-coding-cn)、MiniMax、小米 MiMo 或腾讯 TokenHub(一等提供商)
提示

随时可以用 hermes model 切换提供商——无需重启。无论使用哪个提供商,对话历史、记忆和技能都会保留。

可选 API 密钥

功能提供商环境变量
网页抓取FirecrawlFIRECRAWL_API_KEYFIRECRAWL_API_URL
浏览器自动化BrowserbaseBROWSERBASE_API_KEYBROWSERBASE_PROJECT_ID
图像生成FALFAL_KEY
高级 TTS 语音ElevenLabsELEVENLABS_API_KEY
OpenAI TTS + 语音转录OpenAIVOICE_TOOLS_OPENAI_KEY
Mistral TTS + 语音转录MistralMISTRAL_API_KEY
跨会话用户建模HonchoHONCHO_API_KEY
语义长期记忆SupermemorySUPERMEMORY_API_KEY

自托管 Firecrawl

默认情况下,Hermes 使用 Firecrawl 云 API 进行网页搜索和抓取。如果你倾向于在本地运行 Firecrawl,可以将 Hermes 指向自托管实例。完整设置说明请参阅 Firecrawl 的 SELF_HOST.md

优点: 无需 API 密钥,无速率限制,无按页计费,完全的数据主权。

缺点: 云版本使用 Firecrawl 专有的"Fire-engine"进行高级反机器人绕过(Cloudflare、验证码、IP 轮换)。自托管版本使用基础 fetch + Playwright,某些受保护的网站可能失败。搜索使用 DuckDuckGo 而非 Google。

配置步骤:

  1. 克隆并启动 Firecrawl Docker 栈(5 个容器:API、Playwright、Redis、RabbitMQ、PostgreSQL——需要约 4-8 GB RAM):

    git clone https://github.com/firecrawl/firecrawl
    cd firecrawl
    # 在 .env 中设置:USE_DB_AUTHENTICATION=false,HOST=0.0.0.0,PORT=3002
    docker compose up -d
  2. 将 Hermes 指向你的实例(无需 API 密钥):

    hermes config set FIRECRAWL_API_URL http://localhost:3002

如果自托管实例启用了认证,也可以同时设置 FIRECRAWL_API_KEYFIRECRAWL_API_URL

OpenRouter 提供商路由

使用 OpenRouter 时,你可以控制请求如何在各提供商之间路由。在 ~/.hermes/config.yaml 中添加 provider_routing 部分:

provider_routing:
sort: "throughput" # "price"(默认)、"throughput" 或 "latency"
# only: ["anthropic"] # 只使用这些提供商
# ignore: ["deepinfra"] # 跳过这些提供商
# order: ["anthropic", "google"] # 按此顺序尝试提供商
# require_parameters: true # 只使用支持所有请求参数的提供商
# data_collection: "deny" # 排除可能存储/训练数据的提供商

快捷方式: 在任何模型名称后附加 :nitro 以按吞吐量排序(例如 anthropic/claude-sonnet-4:nitro),或附加 :floor 以按价格排序。

OpenRouter Pareto 编码路由器

OpenRouter 在 openrouter/pareto-code 提供了一个实验性的编码模型路由器,可自动将请求路由到满足编码质量门槛(由 Artificial Analysis 排名)的最便宜模型。选择此模型并在 ~/.hermes/config.yaml 中调整 min_coding_score 旋钮:

model:
provider: openrouter
model: openrouter/pareto-code

openrouter:
min_coding_score: 0.65 # 0.0–1.0;越高 = 越强(越贵)的编码模型。默认 0.65。

注意:

  • min_coding_score model.modelopenrouter/pareto-code 时发送。对于任何其他模型,该值不执行任何操作。
  • 设置为空字符串(或删除该行)以让 OpenRouter 选择最强的可用编码模型 —— 这是省略 plugins 块时的已记录行为。
  • 选择在特定日期按分数是确定性的,但实际选择的模型会随着 Pareto 前沿的移动(新模型、基准更新)而转变。
  • 有关完整的路由器行为,请参阅 OpenRouter 的 Pareto 路由器文档
  • 要对特定的辅助任务(压缩、视觉等)使用 Pareto 编码路由器,而不是主 Agent,请在那个任务下设置 extra_body.plugins —— 请参阅辅助模型 → OpenRouter 路由 & Pareto 编码辅助任务

备用提供商

配置一个备用提供商链,当主模型失败时(速率限制、服务器错误、认证失败),Hermes 按顺序尝试。标准格式是顶层的 fallback_providers: 列表:

fallback_providers:
- provider: openrouter
model: anthropic/claude-sonnet-4
- provider: anthropic
model: claude-sonnet-4
# base_url: http://localhost:8000/v1 # 可选,用于自定义端点
# api_mode: chat_completions # 可选覆盖

旧的单一配对 fallback_model: 字典出于向后兼容仍然接受:

fallback_model:
provider: openrouter
model: anthropic/claude-sonnet-4

激活后,备用方案会在不丢失对话的情况下会话中途交换模型和提供商。链会逐个条目尝试;激活在每个会话中一次性触发。

支持的提供商:openrouternousopenai-codexcopilotcopilot-acpanthropicgeminigoogle-gemini-cliqwen-oauthhuggingfacezaikimi-codingkimi-coding-cnminimaxminimax-cnminimax-oauthdeepseeknvidiaxaiollama-cloudbedrockai-gatewayazure-foundryopencode-zenopencode-gokilocodexiaomiarceegmistepfunlmstudioalibabaalibaba-coding-plantencent-tokenhubcustom

提示

备用模型仅通过 config.yaml 配置——或交互式通过 hermes fallback。触发条件、链如何推进以及与辅助任务和委派的交互方式,请参阅备用提供商


另请参阅

  • 配置 — 通用配置(目录结构、配置优先级、终端后端、记忆、压缩等)
  • 环境变量 — 所有环境变量的完整参考