前言

上周,两位开发同学因为一台机器吵了起来:到底装 Hermes,还是装 OpenClaw?
我听完愣了一下:为什么不全都要?
于是,我自己动手把 Hermes Agent 和 OpenClaw 都装了一遍。先说结论:可以共存,而且搭配起来很好用。
不过,安装过程中也遇到了几个只有真正跑过一遍才会碰到的问题,例如模型配置没有完全切换、PATH 没对齐、pnpm 明明装成功却找不到命令,以及 OpenClaw UI 构建失败但安装脚本仍然提示完成。
这篇文章记录完整安装流程,也把我踩过的坑集中整理出来,方便以后重装时直接抄作业。


Hermes和OpenClaw什么关系?

第一次听到 Hermes AgentOpenClaw,我们会下意识把它们当成竞品。


其实两者并不是完全互斥的竞品,也不是泾渭分明的上下游。它们都有工具调用、记忆和消息渠道能力,只是侧重点不同:Hermes 更强调持续学习、技能沉淀和深度任务执行;OpenClaw 更强调自托管 Gateway、多渠道接入与个人助理体验。

对比项Hermes AgentOpenClaw
典型场景本地终端交互、工程任务执行、脚本编写、长期积累上下文接入聊天渠道、运行 Gateway、提供 Web 控制台、承接自动化任务
核心优势分层长期记忆:MEMORY.md、SQLite 会话归档、Skills 技能库;本地 FTS 召回速度快;适合持续积累上下文原生支持 Telegram、Discord、WhatsApp 等渠道;支持语义向量记忆搜索;提供 Web 控制台;跨渠道共享用户偏好
记忆特点热记忆与冷检索结合,主动提醒 Agent 存档,越用越熟悉你的工作方式Markdown 记忆文件与向量混合检索结合,不同渠道的对话进入同一记忆池
配置目录~/.hermes~/.openclaw
启动方式通过 hermes 进入 REPL通过 openclaw gateway 启动服务
更像什么一个坐在你旁边、能直接干活的工程师同事一个随时在线、帮你接收消息和调度任务的私人助理

打个比方:Hermes 更像坐在你工位旁边的工程师同事,记得你上周讨论过什么,也擅长写脚本、执行任务;OpenClaw 更像一个能够接入 Telegram、钉钉和定时任务的私人助理,你在哪里,它就在哪里。

一个负责“动手”,一个负责“接话”。 配置文件也分别放在不同目录,不会互相打架。


机器与环境要求

我在以下环境中跑通过,供参考:

  • Ubuntu 22.04 / 24.04
  • Debian 11 / 12
  • Fedora 38+
  • Arch Linux
  • WSL2

使用 WSL2 时,建议直接在 WSL 环境内部安装,不要在 Windows 原生 PowerShell 中硬装 Linux 版本。

硬件建议

项目最低配置推荐配置
CPU2 核4 核及以上
内存2 GB4 GB 及以上;如果 VPS 只有 1 GB,可以使用后文的 Swap 补救方案
磁盘20 GB建议使用 SSD;编译 OpenClaw UI 时会产生较多临时文件

检查gitcurl

安装脚本会自动拉取源码和依赖,但在开始之前,需要确认系统中已经安装 gitcurl

  • git:用于从 GitHub 克隆 Hermes 和 OpenClaw 源码。没有它,安装脚本会直接报错退出。
  • curl:用于下载远程安装脚本。后面的 curl -fsSL ... | bash 就依赖它。
git --version
curl --version

如果两条命令都能正常输出版本号,可以直接进入下一步。
如果提示 command not found,根据 Linux 发行版安装依赖:

# Ubuntu / Debian
sudo apt update && sudo apt install -y git curl build-essential

# Fedora
sudo dnf install -y git curl gcc gcc-c++ make

# Arch Linux
sudo pacman -S --needed git curl base-devel

安装完成后,再执行一次:

git --version
curl --version

安装脚本还会自动准备以下运行时,通常不需要手动处理:

  • Hermes:Python 3.11(由 uv 管理)、Node.js 22、uv、ripgrep、ffmpeg
  • OpenClaw:Node.js 24(最低兼容版本为 Node.js 22.19+)、pnpm、前端构建链

