Hermes Agent(NousResearch/hermes-agent)内置对 Model Context Protocol(MCP) 的一等支持:在 ~/.hermes/config.yaml 中声明 mcp_servers,Hermes 会拉起基于 stdio 的服务进程(例如 @modelcontextprotocol/server-filesystem),模型侧看到的工具名带 mcp_<server>_<tool> 前缀。搭配 Claude Opus 4.8(2026 年 5 月 28 日发布;API 标识 claude-opus-4-8)与本地代码沙箱,智能体可在限定仓库内读代码、执行 npm test,并在有界重试下尝试受控的自动修复,而无需访问整个用户主目录。
官方资料:Hermes MCP 用户指南、仓库内 MCP 文档,以及 modelcontextprotocol.io。若在 Apple 硬件上对比不同 Agent 框架,请参阅 macOS 与 Mac mini M4 上 Hermes Agent 与 OpenClaw 对比。长会话导致上下文膨胀时,可结合 Mac mini M4 上的 Hermes trajectory_compressor 与记忆压缩 控制 token。若需 7×24 消息网关部署,见 廉价 VPS 上用 Docker 运行 Hermes Agent 与 Telegram 机器人。
说明:MacHTML 提供可选的云 Mac mini 租用用于预演 Agent 配置;本文聚焦 MCP 与沙箱模式,不强制使用 Mac。
Claude Opus 4.8 时代为何用 MCP 搭配 Hermes
在 MCP 普及之前,常见做法是整库粘贴进上下文,或在宿主机上无约束地执行 Shell——二者都难以通过合规审查。MCP 提供契约化的工具面:文件系统服务只暴露你列出的目录;Hermes 将每个工具映射为 mcp_<server>_<tool>,便于在日志中审计每一次调用。Anthropic 于 2026 年 5 月 28 日发布 Claude Opus 4.8 后,更长的推理链与更强的补丁质量使「读取 → 测试 → 修复」循环变得可行——但前提是 Harness 能把影响范围限制在可控半径内。
Hermes 已在单一 ~/.hermes 目录树下统一技能、定时任务与网关。接入 MCP 意味着无需为文档检索或仓库内省再另起一套 Agent 框架。Shell 执行仍由 terminal.backend: docker 承担,结构化读盘与元数据交给 MCP;再配合 tools.include / tools.exclude 做显式白名单,即构成合规的本地代码沙箱:MCP 负责观察,Docker 终端负责变更。
Opus 4.8 特别适合在测试失败时反复迭代。典型循环:经 MCP 列出项目文件、读取失败用例、经终端工具提交补丁、执行 npm test,通过则停止,否则在重试预算内继续。若 MCP 根目录未收窄,模型可能读到 ~/.ssh 或云凭证;将 server-filesystem 根指向 /srv/sandbox/app 时,这些路径不会出现在工具 Schema 中。
MCP 还解耦升级节奏:Nous Research 发布新 Hermes 镜像后,只要 stdio 命令路径仍有效,mcp_servers 块通常可原样保留。在 Telegram 或 CLI 对话中发送 /reload-mcp 即可热加载,无需重启网关——在将配置从 Mac mini 预演环境提升到 VPS 前尤其省事。
也可通过 hermes mcp install 安装经审核的目录条目,或手写 npx 命令。Hermes 支持 hermes mcp serve,让其他 MCP 主机调用 Hermes 工具,同时 Hermes 调用文件系统 MCP——便于 Claude Code 与 Telegram 网关共享同一沙箱策略。
最后,MCP 与社区生态互通:Git、浏览器、数据库等社区服务器以相同方式挂载。代码沙箱先从文件系统范围起步;每增加一个服务器都应经过安全评审。
合规团队常要求可举证的操作记录。MCP 工具调用是带参数的离散 JSON-RPC 操作,参数清晰、便于落库与回放。将此类日志与 Docker 终端审计结合,可在 2026 年的内部 AI 治理评审中形成较有说服力的叙述。
从 IDE 副驾驶迁移的开发者会感受到不同交互:Hermes 以会话与网关为中心,同一沙箱既可从手机 Telegram 驱动(网关跑在 Mac mini),也可在本地 CLI 做功能开发。~/.hermes 携带 MCP 配置;界面可变,安全边界不变。
架构:Hermes、MCP 服务与 Docker 终端
开发者 → Hermes CLI / 网关对话
↳ config.yaml
├─ model: claude-opus-4-8
├─ mcp_servers(stdio)→ @modelcontextprotocol/server-filesystem
├─ tools.include / tools.exclude
└─ terminal.backend: docker → 沙箱容器内 bash/npm
↳ 暴露给模型的工具名:mcp_sandbox_fs_read_file、run_terminal_cmd、…
启动时(及 /reload-mcp 时)Hermes 加载 mcp_servers。每条目指定命令——常见为 npx -y @modelcontextprotocol/server-filesystem 并附带允许的目录。Agent 循环将 MCP 工具与内置工具合并;若设置了 tools.include,只有名单内的工具会进入 Opus 4.8。
工具前缀:Hermes 为 MCP 工具加命名空间,日志可区分由哪个服务器响应。预期名称类似 mcp_sandbox_fs_read_file。编辑 YAML 后可在宿主机执行 hermes mcp list 核对注册情况。
终端后端:在 config.yaml 中设置 terminal.backend: docker(Docker 部署中亦可设 TERMINAL_BACKEND=docker),使 npm test、git 与格式化在沙箱容器内执行——而非直接落在网关宿主机内核上。将仓库同时挂载进 MCP 根列表与容器工作区,保持路径一致。
受控自动修复:将白名单与技能说明结合:限制重试次数、禁止 rm -rf、生产分支要求人工审阅 diff。当系统提示与技能元数据中重复这些约束时,Opus 4.8 更易遵守。
| 层级 | 职责 | 典型配置 |
|---|---|---|
| MCP 文件系统 | 在根目录内读/列/搜 | mcp_servers + server-filesystem 路径 |
| Hermes 终端 | 跑测试、打补丁 | terminal.backend: docker |
| tools.include | 剔除危险内置工具 | 仅列显式工具名 |
| 模型 | 推理与工具选择 | claude-opus-4-8 |
MCP 与 Shell 工具的安全模型
将 MCP 根目录视为读边界,而非写边界。文件系统 MCP 服务随版本可能仍暴露写工具——若策略要求预发环境只读,用 tools.exclude 去掉 mcp_*_write*。切勿把根指向 ~/.hermes、~/.ssh 或云凭证目录。
团队网关场景下 Docker 终端隔离是硬性要求。被劫持的提示词不应逃逸到宿主机包管理器。CPU 与内存限制应与生产网关指南一致。仍遵守「每个 ~/.hermes 挂载仅一个网关」——重复网关会破坏会话。
在 ~/.hermes/.env 中轮换 API 密钥,与 MCP 配置分开管理。限制谁能在 Telegram 上执行 /reload-mcp 及管理类斜杠命令。使用 Opus 4.8 时关注自动修复循环的 token 消耗;上下文超预算时配合 /compress 或轨迹压缩。
审计日志:预发阶段开启详细工具日志。确认每次 mcp_* 调用路径落在仓库根下。拒绝要求模型外泄环境变量的技能。
密钥应放在 MCP 根之外的 .env。若仅需阅读 .env.example,白名单该单文件而非整个父目录。单仓多包项目应将 MCP 收窄到正在开发的子包,避免 Opus 4.8 遍历无关服务。
沙箱容器出站网络默认拒绝,仅放行 npm test 所需的包注册表域名。在手册附录中记录允许域名,便于安全评审签字而无需通读每个技能文件。
分步操作手册
- 安装 Hermes(含 MCP 扩展) — 使用安装脚本并安装
.[mcp]可选依赖。确认 PATH 上有npx与 Node 20+。curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash source ~/.zshrc cd ~/.hermes/hermes-agent && uv pip install -e ".[mcp]" hermes doctor - 固定 Claude Opus 4.8 — 将 API 密钥写入
~/.hermes/.env,在config.yaml中设置claude-opus-4-8,对话中用/model验证。ANTHROPIC_API_KEY=sk-ant-... models: default: claude-opus-4-8 - 创建隔离沙箱目录 — 克隆可丢弃的测试仓库并执行
npm ci。sudo mkdir -p /srv/sandbox/app sudo chown "$USER":"$USER" /srv/sandbox/app git clone https://github.com/your-org/your-test-repo.git /srv/sandbox/app cd /srv/sandbox/app && npm ci - 注册文件系统 MCP 服务 — 在
mcp_servers中限定根目录并配置tools.include。mcp_servers: sandbox_fs: command: "npx" args: - "-y" - "@modelcontextprotocol/server-filesystem" - "/srv/sandbox/app" tools: include: - read_file - list_directory - search_files - 启用 Docker 终端后端 — MCP 根与容器挂载保持一致。
terminal: backend: docker container_persistent: true container_memory: 5120 docker_volumes: - "/srv/sandbox/app:/workspace" - 验证 MCP 注册 — 在宿主机执行:
hermes mcp list # 对话中:/reload-mcp - 运行 npm test 循环 — 明确提示:经 MCP 读失败输出,在沙箱内打补丁,每次补丁后执行
npm test,最多 N 次尝试后停止。hermes chat "列出顶层文件,在 /workspace 运行 npm test,仅修复 src/ 下失败用例,最多 3 次。" - 将配置提升到网关或 VPS — 按 VPS Telegram 指南 将校验过的
~/.hermes复制到 Docker 绑定挂载。保持TERMINAL_BACKEND=docker,并在容器内再次执行hermes mcp list。
将重试预算与禁止命令写入仓库内的技能文件,使每位队友继承相同的受控自动修复策略。每次升级 Hermes 镜像后应重跑本手册,因 MCP 服务 CLI 偶发新增工具名,需同步更新 tools.include。
故障排查
修改配置后 MCP 工具消失
在对话中执行 /reload-mcp 或重启 CLI 会话。以同一用户手动确认 npx 能启动 @modelcontextprotocol/server-filesystem。用 hermes mcp list 查看拉起错误。mcp_servers 键名错误会改变 mcp_* 前缀——请相应更新 tools.include。
本地 npm test 通过但 Docker 终端内失败
对齐挂载路径:MCP 读 /srv/sandbox/app,容器内使用 /workspace。在 docker_volumes 中使用同一宿主机路径。在沙箱镜像内安装 Node 或使用已预装依赖的持久容器。
Opus 4.8 无视护栏并编辑范围外文件
从 tools.include 移除写类 MCP 工具,收窄文件系统根,并在技能文本中禁止仓库外路径。生产分支改用只读 MCP;终端仅用于一次性临时沙箱。
OAuth MCP 登录在会话中卡住
退出当前会话,在全新终端运行 hermes mcp login <server>,完成授权后再 /reload-mcp。
关于框架对比、记忆压缩与 VPS 上 7×24 Telegram,请参阅 macOS 与 Mac mini M4 上 Hermes Agent 与 OpenClaw 对比、Mac mini M4 上的 Hermes trajectory_compressor 与记忆压缩,以及 廉价 VPS 上用 Docker 运行 Hermes Agent 与 Telegram 机器人。升级硬件前可先读 苹果 M5 Fusion 架构与 M6 2nm 工艺预测 中的带宽与买现役/等跨代矩阵。本文在此基础上补充面向 Claude Opus 4.8 编码循环的 MCP 文件系统沙箱配置。
常见问题
MCP 工具会取代 Hermes 终端工具吗?
不会。MCP 文件系统工具与内置终端互补。Shell 仍用 terminal.backend: docker,MCP 负责限定范围内的读与列目录。
Claude Opus 4.8 应设哪个模型 id?
在 config.yaml 或对话 /model 中使用 claude-opus-4-8,与 Anthropic 2026 年 5 月 28 日发布公告一致。
如何在不重启网关的情况下重载 MCP?
在对话中发送 /reload-mcp,或在宿主机运行 hermes mcp list,确认 mcp_servers 下的服务已注册。
能否在 VPS 上运行此沙箱?
可以。挂载 ~/.hermes,启用 TERMINAL_BACKEND=docker,并将 MCP 范围限定在绑定挂载上的项目目录。网关加固见 Docker VPS 一文。
tools.include 如何与 MCP 交互?
设置 tools.include 后,仅名单内工具暴露给模型。将 hermes mcp list 报告的每个 mcp_* 工具名加入列表;生产环境省略不需要的内置工具。
MacHTML 上的 Hermes MCP 与 OpenClaw MCP 文章有何不同?
OpenClaw 文章侧重 Node 网关与远程 Mac 自动化。本文讲解 Hermes 原生 mcp_servers、工具前缀与 /reload-mcp。