← Hermes Agent 中文介绍

能力

Hermes Agent 接入 Ollama

用本地 Ollama 跑大模型,让 Hermes 不依赖云端 API。完全离线、数据不出机器、按月电费付钱。本文讲怎么让 Docker 里的 Hermes 连到主机上的 Ollama(host.docker.internal、Linux 的 --add-host)、推荐的模型选型、长上下文配置,以及常见的“连不上”问题。

什么时候应该用 Ollama

  • 数据敏感,不能让对话内容离开本地(医疗、法律、金融、政府)
  • 已经有显卡(RTX 3090 / 4090 / Apple M3 Pro+)想物尽其用
  • 高频对话场景,云端 token 费扛不住
  • 想在断网环境(局域网、车间)跑 AI 助手
  • 想测试开源模型:DeepSeek R1、Qwen 2.5、Llama 3.3 等

什么时候别用 Ollama

  • 没显卡且只有 16GB 内存 —— CPU 跑 70B 模型会非常慢(<1 token/s),质量差也比 GPT-4 差很多
  • 需要顶级模型质量(GPT-5 / Claude Sonnet 4.6) —— 开源模型整体差一档
  • 多用户高 QPS —— 一张 GPU 同时只能一个推理,要并发就需要多卡或 vLLM

第一步:装 Ollama 并跑一个模型

# macOS / Linux 一键装
curl -fsSL https://ollama.com/install.sh | sh

# 启动 Ollama 服务(macOS 装好会自动启动)
ollama serve

# 下载 + 跑一个推荐模型
ollama pull qwen2.5:14b      # 中文场景推荐
ollama pull llama3.3:70b     # 英文 + 通用,需要 48GB+ 显存
ollama pull deepseek-r1:32b  # 推理任务强,70B 版要 48GB

# 测试一下
ollama run qwen2.5:14b "你好,介绍下你自己"

Ollama 默认监听 localhost:11434。这是 Hermes 要连的地址。

第二步:让 Docker 里的 Hermes 连到主机 Ollama

Hermes 通常跑在 Docker 容器里,Ollama 跑在主机上。容器要访问主机的 :11434 有几种方式:

macOS / Windows(最简单)

Docker Desktop 自动提供一个特殊 DNS:host.docker.internal,从容器里访问相当于主机的 localhost:

docker run -d \
  -p 8642:8642 \
  ghcr.io/nousresearch/hermes-agent:latest

hermes.json 里的 baseUrl 用 http://host.docker.internal:11434

Linux(需要手动加)

Linux 的 Docker 默认没有 host.docker.internal。两种办法:

# 办法 1:启动时加 --add-host
docker run -d \
  --add-host host.docker.internal:host-gateway \
  -p 8642:8642 \
  ghcr.io/nousresearch/hermes-agent:latest

# 办法 2:让 Ollama 监听所有接口,用 docker0 网桥 IP
# /etc/systemd/system/ollama.service 里加:
#   Environment="OLLAMA_HOST=0.0.0.0"
# systemctl restart ollama
# 然后 hermes baseUrl 用主机 IP 或 docker0 的 IP(通常 172.17.0.1)

第三步:hermes.json 配置

{
  "models": {
    "primary": "ollama/qwen2.5:14b",
    "providers": {
      "ollama": {
        "baseUrl": "http://host.docker.internal:11434"
      }
    }
  }
}

primaryollama/<模型 tag> 格式,模型 tag 跟 ollama list 看到的完全一致。

模型选型:中文场景

模型显存需求中文质量推荐场景
qwen2.5:7b~5GB消费级显卡入门
qwen2.5:14b~10GBRTX 3090 / 4070 Ti 推荐
qwen2.5:32b~20GB很好RTX 4090 / 双卡
qwen2.5:72b~45GB接近 GPT-4A100 / H100 / 双 4090
deepseek-r1:32b~20GB很好(推理)数学 / 代码任务

长上下文配置

Ollama 默认上下文长度只有 2048 tokens,对长对话或者大文件分析根本不够。在 hermes 配置里强制开长 context:

"providers": {
  "ollama": {
    "baseUrl": "http://host.docker.internal:11434",
    "options": {
      "num_ctx": 32768
    }
  }
}

注意:上下文越长,显存占用越多。32k context 对 14B 模型大约多吃 4-6GB 显存。设之前先看 nvidia-smi 还有多少余量。

性能调优

  • 用量化版本(qwen2.5:14b-q4_0)显存减半但质量损失轻微
  • 关掉 mlock 让模型按需 swap:OLLAMA_KEEP_ALIVE=0
  • 多 GPU:OLLAMA_NUM_PARALLEL=4 让单实例能并发,但每个并发都要分一份显存
  • 批量推理用 vLLM 替代 Ollama —— Ollama 是单查询优化的,vLLM 是高并发优化的

验证连接

# 在 Hermes 容器里执行
docker exec hermes curl -s http://host.docker.internal:11434/api/tags

# 应该返回你装的所有模型 JSON
# 报 connection refused 就是网络不通;空响应就是 Ollama 没启动

常见报错

connection refused

  • Ollama 没启动 —— ollama serve 或者 macOS 上点开 Ollama.app
  • Linux Docker 没加 --add-host host.docker.internal:host-gateway
  • Linux 上 Ollama 只监听 127.0.0.1 —— OLLAMA_HOST=0.0.0.0 ollama serve
  • 防火墙挡了 11434 —— ufw allow from 172.17.0.0/16 to any port 11434

model not found

hermes.json 里写的 model tag 在 ollama list 里不存在。复制粘贴时要完整带 tag:qwen2.5:14b 不是 qwen2.5

响应慢得不正常(<1 token/s)

  • 没用 GPU,是 CPU 在算 —— nvidia-smi 或者 Activity Monitor 看 GPU 利用率
  • 模型太大,开始 swap 到磁盘了 —— 换小一档的模型
  • num_ctx 设太大 —— 32k 比 2k 慢很多

OOM 显存不够

  • 关掉 GPU 上其他占用程序(浏览器、其他 LLM)
  • 用量化版本(:q4_0:q5_K_M
  • 降 num_ctx
  • 实在不行就换更小的模型

混合策略:Ollama + 云端 fallback

生产场景常见组合:日常用本地 Ollama 省钱,处理复杂任务时切到 GPT-5 / Claude Sonnet:

{
  "models": {
    "primary": "ollama/qwen2.5:14b",
    "agents": {
      "code": "openai/gpt-5",
      "memory": "ollama/qwen2.5:7b"
    }
  }
}

memory agent 用更小的本地模型(高频但任务简单),主对话用本地,code agent 切云端(任务复杂)。

托管版:OpenClaw Launch

托管版本身不跑 Ollama(OpenClaw 服务器没显卡),但你可以在 Dashboard 把 Ollama 配成 BYOK provider,baseUrl 指向你自己的内网或 ngrok 隧道暴露的 Ollama 实例。这样“界面在云端 + 模型在本地”。 OpenClaw Launch 首月 $3,之后 $6/月。

下一步

本地模型 + 云端管理

OpenClaw Launch 托管 Hermes,BYOK 把 baseUrl 指到你自己的 Ollama。

立即部署