OpenClaw 架构拆解:Node、Tool、Skill 如何把 AI 变成可执行系统

很多团队把 Agent 系统做成了“高级聊天窗口”。模型能规划任务,也能输出步骤,但一到执行环节就断开了。问题不在推理能力,而在系统有没有把“能力描述”和“设备执行”分层。

OpenClaw 的价值在于:它没有把执行能力直接塞进模型进程,而是通过 Gateway + Node + Tool + Skill 建立了完整控制面。理解这套分层后,你会更容易判断一个 AI 系统到底是 Demo,还是可运维的生产架构。

为什么 Node 是第一关键点

在 OpenClaw 语境中,Node 不是抽象概念,而是一个真实设备实例。它可能是 macOS 主机、Linux 服务器、Android 测试机,也可能是 iPhone 或 headless 节点。

Node 通过 WebSocket 接入 Gateway,对外暴露可调用能力面,例如:

camera.*
screen.*
system.*
canvas.*
location.*

调用关系是明确的三跳:

             ┌──────────────┐
             │     Agent     │
             │   (AI大脑)     │
             └──────┬───────┘

                    │ tool call

             ┌──────────────┐
             │    Gateway    │
             │   (调度中心)   │
             └──────┬───────┘

      ┌─────────────┼─────────────┐
      │             │             │
      ▼             ▼             ▼
 ┌─────────┐   ┌─────────┐  ┌─────────┐
 │ Node-Mac │  │Node-Phone│ │Node-Linux│
 │屏幕/摄像头│  │位置/相机  │  │执行脚本  │
 └─────────┘   └─────────┘  └─────────┘

这个设计直接解决了两个工程问题:

  1. 模型进程不需要持有设备权限。
  2. 执行环境和推理环境可以独立扩缩容。

如果没有 Node,Agent 通常只能在“当前运行机器”上做事。引入 Node 后,Agent 可以远程调用多设备能力,系统从单机助手变成分布式执行网络。

三层能力模型:Skill、Tool、Node

很多人第一次接触 OpenClaw 时会把三个词混着用。更稳定的理解方式是按分层看职责。

Skill:流程编排层

Skill 负责“怎么完成任务”。它定义步骤顺序、失败回退、条件分支。

release-app
  -> 拉代码
  -> 构建
  -> 安装到测试机
  -> 回传截图

Skill 不直接操控硬件,也不关心设备连接细节。

Tool:能力调用层

Tool 负责“调用什么能力”。它是对系统能力的统一接口封装,通常是类型化调用,不是随意拼 shell。

exec.run
nodes.invoke
browser.open

Tool 把 Skill 的抽象步骤翻译成可执行请求。

Node:设备执行层

Node 负责“在哪台设备执行”。它承接 Tool 请求,调用本机能力并返回结果。

node.invoke(system.run)
node.invoke(camera.snap)
node.invoke(screen.record)

这三层合起来是一个稳定闭环:

Skill(编排) -> Tool(调用) -> Node(执行)

Gateway 为什么是控制面核心

OpenClaw 并不是“每个组件各连各的”。它把通信、路由、认证、状态都收敛到 Gateway。

在工程实现上,Gateway 扮演控制平面(Control Plane):

  1. 管理连接会话和节点身份。
  2. 校验调用权限与策略。
  3. 把请求路由到目标 Node。
  4. 汇总事件流并回传调用结果。

可以把它理解成 Agent 世界里的“调度中心 + API 网关 + 事件总线”。

这种中心化控制面的好处是可观测性和治理能力。调用失败、超时、权限拒绝、节点离线都能在同一层统一处理,而不是散落在各个脚本里。

一个可落地的执行链路示例

假设要让 Agent 自动完成 Android 发版前流水线:

1. 拉取代码
2. 在 Linux 构建 APK
3. 在 Android 真机安装并跑 UI 用例
4. 在 macOS 节点截图并归档

对应执行链路可以写成:

User
 -> Agent
 -> Skill: android-release-check
 -> Tool: exec.run / nodes.invoke
 -> Gateway
 -> Node-linux / Node-android / Node-macos

这条链路的关键不在“能不能执行命令”,而在“是否可调度、可追踪、可隔离”。

Node 设计背后的 4 个工程收益

1. 解耦推理与执行

模型服务可以跑在云端,设备能力留在本地或专用节点。模型升级不会牵动设备侧部署。

2. 天然支持多设备扩展

新增一台设备,本质是新增一个 Node。能力扩展是横向的,不需要重写 Agent 主逻辑。

3. 权限边界更清晰

你可以按 Node 维度做能力白名单,例如某节点只开放 camera.*,另一节点只开放 system.run。风险面更可控。

4. 支持并行执行

多节点可并发处理任务,适合 CI、批量测试、数据采集这类吞吐敏感场景。

实践建议:先做“最小可执行网络”

如果准备在团队里落地这套架构,不要一开始就上十几台节点。j建议更稳的起步方式是:

  1. 先建一个 Gateway。
  2. 先接两个 Node:一个构建节点、一个测试节点。
  3. 先实现一个端到端 Skill(例如构建 + 安装 + 回传结果)。
  4. 补齐日志与权限策略后,再横向扩展节点类型。

你很快会看到差异:系统不再依赖“某个万能脚本”,而是变成标准化的调用链路。

OpenClaw 这套分层的真正价值在这里。它让 AI 从“会回答问题”变成“能稳定执行任务”。