安装 Hermes

执行官方安装脚本:

curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash

也可以使用 GitHub 源:

curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

待安装完成后,刷新当前终端环境:

source ~/.bashrc
hash -r

检查安装结果:

command -v hermes
hermes version

确认成功后,进入初始化向导,执行 hermes setup 进入交互向导,也可以直接手动配置 LLM。

下面以 阿里云百炼(通义千问) 为例。其他模型大同小异,此处不进行过多说明。API Key 获取路径:阿里云百炼控制台 → API Key

hermes config set model.provider custom
hermes config set model.base_url https://token-plan.cn-beijing.maas.aliyuncs.com/apps/anthropic
hermes config set model.api_mode anthropic_messages
hermes config set model.api_key sk-你的百炼密钥
hermes config set model.default qwen3.7-max

最后一行 model.default 千万不要漏掉
我第一次安装时就漏了这一项。结果 Hermes 仍然请求安装时默认的 Claude 路由,最终报错:

HTTP 404 model is not found

我对着配置文件看了好几分钟,才反应过来默认模型根本没有切换成功。

以上命令将配置写入 ~/.hermes/config.yaml。也可以直接编辑该文件,写入以下内容(示例参考):

model:
  default: qwen3.7-max
  provider: custom
  base_url: https://token-plan.cn-beijing.maas.aliyuncs.com/apps/anthropic
  api_mode: anthropic_messages
  api_key: sk-你的百炼密钥

配置完成后,执行以下命令发送一条测试消息:

hermes chat -q "你好"

安装完成后的关键目录:

~/.hermes/              # 配置与数据
~/.local/bin/hermes     # CLI 入口

Hermes 版本更新较快。若手动配置后模型仍未切换,优先运行 hermes model,通过官方交互式向导重新选择 Provider 和默认模型


安装 OpenClaw

OpenClaw 需要 Node.js 22 或更高版本。可通过命令检查 Node.js 版本

node --version

执行官方安装脚本:

curl -fsSL https://openclaw.ai/install.sh | bash

首次安装后,OpenClaw 会自动启动配置向导,完成初始设置。也可以手动执行openclaw onboard命令进行配置。

配置项建议配置
I understand this is powerful and inherently risky. Continue?选择 Yes
Onboarding mode选择 QuickStart
Model/auth provider选择 Skip for now,稍后再配置百炼模型
Filter models by provider选择 All providers
Default model选择 Keep current
Select channel (QuickStart)选择 Skip for now,稍后再配置消息渠道
Configure skills now? (recommended)选择 No
Enable hooks?按空格键选中需要启用的选项,然后按回车键进入下一步
How do you want to hatch your bot?选择 Do this later

配置文件位于 ~/.openclaw/openclaw.json,OpenClaw 启动时会自动读取。
关键配置参考:

