hermes-agent/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/integrations/providers.md
Teknium 76135b329d
docs(i18n): translate all docs into Simplified Chinese (zh-Hans) (#31942)
Translates the full English docs corpus (335 files) into Simplified
Chinese under website/i18n/zh-Hans/. Combined with PR #31895 (cross-
locale link fix), the 简体中文 locale toggle now serves a complete
Chinese site with working cross-page navigation.

Pipeline:
- Claude Sonnet 4.6 via OpenRouter, 8-way concurrent
- Preserves frontmatter keys, code blocks, MDX/JSX, link URLs, brand
  names, and technical jargon (prompt/token/hook/MCP/ACP/etc.)
- Translates only frontmatter title/description and prose
- Two largest files (configuration.md 93KB, research-paper-writing.md
  107KB) retried with 64K max_tokens after initial fence-drift
- 3 manual post-fixes for MDX edge cases the model didn't escape:
  < in optional-skills-catalog table, double-quotes in an alt= tag,
  and a bare URL adjacent to a full-width period

Cost: ~$30 total (Sonnet 4.6 input $3/M + output $15/M).

Verified `npm run build` succeeds for both en and zh-Hans locales,
no double-prefixed /docs/zh-Hans/docs/ URLs in rendered output,
all in-page navigation resolves correctly.

Translations are machine-generated and may need human review on
specific pages — but they're an enormous improvement over the
previous state (3 zh-Hans pages out of 335).
2026-05-25 01:47:38 -07:00

66 KiB
Raw Blame History

title sidebar_label sidebar_position
AI 提供商 AI 提供商 1

AI 提供商

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

推理提供商

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

提供商 配置方式
Nous Portal hermes modelOAuth订阅制
OpenAI Codex hermes modelChatGPT OAuth使用 Codex 模型)
GitHub Copilot hermes modelOAuth 设备码流程,COPILOT_GITHUB_TOKENGH_TOKENgh auth token
GitHub Copilot ACP hermes model(在本地生成 copilot --acp --stdio 子进程)
Anthropic hermes modelClaude Max + 额外用量积分,通过 OAuth也支持 Anthropic API key 或手动 setup-token——见下方说明
OpenRouter ~/.hermes/.env 中的 OPENROUTER_API_KEY
NovitaAI ~/.hermes/.env 中的 NOVITA_API_KEYprovider: novita200+ 模型Model API、Agent Sandbox、GPU Cloud
AI Gateway ~/.hermes/.env 中的 AI_GATEWAY_API_KEYprovider: ai-gateway
z.ai / GLM ~/.hermes/.env 中的 GLM_API_KEYprovider: zai
Kimi / Moonshot ~/.hermes/.env 中的 KIMI_API_KEYprovider: kimi-coding
Kimi / Moonshot中国 ~/.hermes/.env 中的 KIMI_CN_API_KEYprovider: kimi-coding-cn;别名:kimi-cnmoonshot-cn
Arcee AI ~/.hermes/.env 中的 ARCEEAI_API_KEYprovider: arcee;别名:arcee-aiarceeai
GMI Cloud ~/.hermes/.env 中的 GMI_API_KEYprovider: gmi;别名:gmi-cloudgmicloud
MiniMax ~/.hermes/.env 中的 MINIMAX_API_KEYprovider: minimax
MiniMax 中国 ~/.hermes/.env 中的 MINIMAX_CN_API_KEYprovider: minimax-cn
xAIGrok— Responses API ~/.hermes/.env 中的 XAI_API_KEYprovider: xai
xAI Grok OAuthSuperGrok hermes model → "xAI Grok OAuth (SuperGrok / Premium+)"——浏览器登录,无需 API key。参见指南
Qwen Cloud阿里 DashScope ~/.hermes/.env 中的 DASHSCOPE_API_KEYprovider: alibaba
阿里云Coding Plan DASHSCOPE_API_KEYprovider: alibaba-coding-plan,别名:alibaba_coding)——独立计费 SKU不同端点
Kilo Code ~/.hermes/.env 中的 KILOCODE_API_KEYprovider: kilocode
小米 MiMo ~/.hermes/.env 中的 XIAOMI_API_KEYprovider: xiaomi,别名:mimoxiaomi-mimo
腾讯 TokenHub ~/.hermes/.env 中的 TOKENHUB_API_KEYprovider: tencent-tokenhub,别名:tencenttokenhubtencentmaas
OpenCode Zen ~/.hermes/.env 中的 OPENCODE_ZEN_API_KEYprovider: opencode-zen
OpenCode Go ~/.hermes/.env 中的 OPENCODE_GO_API_KEYprovider: opencode-go
DeepSeek ~/.hermes/.env 中的 DEEPSEEK_API_KEYprovider: deepseek
Hugging Face ~/.hermes/.env 中的 HF_TOKENprovider: huggingface,别名:hf
Google / Gemini ~/.hermes/.env 中的 GOOGLE_API_KEY(或 GEMINI_API_KEYprovider: gemini
Google GeminiOAuth hermes model → "Google Gemini (OAuth)"provider: google-gemini-cli,支持免费层,浏览器 PKCE 登录)
LM Studio hermes model → "LM Studio"provider: lmstudio,可选 LM_API_KEY
自定义端点 hermes model → 选择"Custom endpoint"(保存在 config.yaml

官方 API key 路径请参见专属的 Google Gemini 指南

:::tip 模型 key 别名 在 model: 配置节中,可以使用 default:model: 作为模型 ID 的键名。model: { default: my-model }model: { model: my-model } 效果完全相同。 :::

Nous Portal

Nous Portal 是 Nous Research 的统一订阅网关,也是运行 Hermes Agent 的推荐方式。一次 OAuth 登录即可访问 300+ 前沿智能体模型Claude、GPT、Gemini、DeepSeek、Qwen、Kimi、GLM、MiniMax、Grok 等),以及 Tool Gateway网页搜索、图像生成、TTS、浏览器自动化Nous Chat——费用从你的 Nous 订阅中扣除,无需单独管理各提供商账户。

