大数跨境

《AI OS的升维之旅》文章系列第三篇:沉默的执行层,Shell 工具不应有决策权

《AI OS的升维之旅》文章系列第三篇:沉默的执行层,Shell 工具不应有决策权 AI驱动数字化转型
2026-07-10
4
导读:我构建了一套多智能体协同系统,取名为三体架构。三个体各有独立职责。《AI OS的升维之旅》文章系列第三篇:沉默的执行层,Shell 工具不应有决策权。
我构建了一套多智能体协同系统,取名为三体架构。三个体各有独立职责。OpenClaw 是意识中枢,负责理解意图、路由任务、管理对话,不做任何有副作用的操作。Hermes 是执行层,负责搜索、文件操作、浏览器自动化、shell 命令以及内容写作,不做决策。Codex 是编码层,负责写代码、重构、调试、测试。三个体通过 sessions_spawn 通信,不共享内存,不共享进程空间,故障互相隔离。
支撑这套系统持续进化的是一套知识基础设施,以 Obsidian 为基础的知识库。每次写作完成,新概念自动写入原子笔记,文章索引自动更新,知识图谱重新关联。知识不会停在原地,它会在系统内部流动,从原始对话逐渐提炼成可复用的结构化知识。
三体加 Obsidian 知识库构成了一个从意图理解到执行落地到知识沉淀的完整闭环。
本文是「AI OS 升维之旅」系列第三篇。

一体化架构的安全边界问题
社区版 OpenClaw 有一个危险的默认配置。exec 工具直接暴露给主 Agent。主 Agent 能调 shell、读文件、写磁盘、删内容、执行任意系统命令,没有任何中间层做校验或过滤。这个设计在一体化架构里是常态。OpenAI 的 function calling 也是这样,模型决定调什么工具,客户端执行。LangChain 的 AgentExecutor 也是同一套逻辑,tool call 和 tool execution 在同一个循环里完成。模型输出什么参数,底层就执行什么。工具定义和工具执行之间没有隔离层。
实验环境里这不是问题。但在 7x24 值守的微信机器人里,一个 token 生成失误就可能导致意外操作。一体化架构的问题不在安全漏洞的存在,在安全边界的模糊。当主 Agent 同时掌握决策权和执行权时,审计就变成了自审计。模型不会记录它为什么调用某个工具,也不会保留调用前的推理过程。问题发生之后,只能看到一条孤立的 exec 调用记录,缺少它产生的上下文。

三体架构的执行层隔离设计


双层安全隔离路径
三体架构把执行权拆掉了。所有 shell 命令必须通过 hermes-executor Agent 下发。这个 Agent 的路由阈值是 0.8,关键词匹配度超过百分之八十才激活。触发关键词列得很清楚:执行、查一下、搜索、定时、cron、清理、扫描、搜 vault、从 vault 查、知识库检索。匹配不到的请求不激活 Hermes,直接留在主 Agent 侧。
社区版的 exec 调用路径是一条直线。用户请求到主 Agent 理解意图,主 Agent 调 exec,直接执行。三体版的路径多出两层隔离。用户请求到主 Agent 理解意图,路由匹配,sessions_spawn 创建子会话,Hermes 接收任务后自主决定执行方式,再回传结果。多出来的这两层就是安全边界。


可量化的隔离代价
隔离层的代价可以精确量化。sessions_spawn 创建子会话需要约五百毫秒到一秒。Hermes 接收 task 后重新加载上下文约五百毫秒。执行完成后回传结果序列化约两百毫秒。合计下来每次 Hermes 调用的额外开销是 1.2 到 1.7 秒。按每天五十到一百次调用计算,累计延迟是一到三分钟。大部分单次交互中用户感知不到这个差异,但高频使用场景下会累积成可察觉的迟钝。

搜索路由的成本与安全策略
TOOLS.md 里固化的搜索路由规则不是技术配置,是一套意图清晰的成本策略。搜索类任务默认走 AnySearch,每日一千次免费调用。只有用户明确指定用 minimax 搜才走 MiniMax API,后者会产生费用。五个禁止自动检索的场景列得很细:一般知识问答不走搜索,技术问题分析不走搜索,写作协助不走搜索,代码编写不走搜索,文件操作不走搜索。这些场景直接用本地模型推理或知识库检索。
这五个场景的覆盖面决定了日常使用的效率。一个技术问答、一段代码编写、一次文件操作,如果走搜索会引入不必要的延迟和信息噪声。社区版的 Agent 经常因为主动搜索而卡住回答。Agent 的趋利性会让它优先调用已知工具,搜索变成了"看一眼确认"的默认动作。三体版的搜索路由规则明确打断这个行为模式。不触发关键词,Hermes 不启动。
搜索路由规则固化在 TOOLS.md 里,不是运行时配置,不是环境变量,不是数据库记录。每次修改需要重启 Agent,不能在运行时热更新。看起来落后,实际上安全。运行时配置可以被注入攻击利用,环境变量可以被进程读取,数据库可以被篡改。一个静态文本文件的修改需要人工确认和系统重启,这个成本的付出本身就是一重安全过滤。
按每天五十条微信消息算,假设一半需要模型处理,每条消耗两千 token,一天五万 token。如果每条都走搜索 API,即使免费配额也撑不过几天。搜索路由的免费优先策略把这个负担从费用转移到了延迟上。本地模型处理一条消息在百毫秒级,搜索 API 在秒级。这是成本与延迟的工程权衡。

执行层的监控与权限设计