{
  "models": {
    "mode": "merge",
    "providers": {
      "bailian-token-plan": {
        "baseUrl": "https://token-plan.cn-beijing.maas.aliyuncs.com/apps/anthropic",
        "apiKey": "sk-你的百炼密钥",
        "api": "anthropic-messages",
        "models": [
          {
            "id": "qwen3.7-max",
            "name": "qwen3.7-max",
            "reasoning": false,
            "input": ["text"],
            "contextWindow": 1000000,
            "maxTokens": 65536,
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "compat": { "thinkingFormat": "openai" }
          },
          {
            "id": "qwen3.7-plus",
            "name": "qwen3.7-plus",
            "reasoning": false,
            "input": ["text", "image"],
            "contextWindow": 1000000,
            "maxTokens": 65536,
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "compat": { "thinkingFormat": "openai" }
          },
          {
            "id": "qwen3.6-plus",
            "name": "qwen3.6-plus",
            "reasoning": false,
            "input": ["text", "image"],
            "contextWindow": 1000000,
            "maxTokens": 65536,
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "compat": { "thinkingFormat": "openai" }
          },
          {
            "id": "qwen3.6-flash",
            "name": "qwen3.6-flash",
            "reasoning": false,
            "input": ["text", "image"],
            "contextWindow": 1000000,
            "maxTokens": 32768,
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "compat": { "thinkingFormat": "openai" }
          },
          {
            "id": "deepseek-v4-pro",
            "name": "deepseek-v4-pro",
            "reasoning": false,
            "input": ["text"],
            "contextWindow": 163840,
            "maxTokens": 32768,
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }
          },
          {
            "id": "deepseek-v4-flash",
            "name": "deepseek-v4-flash",
            "reasoning": false,
            "input": ["text"],
            "contextWindow": 163840,
            "maxTokens": 16384,
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }
          },
          {
            "id": "deepseek-v3.2",
            "name": "deepseek-v3.2",
            "reasoning": false,
            "input": ["text"],
            "contextWindow": 163840,
            "maxTokens": 16384,
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "compat": { "thinkingFormat": "openai" }
          },
          {
            "id": "kimi-k2.6",
            "name": "kimi-k2.6",
            "reasoning": false,
            "input": ["text", "image"],
            "contextWindow": 262144,
            "maxTokens": 32768,
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "compat": { "thinkingFormat": "openai" }
          },
          {
            "id": "kimi-k2.5",
            "name": "kimi-k2.5",
            "reasoning": false,
            "input": ["text", "image"],
            "contextWindow": 262144,
            "maxTokens": 16384,
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "compat": { "thinkingFormat": "openai" }
          },
          {
            "id": "glm-5.1",
            "name": "glm-5.1",
            "reasoning": false,
            "input": ["text"],
            "contextWindow": 202752,
            "maxTokens": 16384,
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "compat": { "thinkingFormat": "openai" }
          },
          {
            "id": "glm-5",
            "name": "glm-5",
            "reasoning": false,
            "input": ["text"],
            "contextWindow": 202752,
            "maxTokens": 16384,
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "compat": { "thinkingFormat": "openai" }
          },
          {
            "id": "MiniMax-M2.5",
            "name": "MiniMax-M2.5",
            "reasoning": false,
            "input": ["text"],
            "contextWindow": 204800,
            "maxTokens": 131072,
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }
          }
        ]
      }
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "bailian-token-plan/qwen3.7-plus"
      },
      "models": {
        "bailian-token-plan/qwen3.7-max": {},
        "bailian-token-plan/qwen3.7-plus": {},
        "bailian-token-plan/qwen3.6-plus": {},
        "bailian-token-plan/qwen3.6-flash": {},
        "bailian-token-plan/deepseek-v4-pro": {},
        "bailian-token-plan/deepseek-v4-flash": {},
        "bailian-token-plan/deepseek-v3.2": {},
        "bailian-token-plan/kimi-k2.6": {},
        "bailian-token-plan/kimi-k2.5": {},
        "bailian-token-plan/glm-5.1": {},
        "bailian-token-plan/glm-5": {},
        "bailian-token-plan/MiniMax-M2.5": {}
      }
    }
  },
  "gateway": {
    "mode": "local",
    "auth": { "mode": "none" }
  }
}

除了通过终端或文件修改配置,也可以通过Web UI 方式来修改配置。

在终端运行以下命令启动 Web UI:

openclaw dashboard

在浏览器打开的页面中,单击左侧菜单 设置,将编辑器模式从 Form 切换为 Raw,然后复制上述内容到配置文件。
最后运行以下命令重启网关,使配置生效。

openclaw gateway restart

安装完成后的关键目录:

~/.openclaw/              # 配置与数据
~/.local/bin/openclaw     # CLI 入口

openclaw 版本更新较快。有诸多踩坑问题请前往github或各种技术论坛交流