hermes setup --portal     # 全新安装——一条命令完成 OAuth + 提供商 + 网关配置
hermes model              # 已有安装——从列表中选择"Nous Portal"
hermes portal status      # 随时查看登录状态和路由信息

还没有订阅?前往 portal.nousresearch.com/manage-subscription 购买。

完整详情: 参见专属的 Nous Portal 集成页面(订阅内容、模型目录、故障排查)以及分步指南使用 Nous Portal 运行 Hermes Agent

:::info Codex 说明 OpenAI Codex 提供商通过设备码device code认证——打开一个 URL 并输入验证码。Hermes 将生成的凭据存储在 ~/.hermes/auth.json 的自有认证存储中,并在存在 ~/.codex/auth.json 时可导入现有的 Codex CLI 凭据。无需安装 Codex CLI。

如果 token 刷新因终端错误HTTP 4xx、invalid_grant、授权被撤销等失败Hermes 会将该刷新 token 标记为失效并停止重试,避免出现大量重复的认证失败。下一次请求会显示类型化的重新认证提示。运行 hermes auth add codex-oauth(或 hermes model → OpenAI Codex开始新的设备码登录成功交换后隔离状态自动解除。 :::

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

:::tip Nous Tool Gateway 付费 Nous Portal 订阅者还可访问 Tool Gateway——网页搜索、图像生成、TTS 和浏览器自动化,均通过你的订阅路由。无需额外 API key。全新安装时hermes setup --portal 一条命令即可完成登录、设置 Nous 为提供商并开启网关。现有用户可通过 hermes modelhermes tools 按工具启用。随时使用 hermes portal status 查看路由状态。 :::

模型管理的两个命令

Hermes 有两个模型命令,用途不同:

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

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

Anthropic原生

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

:::caution 需要 Claude Max"额外用量"积分 通过 hermes model → Anthropic OAuthhermes auth add anthropic --type oauth认证时Hermes 以 Claude Code 身份路由到你的 Anthropic 账户。仅当你订阅了 Claude Max 计划且购买了额外用量积分时才有效。 Claude Max 基础计划的配额Claude Code 默认包含的用量)不会被 Hermes 消耗——只有你额外购买的超额积分才会被使用。Claude Pro 订阅者无法使用此路径。

如果你没有 Max + 额外积分,请改用 ANTHROPIC_API_KEY——请求将按 token 计费,从该 key 所属组织扣费(标准 API 定价,与任何 Claude 订阅无关)。 :::

