2026年OpenClaw 深度解析(六):节点、Canvas 与子 Agent

OpenClaw 深度解析(六):节点、Canvas 与子 Agent把 OpenClaw 当作个人 AI 助手使用一段时间后 会遇到几个让单进程模型力不从心的场景 远程执行 你想让 AI 帮你在家里的 Linux 服务器上跑一段脚本 但 OpenClaw Gateway 运行在 Mac 上 AI 怎么触达那台服务器的 Shell 手机上的交互 UI 你想在手机上看到 AI 生成的实时仪表盘 并且能点击按钮触发下一步操作 AI 怎么向移动端

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



把 OpenClaw 当作个人 AI 助手使用一段时间后,会遇到几个让单进程模型力不从心的场景:

  1. 远程执行:你想让 AI 帮你在家里的 Linux 服务器上跑一段脚本,但 OpenClaw Gateway 运行在 Mac 上——AI 怎么触达那台服务器的 Shell?
  2. 手机上的交互 UI:你想在手机上看到 AI 生成的实时仪表盘,并且能点击按钮触发下一步操作——AI 怎么向移动端 WebView 推送 UI,WebView 里的点击又怎么反馈给 AI?
  3. 并行任务:你让 AI 帮你整理 1000 封邮件——用一个 Agent 串行处理太慢了,能不能派出多个 AI 同时干?

这三个场景分别对应 OpenClaw 的三个核心扩展机制:Node Host(节点主机)Canvas + A2UI子 Agent(Sub-agent)


Gateway 负责对话管理和 Agent 执行,但 (执行 Shell 命令)这类工具需要在目标机器上运行——可能是远程服务器、NAS、Raspberry Pi,或者同一台 Mac 上受限环境的另一个进程。

Node 是解决这个问题的抽象:一个独立进程,连接到 Gateway,响应执行请求。Node 通过标准的 (WebSocket)注册自己:

 
   

数据流:

 
   

Node 不是无限制的 Shell 执行器。 实现了一个三级安全模型:

 
   
  • :拒绝所有命令执行
  • (默认):只允许 白名单中的命令
  • :允许所有命令(高信任环境下使用)

白名单文件用哈希防止竞态修改——读取和更新都需要传入 ,若文件已被其他进程改动,返回 。这防止了 TOCTOU 攻击。

还有一个特殊路径:在 macOS 上, 为 true 时,执行请求会优先通过 macOS 应用的 Exec Host(Unix socket),而不是直接 。这是因为 macOS 沙盒限制了某些路径的访问权限,通过应用层代理绕过这个限制。

命令的输出被硬性截断:

 
   

超出上限的内容被丢弃,结果中 。这保证了大量输出(如日志文件)不会撑爆 Agent 的上下文窗口。


AI 擅长生成代码,能不能生成 HTML 仪表盘、然后在用户手机上直接显示,并支持交互?

Canvas 是 Gateway 内置的一个轻量 HTTP 服务器,挂载在 ,专门伺服 AI 生成的 HTML/JS/CSS 文件:

 
    

Gateway 启动时, 会:

  1. 在 创建默认的 (如果不存在)
  2. 用 监听目录变化
  3. 文件变化时通过 WebSocket()推送 给所有已连接的客户端

被注入的实时重载脚本:

 
    

这意味着:AI 重写 → chokidar 检测到文件变化 → WebSocket 广播 → 用户手机上的 WebView 自动刷新。

文件服务有安全约束。 用 + 验证每个请求的文件路径都在 Canvas 根目录内——这与上一篇 Plugin SDK 里的 是同一类防护,都是防止路径遍历攻击。


Canvas 里的 HTML 页面可以显示数据,但它本身没有办法与 OpenClaw 通信——它是运行在 iOS/Android WebView 里的孤立页面。

A2UI(Agent-to-UI) 解决了这个方向问题:提供一套跨平台的 JavaScript 桥接 API,让 WebView 里的代码可以触发 OpenClaw Agent 的动作。

A2UI 包()通过 伺服,并在每个 Canvas 页面的 HTML 里自动注入一段引导脚本:

 
     

Canvas 页面里的代码可以这样触发动作:

 
     

这条消息经由:

 
     

Agent 处理完动作后,可以通过 通知 Canvas 页面操作已完成。这构成了一个完整的请求-响应循环。


是 Agent Client Protocol 的实现,OpenClaw 通过它暴露一个标准接口,让任何兼容 ACP 的工具都能与 OpenClaw 的 Agent 会话交互。

 
      

ACP 会话有两种模式:

 
      

这让 CI/CD 系统、IDE 插件、或其他 AI 工具可以把 OpenClaw 当作一个可编程的 AI 后端调用,而不需要理解 OpenClaw 内部的协议细节。


一个复杂任务(整理 1000 封邮件,分析 50 个代码文件)用单个 Agent 串行处理太慢。子 Agent 机制让 Agent 可以派生(spawn)独立的子 Agent 并行执行子任务。

 
       

的核心字段:

 
       
 
       

"不要轮询"注意事项:子 Agent 完成后会主动宣告(announce)结果,而不是等父 Agent 来查询。父 Agent 在派生子任务后应该继续其他工作,而不是在循环里等待子任务完成。子任务的结果会自动以用户消息的形式重新注入父 Agent 的上下文。

 
       

为了防止无限递归(子 Agent 再派生子 Agent 再派生……),系统维护一个深度计数器(),并且有默认上限:

 
       

超过这个深度的派生请求会被拒绝,返回 状态。

参数让子 Agent 的结果直接投递到当前聊天线程(而不是等父 Agent 转发):

 
       

这个功能依赖 生命周期钩子——只有实现了该钩子的通道插件(能绑定线程的聊天平台)才能使用。


机制 突破的边界 核心数据流 Node Host 执行边界——让 AI 触达远程机器 Gateway → WebSocket → Node → → 结果返回 Canvas + A2UI UI 边界——让 AI 的输出变成交互式 UI AI 写文件 → chokidar → WebSocket → WebView 重载;用户点击 → native bridge → node.event → Agent 子 Agent 并发边界——让 AI 并行分解任务 父 Agent spawn → 子 Agent 独立执行 → 完成后 announce 回注入父会话

三者共同扩展了”个人 AI 助手”的能力边界:不只是对话,而是可编程的执行引擎 + 交互式 UI 宿主 + 多 Agent 协作系统

下一篇也是系列的最后一篇,我们将进入 OpenClaw 的安全模型与沙盒——系统性梳理 Gateway 认证、工具策略、沙盒隔离、API Key 保护、以及整个系统的信任边界设计。

小讯
上一篇 2026-03-29 14:42
下一篇 2026-03-29 14:40

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/231960.html