Agent 实践
MCP、OpenClaw、Hermes Agent:行动系统真正缺的是控制面
从 MCP 协议、OpenClaw Gateway 与 Hermes Agent 常驻执行链出发,区分连接标准、Agent 产品和长期运行时,并给出身份、授权、审批、审计与恢复的控制面设计。
时间语境与证据
这是一篇 2026 年 7 月 13 日形成的跨项目工程综合,不设置单一 eventDate,也不伪装成 2024 年 MCP 发布时已经完成的判断。它连接三个不同事件:2024 年 11 月 25 日 MCP 作为开放协议发布;2026 年 1 月 30 日 OpenClaw 代码主线更名并出现实际功能包,本文用 2 月 1 日固定 README 和安全文档确认其 T+2 系统形态;GitHub Commit Search 页面嵌入元数据中的 made_public_at 则把 Hermes Agent 仓库首次公开时间固定为 2026-02-25T20:18:51Z,本文再用其 2 月 27 日代码快照理解首发运行边界。
三个对象不在同一层:MCP 定义应用与 server 交换资源、提示和工具的协议;OpenClaw 以 Gateway 连接消息渠道、浏览器、设备与宿主工具;Hermes Agent 把消息入口、会话、记忆、计划任务与多种终端环境组合成长驻 Agent。把它们都简称为“Agent 框架”,会看不见责任边界。
来源优先使用发布快照和完整 40 位 commit。Hermes 公开时间的第一方页面载荷抓取于 2026-07-13T12:48:19Z,决定性字段路径是 .payload.results[0].status_check_rollup.repository.repository.made_public_at;完整载荷已保存为 docs/source-audits/hermes-agent-publication-embedded-2026-07-13.json,其 SHA-256 为 05eca7454e41e2e4602f2eff81b00425c901567238f4b895441e3538639641af。结构化提取和离线重放命令记录在 docs/source-audits/hermes-agent-publication.md。OpenClaw 名称链与 Hermes 公开日期各有独立历史文章;这里不重写其时间争议,只讨论固定版本能够证明的系统形态。本文证据等级为 sourced,站内另有 MCP 权限网关可复现实验,实验结果不冒充这些项目的默认实现。
核心判断:连接层不会自动产生控制面
标准协议的价值是减少 N 对 M 集成:应用不必为每个数据源和工具发明一套连接方式,server 也能面向多个 client 提供一致 schema。MCP 的 resources、prompts、tools 与能力协商把连接契约显式化,这是重要基础设施。
但 schema 只能说明“工具需要哪些参数”,不能决定“当前用户是否可以对这个租户执行”。一个 delete_file(path) 或 update_customer(id, plan) 即使完全符合协议,也可能越权。身份从哪里来、资源属于谁、scope 如何映射、参数值是否允许、是否需要审批、写入后如何验证,都在协议之外。
OpenClaw 与 Hermes Agent 把这个问题放大。Gateway 或常驻进程连接的不是一个无害函数,而可能是 shell、浏览器、消息、文件、计划任务和长期记忆。一条来自外部渠道的文本,可以经过模型推理变成宿主动作;如果控制面缺失,提示注入就有机会跨越文本与执行边界。
所以生产系统需要把三层分开:
| 层次 | 解决的问题 | 不应承担的隐含责任 |
|---|---|---|
| 连接协议 | 如何发现、描述和调用资源/工具 | 用户是否有权调用、结果是否可信 |
| Agent 编排 | 如何维护会话、计划、工具循环和长期任务 | 自动获得租户隔离、最小权限与恢复 |
| 控制面 | 谁在什么任务下可对哪个资源执行何种动作 | 替模型决定业务目标 |
从三个项目看信任边界
MCP:统一契约,不统一业务授权
MCP 首发规范与示例降低了连接本地数据源和工具的成本。client/server 边界还能把工具实现与模型应用解耦:server 可以独立升级,client 通过能力协商使用。
然而 server 暴露的工具名、描述和返回内容都是模型上下文的一部分,也应视为不可信供应链。一个被替换的 server 可以修改 schema、诱导模型传入秘密,或返回包含提示注入的结果。client 不能因为连接使用标准协议,就跳过进程来源、版本、签名、权限与输出校验。
远程连接还增加用户身份传播问题。仅凭 client 表示的 userId 不能建立授权;服务端需要从受信认证上下文获得主体,并把每次调用绑定到租户与资源。协议互通与安全互信是两项工作。
OpenClaw:Gateway 集中体验,也集中风险
OpenClaw 的固定 README 与安全文档展示 Gateway 将渠道、工具、浏览器和设备连接到个人 Agent。单一控制面带来跨渠道连续体验,但也意味着一个高权限进程可能同时接触消息、凭据和宿主执行。
项目首发定位更接近单用户个人 Agent,而不是天然多租户 SaaS。个人信任假设不能直接迁移到企业:群聊消息的发送者、频道、机器人身份和管理员必须映射到明确主体;不同员工的会话、记忆、浏览器 profile 与秘密要隔离;外部消息不能凭“来自某个频道”获得 shell 权限。
安全指南是边界意识的证据,不是默认配置已经满足每个场景的证明。企业部署仍需验证实际版本、配置、沙箱和网络策略。
Hermes Agent:持久状态让一次授权跨越时间
Hermes Agent T+2 README 把消息渠道、memory、skills、cron 与终端执行连接成常驻运行时。固定 LocalEnvironment 实现通过登录 shell 在宿主环境执行命令,说明 local 后端的权限上限接近运行 Agent 的操作系统账户。
这比一次聊天更复杂:记忆可能长期保存恶意指令;cron 可以在用户离线时触发;skills 形成代码供应链;宿主 shell 可访问该账户能访问的文件与凭据。一次“允许”若被保存为长期规则,风险不再局限于当前消息。
固定 approval 代码提供危险命令模式检查,但模式匹配不能等价于通用授权。安全命令也可能读取秘密,危险命令也可能通过脚本、编码或工具组合绕过关键词。生产审批应绑定语义动作、具体参数、资源和版本,而不是只判断命令文本像不像危险。
控制面的六个必要能力
1. 受信身份
从认证 session、工作负载身份或签名消息中获取主体,不接受模型、工具参数或普通 header 自报。把人、Agent、server 与下游凭据分开标识,记录委托链。后台任务还要保存发起者和当时授权,而不是只剩一个系统账户。
2. 资源与租户范围
工具注册时声明可访问的资源类型;调用时把 tenant、repository、environment、record 等资源身份作为策略输入。服务端再次执行行级或对象级授权,不能只靠 client 隐藏工具。读、写、管理和执行 scope 分离。
3. 参数级策略
同一个工具对不同参数可能风险完全不同。run_test 与 deploy_production 可能都通过 shell 执行,但资源和副作用不同。策略应验证路径是否在工作区、URL 是否在 allowlist、环境是否允许、金额是否超阈值、命令是否只读,并限制大小、超时和网络。
4. 多维绑定审批
审批令牌绑定用户、任务、工具、参数摘要、租户、资源版本、过期时间和一次性 nonce。模型修改任一参数或目标版本后,旧审批失效。并发执行采用原子消费,避免两个请求同时复用一次批准。长期 allowlist 需要独立管理与撤销,不应由一次交互提示静默生成。
5. 执行隔离与结果校验
根据风险选择只读 API、容器、受限浏览器、短期凭据或专用工作负载身份。宿主 local shell 应视为最高风险后端。执行前校验预期版本,防止在审批后状态已经变化;执行后检查真实业务状态,而不是只信工具返回 “success”。
6. 审计、恢复与失败关闭
高风险写入前必须落审计意图;若审计不可用则停止写入。写入成功但后续审计投递失败时,进入持久 outbox 重试,不能假装整条事务不存在。日志记录主体、策略、资源、参数摘要、版本、结果和 trace,秘密值不落日志。系统还需要幂等键、checkpoint、回滚或补偿动作。
一个企业任务例子
假设客服 Agent 需要查询订单、读取退货政策,并在客户确认后创建退款。MCP server 提供 orders.read 与 refund.create;消息可以来自网页和客服工作台。
安全流程应是:认证层确定员工与客户会话;策略层确认员工属于订单租户;读工具只返回本任务需要字段;模型提出退款金额和原因;规则检查政策、金额与订单版本;高金额生成一次性审批;下游 API 用幂等键执行;最后重新读取退款状态并把证据写入会话。
如果订单版本在审批后改变,expectedVersion 使写入失败并要求重审;如果两个 worker 同时消费批准,原子 nonce 只允许一个成功;如果退款 API 返回异常,系统进入人工处理,不让模型反复重试产生多笔退款。这些能力都不能从“使用 MCP”或“Agent 有 Gateway”自动获得。
评测与发布门禁
控制面评测不能只测工具正常调用。至少需要:跨租户 IDOR、伪造身份字段、越权 scope、路径逃逸、提示注入、审批参数变更、过期审批、并发重放、陈旧版本、下游超时、审计失败、恢复重试和超大工具输出。
每个用例验证最终状态,而不只验证 parser 拒绝或中间服务返回。比如重放测试要确认下游只发生一次写入;审计失败测试要确认写前失败关闭、写后进入 outbox;输出污染测试要确认返回 schema、租户与大小均被校验。
上线顺序是发现与读取、低风险建议、人工批准的可逆写入、最后才是受限自动执行。每一级测策略拒绝率、误拒绝、人工接管、成功验证、恢复和每个正确任务成本。
商业判断
连接标准降低重复集成成本:同一 server 能服务多个 AI 应用,企业也更容易替换模型。OpenClaw/Hermes 类运行时则证明用户愿意把消息、记忆和工具放入持续 Agent。真正可收费的企业能力,是在这种便利之上提供统一身份、政策、审批、审计、隔离和恢复。
购买者包括有多个 Agent 团队的平台部门、需要审计的金融/医疗/企业 SaaS,以及希望把个人 Agent 引入组织但不能接受宿主全权限的公司。它替代各团队自建权限胶水、零散审批与不可查询日志,收益体现在集成周期、事故减少、合规取证与策略复用。
成本来自身份系统对接、资源模型、策略编写、沙箱基础设施、审计存储、人工审批和持续红队。小团队若只有只读、本地、单用户任务,可以使用更简单边界;不应为“平台感”过度建设。高价值写操作、跨租户和长期后台任务则必须先建设控制面。
90 天 MVP 应只选两个工具:一个只读、一个有幂等键的低风险写入。先接入真实身份与租户,完成参数策略和审计;再做审批重放、陈旧版本和恢复实验;最后在 shadow 流量中测人工接管。成立条件是新工具接入更快且越权测试全部失败关闭;失效条件是业务资源无法建模、下游没有幂等/版本能力或团队无法维护策略。
长期护城河来自跨工具资源图、策略库、审批行为、攻击样本和恢复经验。协议与开源 Agent 都会演进,控制面沉淀的是组织不可替代的责任边界。
局限与风险
第一,本文比较不同日期和抽象层,不能据此评价三个项目的“优劣”。MCP 是协议,OpenClaw/Hermes 是运行时,任务不同。
第二,固定代码只能说明当时实现,不能代表 2026 当前默认状态。部署必须重新固定版本并审计实际配置。
第三,策略层自身可能出错。过宽 scope、错误租户映射、审批缓存和日志泄密都需要测试与最小权限运维。
第四,沙箱不是绝对安全。内核、浏览器、依赖和网络仍有攻击面;高风险数据与凭据应尽量不进入执行环境。
第五,人工审批可能变成点击疲劳。应通过风险分层、清晰参数差异和一次性绑定减少无意义弹窗,而不是取消门禁。
第六,本文没有部署 OpenClaw 或 Hermes Agent;其实现描述来自固定源码,企业控制面是本站工程判断。
面试表达
30 秒结论: MCP 解决连接标准,OpenClaw 与 Hermes Agent 解决持续编排;二者都不会自动提供企业授权。生产 Agent 必须有受信身份、资源 scope、参数策略、多维审批、隔离执行、最终状态验证、审计与恢复。
3 分钟架构: 模型只能提出工具动作;网关从 session 获取主体并绑定租户,策略检查 tool/scope/参数/资源版本。高风险动作生成一次性审批,执行器原子消费并用短期身份调用下游,写后重读权威状态。审计采用写前失败关闭与写后 outbox,日志只存参数摘要。测试覆盖 IDOR、注入、并发重放、陈旧版本和审计故障。
方法披露
本文由 AI 辅助整理职责矩阵、攻击用例与原创 SVG 草图;MCP 发布日期、OpenClaw/Hermes 固定 commit、具体执行边界和最终判断由作者逐项复核。未实际部署的项目不写成现场验证;站内 MCP 网关实验与本文 sourced 综述分开标注。
修订记录
2026-07-13:初版发布;建立连接、编排、控制三层职责与六项控制面能力。
Reusable projects
关联可复用项目
本文已经进入以下工程项目;项目页提供固定版本、运行命令和结果工件。
- 已独立复现
本文说明 MCP 只统一连接契约,身份、授权、审批、审计和恢复必须由外部控制面承担,为本项目划定系统边界。
Source ledger
来源账本
以下来源用于核对事实、日期与当时可用范围。厂商自报性能不视为本站独立复现。
- Introducing the Model Context Protocol
- Model Context Protocol announcement release-day snapshot
- Model Context Protocol T+2 specification snapshot
- refactor: rename to openclaw
- OpenClaw T+2 README snapshot
- OpenClaw T+2 security guide snapshot
- openclaw@2026.1.29-beta.1 functional package metadata
- Hermes Agent repository publication metadata
- Hermes Agent T+2 snapshot commit
- Hermes Agent T+2 README
- Hermes Agent T+2 LocalEnvironment implementation
- Hermes Agent T+2 dangerous command approval implementation
讨论