# 使用 API key按 token 计费)
export ANTHROPIC_API_KEY=***
hermes chat --provider anthropic --model claude-sonnet-4-6

# 推荐:通过 `hermes model` 认证
# 如果已使用 Claude CodeHermes 会直接使用其凭据存储
hermes model

# 使用 setup-token 手动覆盖(备用/旧版)
export ANTHROPIC_TOKEN=***  # setup-token 或手动 OAuth token
hermes chat --provider anthropic

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

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

或永久设置:

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

:::tip 别名 --provider claude--provider claude-code 也可作为 --provider anthropic 的简写。 :::

GitHub Copilot

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

copilot — 直连 Copilot API(推荐)。使用你的 GitHub Copilot 订阅,通过 Copilot API 访问 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 回退

如果未找到 tokenhermes model 会提供 OAuth 设备码登录——与 Copilot CLI 和 opencode 使用的流程相同。

:::warning Token 类型 Copilot API 支持经典个人访问 tokenghp_*)。支持的 token 类型:

类型 前缀 获取方式
OAuth token gho_ hermes model → GitHub Copilot → 使用 GitHub 登录
细粒度 PAT github_pat_ GitHub 设置 → 开发者设置 → 细粒度 token需要 Copilot Requests 权限)
GitHub App token ghu_ 通过 GitHub App 安装获取

如果你的 gh auth token 返回 ghp_* token请使用 hermes model 通过 OAuth 认证。 :::

:::info Hermes 中的 Copilot 认证行为 Hermes 将支持的 GitHub tokengho_*github_pat_*ghu_*)直接发送到 api.githubcopilot.com,并附带 Copilot 专用请求头(Editor-VersionCopilot-Integration-IdOpenai-Intentx-initiator)。

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

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