Sidecar 模式的进程监控
Hermes 管理所有子进程的生命周期。multimodel proxy 跑在 9098 端口做模型路由调度。health-all 定期检查 Obsidian 桌面版状态、模型可用性、代理连通性。hermes keepalive 确保 Hermes 进程本身不意外退出。tri-tracer 侧车通过 hermes-hook.py 监听子进程启动事件。
hermes-hook.py 的设计值得单独拿出来说。它不扫描进程、不拦截命令、不做安全检查。它只做一件事:在 Hermes 每次 exec 或 tool call 结束时写一行 JSON 到 tri-tracer-pipe.json 文件。写入字段包括 service name、span name、status、执行时间戳、一个 attributes 字典记录命令和退出码。不侵入 Hermes 主逻辑,不阻塞调用链,只做一个忠实记录者。这种设计在系统监控领域叫 sidecar 模式。主进程不感知 sidecar 的存在,sidecar 不依赖主进程的 API。两个进程通过共享文件或管道通信,各自独立运行,各自独立失败。hermes-hook.py 如果崩溃,Hermes 继续工作。Hermes 如果崩溃,hermes-hook.py 的最后一行 JSON 仍然保留了崩溃前最后一次调用的记录。


白名单模式的权限管理
社区版的工具权限是黑名单模式。所有工具默认可用,只有在 tools.deny 中明确列出的才被禁用。开发阶段很方便,需要哪个工具直接用,不需要预先配置。但生产环境里有个问题:你永远不知道有多少工具是默认可用的,因为你没有显式声明过它们能用。三体版用白名单模式,只有 TOOLS.md 中 tools.allow 明确允许的工具才可用。新增工具需要同时修改 AGENTS.md 的路由规则和 TOOLS.md 的允许列表。多一层确认意味着少一层风险。
白名单模式有显性开销。每次新增工具需要在两个地方注册,这个成本是开发阶段发生的。一旦配置完成,运行阶段的权限边界是清晰的、可审计的。黑名单模式开发阶段零成本,运行阶段面对未知工具的风险。白名单模式开发阶段有固定成本,运行阶段零风险。

隔离设计的代价与收益


明确可测的代价
隔离层带来的代价是确定的、可测量的。一次文件搜索,社区版路径从用户说出搜一下昨天的日志到主 Agent 调 exec 执行 grep 再返回结果,延迟在五百毫秒以内。三体版路径从主 Agent 匹配关键词到 sessions_spawn 创建子会话,到 Hermes 接收任务,再到 Hermes 自主决定用 shell 还是 Python,执行,读取结果,回传到主 Agent。延迟通常在二到五秒,每次会话都产生额外开销。
第二个代价是复杂度。多一个 Agent 就是多一个故障点。Hermes 进程挂了怎么办?主 Agent 的 exec 不允许回退。解决方案是 hermes keepalive 保活和 health-all 定期检查。但每个新组件都需要监控,每个监控组件又可能成为新故障点。这种递推在系统设计中叫复杂度螺旋。


安全与审计维度的收益
收益在哪里。MCP 协议在社区版是主 Agent 直接调用的,MCP 本身不做安全检查,它的协议设计假设调用方可信。如果主 Agent 的 MCP 参数被注入或模型幻觉导致参数异常,社区版没有任何防御层。Hermes 的 task 解析层会检查 MCP 调用的参数合法性,不是接收原始 tool call 参数,而是经过模式匹配和参数类型校验后再转发。浏览器操作也一样,社区版的浏览器操作和主 Agent 在同一安全域中,Hermes 隔离后浏览器自动化的安全基线不会污染知识库权限。
文件操作限制在策略层面更有价值。TOOLS.md 的安全策略写得很明确:向外发送需要批准,删除文件需要批准,系统命令需要批准。但这些审批是日志级别的,不是执行级别的。Hermes 建立的执行审批在路由层面完成,未匹配路由的请求根本不传递到执行层。审计的维度发生了根本变化,从日志回溯变成了请求拦截。
图片

沉默执行层的价值
使用场景决定了安全需求的等级。个人项目里用户就是管理员,不会攻击自己,容忍几种致命风险是可选的选择。微信值守场景不行。微信是公开发射的通道,一个恶意链接就能探测意图。微信消息可以被伪造、注入、利用。一个被社工攻击的手机号能绕过所有个人信任模型。
沉默的价值在于,一台 RTX 4060 笔记本 8GB 显存,跑 Ornith:9b 占 5.5GB,剩下 2.5GB。在这么紧张的资源下还要跑一个独立的执行层进程,看起来是资源浪费,实际上是一次安全投资。每次 Hermes 调用多出来的几秒延迟,就是在用自己的算力买一层安全隔离。沉默不是不作为。沉默是指执行层在收到明确、合法、经过路由匹配的指令之前,不做任何自主判断。不搜索、不执行、不操作。一个闭嘴的执行层不会产生额外惊喜,但也不会产生额外危险。在系统设计中,不做什么往往比做什么更难定义边界。
完整的《AI OS升维之旅:从单体到三体·社区版到定制版的工程跃迁》全书,关注公众号或者加我好友索取pdf。

【声明】内容源于网络
0
0
AI驱动数字化转型
专注AI,促进智造行业数据衍生,服务智能制造企业的数字化、智能化,聚焦大模型私域部署、大模型微调、数据清洗、AI模型训练、私域知识库及agent技术延展等。行业智能,落地为先。
内容 1046
粉丝 1
AI驱动数字化转型 专注AI,促进智造行业数据衍生,服务智能制造企业的数字化、智能化,聚焦大模型私域部署、大模型微调、数据清洗、AI模型训练、私域知识库及agent技术延展等。行业智能,落地为先。
总阅读8.0k
粉丝1
内容1.0k