ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

OpenClaw 节点故障排查指南:从配对、前台约束到权限与工具失败的系统化排障

OpenClaw 节点故障排查指南:从配对、前台约束到权限与工具失败的系统化排障 人工智能大模型LLM 网关AI Agent即时通讯【免费下载链接】openclaw-zero-tokenOpenClaw: Use All Major AI Models NO API Token! Claude/ChatGPT/Gemini/DeepSeek/Doubao/Grok/Qwen/Manus/Kimi项目地址https://gitcode.com/gh_mirrors/op/openclaw-zero-token点击查看免费下载导读本文聚焦 OpenClaw 中「节点Node可见但节点工具canvas、camera、screen、exec 等调用失败」这一经典场景以官方节点故障排查文档为主体系统讲解诊断命令阶梯、前台运行约束、权限矩阵、配对与审批的两层心智模型、常见错误码及快速恢复循环。读者将掌握从openclaw status起步、逐层定位到具体错误码并最终通过「设备配对 执行审批 OS 权限」三轴修复问题的完整实战能力同时理解这些规则背后的网关协议与节点宿主实现原理。适用场景与核心心智模型本文对应的排查入口非常明确当节点在openclaw status中可见connected/paired但canvas.*、camera.*、screen.*、system.run等节点工具调用失败时应优先使用本文的排查路径。相关的基础设施与命令面定义在 docs/nodes/index.md 中一个**节点node**是连接 Gateway WebSocket与操作者同一端口的伴随设备macOS/iOS/Android/headless以role: node身份连接并通过node.invoke暴露命令面如canvas.*、camera.*、device.*、notifications.*、system.*。在动手排查前先建立两个关键心智模型节点是外设不是网关节点不运行网关服务Telegram/WhatsApp 等消息落在网关上而非节点上节点只是被网关调用的能力提供方。两层独立的门禁设备能否连接网关配对与设备能否执行某条 shell 命令审批是两套完全不同的门禁后面会详细展开。命令阶梯Command ladder从全局到节点官方排查文档给出的标准起点是一组从全局到节点的命令阶梯openclaw status openclaw gateway status openclaw logs --follow openclaw doctor openclaw channels status --probeopenclaw status与openclaw gateway status确认网关整体健康节点工具的调用都经由网关转发网关异常会让一切节点调用失败。openclaw logs --follow实时观察调用失败时的错误码与内部日志是后续所有步骤的眼睛。openclaw doctor系统性体检可发现配置、状态与权限方面的隐患对应 docs/gateway/doctor.md。openclaw channels status --probe探测渠道凭据--probe在 cli/channels-cli.ts 中定义为Probe channel credentials用于排除渠道层面的干扰。随后进入节点专属检查openclaw nodes status openclaw nodes describe --node idOrNameOrIp openclaw approvals get --node idOrNameOrIp健康信号Healthy signals应同时满足节点已连接且以node角色完成配对paired for rolenode。nodes describe的输出包含你正在调用的能力capability。执行审批Exec approvals显示预期的模式security/ask与 allowlist。关于nodes describe的字段语义可参考 cli/nodes-cli/register.status.tsdescribe通过node.describeRPC 获取节点信息输出 ID、Name、IP、Device、Model、Perms、Version、PATH、Status、Caps 等字段并单独列出该节点上报的 Commands 列表obj.commands。如果你要调用的命令不在 Commands 列表里即使节点已配对连接调用也会失败——这正是能力未上报类问题的判断依据。前台运行要求Foreground requirementscanvas.*、camera.*、screen.*在 iOS/Android 节点上仅在前台foreground可用后台调用一律失败。这是移动操作系统对摄像头、屏幕录制等敏感能力的硬性限制。快速检查与修复openclaw nodes describe --node idOrNameOrIp openclaw nodes canvas snapshot --node idOrNameOrIp openclaw logs --follow如果日志中出现NODE_BACKGROUND_UNAVAILABLE把节点 App 切到前台后重试即可。源码佐证在 docs/nodes/camera.md 中明确说明Likecanvas.*, the iOS node only allowscamera.*commands in theforeground. Background invocations returnNODE_BACKGROUND_UNAVAILABLE.docs/nodes/location-command.md 也指出 Android 在后台会拒绝location.get。可以推断这类错误码由节点端按平台分别实现因此排查时务必确认具体平台的行为差异。权限矩阵Permissions matrix不同能力在不同平台上要求的 OS 权限不同官方文档给出了完整的对照矩阵CapabilityiOSAndroidmacOS node app典型失败码camera.snap,camera.clipCameraclip 音频需要 MicCameraclip 音频需要 MicCameraclip 音频需要 Mic*_PERMISSION_REQUIREDscreen.recordScreen RecordingMic 可选Screen capture promptMic 可选Screen Recording*_PERMISSION_REQUIREDlocation.getWhile Using 或 Always依模式而定依模式的前台/后台定位Location permissionLOCATION_PERMISSION_REQUIREDsystem.runn/a节点宿主路径n/a节点宿主路径需要 Exec approvalsSYSTEM_RUN_DENIED关键解读system.run在 iOS/Android 节点上是n/a不适用因为移动端并不直接暴露通用 shell 执行它只在 macOS 节点 App 与 headless 节点宿主上存在且由Exec approvals而非 OS 权限门禁。相机、屏幕录制失败时错误码往往以_PERMISSION_REQUIRED结尾例如CAMERA_PERMISSION_REQUIRED、RECORD_AUDIO_PERMISSION_REQUIRED——这说明是 OS 层授权缺失需要去系统设置补授权而不是改 OpenClaw 配置。Android 在相机与录音权限缺失时会在可能时弹出系统授权框若被拒绝则以*_PERMISSION_REQUIRED失败见 docs/nodes/camera.md。配对 vs 审批两层独立的门禁官方文档用一个两步模型帮助理解节点排障的本质设备配对Device pairing该节点能否连接到网关执行审批Exec approvals该节点能否执行某条具体的 shell 命令快速检查命令openclaw devices list openclaw nodes status openclaw approvals get --node idOrNameOrIp openclaw approvals allowlist add --node idOrNameOrIp /usr/bin/uname如果配对缺失 → 先批准节点设备如果配对正常但system.run失败 → 修复执行审批/allowlist。配对Pairing的底层机制从 docs/gateway/pairing.md 可知WS 节点在connect握手期间携带设备身份网关为role: node创建设备配对请求待审批请求5 分钟自动过期批准后网关签发全新 tokentoken 会在重新配对时轮换节点用 token 重连后即为 paired。配对状态存储于网关状态目录~/.openclaw/nodes/paired.json与~/.openclaw/nodes/pending.json。CLI 形态openclaw devices list openclaw devices approve requestId openclaw devices reject requestId openclaw nodes pending openclaw nodes approve requestId openclaw nodes reject requestId openclaw nodes rename --node id|name|ip --name Living Room iPad注意区分nodes status将节点标记为paired的前提是设备配对的角色包含node而node.pair.*CLI 为openclaw nodes pending/approve/reject是独立的网关侧节点配对存储并不门禁 WS connect 握手见 docs/nodes/index.md。排查时如果看到已配对但连不上要检查是否走错了配对通道。执行审批Exec approvals的底层机制执行审批是伴随 App / 节点宿主的护栏guardrail用于让沙箱内的 Agent 在真实主机gateway或node上执行命令——只有策略 allowlist 可选用户审批三方一致时命令才被放行。关键点详见 docs/tools/exec-approvals.md生效位置审批在执行宿主本地强制生效——网关宿主是openclaw进程节点宿主是 macOS 伴随 App 或 headless 节点宿主数据落在宿主本地的~/.openclaw/exec-approvals.json。策略旋钮securityexec.securitydeny全部拦截/allowlist仅允许白名单命令/full放行一切。askexec.askoff永不提示/on-miss仅白名单未命中时提示/always每条命令都提示。askFallback审批 UI 不可达时的兜底deny拦截/allowlist仅白名单命中/full放行。有效策略取更严格者tools.exec.*与 approvals 默认值中较严格的一方生效approvals 字段缺省时回落到tools.exec值。allowlist 按 Agent 划分模式是大小写不敏感的 glob 匹配应解析到二进制路径仅 basename 的条目会被忽略例如~/Projects/**/bin/rg、/opt/homebrew/bin/rg。源码实现证据审批决策逻辑位于 node-host/exec-policy.ts 的evaluateSystemRunPolicy。它按security deny返回SYSTEM_RUN_DISABLED: securitydeny→requiresAsk !approvedByAsk返回SYSTEM_RUN_DENIED: approval required→allowlist未命中返回SYSTEM_RUN_DENIED: allowlist miss的顺序裁决shell 包装bash|sh|zsh -c/-lc在 allowlist 模式下被判定为shellWrapperBlockedWindows 上的cmd.exe /c变体被额外标记为windowsShellWrapperBlocked并在 node-host/exec-policy.ts 的formatSystemRunAllowlistMissMessage中给出带说明的报错信息。CLI 侧openclaw nodes run对应 cli/nodes-cli/register.invoke.ts会先调用system.run.prepare生成规范化的systemRunPlan通过exec.approvals.node.get读取节点宿主审批快照再按需经exec.approval.request发起审批请求审批结果allow-once / allow-always / deny随node.invoke的approved、approvalDecision、runId等参数一并下发。审批请求在批准后绑定规范执行上下文规范 cwd、可固定的可执行文件路径、解释器式脚本操作数——若审批后脚本内容漂移运行会被拒绝而非执行漂移内容。常见节点错误码官方文档给出的错误码速查表如下错误码含义与修复NODE_BACKGROUND_UNAVAILABLEApp 处于后台将其切到前台再重试CAMERA_DISABLED节点设置中相机开关被关闭iOS/Android 的camera.enabled默认开启关闭后camera.*返回此码*_PERMISSION_REQUIREDOS 权限缺失或被拒绝去系统设置补授权LOCATION_DISABLED定位模式开关为 offLOCATION_PERMISSION_REQUIRED请求的定位模式未获授权LOCATION_BACKGROUND_UNAVAILABLEApp 在后台但仅有 While Using 权限SYSTEM_RUN_DENIED: approval requiredexec 请求需要显式审批SYSTEM_RUN_DENIED: allowlist miss命令被 allowlist 模式拦截补充说明CAMERA_DISABLED与开关的关系iOS/Android 节点设置中camera.enabled默认开启缺失键视为启用macOS 伴随 App 的openclaw.cameraEnabled默认关闭。关闭状态下camera.*返回CAMERA_DISABLED见 docs/nodes/camera.md。定位错误码的完整集合还包括LOCATION_TIMEOUT超时未定位与LOCATION_UNAVAILABLE系统故障/无定位提供方以及location.get的精度参数desiredAccuracy: coarse|balanced|precise与响应中的accuracyMeters、isPrecise、source等字段见 docs/nodes/location-command.md。Windows 节点宿主的 allowlist 特例在 allowlist 模式下cmd.exe /c ...这类 shell 包装形式会被视为 allowlist miss除非通过 ask 流程显式批准文档原文同时被 node-host/exec-policy.ts 的报错文案证实Windows shell wrappers like cmd.exe /c require approval; approve once/always or run with --ask on-miss|always。shell 包装的通用规则同样适用于sh/bash/zsh -c。allowlist 模式下 shell 链接与重定向、||、;仅当每个顶层段都满足 allowlist 时才放行重定向在 allowlist 模式下不支持命令替换$()/ 反引号在 allowlist 解析时被拒绝详见 docs/tools/exec-approvals.md。快速恢复循环Fast recovery loop当节点工具仍然失败时官方文档给出标准恢复循环openclaw nodes status openclaw nodes describe --node idOrNameOrIp openclaw approvals get --node idOrNameOrIp openclaw logs --follow如果仍然卡住依次执行四步修复重新批准设备配对Re-approve device pairing——通过openclaw devices approve requestId必要时先openclaw devices list查看待批准请求。重新打开节点 App保持前台Re-open node app——解决NODE_BACKGROUND_UNAVAILABLE类问题。重新授予 OS 权限Re-grant OS permissions——解决*_PERMISSION_REQUIRED、LOCATION_PERMISSION_REQUIRED类问题。重建/调整执行审批策略Recreate/adjust exec approval policy——通过openclaw approvals编辑security、ask、askFallback与 allowlist或直接编辑节点宿主的~/.openclaw/exec-approvals.json。审批策略调整的实操入口CLIopenclaw approvals支持 get/set/allowlist 子命令见 cli/exec-approvals-cli.ts 的get、set、allowlist注册并可针对网关或指定节点操作openclaw approvals get --node idOrNameOrIp openclaw approvals set --node idOrNameOrIp --security allowlist openclaw approvals allowlist add --node idOrNameOrIp /usr/bin/uname openclaw approvals allowlist add --node idOrNameOrIp /usr/bin/sw_vers openclaw approvals allowlist rm --node idOrNameOrIp /usr/bin/unameControl UI在Control UI → Nodes → Exec approvals卡片中编辑默认值、按 Agent 的覆盖与 allowlist目标选择器可选择 Gateway本地审批或某个节点。节点必须上报system.execApprovals.get/set才能被 UI/CLI 编辑macOS App 与 headless 节点宿主均支持iOS/Android 不支持。直接编辑文件若节点未上报 exec approvals 命令面可直接编辑其本地~/.openclaw/exec-approvals.json。该文件 schema 示例来自 docs/tools/exec-approvals.md{ version: 1, socket: { path: ~/.openclaw/exec-approvals.sock, token: base64url-token }, defaults: { security: deny, ask: on-miss, askFallback: deny, autoAllowSkills: false }, agents: { main: { security: allowlist, ask: on-miss, askFallback: deny, autoAllowSkills: true, allowlist: [ { id: B0C8C0B3-2C2D-4F8A-9A3C-5A4B3C2D1E0F, pattern: ~/Projects/**/bin/rg, lastUsedAt: 1737150000000, lastUsedCommand: rg -n TODO, lastResolvedPath: /Users/user/Projects/.../bin/rg } ] } } }注意每个 allowlist 条目还跟踪lastUsedAt、lastUsedCommand、lastResolvedPath便于 UI 展示上次使用信息也方便清理长期未使用的条目。把 exec 指向指定节点如果网关配置了多个节点可以显式绑定 exec 目标详见 docs/nodes/index.mdopenclaw config set tools.exec.host node openclaw config set tools.exec.security allowlist openclaw config set tools.exec.node id-or-name会话内也可以用斜杠命令覆盖/exec hostnode securityallowlist nodeid-or-name设置后任何hostnode的 exec 调用都会在指定节点宿主上运行受该节点的 allowlist/审批约束。若要让 exec 默认不绑特定节点可openclaw config unset tools.exec.node。深度排障提示从源码结构可以推断的要点未知平台的保守默认从 docs/nodes/index.md 可知未识别platform/deviceFamily的节点使用保守默认 allowlist排除system.run与system.which若确需在未知平台使用这些命令需通过gateway.nodes.allowCommands显式添加。这类节点system.run失败时先检查是否是平台识别问题而非权限问题。环境变量卫生节点宿主会忽略PATH覆盖并剥离危险启动/shell 键DYLD_*、LD_*、NODE_OPTIONS、PYTHON*、PERL*、RUBYOPT、SHELLOPTS、PS4shell 包装的命令行--env覆盖被缩减为显式允许列表TERM、LANG、LC_*、COLORTERM、NO_COLOR、FORCE_COLOR。若你的命令因环境变量缺失而失败应配置节点宿主服务环境而非通过--env PATH...传入。allow-always 的包装器解包allowlist 模式下允许始终决策会对已知分发包装器env、nice、nohup、stdbuf、timeout持久化内部可执行文件路径而非包装器路径无法安全解包时不自动持久化 allowlist 条目node-host/exec-policy.ts 与 docs/nodes/index.md 一致。系统事件关联审批门控的 exec 复用审批 id 作为runId出现在系统事件Exec running/Exec finished/Exec denied中配合openclaw logs --follow可精确关联哪次审批对应哪次执行。相关文档导航节点总览与命令面docs/nodes/index.md相机捕获细节docs/nodes/camera.md定位命令与权限模式docs/nodes/location-command.md执行审批完整策略与 allowlistdocs/tools/exec-approvals.md网关侧设备配对机制docs/gateway/pairing.md审批决策与报错文案实现node-host/exec-policy.ts节点状态/描述 CLI 实现cli/nodes-cli/register.status.ts节点命令调用与审批联动实现cli/nodes-cli/register.invoke.ts赞分享人工智能大模型LLM 网关AI Agent即时通讯【免费下载链接】openclaw-zero-tokenOpenClaw: Use All Major AI Models NO API Token! Claude/ChatGPT/Gemini/DeepSeek/Doubao/Grok/Qwen/Manus/Kimi项目地址https://gitcode.com/gh_mirrors/op/openclaw-zero-token点击查看免费下载相关推荐ComfyUI IPAdapter Plus完整指南从安装到高级工作流故障排查ComfyUI IPAdapter Plus完整指南从安装到高级工作流故障排查 ComfyUI IPAdapter Plus是ComfyUI中功能最强大的图像人工智能计算机视觉媒体生成AI 插件Woodpecker CI 排障实战克隆失败与 SELinux 权限问题的系统化排查方案Woodpecker CI 排障实战克隆失败与 SELinux 权限问题的系统化排查方案 本文是 Woodpecker CI/CD 引擎的故障排查指南聚焦两CI/CDDevOpsmirrord Operator 故障排查完全指南从连接失败到会话中断的排障手册mirrord Operator 故障排查完全指南从连接失败到会话中断的排障手册 本文以 mirrord 仓库内 mirrord operator/refer开发工具云原生CLI上一篇docker-selenium 4.48.0 发布记录Edge 116 镜像标签生成全解析与 Tagging 规范下一篇TorchVision 量化 ResNeXt 模型使用指南基于 QuantizableResNet 的 8-bit 推理实战创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表