部分旧版社区代理使用 api.github.com/copilot_internal/v2/token 交换流程。该端点对某些账户类型可能不可用(返回 404。因此 Hermes 以直接 token 认证为主路径,依靠运行时凭据刷新 + 重试保证健壮性。 :::

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

copilot-acp — Copilot ACP 智能体后端。将本地 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_TOKEN Copilot API 的 GitHub token最高优先级
HERMES_COPILOT_ACP_COMMAND 覆盖 Copilot CLI 二进制路径(默认:copilot
HERMES_COPILOT_ACP_ARGS 覆盖 ACP 参数(默认:--acp --stdio

一等 API Key 提供商

这些提供商内置支持,具有专属提供商 ID。设置 API key 后使用 --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

# Qwen Cloud / DashScopeQwen 模型)
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

# 腾讯 TokenHubHy3 Preview
hermes chat --provider tencent-tokenhub --model hy3-preview
# 需要:~/.hermes/.env 中的 TOKENHUB_API_KEY

# Arcee AITrinity 模型)
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 环境变量覆盖。

:::note Z.AI 端点自动检测 使用 Z.AI / GLM 提供商时Hermes 会自动探测多个端点(全球版、中国版、编程版)以找到接受你 API key 的端点。无需手动设置 GLM_BASE_URL——可用端点会被自动检测并缓存。 :::

xAIGrok— Responses API + Prompt 缓存

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

SuperGrok 和 X Premium+ 订阅者可以用浏览器 OAuth 登录,无需 API key——在 hermes model 中选择 xAI Grok OAuth (SuperGrok / Premium+),或运行 hermes auth add xai-oauth。同一 OAuth bearer token 会被 xAI 直连工具TTS、图像生成、视频生成、转录自动复用。完整流程参见 xAI Grok OAuth 指南——如果 Hermes 运行在远程主机上,还需参见 SSH / 远程主机上的 OAuth 了解所需的 ssh -L 隧道配置。

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

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

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

NovitaAI

NovitaAI 是面向开发者和智能体的 AI 原生云平台。三条产品线200+ 模型的 Model API、用于构建和运行 AI 智能体的 Agent Sandbox以及可扩展计算的 GPU Cloud均可从同一平台访问。

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

# 短别名
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 key。基础 URL 可通过 NOVITA_BASE_URL 覆盖。

Ollama Cloud — 托管 Ollama 模型OAuth + API Key

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

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)在规范化过程中保留——不要使用连字符。

:::tip Ollama Cloud 与本地 Ollama 两者使用相同的 OpenAI 兼容 API。Cloud 是一等提供商(--provider ollama-cloudOLLAMA_API_KEY);本地 Ollama 通过自定义端点流程访问(基础 URL http://localhost:11434/v1,无需 key。对于无法在本地运行的大模型使用 Cloud对于隐私保护或离线工作使用本地。 :::

AWS Bedrock

通过 AWS Bedrock 使用 Anthropic Claude、Amazon Nova、DeepSeek v3.2、Meta Llama 4 等模型。使用 AWS SDKboto3)凭据链——无需 API key使用标准 AWS 认证即可。

# 最简方式——~/.aws/credentials 中的命名 profile
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

参见 AWS Bedrock 指南,了解 IAM 配置、区域选择和跨区域推理的详细步骤。

Qwen PortalOAuth

阿里巴巴 Qwen Portal支持基于浏览器的 OAuth 登录。在 hermes model 中选择 Qwen OAuth (Portal)通过浏览器登录Hermes 会持久化刷新 token。

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

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

或配置 config.yaml

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

仅在 portal 端点迁移时才需设置 HERMES_QWEN_BASE_URL(默认:https://portal.qwen.ai/v1)。

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

阿里云Coding Plan

如果你订阅了阿里巴巴的 Coding Plan(独立于标准 DashScope API 访问的计费 SKUHermes 将其作为独立的一等提供商暴露:alibaba-coding-plan。端点:https://coding-intl.dashscope.aliyuncs.com/v1。与常规 alibaba 提供商一样兼容 OpenAI但基础 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——无需单独的 key只是路由目标不同。在此提供商注册之前config.yaml 中设置 provider: alibaba_coding 的用户会静默回退到 OpenRouter 路由。

MiniMaxOAuth

通过浏览器 OAuth 登录使用 MiniMax-M2.7——无需 API key。在 hermes model 中选择 MiniMax (OAuth)通过浏览器登录Hermes 会持久化访问 token 和刷新 token。底层使用 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

:::tip MiniMax OAuth 与 API key minimax-oauth 使用 MiniMax 面向消费者的 portal通过 OAuth 登录——无需设置计费。minimaxminimax-cn 提供商使用 MINIMAX_API_KEY / MINIMAX_CN_API_KEY——用于程序化访问。完整流程参见 MiniMax OAuth 指南。 :::

NVIDIA NIM

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

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

# 本地 NIM 端点——覆盖基础 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"

:::tip 本地 NIM 对于本地部署DGX Spark、本地 GPU设置 NVIDIA_BASE_URL=http://localhost:8000/v1。NIM 暴露与 build.nvidia.com 相同的 OpenAI 兼容 chat completions API因此在云端和本地之间切换只需修改一行环境变量。 :::

Hermes 会在每次向 build.nvidia.com 发送请求时自动附加 NIM 计费来源请求头——无需任何配置。这会在 NVIDIA 计费仪表板中将消耗路由到正确的来源。

GMI Cloud

通过 GMI Cloud 使用开源和推理模型——OpenAI 兼容 APIAPI key 认证。

# 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"

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

StepFun

通过 StepFun 使用 Step 系列模型——OpenAI 兼容 APIAPI key 认证。

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

或在 config.yaml 中永久设置:

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

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

Hugging Face 推理提供商

Hugging Face Inference Providers 通过统一的 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 获取 token——确保启用"Make calls to Inference Providers"权限。包含免费层(每月 $0.10 积分,不加价)。

可在模型名称后附加路由后缀::fastest(默认)、:cheapest,或 :provider_name 强制指定后端。

基础 URL 可通过 HF_BASE_URL 覆盖。

通过 OAuth 使用 Google Geminigoogle-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(端口占用时自动回退到临时端口)
  • Token 存储在 ~/.hermes/auth/google_oauth.jsonchmod 0600原子写入跨进程 fcntl 锁)
  • 到期前 60 秒自动刷新
  • 无头环境SSH、HERMES_HEADLESS=1)→ 粘贴模式回退
  • 并发刷新去重——两个并发请求不会触发双重刷新
  • invalid_grant(刷新 token 被撤销)→ 凭据文件被清除,提示用户重新登录

推理工作原理:

  • 流量发送到 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%

:::warning 政策风险 Google 认为将 Gemini CLI OAuth 客户端用于第三方软件违反政策。部分用户反映账户受到限制。为降低风险,建议改用 gemini 提供商并通过 API key 访问。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。

自定义与自托管 LLM 提供商

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

通用配置

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

交互式配置(推荐):

hermes model
# 选择"Custom endpoint (self-hosted / VLLM / etc.)"
# 输入API 基础 URL、API key、模型名称

手动配置(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

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

两种方式都会持久化到 config.yaml,该文件是模型、提供商和基础 URL 的唯一来源。

使用 /model 切换模型

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

/model(在活跃的 Hermes 聊天会话中输入)只能在已配置的提供商和模型之间切换。它无法添加新提供商、运行 OAuth 或提示输入 API key。如果你只配置了一个提供商如 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 会将基础 URL 和提供商持久化到配置中,使更改在重启后保留。从自定义端点切换到内置提供商时,过时的基础 URL 会自动清除。

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

以下所有内容遵循相同模式——只需更改 URL、key 和模型名称。


Ollama — 本地模型,零配置

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

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

然后配置 Hermes

hermes model
# 选择"Custom endpoint (self-hosted / VLLM / etc.)"
# 输入 URLhttp://localhost:11434/v1
# 跳过 API keyOllama 不需要)
# 输入模型名称(如 qwen2.5-coder:32b

或直接配置 config.yaml

model:
  default: qwen2.5-coder:32b
  provider: custom
  base_url: http://localhost:11434/v1
  context_length: 32768   # 见下方警告

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

可用显存 默认上下文
小于 24 GB 4,096 tokens
2448 GB 32,768 tokens
48+ GB 256,000 tokens

对于带工具的智能体使用,至少需要 16k32k 上下文。在 4k 时,系统 prompt 加工具 schema 就可能填满窗口,没有空间留给对话。

如何增加(选择其一):

# 方式 1通过环境变量设置服务器全局值推荐
OLLAMA_CONTEXT_LENGTH=32768 ollama serve

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

# 方式 3烘焙到自定义模型中每个模型持久生效
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 列——应显示你配置的值

:::tip 使用 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
# 选择"Custom endpoint (self-hosted / VLLM / etc.)"
# 输入 URLhttp://localhost:8000/v1
# 跳过 API key或输入你配置 vLLM 时设置的 --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-choice tool_choice: "auto" 所必需Hermes 的默认值)
--tool-call-parser <name> 模型工具调用格式的解析器

支持的解析器:hermesQwen 2.5、Hermes 2/3llama3_jsonLlama 3.xmistraldeepseek_v3deepseek_v31xlampythonic。没有这些标志,工具调用将无法工作——模型会将工具调用以文本形式输出。

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


SGLang — 带 RadixAttention 的快速服务

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

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
# 选择"Custom endpoint (self-hosted / VLLM / etc.)"
# 输入 URLhttp://localhost:30000/v1
# 输入模型名称meta-llama/Llama-3.1-70B-Instruct

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

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

:::caution SGLang 默认最大输出 128 tokens 如果响应看起来被截断,在请求中添加 max_tokens 或在服务器上设置 --default-max-tokens。SGLang 的默认值是每次响应仅 128 tokens如果请求中未指定。 :::


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

llama.cpp 在 CPU、Apple SiliconMetal和消费级 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 为你需要的值32k64k 是智能体使用的合理范围)。如果使用并行槽(-np),总上下文在槽之间分配——-c 32768 -np 4 时每个槽只有 8k。

然后配置 Hermes 指向它:

hermes model
# 选择"Custom endpoint (self-hosted / VLLM / etc.)"
# 输入 URLhttp://localhost:8080/v1
# 跳过 API key本地服务器不需要
# 输入模型名称——或留空以在只加载一个模型时自动检测

这会将端点保存到 config.yaml,在会话间持久保留。

:::caution --jinja 是工具调用的必要条件 没有 --jinjallama-server 会完全忽略 tools 参数。模型会尝试在响应文本中写入 JSON 来调用工具,但 Hermes 不会将其识别为工具调用——你会看到原始 JSON{"name": "web_search", ...})作为消息打印出来,而不是实际执行搜索。

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

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

:::tip 从 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考虑使用上下文长度更大的小模型。

或使用 CLIlms 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 主机。

:::tip 都在 WSL2 内?没问题。 如果你的模型服务器也在 WSL2 内运行vLLM、SGLang 和 llama-server 的常见情况),localhost 可以正常工作——它们共享同一网络命名空间。跳过本节。 :::

