Hermes Agent 与 OpenClaw:VPS 部署怎么选
对比 Hermes Agent v2026.9.7 与 OpenClaw v2026.9.4 在 VPS 上的端口、沙箱、记忆、技能和 Claude 身份验证,帮您选择持久化自托管代理。
简短结论
Hermes Agent 和 OpenClaw 都能在 VPS 上运行持久化代理,并让您通过聊天应用访问它。若代理的主要任务是重复性工作,包括定时任务和只需学习一次即可重复执行的流程,请选择 Hermes Agent。若主要需求是覆盖更多渠道,请选择 OpenClaw:它提供一个可在 WhatsApp、Telegram、Discord、Slack 及其他二十多个渠道上响应的助手,还可通过公共注册表中的软件包扩展。两者都支持 CLI(命令行界面)和聊天操作,因此选择取决于每个项目优先支持哪一侧,以及它们各自在服务器上开放哪些功能。
本文基于 Hermes Agent 标签 v2026.9.7(2026 年 9 月 7 日发布,对应 v0.21.1)和 OpenClaw 标签 v2026.9.4(2026 年 9 月 11 日)编写,并于 2026 年 10 月 10 日根据两个项目的当前文档重新核对。OpenClaw 的固定版本选项于 2026 年 10 月 17 日再次核对,Ollama 上下文说明于 2026 年 10 月 20 日再次核对,记忆部分和 Claude 订阅部分于 2026 年 10 月 25 日再次核对。版本号、Mem0 集成和 Skill Workshop 于 2026 年 10 月 27 日再次核对。两个项目都经常发布新版本,因此如有内容发生变化,请查阅文档。OpenClaw 的最新稳定版本现为 v2026.10.9(2026 年 10 月 29 日)。Hermes 于 2026 年 10 月 8 日通过 v0.21.6 从日期标签改为版本标签,其最新版本 v0.22.5 于 2026 年 10 月 23 日发布。下文的所有结论均来自各项目自己的文档,或来自使用相关内容时注明的两个外部来源。
各自的用途:以代理为中心,还是以网关为中心
Hostinger 的对比将 Hermes Agent 称为“以代理为中心”,将 OpenClaw 称为“以网关为中心”。这种划分是合理的,也是理解这两个项目最快的方法。
Nous Research 开发的 Hermes Agent 围绕一个 worker 构建。您向它分配任务。它在终端后端中执行任务,并将学到的内容记录为技能。它还会保存少量持久事实。聊天只是提交任务的几种方式之一。CLI、cron 作业、消息网关和桌面应用都会将任务交给同一个代理,而网关是通过 hermes gateway setup 启用的功能,不是安装时的核心组件。
OpenClaw 围绕其 Gateway 构建。Gateway 是一个长期运行的进程,其文档称它是会话、路由和频道连接的唯一事实来源。模型和代理 harness 都是附加到它的插件,README 将 Claude、Codex 和本地模型列为可替换的 harness。触达能力才是产品本身。代理只是 Gateway 托管的一个组件。
两个项目都借鉴了对方的优点。现在,双方都会要求未知聊天发送者先完成代码配对,才能与机器人通信;Hermes 默认禁用电子邮件配对。双方现在也都允许代理自行编写技能:Hermes 通过其 skill_manage 工具实现,OpenClaw 则通过其 Skill Workshop 实现。核心区别仍然成立:Hermes 是带有聊天前端的 worker,而 OpenClaw 是后端托管 worker 的聊天中心。
安装路径与 VPS 资源占用
OpenClaw 文档要求 VPS 至少有 1 个 vCPU 和 1 GB RAM;Hermes 的 Docker 指南建议至少有 1 个核心和 1 GB RAM。与它们调用的模型相比,这两个代理本身占用很少,服务器的实际负载取决于您让代理执行的任务。编程代理 VPS 需要多少 RAM 和 CPU 根据工作负载而不是代理本身估算资源。
有一个文档中的数值值得注意。Hermes 使用 Docker 终端后端时,其文档默认将沙箱容器的限制设为 container_cpu: 1 和 container_memory: 5120(单位为 MB)。这些是容器限制,不是实际需求。只有 Hermes 的 cgroup 探测成功时,才会应用 CPU、内存和 PID 限制;否则容器不受这些限制约束。
Hermes 通过一个脚本安装。当前安装使用 Python 3.14。安装程序通过自带的、固定版本且经过校验和验证的 uv 获取 Python,而不是使用系统版本。在 Linux 上,脚本首先需要 git、curl、tar 和 SHA-256 工具(sha256sum,来自 coreutils)。在使用 glibc 的系统上,安装程序配置的 Node.js 需要 libatomic;如果该软件包缺失,安装程序会添加它。
sudo apt update && sudo apt install -y git curl tar coreutils
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
source ~/.bashrc
hermes doctor代码会以可编辑的 git checkout 形式写入 ~/.hermes/hermes-agent/,命令位于 ~/.local/bin/hermes。所有数据都存储在 ~/.hermes/ 下。安装程序从不要求 root:只有在非 root 用户缺少 libatomic 时,才会调用 sudo。文档要求使用代理实际运行时的用户执行安装,因为该用户拥有 checkout、配置和启动器。文档页面没有说明如何固定版本,但安装程序脚本接受 --commit SHA。该参数会在 clone 或更新后将 checkout 固定到特定提交;如果该提交不在要安装的分支上,脚本会停止。获取标签对应的提交,将其导出为 HERMES_SHA,然后传入:
git ls-remote --tags https://github.com/NousResearch/hermes-agent v2026.9.7
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash -s -- --commit "$HERMES_SHA"如果 ls-remote 输出两行,请使用以 ^{} 结尾的那一行。这就是带注释标签指向的提交,而 --commit 需要的是提交 SHA,而不是标签对象。安装后,hermes model 选择提供商和模型,hermes tools 启用工具,hermes setup 运行完整向导,hermes doctor 检查结果。
OpenClaw 也可以通过一个脚本或 npm 安装,并且需要 Node。当前文档接受 24 系列中的 Node 24.16.0 或更高版本,或 26 系列中的 Node 26.1.0 或更高版本,前提是其链接的 SQLite 库通过运行时检查。Node 24.22.1 和 26.12.1 仍是安全建议版本;历史记录显示,在版本 2026.10.6 提高兼容性最低版本后,main 分支恢复了之前的兼容性下限。文档说明,Linux 安装程序在系统缺少 Node 时会获取 Node 24 LTS(长期支持版)。托管安装程序和 npm 都接受精确版本,这可用于固定版本:安装程序的 --version 标志接受 npm 版本、dist-tag 或软件包规格,默认值为 latest;Updating 页面也给出了 pnpm 和 Bun 的相同精确版本安装方式。对于 npm 12 或 11.16 及更高版本,文档提供 --allow-scripts=openclaw 标志;在较旧的 npm 上,请运行不带该标志的相同命令。
curl -fsSL https://openclaw.ai/install.sh | bash
# or, pinned through the installer:
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --version 2026.9.4
# or, pinned through npm:
npm install -g openclaw@2026.9.4 --allow-scripts=openclaw
openclaw onboard --install-daemonopenclaw onboard --install-daemon 运行设置向导,并在 Linux 上将 Gateway 安装为 systemd 用户服务。配置位于 ~/.openclaw/openclaw.json,该文件采用 JSON5 格式,因此允许注释和尾随逗号。OpenClaw 还提供 Extended Stable 分支,适合希望每月变更更少的用户。截至 2026 年 10 月 30 日,当前 Extended Stable 版本为 2026.9.36,于 2026 年 10 月 29 日作为独立于主稳定分支的版本发布;主稳定分支中的 2026.10.9 标记为 Latest。其发行说明称,这是一个仅包含 gateway 的版本,也是项目当前对应的 LTS,并将其描述为基于 2026 年 9 月底的 OpenClaw,加入关键安全更新、可靠性和性能修复,以及新模型支持等功能。文档介绍了四个渠道:stable、extended-stable、beta 和 dev,以及用于在这些渠道之间切换的 openclaw update --channel <name>。
Hermes Agent VPS 指南 和 OpenClaw 隔离指南 包含各自的完整安装步骤,以及每一步应通过的检查。
网络上各项服务开放的内容
本节决定防火墙规则,因此需要最谨慎地处理。
OpenClaw 会按设计开放端口。 Gateway 默认监听 TCP 18789,端口按以下顺序选择:--port,然后是 OPENCLAW_GATEWAY_PORT,再然后是配置中的 gateway.port,最后使用 18789。常规主机上的 gateway.bind 默认为 loopback;在检测到的容器中,如果未设置,则默认为 auto,解析为 0.0.0.0;而 Tailscale Serve/Funnel 会强制使用回环地址。其他值包括 lan(表示 0.0.0.0)、tailnet 和 custom。Control UI 使用同一个端口,位于根路径:http://127.0.0.1:18789/。只有在通过反向代理路径提供 UI 时,gateway.controlUi.basePath 才会添加类似 /openclaw 的前缀。文档明确指出了风险:“非回环绑定需要 Gateway 身份验证。实际上,这意味着共享令牌/密码,或身份感知型反向代理。”gateway.auth.mode 接受 none、token、password 或 trusted-proxy,而引导向导默认会生成令牌。将 bind 设置为 loopback,通过 SSH 隧道访问 UI,并运行 openclaw security audit,以报告与这些默认值的任何偏差。
Hermes 的核心 Gateway 不开放端口。 Gateway 以客户端身份向各个聊天平台发起出站连接。CLI 向模型端点和终端后端发起出站连接。Docker 后端连接本地 Docker socket。SSH 后端通过 22 端口向另一台主机发起出站连接。Hermes 文档列出的端口属于可选组件,包括默认关闭的 webhook 适配器(WEBHOOK_PORT 8644)、默认使用 8443 的 Telegram webhook 模式、默认使用 8090 的 WhatsApp Business Cloud API webhook、默认使用 8642 的 API server,以及在主机上使用 3000 端口的 WhatsApp bridge。WhatsApp 页面没有说明 bridge 绑定哪个地址,因此应在防火墙中关闭该端口。因此,Hermes 主机可以将入站策略保持为“仅 SSH”,无需更改代理的任何设置;只有在启用需要入站访问的适配器或服务器时,才需要例外处理。
两个项目的聊天平台通常都不需要开放入站端口。 两者的主要通道都使用长轮询或出站 WebSocket。Hermes 的 Slack 集成使用 Socket Mode,其文档说明实例“无需公开访问”。Hermes 的 WhatsApp 集成运行一个模拟 WhatsApp Web 会话的 Node.js bridge,通过 QR 码配对,并要求主机安装 Node.js v18 或更高版本。OpenClaw 的 Telegram 通道说明:“长轮询是默认传输方式。Webhook 模式是可选的。”其 WhatsApp 通道仅支持 QR 码,并通过 WhatsApp Web 运行,由 Gateway 持有 socket。例外是涉及公网 URL 的路径:OpenClaw 的 Telegram webhook 模式(webhookUrl、webhookSecret、webhookPath)、Hermes 的 Telegram webhook 模式(TELEGRAM_WEBHOOK_URL、TELEGRAM_WEBHOOK_SECRET)、Hermes 的通用 webhook 适配器,以及 Hermes 单独提供的 WhatsApp Business Cloud API 选项;其文档说明该选项需要 Meta Business 帐户和公网 webhook URL。除非确有需要,否则不要启用这些功能。
两者默认都会拒绝未知的聊天发送者。 Hermes 按以下顺序检查:按平台设置的允许所有标志、已批准的配对列表、按平台设置的允许列表(例如 TELEGRAM_ALLOWED_USERS)、全局 GATEWAY_ALLOWED_USERS、全局允许所有标志,最后执行拒绝。在聊天式 DM 平台上,未知发送者会收到一条包含 8 个字符配对码的 DM(直接消息),然后使用 hermes pairing approve <platform> <code> 批准。除非明确启用电子邮件配对,否则会忽略未知的电子邮件发送者。OpenClaw 的 dmPolicy 在 Telegram 和 WhatsApp 上默认设置为 pairing,并使用 openclaw pairing approve <channel> <code> 进行批准。切勿在能够运行 shell 命令的机器人上设置 GATEWAY_ALLOW_ALL_USERS=true 或 dmPolicy: open。
Hermes 如何应用 OpenClaw 的隔离方案
OpenClaw 隔离指南中的隔离方案归结为:使用专用的非特权用户,将 Gateway 绑定到 loopback 并置于 VPS 防火墙之后,使用 Docker sandbox 执行工具,并将 agents.defaults.sandbox.mode 设置为 all。OpenClaw 自己的 sandbox 页面明确说明了边界:Gateway 进程本身始终在主机上运行,sandbox 只负责移动工具执行位置。tools.elevated 是一个可绕过隔离、在其外部运行的逃生通道。
用户和防火墙配置可以直接应用到 Hermes。专用用户提供的隔离边界相同,而 Hermes 的生产检查清单用 6 个词明确说明了这一点:“Never run the gateway as root”。防火墙边界更容易实现,因为核心 Gateway 没有需要绑定的端口,token 也没有需要保护的对象。
sandbox 在 ~/.hermes/config.yaml 中对应 terminal.backend。Hermes 记录了 7 个后端:local、docker、ssh、singularity、modal、daytona 和 vercel_sandbox。Singularity 现在需要可选插件,可通过 hermes plugins install singularity 安装。使用 docker 时,当前稳定版 v0.22.5 会使用 --cap-drop ALL 运行容器,然后重新添加 DAC_OVERRIDE、CHOWN 和 FOWNER,并在挂载的 nosuid 上使用 /tmp 和 /var/tmp,挂载位置为 tmpfs。以 root 身份启动的容器还会获得 SETUID 和 SETGID,以便其 entrypoint 放弃特权;当 Hermes 传入非 root 的 --user 时,则不会添加这些 capability。除非启用 snap 兼容模式,否则它会设置 --security-opt no-new-privileges;只有在所需的 cgroup 控制器可用且探测成功时,才会设置 --pids-limit 2048。源代码说明,旧的 256 限制在正常使用中会达到上限。
有一个差异很重要。Hermes 文档称,在 docker、singularity、modal、daytona 和 vercel_sandbox 后端上会跳过危险命令检查,“因为容器本身就是安全边界”。因此,在 Hermes 中,每个后端只提供其中一种隔离边界。在 local 后端上,你会获得审批门禁,但没有容器。在 docker 上,你会获得容器,但没有审批门禁。
Hermes 文档还提出了自己的部署方式:“在单独的机器或 VM(虚拟机)上运行 Gateway”,并使用 terminal.backend: ssh。Gateway 主机保存聊天 token 和模型密钥,但从不运行命令。Worker 主机运行命令,不保存任何值得窃取的内容。在这种部署方式中,用于代码代理的临时虚拟机是自然的 Worker,因为应当重建它,而不是清理它。
记忆:两个小型固定文件,或一个实时工作区
在这项比较中,两者的记忆模型差异最大,而 mem0 对二者的比较最清楚地说明了这种差异。其总结是:Hermes“针对缓存稳定的长会话进行优化”,而“OpenClaw 针对即时可见性进行优化”。截至 2026 年 10 月 25 日查阅的 OpenClaw 自有文档,只部分支持后半句,下面的 OpenClaw 段落会对此作出说明。
此图表背后的数据
[
{
"label": "Hermes MEMORY.md (hard cap)",
"char_limit": "2,200"
},
{
"label": "Hermes USER.md (hard cap)",
"char_limit": "1,375"
},
{
"label": "OpenClaw MEMORY.md (soft target)",
"char_limit": "20,000"
}
]Hermes 的数据来自其记忆文档。OpenClaw 的数据是其配置参考中的默认单文件引导预算 agents.defaults.bootstrapMaxChars,与 mem0 报告的软目标一致。
Hermes 在 ~/.hermes/memories/ 下保存两个文件。MEMORY.md 保存代理自己的笔记,上限为 2,200 个字符。USER.md 保存关于您的事实,上限为 1,375 个字符。文档说明,这些上限是严格的:超过上限写入时会返回错误,而不是静默截断。代理通过 3 个操作编辑这些文件:add、patch 和 remove。patch 替换条目中的一个范围,remove 删除一个条目;二者都通过唯一子字符串查找目标。文档说明,现在已经没有 replace 操作,而调用 replace 会返回错误,并指向 patch。两个文件会在会话开始时加载一次,作为系统提示词中的固定区块,从而保持提示词缓存前缀稳定。这种设计的代价是,代理在会话中途写入的记忆会立即保存到磁盘,但要到下一个会话才会出现在提示词中。对于更早的事实,session_search 会在 ~/.hermes/state.db 中对所有历史对话运行 FTS5(SQLite 的全文搜索)。
OpenClaw 将记忆视为工作区。~/.openclaw/workspace/MEMORY.md 是长期记忆文件,文档称该文件“在会话开始时加载”。默认情况下,如果文件超过每文件 20,000 个字符的引导预算,OpenClaw 会完整保留磁盘上的文件,并截断注入上下文的副本。每日笔记保存在 memory/YYYY-MM-DD.md 中。它们不会在每轮注入提示词;在不带参数调用 /new 或 /reset 时,今天和昨天的笔记会自动加载。配置 embedding provider 后,memory_search 工具会对全部内容执行混合检索,即向量相似度加关键词匹配。mem0 的说明称,MEMORY.md 会在每轮重新注入;OpenClaw 的文档对这一点的描述比其记忆页面所暗示的更接近这一说法。代理运行时页面说明,新会话的第一轮会注入引导文件;但配置参考将 agents.defaults.contextInjection 默认设置为 always,并提供 continuation-skip 模式,可在后续轮次跳过引导文件重新注入;用户模型页面则称,USER.md 的编辑“会在长期会话的后续轮次中被获取”。文档没有对 MEMORY.md 作出同样明确的承诺,因此在依赖会话中途写入该文件并在下一轮进入提示词之前,应先进行测试。
哪种方案更好取决于具体工作。每晚运行同一 cron 任务的 Hermes 代理需要稳定的提示词,以及一组可以信任的少量事实。每天处理 100 个简短对话的 OpenClaw 助手需要较大的工作区,以及可供搜索的每日笔记。Hermes 将 Mem0 列为外部记忆 provider 插件之一,您可以使用 hermes plugins install mem0 添加该插件,并通过 hermes memory setup 配置;mem0 则发布了用于 OpenClaw 的 @mem0/openclaw-mem0 插件。截至 2026 年 10 月 27 日,这两种集成并不相同。Hermes 的插件提供自托管服务器模式,可通过 URL 和 API key 指向您的 Mem0 服务器,其目录条目称该模式支持“服务器端 LLM 事实提取”。mem0 的 OpenClaw 页面提供开源模式,可在插件内部配置自己的 LLM、embedder 和 vector store,在本地保存向量,并且没有提及任何 Mem0 服务器;该页面还称“代理会从对话中提取持久事实”。因此,自托管的 Mem0 记忆服务器可以直接接入 Hermes,而 OpenClaw 的自托管方式则在插件中本地运行。无论采用哪种方式,长期事实都会进入受限提示词文件之外的存储。代理写入的任何文件都会成为其之后信任的输入,因此代理记忆如何被投毒适用于这两个项目,也适用于下一节中的技能。
技能:自行编写的流程,或公共注册表
Hermes 会自行编写技能。技能是 ~/.hermes/skills/ 下的一个目录,其中包含 SKILL.md,还可以包含 scripts/、references/、templates/ 和 examples/ 文件夹,格式遵循 agentskills.io。该代理提供 skill_manage 工具,其系统提示词列出了编写技能的 3 个触发条件:完成了值得重复使用的多步骤流程、在出错后找到了解决方法,或采纳了您的修正。文档将目标概括为“经验,而不是日志”。如果您不希望代理未经审核就修改自身的指令集,请设置 skills.write_approval: true;新技能随后会暂存在 ~/.hermes/pending/skills/ 下,直到您批准。Hermes 还可以通过 hermes skills install <identifier> 从外部安装技能:从 anthropics/skills 等 GitHub 仓库、从 skills.sh、从指向 SKILL.md 的直接 URL,或直接从 ClawHub 安装。文档说明,每次从 hub 安装时,都会扫描数据外传、提示注入和破坏性命令。对于不构成危险的社区发现,可以使用 --force 覆盖;但“危险扫描结论”即使使用 --force 也会阻止安装。
OpenClaw 从其公共注册表 ClawHub 获取技能和插件。openclaw skills search "calendar" 用于查找技能,openclaw skills install @openclaw/demo 用于安装技能,openclaw skills update --all 用于保持技能更新,代码插件则会经过 openclaw plugins install clawhub:<package>。技能从一组按优先级排序的目录加载:<workspace>/skills 的优先级高于 <workspace>/.agents/skills 和 ~/.agents/skills,其次是托管目录 <state-dir>/skills,然后是代理通过学习得到的工作坊技能,最后是内置技能集。技能的 SKILL.md 可以声明 metadata.openclaw.requires.bins 和 requires.env。如果缺少对应的二进制文件或变量,OpenClaw 会在加载时过滤掉该技能;这比技能只能部分运行后才失败更容易处理。代理也会自行编写技能。Skill Workshop 保存这些学习得到的技能,其文档说明:“每次更改都会立即生效,并先保存上一版本,同时可以撤销。”这里的“立即”指写入磁盘:同一页面还说明:“更改后的技能会在新会话中加载。正在运行的会话会继续使用启动时加载的技能快照。”使用默认的 skills.workshop.autonomous.mode: auto 时,后台审核会自行创建和修改技能;您可以在聊天中回复“undo”,通过 Control UI,或使用 openclaw skills workshop restore <name> 撤销更改。将模式设置为 propose 后,后台审核会改为保存草稿;您可以在 Control UI 中应用或丢弃草稿,也可以使用 /learn drafts 进行审核。将模式设置为 off 会停止后台审核,但您仍可在提出请求时让代理编写技能。
不同审核模型的区别在于检查执行的位置。ClawHub 文档说明,它“会对已发布的技能和插件发行版执行自动检查”;被扫描暂存或被阻止的发行版可能会从公共目录中消失;登录用户可以举报软件包,版主可以将其隐藏;发布内容还需要使用注册时间足够长、能够通过上传门槛的 GitHub 帐户。这类审核发生在注册表中。Hermes 在您的计算机上安装时执行扫描,写入审批门槛则适用于其代理自行编写的技能。OpenClaw 学习得到的技能在默认的 auto 模式下没有审批步骤;扫描器会阻止包括明文密钥在内的严重发现,撤销历史记录则可以逆转已接受的更改;propose 模式会将后台更改保留为草稿,直到您应用这些更改。OpenClaw 的技能页面最后仍以一句同时适用于两者的话作结:“将第三方技能视为不受信任的代码。启用前先阅读。”
模型和身份验证选项,以及 Claude 订阅问题
两个项目都支持使用 API 密钥或本地模型,并且都通过 OpenRouter 路由。差异在于订阅接入方式,这正是大多数搜索此主题的人想了解的内容。
API 密钥。 Hermes 从 ~/.hermes/.env 读取 ANTHROPIC_API_KEY、OPENROUTER_API_KEY、OPENAI_API_KEY 以及其他许多配置项。hermes model 会交互式选择提供商和模型,hermes config get model.default 会显示选择结果。Nous Portal 是独立的提供商:hermes setup --portal 是一次 OAuth 登录,同时提供模型提供商和托管工具网关。OpenClaw 通过 openclaw onboard --anthropic-api-key "$ANTHROPIC_API_KEY" 获取 ANTHROPIC_API_KEY,openclaw models list --provider anthropic 会显示它可以访问的内容。其文档说明,新的 API 和 Claude CLI 配置默认使用 Opus 5.5(anthropic/claude-opus-5-5),同时列出 anthropic/claude-sonnet-5-5 和 anthropic/claude-fable-5-1,需要显式选择。
通过 Ollama 使用本地模型。 两个项目连接 Ollama 的方式不同,混淆两者会导致实际故障。Hermes 使用 OpenAI 兼容端点:在 config.yaml 中设置 model.provider: custom 和 model.base_url: http://localhost:11434/v1,或在 hermes model 中选择“Custom endpoint”。其文档还说明,Hermes“要求代理使用工具时至少具有 64,000 个 token 的上下文”。Ollama 的默认上下文长度取决于 VRAM:低于 24 GiB 时为 4k,24 至 48 GiB 时为 32k,48 GiB 或更高时为 256k。低于 48 GiB 时,该默认值低于 Hermes 的最低要求;Hermes 文档还指出,无法通过 OpenAI 兼容 API 设置上下文长度,因此应使用 OLLAMA_CONTEXT_LENGTH=64000 ollama serve 启动 Ollama。OpenClaw 则相反。其 Ollama 页面写道:“不要使用 /v1 OpenAI 兼容 URL(http://host:11434/v1)。这会破坏工具调用,模型可能会将原始工具调用 JSON 作为普通文本输出。” OpenClaw 默认通过 Ollama 原生的 /api/chat 通信,指定基础 URL 时不包含路径,例如 http://host:11434,模型名称使用 ollama/<model>。省略基础 URL 时,它会使用本地默认主机。同一个 daemon,URL 却相反。
Claude 订阅。 以下内容严格按照两个项目截至 2026 年 10 月的文档整理,不作额外推断。
Hermes:可通过 hermes model(选择 Anthropic OAuth)或 hermes auth add anthropic --type oauth 使用 OAuth 登录,之后 Hermes 会“以 Claude Code 的身份通过您的 Anthropic 账户路由请求”。文档还补充道:“只有使用 Claude Max 计划并购买了额外使用额度时才能正常工作。”这不会消耗 Max 的基础额度;使用量会计入额外额度。Claude Pro 不能使用此路径,提供商文档建议 Pro 订阅者改用 ANTHROPIC_API_KEY。
Hermes 还记录了另一条独立路径:实验性的 claude-subscription-directsdk 插件。该插件要求 Hermes 0.21.4 或更高版本,因此 v2026.9.7(v0.21.1)无法加载它。其页面要求使用 Claude Pro 或 Max 订阅,以及已安装并登录的官方 Claude Code CLI。该插件不保存自己的凭据,每次交互都通过 claude 发送,因此不需要单独的 API 密钥;每次交互都会消耗订阅包含的 Agent SDK 额度。额外使用额度仅在特殊情况下计费:对于 Pro,Fable 5.1 从第一次请求起就会计入使用额度;页面写道:“如果不希望产生超额费用,请在账户中禁用额外使用。”使用 hermes plugins install claude-subscription-directsdk 安装,运行 claude auth login,然后在 hermes model 中选择“Claude Subscription DirectSDK (Experimental)”。
OpenClaw:文档说明,可以“通过同一主机上已安装的可执行文件复用现有的 Claude Code 登录状态”。在 VPS 上安装 Claude CLI,运行 claude auth login,然后在 openclaw onboard 中选择“Claude CLI”。另一种方式使用 setup token:运行 claude setup-token,然后运行 openclaw models auth login --provider anthropic --method setup-token。同一页面中的两句话明确了限制:“Claude Code 管理其现有登录状态和订阅;OpenClaw 不会持久化或刷新该登录状态”;通过 Agent SDK、claude -p 和第三方应用产生的订阅计划使用量“仍会消耗已登录订阅的使用限额”。
两个项目对这类使用量的计费描述不同,而且两者的页面都不是 Anthropic 官方页面。在使用订阅登录状态构建每晚运行的工作负载前,请阅读 Anthropic 当前关于第三方使用 Claude 计划的条款。两个项目都记录了一条可用路径,并且所有路径都使用 Claude Code 的身份,而不是普通的 claude.ai 登录。Hermes 将其 OAuth 路径限定为带额外额度的 Max,并将实验性插件限定为通过已登录 Claude CLI 使用 Pro 或 Max。OpenClaw 的 Claude CLI 路径要求该登录状态存在于同一主机上,而 setup-token 路径则接受在任意安装了 Claude Code 的机器上生成的令牌。
其他订阅。 Hermes 还记录了通过设备代码 OAuth 使用 ChatGPT 计划访问 OpenAI Codex,以及通过设备流程访问 GitHub Copilot;不过 Codex 页面说明,目前“尚未记录”哪些计划层级符合资格。Copilot 现在要求 hermes plugins install github-copilot;这是 Nous Research labs 的插件,文档将其描述为不受支持。OpenClaw 将 Codex 列为可替换的 harness。如果您已经为其中一项服务付费,那么选择明确记录该服务的项目是合理的。
各项目对安全态势的表述
Hermes 会对命令设置门控。approvals.mode 在 config.yaml 中默认处于 smart 状态:辅助模型会对匹配危险模式的命令进行评级。低风险命令会执行,明确危险的命令会被拒绝。无法确定的命令会询问您。manual 遇到危险匹配时始终询问,off 会禁用门控。扫描器会匹配递归删除、chmod 777 及其相关命令、mkfs、dd if=、重定向到 /etc/ 的操作、systemctl stop、restart、disable 或 mask、DROP TABLE、curl ... | sh,以及 fork bomb。在聊天中,网关会发布命令,并等待 yes、y、approve、ok 或 go;使用 no、n、deny 或 cancel 可拒绝命令。默认超时为 300 秒,超时后命令会被拒绝。--yolo 标志(会话中使用 /yolo,或使用 HERMES_YOLO_MODE=1)会跳过提示。但即使如此,硬性阻止列表仍然生效:rm -rf / 及其明显变体、fork bomb、在已挂载 root 上执行的 mkfs、从 /dev/zero 向磁盘执行的 dd,以及在 rootfs 顶层将不受信任的 URL 通过管道传给 sh。请记住隔离部分的说明:容器后端不会启用此门控。
OpenClaw 会划定边界。其安全页面称,Gateway 是“每个 Gateway 一个受信任的边界”,并且“不是供相互对抗的不受信任用户使用的多租户安全边界”。因此,互不信任的两名用户应使用两个 Gateway 和两套凭据。工具允许和拒绝策略会在沙箱规则之前检查,因此全局拒绝的工具在沙箱内仍然会被拒绝。每个 agent 的访问配置和只读模式可以进一步限制 agent 能够操作的内容。openclaw security audit 会将当前配置与安全默认值进行比较。技能方面包括上文介绍的 ClawHub 审查、Skill Workshop 的扫描器、撤销历史记录和可选的草稿模式,以及启用第三方技能前先阅读相关技能的要求。
两个项目都没有声称提供超出这些内容的保护。Hermes 没有声称其扫描器能够捕获所有风险;当风险较高时,其文档建议使用容器或第二台机器。OpenClaw 没有声称沙箱能够隔离 Gateway 本身,并且在沙箱页面中明确说明了这一点。两者的文档都比较客观。对于需要无人值守长期运行的软件,这是一个积极信号。
决策矩阵
重复性工作流:Hermes。 支持记忆的 Cron 任务;同一任务执行第 3 次后会写入技能;记忆容量不会超限;还可按风险级别选择终端后端。如果代理每周主要执行任务,只偶尔进行对话,那么适合采用这种架构。
消息触达范围:OpenClaw。 一个 Gateway 支持 20 多个频道;Telegram 和 WhatsApp 默认通过私信配对;同一端口提供 Control UI;还提供现成技能和插件的注册表。如果代理每周主要跨应用进行对话,只偶尔执行任务,那么适合采用这种架构。
单台主机:两者都可以,取决于隔离边界。 在一台 VPS 上运行 OpenClaw,并使用专用用户、gateway.bind: loopback、令牌和 sandbox.mode: all。在一台 VPS 上运行 Hermes,并使用 terminal.backend: docker;但要注意,容器内的审批闸门处于关闭状态。也可以使用 terminal.backend: local 和 approvals.mode: manual;但要注意,错误的审批操作会在主机上执行。
两台主机:按 Hermes 自身文档,选择 Hermes。 在一台 VPS 上运行 Gateway,通过 terminal.backend: ssh 连接到工作节点 VPS;在第一台主机上保存聊天令牌和模型密钥,第二台主机上不保存任何重要数据。OpenClaw 也记录了用于远程工具执行的 SSH sandbox 后端;Gateway 进程仍运行在自己的主机上。
仅使用本地模型:仔细检查 URL。 Hermes 要求使用 /v1 和 64k 上下文。OpenClaw 不接受 /v1,而是要求使用原生 API。
已经购买 Claude Max 并有额外额度:Hermes 对这条路径有专门文档,但适用范围较窄。 如果已在同一主机上运行 Claude Code,OpenClaw 记录了如何复用它;在 Hermes 0.21.4 或更高版本中,实验性的 DirectSDK 插件也支持此方式,并且适用于 Pro 或 Max。购买 Claude Pro 时,Hermes 的 OAuth 路径对你不可用,因此应使用其插件或 API key;API key 可用于两个项目。
在这两个项目与其他方案之间无法决定: 自托管代理汇总从相同维度比较了这两个项目、Agent Zero、OpenHands 及其他方案。
FAQ
Hermes Agent 可以使用 Claude Max 订阅吗?
Hermes 文档说明可以,有两种方式。通过 hermes model 或 hermes auth add anthropic --type oauth 进行 Anthropic OAuth 登录后,请求会以 Claude Code 的身份使用您的账户。文档说明,这种方式“只有在您使用 Claude Max 方案并购买了额外用量额度时才有效”,用量会从额外额度中扣除,而不是使用基础额度。实验性的 claude-subscription-directsdk 插件要求 Hermes 0.21.4 或更高版本。它通过已登录的 Claude Code CLI 支持 Pro 或 Max,并从订阅包含的 Agent SDK 额度中扣除每轮用量。截至 2026 年 10 月,如果要将任一方式用于无人值守任务,请先阅读 Anthropic 自己的条款。
OpenClaw 需要在我的 VPS 上开放端口吗?
正常使用不需要。Gateway 监听 TCP 18789,常规主机上的 gateway.bind 默认为 loopback;如果检测到容器,则默认为 auto,解析为 0.0.0.0,除非 Tailscale Serve/Funnel 强制使用回环地址。请显式设置 gateway.bind: loopback,使其只在 127.0.0.1 上响应。通过 SSH 隧道访问 http://127.0.0.1:18789 上的 Control UI。Telegram 使用长轮询,WhatsApp 则通过 Gateway 自行打开的 WhatsApp Web 会话运行,因此这两个渠道都不需要入站端口,除非您选择 Telegram 的可选 webhook 模式。如果将服务绑定到 lan 或 tailnet,文档要求启用 Gateway 身份验证:使用共享令牌或密码,或者在前面部署身份感知代理。
哪一个适合保持无人值守运行,安全性更高?
如果后端使用 local 且关闭审批,两者都不安全。最安全的 Hermes 部署方式是分成两台主机:在一台 VPS 上运行 Gateway,再通过 terminal.backend: ssh 连接到工作节点 VPS。Hermes 自己的文档将此方式推荐为“最高安全性”方案。OpenClaw 最安全的配置是使用专用的非特权用户、gateway.bind: loopback、令牌和 agents.defaults.sandbox.mode: all。对于两者,都应将代理的记忆文件和 skills 目录视为攻击者可以通过聊天消息写入的输入。
可以在同一台 VPS 上运行 Hermes Agent 和 OpenClaw 吗?
可以。两者不共享端口或目录。Hermes 的所有内容都位于 ~/.hermes/ 下,其核心 Gateway 不会打开监听端口;可选的 WhatsApp bridge 使用端口 3000。OpenClaw 的所有内容都位于 ~/.openclaw/ 下,并且在设置 gateway.bind: loopback 后监听 127.0.0.1:18789。为每个代理分配独立的 Linux 用户,避免遭入侵的代理读取另一个代理的聊天令牌。不要让两者使用同一个 Telegram bot token,因为 Telegram 每个 bot 只允许一个长轮询客户端;当另一个客户端开始轮询时,Telegram 会通过 409 Conflict: terminated by other getUpdates request 终止现有请求。
如何将每个项目固定到指定版本?
OpenClaw 的安装程序和 npm 都接受精确版本:curl -fsSL https://openclaw.ai/install.sh | bash -s -- --version 2026.9.4 或 npm install -g openclaw@2026.9.4 --allow-scripts=openclaw;npm view openclaw versions 可以列出已发布的版本。Hermes 的安装程序接受 --commit SHA。请使用 git ls-remote --tags https://github.com/NousResearch/hermes-agent v2026.9.7 获取 v2026.9.7 背后的 commit,再将其作为 bash -s -- --commit <sha> 传入。两个项目每月都会发布多个版本。Hermes 现在按版本号而不是日期标记 release,因此请记录测试时使用的 tag。