假设 Gateway 在服务器上,而你想查询另一台 Mac 上是否装了 Git。你需要的是把那台 Mac 接为 Node,然后调用它声明的能力;不需要在 Mac 上再搭一套完整的消息机器人。
本页使用 v2026.9.2 官方文档作为基线。本站在同一台 Mac 上,用两个独立状态目录完成了 Gateway → headless Node → 能力批准 → 程序查找实验。**这不等于验证了远程网络、设置码连接、摄像头或定位。**先对照两端 openclaw --version,再开始连接。
1. 先决定是否真的需要 Node
| 你的目标 | 应选择什么 | 首次验证 |
|---|---|---|
| 在 Telegram 接收消息 | Gateway 上的渠道配置 | 私聊收到回复 |
| 理解聊天中已经上传的图片 | 媒体理解与可用模型 | 能回答图片内容 |
| 在另一台电脑查找程序或执行命令 | headless Node,或已有桌面节点应用 | 查看 system.which 等能力 |
| 使用 Mac 的相机、屏幕等原生能力 | macOS 节点应用及系统授权 | describe 中有对应命令 |
| 获取手机画面或位置 | 对应移动端节点应用 | 支持该能力、前台状态和权限满足 |
**Node 是设备能力入口,不是图片理解模型。**消息先到 Gateway,由它组织模型请求和调用;设备负责执行自己暴露的能力。设备没有声明的功能,不能靠在提示词里要求来补上。
2. 准备连接时,给两端命名
在自己的记录里写下:Gateway 在哪台机器、Node 是哪台机器、各自的版本、计划调用什么能力。本文使用显示名 Lab Node,它只是便于辨认,不是身份认证。
同一台 Mac 若已经通过菜单栏应用接入为节点,不要再启动一个 CLI Node 来“增强它”;官方说明中应用已有配套运行进程。先使用现有节点检查能力。
首次连接建议使用自己的测试 Gateway 和测试设备。Node 会扩展 Gateway 可控制的机器范围,因此不能把未知 Gateway 的配对命令粘到工作电脑执行。
3. 接入 headless Node
对于尚未接入的测试设备,可在 Gateway 的 Control UI Devices 页面创建 Node host setup link。复制界面给出的完整命令,在目标 Node 机器运行。对应形式是:
openclaw node run --pair "oc-pair://实际设置码"
引号里的文字是占位符,必须使用你自己界面生成的实际值。该版本的设置码用于一次性初始连接,有有效期,不应出现在公开截图或记录模板中。
这一方式把连接端点、初始凭据和可用的 TLS 信息一起传给 Node,适合首次练习。已有明确网络与认证配置时,也可按 Node CLI 原文 使用 --host、--port 和 TLS 参数;不要把一条缺少认证信息的主机地址命令误当成完整安装流程。
保留 Node 终端运行。前台进程退出后,设备通常不再在线;首次验收不要求安装后台服务。
4. 查配对与连接,再查能力
在 Gateway 的终端执行:
openclaw devices list
openclaw nodes status
如果设备已通过设置码完成配对,不要重复审批。若存在待处理设备请求,核对来源、设备身份与声明角色后,使用你自己的实际请求 ID:
openclaw devices approve "实际请求ID"
随后复制目标 Node 的完整 ID。不要仅凭重名的显示名选择设备:
openclaw nodes describe --node "实际节点ID"
记录连接状态、平台、命令能力和权限。paired 与 connected 是两件事:前者表示有配对关系,后者表示当前在线。配对成功也不等于所有能力都可以调用。
如果需要批准新增命令能力,运行:
openclaw nodes pending
核对请求属于刚接入的设备,并查看完整能力列表。确认愿意授予这个范围后,用该请求的实际 ID:
openclaw nodes approve "实际能力请求ID"
openclaw nodes describe --node "实际节点ID"
这是批准该设备声明的能力范围,不是仅允许下一次 Git 查询。若范围大于你愿意授予的权限,停止并调整设备配置,不要为了完成练习全部接受。设备请求 ID、能力请求 ID 和节点 ID 不能混用。
5. 用一次程序查找验证调用链
在已声明并允许 system.which 的 macOS/Linux 测试节点上,查询 Git 是否存在。在 Gateway 终端运行下面命令,替换节点 ID;JSON 参数的单引号写法面向 macOS/Linux shell:
openclaw nodes invoke --node "实际节点ID" --command system.which --params '{"bins":["git"]}'
这一步查找程序路径,不是执行 Git,更不会自动安装它。
| 结果 | 应怎样判断 |
|---|---|
| 返回 Git 的路径 | 节点完成了查找;记录路径,但尚未验证 shell 执行 |
| 返回未找到或空结果 | 调用可能成功,只是节点环境没有 Git;不能当成配对失败 |
| 超时或设备离线 | 回到 nodes status,查看前台进程与连接 |
| 命令不允许或能力不存在 | 核对 describe 的声明和批准范围 |
不要把 system.which 改成 system.run 继续尝试。该版本的通用 nodes invoke 会阻止 system.run / system.run.prepare;shell 执行应走 Agent 的 exec 工具、host=node 和目标主机审批。这也是 执行审批教程 与本页分开的原因。
本站实际遇到的一次失败
在 macOS / Node 24.15.0 / OpenClaw 2026.9.2 实验中,节点已经返回 connected: true、paired: true,但 commands 仍为空,approvalState 为 pending-approval。这时调用返回:
node pairing changed while invocation was active
等待并重试没有解决问题。重新检查 describe 后,我们找到待批准的能力请求;批准并再次 describe 后,状态变为 approved,命令列表才包含 system.which。随后同一查找返回:
{
"ok": true,
"command": "system.which",
"payload": { "bins": { "git": "/usr/bin/git" } }
}
这是实际响应的字段节选,不是所有设备的标准输出。下载前后状态记录。这次定位的关键是检查已批准的能力,而不是重复重启、重新安装 Git 或放开执行策略。
6. 相机与位置属于另一组验收
完成连接不代表已取得相机、录屏或位置权限。如果你的任务确实需要这些能力,再用自己的测试设备选择其中一项:
openclaw nodes camera list --node "实际节点ID"
openclaw nodes camera snap --node "实际节点ID"
拍摄前让画面只包含测试物体。检查命令返回的保存位置,打开实际图片,确认不是旧文件;返回一段文字描述不能代替图片验收。移动端相机调用还可能要求应用在前台,后台时可能返回 NODE_BACKGROUND_UNAVAILABLE。
位置调用的形式是 openclaw nodes location get --node "实际节点ID"。它会访问设备位置,不是普通网络探测。只在任务需要且设备主人同意时使用,并核对权限、数据时效与精度;不在公开验收表记录真实坐标。
7. 完成记录并安全停止
下载节点验收表。至少填写一次 status、describe 和实际调用结果,明确自己验证的是哪项能力。
临时 Node 完成后可在运行终端按 Ctrl+C,再从 Gateway 检查设备已离线。停止进程不等于撤销配对;若不再信任该连接,按当前设备管理页面撤销对应节点。撤销前核对 ID,避免影响另一台设备的任务。
继续使用浏览器能力可阅读 Browser 工具;准备处理真实文件前,先核对 安全加固与权限边界。