方式 1镜像网络模式推荐

适用于 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——正常工作
    

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

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

:::

方式 2使用 Windows 主机 IPWindows 10 / 旧版本)

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

# 获取 Windows 主机 IPWSL2 虚拟网络的默认网关)
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

:::tip 动态获取 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 模式必需)

如果使用方式 2NAT 模式加主机 IPWindows 上的模型服务器必须接受来自 127.0.0.1 以外的连接。默认情况下,大多数服务器只监听 localhost——NAT 模式下 WSL2 的连接来自不同的虚拟子网,会被拒绝。在镜像模式下,localhost 直接映射,因此默认的 127.0.0.1 绑定可以正常工作。

服务器 默认绑定 修复方式
Ollama 127.0.0.1 启动 Ollama 前设置 OLLAMA_HOST=0.0.0.0 环境变量Windows 系统设置 → 环境变量,或编辑 Ollama 服务)
LM Studio 127.0.0.1 在开发者标签页 → 服务器设置中启用**"Serve on Network"**
llama-server 127.0.0.1 在启动命令中添加 --host 0.0.0.0
vLLM 0.0.0.0 默认已绑定所有接口
SGLang 127.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 主机上,在 WSL2 默认 NAT 网络模式下 http://localhost:<port> 无法工作。参见上方的 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 的系统 prompt 加工具 schema 单独就可能占用 4k8k tokens。