更多食用方式可以参考我以前的文章(由于文章时间很早,openclaw版本和现在不一致,请只做参考!!!



关键问题:PATH 对齐

Hermes 安装过程中,会把 npm 全局 Prefix 改到:

~/.hermes/node

随后,OpenClaw 安装脚本会执行:

npm install -g pnpm@10

问题在于:pnpm 可能已经安装成功,但 command -v pnpm 仍然找不到命令。原因并不是安装失败,而是对应的 bin 目录没有加入当前 Shell 的 PATH

如果遇到:

pnpm installation failed

不要反复重装,先执行:

export PATH="$HOME/.hermes/node/bin:$HOME/.local/bin:$PATH"
corepack enable
corepack prepare pnpm@10 --activate
npm install -g pnpm@10

然后重新运行 OpenClaw 安装脚本。

这不是你的操作问题,而是两个安装器之间的 PATH 默契没有对齐。


启动与验证

刷新 Shell 环境

安装脚本会向 PATH 中添加新目录,但当前终端不一定已经加载最新配置。

执行:

source ~/.bashrc   # 如果使用 zsh,请改为 source ~/.zshrc
hermes --version
openclaw --version

两个命令都能正常输出版本号,才算安装完成。

启动服务

建议先启动 OpenClaw Gateway:

nohup openclaw gateway --verbose > ~/.openclaw/gateway.log 2>&1 &

打开浏览器控制台:

openclaw dashboard    # 默认地址:http://localhost:18789

启动 Hermes:

hermes

也可以只执行一次命令,完成后立即退出:

hermes -z "列出当前目录下所有 .py 文件"

健康检查

安装完成后,建议跑一遍完整检查:

# Hermes 是否真的连上模型
hermes config get model.default
hermes -z "回复 OK 就行"

# OpenClaw Gateway 是否正常运行
openclaw gateway status
openclaw config get gateway.mode
curl -s http://localhost:18789/health

# 从进程和端口层面再次确认
ps aux | grep -E 'hermes|openclaw'
ss -tlnp | grep 18789

我习惯在安装后执行一遍这套检查,而不是只看日志末尾的:

Installation Complete!

因为有时候,这句话只能说明“脚本执行结束了”,并不代表 UI 构建成功,也不代表 Gateway 真的可以启动。


踩坑博物馆

这部分是整篇文章里最值得保留的内容:下面的问题,都是我实际安装过程中踩出来的。

坑 1:Hermes 报错 404 model is not found

原因: model.default 没有设置,或者模型 ID 与 Provider 对不上。

解决方法:

hermes config set model.default custom/qwen-plus

坑 2:OpenClaw 提示 Control UI assets not found

情况 A:从源码安装

进入源码目录后补充构建:

pnpm install
pnpm ui:build
pnpm build

情况 B:通过官方脚本或 npm 全局安装

优先升级或重新安装 OpenClaw。若问题出现在刚发布的新版本中,可以查看官方 Issue,并临时回退到已验证可用的版本。

坑 3:Gateway start blocked — set gateway.mode=local

直接执行:

openclaw config set gateway.mode local

坑 4:hermes: command not found

原因: 当前 Shell 没有刷新 PATH

临时生效:

export PATH="$HOME/.local/bin:$HOME/.hermes/node/bin:$PATH"

永久写入:

echo 'export PATH="$HOME/.local/bin:$HOME/.hermes/node/bin:$PATH"' >> ~/.bashrc

坑 5:GitHub 克隆超时(国内网络环境,可选)

可以为 Git 配置代理地址:

git config --global url."https://ghproxy.cn/https://github.com".insteadOf "https://github.com"

若要恢复配置:

# 恢复默认 GitHub 地址
git config --global --unset-all \
  url."https://ghproxy.cn/https://github.com".insteadOf

坑 6:1 GB VPS 编译 OpenClaw 时 OOM

如果 VPS 内存不足,可以增加 Swap:

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Docker用户(可选)

原生安装的开发体验更好。如果需要隔离环境,或者准备部署到生产环境,也可以使用 Docker。

Hermes

mkdir -p ~/.hermes

docker run -it --rm \
  -v ~/.hermes:/opt/data \
  nousresearch/hermes-agent setup

docker run -d \
  --name hermes \
  --restart unless-stopped \
  -v ~/.hermes:/opt/data \
  -p 8642:8642 \
  nousresearch/hermes-agent gateway run

将 API 服务暴露到外部网络时,需要额外考虑鉴权和安全配置。

OpenClaw

OpenClaw 的镜像与 Compose 方案更新较快,建议直接以 官方文档 为准。


卸载与清理

如果体验后觉得不合适,或者准备彻底重装,可以执行:

# Hermes
hermes uninstall

# OpenClaw:清理服务、状态与工作区
openclaw uninstall --all

# 如果 OpenClaw 是通过 npm 全局安装,可继续移除 CLI
npm uninstall -g openclaw

官方卸载命令不可用,或者需要彻底清理残留文件时可以使用下述命令

# 停止 OpenClaw
openclaw gateway stop 2>/dev/null || pkill -f "openclaw gateway"

# 删除 Hermes
rm -rf ~/.hermes ~/.local/bin/hermes

# 删除 OpenClaw
rm -rf ~/.openclaw ~/.local/bin/openclaw

一键抄作业

# 安装 Hermes
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash

# 安装 OpenClaw
curl -fsSL https://openclaw.ai/install.sh | bash
openclaw onboard --install-daemon

# 启动 OpenClaw Gateway
openclaw gateway --verbose &

# 启动 Hermes
hermes

# 打开控制台
openclaw dashboard

# 验证
hermes -z "ping"
openclaw gateway status

总结

Hermes 和 OpenClaw 安装在同一台 Linux 机器上,技术上没有明显障碍:配置目录分开,默认端口不冲突,进程也各自独立运行。

真正花时间的地方,主要集中在两类问题:

  1. LLM 配置是否完全切换成功。
  2. 两个安装器之间的 PATH、npm Prefix 和 pnpm 是否对齐。

我的建议是:先安装 Hermes,再安装 OpenClaw。

如果遇到 pnpm 找不到命令,按照前面的步骤补齐 PATH 即可。安装完成后,务必跑一遍健康检查,不要只相信日志末尾那句 Installation Complete!


TIPS

如果不想分别安装和排查问题,可以尝试 Agent Pack。这是 OpenSenseNova 提供的统一安装器,用于把 Hermes 和 OpenClaw 串到同一条安装链路中。

它的主要特点包括:

  • 一次交互,双端安装: 选择 Both 后,可以同时安装 Hermes 和 OpenClaw。
  • LLM 配置前置: 安装开始前填写 Provider 与 API Key,安装结束后即可使用。
  • 自动处理常见共存问题: 包括 pnpmPATH 冲突、gateway.mode 默认值,以及 UI 构建失败后的重试。
  • 国内网络环境适配: 自动探测 CN 环境,必要时切换 apt、npm 和 GitHub 镜像。
  • 支持非交互模式: 适合 VPS 或脚本化部署,不需要一直盯着终端。

对于第一次上手,或者不想逐项排查安装器兼容问题的用户,这种统一安装方式会更省心。

具体用法请查看 Agent Pack 仓库

Agent Pack 是第三方安装器,并非 Hermes 或 OpenClaw 的官方项目。用于生产环境前,建议先审阅脚本内容


接入 Telegram、钉钉、飞书与企业微信

Hermes 和 OpenClaw 都可以接入即时通信平台。不同平台的机器人创建方式、鉴权参数和事件订阅机制差异较大,建议直接以官方文档或对应 GitHub 文档为准:

平台平台官方接入文档Hermes 接入文档OpenClaw 接入文档
TelegramTelegram Bot 官方教程:From BotFather to “Hello World”Hermes 官方 GitHub 文档:TelegramOpenClaw 官方文档:Telegram
钉钉钉钉开放平台:创建自定义机器人Hermes 官方 GitHub 文档:DingTalkGitHub:BytePioneer-AI/openclaw-china
飞书飞书开放平台:自定义机器人使用指南Hermes 官方 GitHub 文档:Feishu / LarkOpenClaw 官方文档:Feishu
企业微信企业微信开发者中心:群机器人配置说明Hermes 官方 GitHub 文档:WeCom Bot
Hermes 官方 GitHub 文档:WeCom Callback(自建应用)
GitHub:BytePioneer-AI/openclaw-china
Last modification:June 10, 2026
如果觉得我的文章对你有用,您可以给博主买一杯果汁,谢谢!