诊断:

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

# 检查服务器的实际上下文
# Ollamaollama psCONTEXT 列)
# llama.cppcurl http://localhost:8080/props | jq '.default_generation_settings.n_ctx'
# vLLM检查启动参数中的 --max-model-len

修复: 将上下文设置为至少 32,768 tokens 用于智能体使用。参见上方各服务器章节了解具体标志。

启动时显示"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 tokens。在服务器上设置 --default-max-tokens,或在 config.yaml 中配置 model.max_tokens。注意:max_tokens 只控制响应长度——与对话历史可以有多长无关(那是 context_length)。
  2. 上下文耗尽 — 模型填满了上下文窗口。增加 model.context_length 或在 Hermes 中启用上下文压缩

LiteLLM Proxy — 多提供商网关

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 key

# 安装并启动
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 针对工具使用优化 不定

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


其他兼容提供商

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

提供商 基础 URL 说明
Together AI https://api.together.xyz/v1 云托管开源模型
Groq https://api.groq.com/openai/v1 超快推理
DeepSeek https://api.deepseek.com/v1 DeepSeek 模型
Fireworks AI https://api.fireworks.ai/inference/v1 快速开源模型托管
GMI Cloud https://api.gmi-serving.com/v1 托管 OpenAI 兼容推理
Cerebras https://api.cerebras.ai/v1 晶圆级芯片推理
Mistral AI https://api.mistral.ai/v1 Mistral 模型
OpenAI https://api.openai.com/v1 直连 OpenAI
Azure OpenAI https://YOUR.openai.azure.com/ 企业级 OpenAI
LocalAI http://localhost:8080/v1 自托管,多模型
Jan http://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

上下文长度检测

:::note 两个设置,容易混淆 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 key 用户)
  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  # tokens

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

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 在配置自定义端点时会提示输入上下文长度。留空则自动检测。

:::tip 何时手动设置

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

命名自定义提供商

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

custom_providers:
  - name: local
    base_url: http://localhost:8080/v1
    # api_key 省略——Hermes 对无 key 的本地服务器使用"no-key-required"
  - name: work
    base_url: https://gpu-server.internal.corp/v1
    key_env: CORP_API_KEY
    api_mode: chat_completions   # 由 `hermes model` → 自定义端点向导显式设置;自动检测仍作为回退
  - name: anthropic-proxy
    base_url: https://proxy.example.com/anthropic
    key_env: ANTHROPIC_PROXY_KEY
    api_mode: anthropic_messages  # 用于 Anthropic 兼容代理

某些 OpenAI 兼容端点需要特定于提供商的请求体字段。在对应的自定义提供商中添加 extra_body 映射Hermes 会将其合并到该端点的每个 chat-completions 请求中:

custom_providers:
  - name: gemma-local
    base_url: http://localhost:8080/v1
    model: google/gemma-4-31b-it
    extra_body:
      enable_thinking: true
      reasoning_effort: high

使用你服务器文档中的格式。例如vLLM Gemma 部署和某些 NVIDIA NIM 端点期望 enable_thinkingchat_template_kwargs 下,而不是作为顶级 extra_body 字段:

extra_body:
  chat_template_kwargs:
    enable_thinking: true

hermes model → 自定义端点向导现在会显式提示 api_mode 并将你的答案持久化到 config.yaml。当字段留空时,基于 URL 的自动检测(例如 /anthropic 路径 → anthropic_messages)仍作为回退。

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

/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 key 放入 ~/.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之后可自由切换

:::tip 故障排查

  • hermes doctor 对于上述任何名称都不应打印 Unknown provider 警告(在 #15083 的 CLI 验证器修复之后)。
  • 如果某个提供商的 /v1/models 端点不可达Perplexity 是常见情况),hermes model 会在警告后持久化模型而不是硬性拒绝——参见 #15136。
  • 要完全跳过 custom_providers: 并使用带 CUSTOM_BASE_URL 环境变量的裸 provider: custom,参见 #15103。 :::

选择合适的配置

使用场景 推荐方案
只想让它工作 OpenRouter默认或 Nous Portal
本地模型,简单配置 Ollama
生产 GPU 服务 vLLM 或 SGLang
Mac / 无 GPU Ollama 或 llama.cpp
多提供商路由 LiteLLM Proxy 或 OpenRouter
成本优化 ClawRouter 或带 sort: "price" 的 OpenRouter
最大隐私保护 Ollama、vLLM 或 llama.cpp完全本地
企业 / Azure Azure OpenAI 加自定义端点
中国 AI 模型 z.aiGLM、Kimi/Moonshotkimi-codingkimi-coding-cn、MiniMax、小米 MiMo 或腾讯 TokenHub一等提供商

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

可选 API Key

功能 提供商 环境变量
网页抓取 Firecrawl FIRECRAWL_API_KEYFIRECRAWL_API_URL
浏览器自动化 Browserbase BROWSERBASE_API_KEYBROWSERBASE_PROJECT_ID
图像生成 FAL FAL_KEY
高级 TTS 语音 ElevenLabs ELEVENLABS_API_KEY
OpenAI TTS + 语音转录 OpenAI VOICE_TOOLS_OPENAI_KEY
Mistral TTS + 语音转录 Mistral MISTRAL_API_KEY
跨会话用户建模 Honcho HONCHO_API_KEY
语义长期记忆 Supermemory SUPERMEMORY_API_KEY

自托管 Firecrawl

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

优势: 无需 API key无速率限制无按页计费完全数据主权。

劣势: 云版本使用 Firecrawl 专有的"Fire-engine"进行高级反爬虫绕过Cloudflare、CAPTCHA、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 key

    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 Code 路由器

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.01.0;越高 = 越强(越贵)的编程模型。默认 0.65。

说明:

  • min_coding_score model.modelopenrouter/pareto-code 时发送。对其他任何模型该值无效。
  • 设置为空字符串(或删除该行)让 OpenRouter 选择最强的可用编程模型——这是省略 plugins 块时的文档行为。
  • 在给定日期内,按分数选择是确定性的,但随着 Pareto 前沿移动(新模型、基准更新),实际选择的模型可能变化。
  • 参见 OpenRouter 的 Pareto Router 文档 了解完整路由器行为。
  • 要将 Pareto Code 路由器用于特定辅助任务(压缩、视觉等)而非主智能体,在该任务下设置 extra_body.plugins——参见辅助模型 → OpenRouter 路由与辅助任务的 Pareto Code

故障转移提供商

配置一个备用提供商链当主模型失败时速率限制、服务器错误、认证失败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-oauthdeepseeknvidiaxaixai-oauthollama-cloudbedrockai-gatewayazure-foundryopencode-zenopencode-gokilocodexiaomiarceegmistepfunlmstudioalibabaalibaba-coding-plantencent-tokenhubcustom

:::tip 故障转移仅通过 config.yaml 配置——或通过 hermes fallback 交互式配置。有关触发时机、链推进方式以及与辅助任务和委托的交互,参见故障转移提供商。 :::


另请参阅

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