{"id":"4e5e63af-94eb-464d-9937-9a6fad7b2b08","entityType":"agent","slug":"clawhub-fengseven777-smartpi","name":"openclaw-smartpi","canonicalUrl":"https://www.xpersona.co/agent/clawhub-fengseven777-smartpi","canonicalPath":"/agent/clawhub-fengseven777-smartpi","generatedAt":"2026-10-10T21:52:44.017Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T17:27:21.343Z","emptyReason":null},"description":"SmartPi 设备绑定、扫码、设备管理与连接故障排查。Use when the user mentions binding SmartPi, SmartPi QR code, 9002, SmartPi connection failure, listing SmartPi devices, or removi... Skill: openclaw-smartpi Owner: fengseven777 Summary: SmartPi 设备绑定、扫码、设备管理与连接故障排查。Use when the user mentions binding SmartPi, SmartPi QR code, 9002, SmartPi connection failure, listing SmartPi devices, or removi... Tags: latest:1.0.8 Version history: v1.0.8 | 2026-06-24T08:08:58.666Z | user Summary: Removed sample documentation; enhanced troubleshooting process for unresponsive SmartPi devices. - Removed the file skil","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.3K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s17fw757czgkjmbajwznw1kg5s83gwz7:smartpi","sourceUrl":"https://clawhub.ai/fengseven777/smartpi","homepage":"https://clawhub.ai/fengseven777/skills/smartpi","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/fengseven777/smartpi","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/fengseven777/skills/smartpi","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":62,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"SmartPi 设备绑定、扫码、设备管理与连接故障排查。Use when the user mentions binding SmartPi, SmartPi QR code, 9002, SmartPi connection failure, listing SmartPi devices, or removi..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T17:27:21.343Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T17:27:21.343Z","emptyReason":null},"stars":null,"forks":null,"downloads":1318,"packageName":null,"latestVersion":"1.0.8","tractionLabel":"1.3K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T17:27:21.342Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T17:27:21.343Z","lastCrawledAt":"2026-10-10T17:27:21.342Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T17:27:21.342Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.8","createdAt":"2026-06-24T08:08:58.666Z","changelog":"Summary: Removed sample documentation; enhanced troubleshooting process for unresponsive SmartPi devices. - Removed the file `skill-card.md` (sample documentation). - Added detailed instructions for \"设备无响应排查\" (device no response troubleshooting), covering scenarios where SmartPi doesn't respond or has no audio. - Explicitly listed new user intent triggers (e.g., \"SmartPi 没反应\", \"设备不说话\") that route to enhanced troubleshooting. - Expanded quick routing table to include the new “设备没反应” intent and its preferred process. - Introduced step-by-step troubleshooting: device binding, connection logs, disconnection handling, routing, and AI response checks. - Clarified sample user feedback and expected outputs for each troubleshooting stage.","fileCount":3,"zipByteSize":6989},{"version":"1.0.7","createdAt":"2026-05-27T03:52:45.579Z","changelog":"**Summary:** Adds device连接状态查询功能和相关命令说明。 - 新增“查询设备连接状态”流程，支持通过设备号查询 SmartPi 在线/离线状态。 - 在“快速路由”中补充“查询设备连接状态”及其成功判定。 - 补充命令：`openclaw smartpi accounts status <device_number>`。 - 相关流程细化了成功判定、失败反馈和实际命令输出要求。","fileCount":3,"zipByteSize":6027},{"version":"1.0.6","createdAt":"2026-05-26T10:49:38.945Z","changelog":"- Renamed skill from `openclaw-smartpi-setup` to `smartpi` for clarity and unified branding. - Added `.clawhub/origin.json` to track skill origin metadata. - Skill description and metadata improved for more precise user intent matching and context coverage. - Completely restructured documentation for clearer task routing, process steps, and strict evidence-based troubleshooting. - Enhanced rules for user confirmation before taking high-impact actions (install, delete, restart, config change). - Expanded and clarified troubleshooting flows for binding, enumeration, deletion, plugin install, 9002, and connection issues. - Documented stricter standards for configuration merging to avoid accidental data loss and routing errors. - Updated user communication guidelines to require clear state, evidence, and next-action in all responses.","fileCount":3,"zipByteSize":5742},{"version":"1.0.5","createdAt":"2026-05-26T09:53:01.068Z","changelog":"- SKILL.md renamed to skill.md and completely rewritten with stricter, more detailed rules. - Device binding flow now requires explicit user confirmation before proceeding, and forbids assuming success without log evidence. - Clarifies that QR codes must be generated from real binding IDs, not placeholders, and sent via a <MEDIA> tag—other forms are disallowed. - Adds explicit command, restart, and log review sequences for troubleshooting, with multiple forbidden behaviors to prevent guessing or risky automation. - Configuration update instructions now mandate merging with existing config instead of overwriting, both for plugins.allow and channels. - Expands and enforces completion/reply requirements: every step must reference clear evidence, show current state, and provide precise next actions.","fileCount":3,"zipByteSize":5033},{"version":"1.0.4","createdAt":"2026-05-26T09:12:32.888Z","changelog":"Initial release of the skill as \"smartpi\", focusing on device binding, QR code pairing, device management, and connection troubleshooting. - Supports SmartPi设备扫码绑定、设备列表、设备删除等常用操作。 - 增加9002、AI超时和连接失败的分步排查流程。 - 明确了插件配置要点（plugins.allow和channels必须整体替换并保留原有内容）。 - 收录常用命令、日志关键字及风险提醒。 - 指导如何生成二维码和处理二维码绑定流程中的各类异常。","fileCount":3,"zipByteSize":3512},{"version":"1.0.3","createdAt":"2026-05-21T08:36:08.711Z","changelog":"- Added an example configuration snippet under the “关键坑点” section to clarify correct channel configuration. - No other content changes; documentation improved for setup clarity.","fileCount":2,"zipByteSize":2086},{"version":"1.0.2","createdAt":"2026-05-21T06:28:15.857Z","changelog":"openclaw-smartpi-setup 1.0.2 - 更新 SKILL.md，精简指令说明和绑定流程，突出一键扫码体验。 - 明确用户语句与建议的 Agent 动作映射关系。 - 新增 9002 故障（AI 超时）排查标准流程。 - 列出插件与 channel 配置常见坑点，警示整体替换风险。 - 简化常用操作命令表与关键日志说明，强调实用性。","fileCount":2,"zipByteSize":2018},{"version":"1.0.1","createdAt":"2026-05-20T06:59:47.323Z","changelog":"- 新增 _meta.json 元数据文件，提升插件描述与结构规范性 - SKILL.md 细化扫码绑定流程，明确需从终端输出提取 bindingId 生成可扫码二维码图片 - 新增“卸载流程”说明，详细列出账户移除和插件彻底清除步骤 - 说明二维码 ASCII 输出不可直接扫描，强调正确的绑定 ID 提取方式 - 优化格式与指引，提升用户操作的清晰度","fileCount":2,"zipByteSize":2895}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17fw757czgkjmbajwznw1kg5s83gwz7:smartpi","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fengseven777-smartpi/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fengseven777-smartpi/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fengseven777-smartpi/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-fengseven777-smartpi/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-fengseven777-smartpi/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-fengseven777-smartpi/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T21:52:44.016Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fengseven777-smartpi/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fengseven777-smartpi/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fengseven777-smartpi/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fengseven777-smartpi/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T17:27:21.343Z","emptyReason":null},"readme":"Skill: openclaw-smartpi\n\nOwner: fengseven777\n\nSummary: SmartPi 设备绑定、扫码、设备管理与连接故障排查。Use when the user mentions binding SmartPi, SmartPi QR code, 9002, SmartPi connection failure, listing SmartPi devices, or removi...\n\nTags: latest:1.0.8\n\nVersion history:\n\nv1.0.8 | 2026-06-24T08:08:58.666Z | user\n\nSummary: Removed sample documentation; enhanced troubleshooting process for unresponsive SmartPi devices.\n\n- Removed the file `skill-card.md` (sample documentation).\n- Added detailed instructions for \"设备无响应排查\" (device no response troubleshooting), covering scenarios where SmartPi doesn't respond or has no audio.\n- Explicitly listed new user intent triggers (e.g., \"SmartPi 没反应\", \"设备不说话\") that route to enhanced troubleshooting.\n- Expanded quick routing table to include the new “设备没反应” intent and its preferred process.\n- Introduced step-by-step troubleshooting: device binding, connection logs, disconnection handling, routing, and AI response checks.\n- Clarified sample user feedback and expected outputs for each troubleshooting stage.\n\nv1.0.7 | 2026-05-27T03:52:45.579Z | user\n\n**Summary:**  \nAdds device连接状态查询功能和相关命令说明。\n\n- 新增“查询设备连接状态”流程，支持通过设备号查询 SmartPi 在线/离线状态。\n- 在“快速路由”中补充“查询设备连接状态”及其成功判定。\n- 补充命令：`openclaw smartpi accounts status <device_number>`。\n- 相关流程细化了成功判定、失败反馈和实际命令输出要求。\n\nv1.0.6 | 2026-05-26T10:49:38.945Z | user\n\n- Renamed skill from `openclaw-smartpi-setup` to `smartpi` for clarity and unified branding.\n- Added `.clawhub/origin.json` to track skill origin metadata.\n- Skill description and metadata improved for more precise user intent matching and context coverage.\n- Completely restructured documentation for clearer task routing, process steps, and strict evidence-based troubleshooting.\n- Enhanced rules for user confirmation before taking high-impact actions (install, delete, restart, config change).\n- Expanded and clarified troubleshooting flows for binding, enumeration, deletion, plugin install, 9002, and connection issues.\n- Documented stricter standards for configuration merging to avoid accidental data loss and routing errors.\n- Updated user communication guidelines to require clear state, evidence, and next-action in all responses.\n\nv1.0.5 | 2026-05-26T09:53:01.068Z | user\n\n- SKILL.md renamed to skill.md and completely rewritten with stricter, more detailed rules.\n- Device binding flow now requires explicit user confirmation before proceeding, and forbids assuming success without log evidence.\n- Clarifies that QR codes must be generated from real binding IDs, not placeholders, and sent via a <MEDIA> tag—other forms are disallowed.\n- Adds explicit command, restart, and log review sequences for troubleshooting, with multiple forbidden behaviors to prevent guessing or risky automation.\n- Configuration update instructions now mandate merging with existing config instead of overwriting, both for plugins.allow and channels.\n- Expands and enforces completion/reply requirements: every step must reference clear evidence, show current state, and provide precise next actions.\n\nv1.0.4 | 2026-05-26T09:12:32.888Z | user\n\nInitial release of the skill as \"smartpi\", focusing on device binding, QR code pairing, device management, and connection troubleshooting.\n\n- Supports SmartPi设备扫码绑定、设备列表、设备删除等常用操作。\n- 增加9002、AI超时和连接失败的分步排查流程。\n- 明确了插件配置要点（plugins.allow和channels必须整体替换并保留原有内容）。\n- 收录常用命令、日志关键字及风险提醒。\n- 指导如何生成二维码和处理二维码绑定流程中的各类异常。\n\nv1.0.3 | 2026-05-21T08:36:08.711Z | auto\n\n- Added an example configuration snippet under the “关键坑点” section to clarify correct channel configuration.\n- No other content changes; documentation improved for setup clarity.\n\nv1.0.2 | 2026-05-21T06:28:15.857Z | auto\n\nopenclaw-smartpi-setup 1.0.2\n\n- 更新 SKILL.md，精简指令说明和绑定流程，突出一键扫码体验。\n- 明确用户语句与建议的 Agent 动作映射关系。\n- 新增 9002 故障（AI 超时）排查标准流程。\n- 列出插件与 channel 配置常见坑点，警示整体替换风险。\n- 简化常用操作命令表与关键日志说明，强调实用性。\n\nv1.0.1 | 2026-05-20T06:59:47.323Z | auto\n\n- 新增 _meta.json 元数据文件，提升插件描述与结构规范性\n- SKILL.md 细化扫码绑定流程，明确需从终端输出提取 bindingId 生成可扫码二维码图片\n- 新增“卸载流程”说明，详细列出账户移除和插件彻底清除步骤\n- 说明二维码 ASCII 输出不可直接扫描，强调正确的绑定 ID 提取方式\n- 优化格式与指引，提升用户操作的清晰度\n\nv1.0.0 | 2026-05-20T00:50:58.493Z | user\n\nopenclaw-smartpi-setup 1.0.0 – Initial release\n\n- Provides a complete guide for installing, configuring, and troubleshooting the openclaw-smartpi plugin.\n- Includes step-by-step installation and device binding instructions, with QR code generation tips.\n- Details common issues (such as error code 9002) and outlines troubleshooting steps.\n- Lists device management commands and file locations for configurations and logs.\n- Notes limitations such as passive receive-only mode and outlines connection details.\n\nArchive index:\n\nArchive v1.0.8: 3 files, 6989 bytes\n\nFiles: _meta.json (126b), skill-card.md (2094b), skill.md (15346b)\n\nFile v1.0.8:skill.md\n\n---\nname: smartpi\ndescription: SmartPi 设备绑定、扫码、设备管理与连接故障排查。Use when the user mentions binding SmartPi, SmartPi QR code, 9002, SmartPi connection failure, listing SmartPi devices, or removing a SmartPi device.\nallowed-tools: terminal, read_file, grep, find_path\ncontext: local-first\n---\n\n# SmartPi \n\n帮助用户完成 SmartPi 插件安装检查、设备扫码绑定、设备列表查看、设备删除，以及 `9002` / 连接失败等常见问题排查。\n\n## 设计原则\n\n- **元信息负责触发**：`description` 必须直接覆盖用户常见说法，例如 SmartPi 绑定、二维码、9002、连接失败、查看设备、删除设备。\n- **正文负责执行**：按任务给出明确步骤、成功判定、失败分支和用户输出。\n- **本地优先**：优先使用本机 `openclaw` 命令、Gateway 配置和日志，不假设外部服务可用。\n- **最小副作用**：删除设备、安装插件、重启 Gateway、修改配置前必须说明影响并征得用户确认。\n\n## 触发条件\n\n当用户提出以下请求时使用本 Skill：\n\n- **绑定设备**：绑定 SmartPi、添加 SmartPi、生成 SmartPi 二维码、扫码绑定。\n- **设备管理**：查看 SmartPi 设备、列出已绑定设备、删除 SmartPi 设备。\n- **连接故障**：SmartPi 连接失败、设备不在线、WebSocket 断开。\n- **9002 故障**：用户看到 `9002`、`AI response timeout`、语音请求无响应或超时。\n- **插件配置**：安装 `openclaw-smartpi`、检查插件是否启用、修复 `channels.openclaw-smartpi`。\n\n## 不适用场景\n\n- 用户问题与 SmartPi、OpenClaw Gateway、`openclaw-smartpi` 插件无关。\n- 用户要求开发新功能、改插件源码或调试非 SmartPi 通道时，应转入代码分析/开发类流程。\n- 用户只询问泛化 IoT、语音识别或硬件设计知识时，不应直接执行 OpenClaw 命令。\n\n## 快速路由\n\n| 用户意图 | 首选流程 | 主要成功判定 |\n| --- | --- | --- |\n| 绑定/添加 SmartPi | [流程：绑定设备](#流程绑定设备) | 日志出现 `WebSocket connected: <deviceKey>` |\n| 查看/列出设备 | [流程：查看设备](#流程查看设备) | `accounts list` 返回设备列表 |\n| 查询设备连接状态 | [流程：查询设备连接状态](#流程查询设备连接状态) | `accounts status` 返回设备在线/离线状态 |\n| 删除设备 | [流程：删除设备](#流程删除设备) | 删除命令成功且列表不再包含该设备 |\n| 安装/启用插件 | [流程：首次安装或修复插件](#流程首次安装或修复插件) | `plugins list` 显示 `openclaw-smartpi: enabled` |\n| 9002/超时 | [流程：9002 排查](#流程9002-排查) | 定位为连接、路由或 AI 响应链路问题 |\n\n## 执行前检查\n\n在执行会改变状态的动作前，先确认用户意图是否明确。\n\n1. 检查 OpenClaw CLI 是否可用：`openclaw --help`\n2. 检查插件状态：`openclaw plugins list`\n3. 检查已绑定设备：`openclaw smartpi accounts list`\n4. 若需要修改配置，先读取完整配置，再构造完整 patch。\n\n## 流程：绑定设备\n\n### 目标\n\n生成 SmartPi 绑定二维码，让用户扫码绑定，并确认设备通过 WebSocket 上线。\n\n### 执行步骤\n\n1. 执行绑定命令：\n\n```bash\nopenclaw smartpi accounts bind\n```\n\n2. 从输出中提取 `绑定ID:` 后的 `bindingId`。\n3. 使用 `bindingId` 生成 `smartpi_qr.png`。\n4. 把二维码图片发给用户，并提示：`请用微信扫一扫，绑定成功后我会继续确认设备连接状态。`\n5. 等待 30-120 秒，检查日志中是否出现 `WebSocket connected: <deviceKey>`。\n6. 连接成功后告知用户：`设备已连接，可以对着 SmartPi 说话了。`\n\n### 二维码生成方式\n\n优先使用当前环境已经安装的二维码工具，不要为了生成二维码自动安装依赖。\n\nPython：\n\n```python\nimport qrcode\nbinding_id = \"REPLACE_WITH_ACTUAL_BINDING_ID\"\nqrcode.make(binding_id).save(\"smartpi_qr.png\")\n```\n\nNode.js：\n\n```bash\nnode -e \"const id=process.argv[1]; require('qrcode').toFile('smartpi_qr.png',id,{type:'png'},e=>e&&console.error(e))\" \"REPLACE_WITH_ACTUAL_BINDING_ID\"\n```\n\n### 成功判定\n\n- 已生成二维码并发送给用户。\n- 日志出现 `WebSocket connected: <deviceKey>`。\n- `openclaw smartpi accounts list` 能看到新设备。\n\n### 失败分支\n\n- **未提取到 `bindingId`**：反馈绑定命令输出异常，并展示关键输出让用户确认。\n- **二维码生成失败**：说明当前环境缺少二维码依赖，询问用户是否允许安装依赖或改用其他方式生成。\n- **120 秒内未连接**：转入 [流程：连接失败排查](#流程连接失败排查)。\n- **连接后仍不可用**：转入 [流程：9002 排查](#流程9002-排查)。\n\n## 流程：查看设备\n\n### 执行步骤\n\n```bash\nopenclaw smartpi accounts list\n```\n\n### 输出要求\n\n- 如果有设备，列出 `deviceKey`、在线状态或命令输出中的关键字段。\n- 如果没有设备，提示用户可以执行绑定流程。\n- 不要伪造设备状态；只根据命令输出和日志判断。\n\n## 流程：查询设备连接状态\n\n### 目标\n\n通过设备号查询指定设备的在线/离线连接状态。\n\n### 执行步骤\n\n1. 如果用户未提供设备号，先执行 `openclaw smartpi accounts list` 列出所有设备供用户选择。\n2. 获取设备号后，执行：\n\n```bash\nopenclaw smartpi accounts status <device_number>\n```\n\n### 输出要求\n\n- 根据命令输出，展示该设备的连接状态（在线/离线/未找到等）。\n- 如果设备未找到，提醒用户检查设备号是否正确。\n- 不要伪造状态；只根据命令输出和日志判断。\n\n### 成功判定\n\n- 命令返回设备连接状态（connected / disconnected / unknown 等）。\n- 结合日志关键字进一步判断设备是否正常通信。\n\n### 失败分支\n\n- **设备未找到**：提示用户检查设备号是否正确，可重新执行 `accounts list` 确认。\n- **命令执行失败**：展示错误信息，询问用户是否继续排查。\n\n## 流程：删除设备\n\n### 执行步骤\n\n1. 先列出现有设备：\n\n```bash\nopenclaw smartpi accounts list\n```\n\n2. 确认要删除的 `deviceKey`。\n3. 明确提醒用户：删除会解绑本地记录，并可能同步解绑云端。\n4. 用户确认后执行：\n\n```bash\nopenclaw smartpi accounts remove <deviceKey>\n```\n\n5. 再次执行 `accounts list` 验证设备已删除。\n\n### 安全规则\n\n- 删除设备前必须获得用户明确确认。\n- 如果用户没有提供 `deviceKey`，必须先列出设备并让用户选择。\n- 不要批量删除设备，除非用户明确要求并逐项确认。\n\n## 流程：首次安装或修复插件\n\n### 目标\n\n安装并启用 `openclaw-smartpi` 插件，确保 Gateway 能加载 SmartPi channel。\n\n### 执行步骤\n\n1. 检查插件状态：\n\n```bash\nopenclaw plugins list\n```\n\n2. 若插件未安装，征得用户确认后执行：\n\n```bash\nopenclaw plugins install openclaw-smartpi\n```\n\n3. 修改配置前，必须先读取完整配置。\n4. 保留已有 `plugins.allow` 和 `channels` 内容，只追加 openclaw-smartpi 所需项。\n5. 重启 Gateway 前说明影响，用户确认后执行：\n\n```bash\nopenclaw gateway restart\n```\n\n6. 重启后再次检查 `plugins list` 和日志。\n\n### 成功判定\n\n- `openclaw plugins list` 显示 `openclaw-smartpi: enabled`。\n- 配置中存在 `channels.openclaw-smartpi`。\n- 日志中没有 `cannot resolve agentId`。\n\n## 流程：连接失败排查\n\n### 排查顺序\n\n1. 检查插件是否启用：`openclaw plugins list`\n2. 检查账号是否存在：`openclaw smartpi accounts list`\n3. 检查日志是否出现 `WebSocket connected`\n4. 检查日志是否出现 `WebSocket disconnected`\n5. 检查网络、设备扫码是否完成、绑定是否过期。\n6. 若日志出现 `cannot resolve agentId`，检查 `channels.openclaw-smartpi`。\n\n### 输出要求\n\n- 先说明当前卡在哪一层：插件、账号、WebSocket、路由、AI 响应。\n- 每次只给用户一个明确下一步，不要同时抛出大量可能原因。\n\n## 流程：9002 排查\n\n`9002` 表示 AI 未在限定时间内回复。不要直接假设是设备坏了，应按链路排查。\n\n### 排查顺序\n\n1. 插件状态：`openclaw plugins list`，确认 `openclaw-smartpi: enabled`。\n2. 设备绑定：`openclaw smartpi accounts list`，确认存在设备。\n3. 设备连接：查日志 `WebSocket connected`，确认设备在线。\n4. 路由配置：查日志 `cannot resolve agentId`，确认 `channels.openclaw-smartpi` 存在。\n5. AI 响应：向 OpenClaw 发一条文本，确认本地模型、MCP、Tools 是否响应过慢。\n6. 超时日志：查 `AI response timeout`，判断是否由模型慢、MCP 阻塞或工具调用卡住导致。\n\n### 常见结论\n\n- **插件未启用**：修复插件安装或配置。\n- **没有绑定设备**：引导用户走绑定流程。\n- **WebSocket 未连接**：检查扫码、网络和绑定状态。\n- **`cannot resolve agentId`**：修复 `channels.openclaw-smartpi`。\n- **文本请求也慢**：优先排查本地模型、MCP、Tools，而不是 SmartPi 设备。\n\n## 硬性规则\n\n### `plugins.allow` 是整体替换\n\n`config.patch` 对数组是整体替换，不是追加。修改前必须先读取当前完整配置，构造包含原有插件和 `openclaw-smartpi` 的完整数组后再 patch。\n\n### `channels` 是整体替换\n\n不要只 patch `channels.openclaw-smartpi`。这可能覆盖掉已有 channel，例如 `discord`、`telegram`。必须保留所有已有 `channels`，再追加 `openclaw-smartpi`。\n\n### `channel.id` 必须匹配\n\n插件内部 `channel.id = \"openclaw-smartpi\"`，配置中必须是 `channels.openclaw-smartpi`，一字不差。否则消息无法路由，常见日志为 `cannot resolve agentId`。\n\n### 配置示例\n\n```json\n{\n  \"channels\": {\n    \"openclaw-smartpi\": {\n      \"enabled\": true,\n      \"defaultAgentId\": \"main\"\n    }\n  }\n}\n```\n\n## 用户沟通规范\n\n- **先说明动作**：执行命令前，用一句话说明要检查什么。\n- **展示关键结果**：只摘取插件状态、设备 ID、日志关键字等必要信息。\n- **区分事实和推测**：没有日志证据时，不要断言设备在线或离线。\n- **需要确认时暂停**：安装、删除、重启、配置修改前必须等待用户确认。\n- **失败时给下一步**：不要只说失败，要说明下一步检查命令或需要用户提供的信息。\n\n## 常用命令\n\n| 命令 | 用途 | 风险 |\n| --- | --- | --- |\n| `openclaw --help` | 检查 CLI 是否可用 | 只读 |\n| `openclaw plugins list` | 确认插件状态 | 只读 |\n| `openclaw smartpi accounts list` | 查看已绑定设备 | 只读 |\n| `openclaw smartpi accounts status <device_number>` | 查询指定设备连接状态 | 只读 |\n| `openclaw smartpi accounts bind` | 扫码绑定新设备 | 创建绑定 |\n| `openclaw smartpi accounts remove <deviceKey>` | 删除设备并解绑 | 高风险 |\n| `openclaw plugins install openclaw-smartpi` | 安装插件 | 修改环境 |\n| `openclaw gateway restart` | 重启 Gateway | 中断服务 |\n\n## 日志关键字\n\n| 关键字 | 含义 | 下一步 |\n| --- | --- | --- |\n| `WebSocket connected` | 设备已上线 | 验证设备列表和语音交互 |\n| `WebSocket disconnected` | 设备断开 | 检查网络、设备状态、绑定状态 |\n| `cannot resolve agentId` | 缺少或错误配置 `channels.openclaw-smartpi` | 修复 channels 配置 |\n| `AI response timeout` | AI 响应超时，可能导致 `9002` | 排查模型、MCP、Tools 响应链路 |\n\n## 最小完成标准\n\n每次使用本 Skill 后，最终回复必须包含：\n\n- **当前状态**：已绑定、已连接、未连接、未安装、配置异常或超时。\n- **证据来源**：命令输出、日志关键字或用户提供的信息。\n- **下一步**：如果未解决，明确下一条建议动作。\n\n# SmartPi Skill 增强说明\n\n## 触发条件新增\n\n当用户出现以下描述时，自动进入设备无响应排查流程：\n\n* SmartPi 没反应\n* SmartPi 不回复\n* 对设备说话没反应\n* 按键后没反应\n* 设备在线但没有回复\n* 语音请求没有响应\n* SmartPi 无响应\n* 设备不说话\n* SmartPi 没有声音\n* SmartPi 不工作了\n\n---\n\n## 快速路由新增\n\n| 用户意图  | 首选流程       | 主要成功判定             |\n| ----- | ---------- | ------------------ |\n| 设备没反应 | 流程：设备无响应排查 | 定位到绑定、连接、路由或 AI 问题 |\n\n---\n\n## 流程：设备无响应排查\n\n### 目标\n\n当用户反馈设备没有任何响应时，快速判断问题位于：\n\n* 未绑定设备\n* WebSocket 未连接\n* 连接后断开\n* 路由配置异常\n* AI 响应超时\n* 设备侧异常\n\n不要直接假设设备损坏。\n\n---\n\n### 排查顺序\n\n#### 1. 检查本地是否存在已绑定设备\n\n执行：\n\n```bash\nopenclaw smartpi accounts list\n```\n\n判定：\n\n* 返回设备列表 → 继续下一步\n* 返回空列表 → 引导用户执行绑定流程\n\n输出要求：\n\n```text\n当前未发现已绑定的 SmartPi 设备，请先完成设备绑定。\n```\n\n---\n\n#### 2. 检查设备连接状态\n\n查看 Gateway 日志。\n\n重点查找：\n\n```text\nWebSocket connected\n```\n\n或：\n\n```text\nWebSocket connected: <deviceKey>\n```\n\n判定：\n\n* 出现 connected → 设备已连接\n* 未出现 connected → 设备未连接\n\n输出要求：\n\n```text\n设备已绑定，但尚未连接到 Gateway，请检查网络连接或重新扫码绑定。\n```\n\n---\n\n#### 3. 检查是否发生断线\n\n查看日志：\n\n```text\nWebSocket disconnected\n```\n\n判定：\n\n* 存在 disconnected → 设备连接后断开\n* 不存在 disconnected → 继续下一步\n\n输出要求：\n\n```text\n设备曾成功连接，但后续发生断线，请检查设备网络状态。\n```\n\n---\n\n#### 4. 检查消息路由\n\n查看日志：\n\n```text\ncannot resolve agentId\n```\n\n判定：\n\n* 出现该日志 → channels.openclaw-smartpi 配置异常\n* 未出现 → 继续下一步\n\n输出要求：\n\n```text\nGateway 无法找到目标 Agent，请检查 channels.openclaw-smartpi 配置。\n```\n\n---\n\n#### 5. 检查 AI 响应链路\n\n查看日志：\n\n```text\nAI response timeout\n```\n\n或者执行一次普通文本请求验证。\n\n判定：\n\n* 文本请求正常 → 设备链路问题\n* 文本请求也超时 → AI 链路问题\n\n输出要求：\n\n```text\n设备连接正常，但 AI 响应超时，请优先检查模型、MCP 或 Tool 响应情况。\n```\n\n---\n\n### 常见结论\n\n| 现象                        | 结论      |\n| ------------------------- | ------- |\n| accounts list 为空          | 未绑定设备   |\n| 无 WebSocket connected     | 未建立连接   |\n| 出现 WebSocket disconnected | 连接后断开   |\n| cannot resolve agentId    | 路由配置异常  |\n| AI response timeout       | AI 响应超时 |\n| 以上均正常                     | 检查设备侧日志 |\n\n---\n\n### 最终输出格式\n\n每次排查结束后必须返回：\n\n当前状态：\n\n* 已绑定 / 未绑定\n* 已连接 / 未连接\n* 路由正常 / 异常\n* AI 正常 / 超时\n\n证据来源：\n\n* accounts list\n* WebSocket connected\n* WebSocket disconnected\n* cannot resolve agentId\n* AI response timeout\n\n下一步：\n\n* 给出唯一明确的下一步动作，不同时列出多个方向。\n\nFile v1.0.8:_meta.json\n\n{\n  \"ownerId\": \"kn72bjnwex9cmswhrh2b11zj15837qpb\",\n  \"slug\": \"smartpi\",\n  \"version\": \"1.0.8\",\n  \"publishedAt\": 1782288538666\n}\n\nFile v1.0.8:skill-card.md\n\n## Description:\n\nSmartPi device binding, QR-code setup, device management, and troubleshooting for connection failures, 9002 timeouts, and unresponsive SmartPi devices.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[fengseven777](https://clawhub.ai/user/fengseven777)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal OpenClaw users and developers use this skill to bind and manage SmartPi devices, check plugin and Gateway status, and diagnose connection, routing, and AI response timeout issues.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Installing or repairing the OpenClaw SmartPi plugin can change the local environment.\n\nMitigation: Confirm the plugin source, publisher, and version before approving installation or repair.\n\nRisk: Device removal, configuration changes, and Gateway restart can alter local state or interrupt service.\n\nMitigation: Proceed only after explicit user confirmation and only when the action matches the requested SmartPi task.\n\nRisk: Incorrect channel configuration can break message routing for SmartPi or other channels.\n\nMitigation: Read the full configuration first, preserve existing channel entries, and verify that channels.openclaw-smartpi matches the plugin channel id.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/fengseven777/skills/smartpi)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Configuration, Markdown]\n\n**Output Format:** [Markdown guidance with inline shell commands, JSON configuration examples, status summaries, and next-step recommendations]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Local-first troubleshooting; state-changing actions require user confirmation.]\n\n## Skill Version(s):\n\n1.0.8 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.7: 3 files, 6027 bytes\n\nFiles: _meta.json (126b), skill-card.md (2128b), skill.md (11943b)\n\nFile v1.0.7:skill.md\n\n---\nname: smartpi\ndescription: SmartPi 设备绑定、扫码、设备管理与连接故障排查。Use when the user mentions binding SmartPi, SmartPi QR code, 9002, SmartPi connection failure, listing SmartPi devices, or removing a SmartPi device.\nallowed-tools: terminal, read_file, grep, find_path\ncontext: local-first\n---\n\n# SmartPi \n\n帮助用户完成 SmartPi 插件安装检查、设备扫码绑定、设备列表查看、设备删除，以及 `9002` / 连接失败等常见问题排查。\n\n## 设计原则\n\n- **元信息负责触发**：`description` 必须直接覆盖用户常见说法，例如 SmartPi 绑定、二维码、9002、连接失败、查看设备、删除设备。\n- **正文负责执行**：按任务给出明确步骤、成功判定、失败分支和用户输出。\n- **本地优先**：优先使用本机 `openclaw` 命令、Gateway 配置和日志，不假设外部服务可用。\n- **最小副作用**：删除设备、安装插件、重启 Gateway、修改配置前必须说明影响并征得用户确认。\n\n## 触发条件\n\n当用户提出以下请求时使用本 Skill：\n\n- **绑定设备**：绑定 SmartPi、添加 SmartPi、生成 SmartPi 二维码、扫码绑定。\n- **设备管理**：查看 SmartPi 设备、列出已绑定设备、删除 SmartPi 设备。\n- **连接故障**：SmartPi 连接失败、设备不在线、WebSocket 断开。\n- **9002 故障**：用户看到 `9002`、`AI response timeout`、语音请求无响应或超时。\n- **插件配置**：安装 `openclaw-smartpi`、检查插件是否启用、修复 `channels.openclaw-smartpi`。\n\n## 不适用场景\n\n- 用户问题与 SmartPi、OpenClaw Gateway、`openclaw-smartpi` 插件无关。\n- 用户要求开发新功能、改插件源码或调试非 SmartPi 通道时，应转入代码分析/开发类流程。\n- 用户只询问泛化 IoT、语音识别或硬件设计知识时，不应直接执行 OpenClaw 命令。\n\n## 快速路由\n\n| 用户意图 | 首选流程 | 主要成功判定 |\n| --- | --- | --- |\n| 绑定/添加 SmartPi | [流程：绑定设备](#流程绑定设备) | 日志出现 `WebSocket connected: <deviceKey>` |\n| 查看/列出设备 | [流程：查看设备](#流程查看设备) | `accounts list` 返回设备列表 |\n| 查询设备连接状态 | [流程：查询设备连接状态](#流程查询设备连接状态) | `accounts status` 返回设备在线/离线状态 |\n| 删除设备 | [流程：删除设备](#流程删除设备) | 删除命令成功且列表不再包含该设备 |\n| 安装/启用插件 | [流程：首次安装或修复插件](#流程首次安装或修复插件) | `plugins list` 显示 `openclaw-smartpi: enabled` |\n| 9002/超时 | [流程：9002 排查](#流程9002-排查) | 定位为连接、路由或 AI 响应链路问题 |\n\n## 执行前检查\n\n在执行会改变状态的动作前，先确认用户意图是否明确。\n\n1. 检查 OpenClaw CLI 是否可用：`openclaw --help`\n2. 检查插件状态：`openclaw plugins list`\n3. 检查已绑定设备：`openclaw smartpi accounts list`\n4. 若需要修改配置，先读取完整配置，再构造完整 patch。\n\n## 流程：绑定设备\n\n### 目标\n\n生成 SmartPi 绑定二维码，让用户扫码绑定，并确认设备通过 WebSocket 上线。\n\n### 执行步骤\n\n1. 执行绑定命令：\n\n```bash\nopenclaw smartpi accounts bind\n```\n\n2. 从输出中提取 `绑定ID:` 后的 `bindingId`。\n3. 使用 `bindingId` 生成 `smartpi_qr.png`。\n4. 把二维码图片发给用户，并提示：`请用微信扫一扫，绑定成功后我会继续确认设备连接状态。`\n5. 等待 30-120 秒，检查日志中是否出现 `WebSocket connected: <deviceKey>`。\n6. 连接成功后告知用户：`设备已连接，可以对着 SmartPi 说话了。`\n\n### 二维码生成方式\n\n优先使用当前环境已经安装的二维码工具，不要为了生成二维码自动安装依赖。\n\nPython：\n\n```python\nimport qrcode\nbinding_id = \"REPLACE_WITH_ACTUAL_BINDING_ID\"\nqrcode.make(binding_id).save(\"smartpi_qr.png\")\n```\n\nNode.js：\n\n```bash\nnode -e \"const id=process.argv[1]; require('qrcode').toFile('smartpi_qr.png',id,{type:'png'},e=>e&&console.error(e))\" \"REPLACE_WITH_ACTUAL_BINDING_ID\"\n```\n\n### 成功判定\n\n- 已生成二维码并发送给用户。\n- 日志出现 `WebSocket connected: <deviceKey>`。\n- `openclaw smartpi accounts list` 能看到新设备。\n\n### 失败分支\n\n- **未提取到 `bindingId`**：反馈绑定命令输出异常，并展示关键输出让用户确认。\n- **二维码生成失败**：说明当前环境缺少二维码依赖，询问用户是否允许安装依赖或改用其他方式生成。\n- **120 秒内未连接**：转入 [流程：连接失败排查](#流程连接失败排查)。\n- **连接后仍不可用**：转入 [流程：9002 排查](#流程9002-排查)。\n\n## 流程：查看设备\n\n### 执行步骤\n\n```bash\nopenclaw smartpi accounts list\n```\n\n### 输出要求\n\n- 如果有设备，列出 `deviceKey`、在线状态或命令输出中的关键字段。\n- 如果没有设备，提示用户可以执行绑定流程。\n- 不要伪造设备状态；只根据命令输出和日志判断。\n\n## 流程：查询设备连接状态\n\n### 目标\n\n通过设备号查询指定设备的在线/离线连接状态。\n\n### 执行步骤\n\n1. 如果用户未提供设备号，先执行 `openclaw smartpi accounts list` 列出所有设备供用户选择。\n2. 获取设备号后，执行：\n\n```bash\nopenclaw smartpi accounts status <device_number>\n```\n\n### 输出要求\n\n- 根据命令输出，展示该设备的连接状态（在线/离线/未找到等）。\n- 如果设备未找到，提醒用户检查设备号是否正确。\n- 不要伪造状态；只根据命令输出和日志判断。\n\n### 成功判定\n\n- 命令返回设备连接状态（connected / disconnected / unknown 等）。\n- 结合日志关键字进一步判断设备是否正常通信。\n\n### 失败分支\n\n- **设备未找到**：提示用户检查设备号是否正确，可重新执行 `accounts list` 确认。\n- **命令执行失败**：展示错误信息，询问用户是否继续排查。\n\n## 流程：删除设备\n\n### 执行步骤\n\n1. 先列出现有设备：\n\n```bash\nopenclaw smartpi accounts list\n```\n\n2. 确认要删除的 `deviceKey`。\n3. 明确提醒用户：删除会解绑本地记录，并可能同步解绑云端。\n4. 用户确认后执行：\n\n```bash\nopenclaw smartpi accounts remove <deviceKey>\n```\n\n5. 再次执行 `accounts list` 验证设备已删除。\n\n### 安全规则\n\n- 删除设备前必须获得用户明确确认。\n- 如果用户没有提供 `deviceKey`，必须先列出设备并让用户选择。\n- 不要批量删除设备，除非用户明确要求并逐项确认。\n\n## 流程：首次安装或修复插件\n\n### 目标\n\n安装并启用 `openclaw-smartpi` 插件，确保 Gateway 能加载 SmartPi channel。\n\n### 执行步骤\n\n1. 检查插件状态：\n\n```bash\nopenclaw plugins list\n```\n\n2. 若插件未安装，征得用户确认后执行：\n\n```bash\nopenclaw plugins install openclaw-smartpi\n```\n\n3. 修改配置前，必须先读取完整配置。\n4. 保留已有 `plugins.allow` 和 `channels` 内容，只追加 openclaw-smartpi 所需项。\n5. 重启 Gateway 前说明影响，用户确认后执行：\n\n```bash\nopenclaw gateway restart\n```\n\n6. 重启后再次检查 `plugins list` 和日志。\n\n### 成功判定\n\n- `openclaw plugins list` 显示 `openclaw-smartpi: enabled`。\n- 配置中存在 `channels.openclaw-smartpi`。\n- 日志中没有 `cannot resolve agentId`。\n\n## 流程：连接失败排查\n\n### 排查顺序\n\n1. 检查插件是否启用：`openclaw plugins list`\n2. 检查账号是否存在：`openclaw smartpi accounts list`\n3. 检查日志是否出现 `WebSocket connected`\n4. 检查日志是否出现 `WebSocket disconnected`\n5. 检查网络、设备扫码是否完成、绑定是否过期。\n6. 若日志出现 `cannot resolve agentId`，检查 `channels.openclaw-smartpi`。\n\n### 输出要求\n\n- 先说明当前卡在哪一层：插件、账号、WebSocket、路由、AI 响应。\n- 每次只给用户一个明确下一步，不要同时抛出大量可能原因。\n\n## 流程：9002 排查\n\n`9002` 表示 AI 未在限定时间内回复。不要直接假设是设备坏了，应按链路排查。\n\n### 排查顺序\n\n1. 插件状态：`openclaw plugins list`，确认 `openclaw-smartpi: enabled`。\n2. 设备绑定：`openclaw smartpi accounts list`，确认存在设备。\n3. 设备连接：查日志 `WebSocket connected`，确认设备在线。\n4. 路由配置：查日志 `cannot resolve agentId`，确认 `channels.openclaw-smartpi` 存在。\n5. AI 响应：向 OpenClaw 发一条文本，确认本地模型、MCP、Tools 是否响应过慢。\n6. 超时日志：查 `AI response timeout`，判断是否由模型慢、MCP 阻塞或工具调用卡住导致。\n\n### 常见结论\n\n- **插件未启用**：修复插件安装或配置。\n- **没有绑定设备**：引导用户走绑定流程。\n- **WebSocket 未连接**：检查扫码、网络和绑定状态。\n- **`cannot resolve agentId`**：修复 `channels.openclaw-smartpi`。\n- **文本请求也慢**：优先排查本地模型、MCP、Tools，而不是 SmartPi 设备。\n\n## 硬性规则\n\n### `plugins.allow` 是整体替换\n\n`config.patch` 对数组是整体替换，不是追加。修改前必须先读取当前完整配置，构造包含原有插件和 `openclaw-smartpi` 的完整数组后再 patch。\n\n### `channels` 是整体替换\n\n不要只 patch `channels.openclaw-smartpi`。这可能覆盖掉已有 channel，例如 `discord`、`telegram`。必须保留所有已有 `channels`，再追加 `openclaw-smartpi`。\n\n### `channel.id` 必须匹配\n\n插件内部 `channel.id = \"openclaw-smartpi\"`，配置中必须是 `channels.openclaw-smartpi`，一字不差。否则消息无法路由，常见日志为 `cannot resolve agentId`。\n\n### 配置示例\n\n```json\n{\n  \"channels\": {\n    \"openclaw-smartpi\": {\n      \"enabled\": true,\n      \"defaultAgentId\": \"main\"\n    }\n  }\n}\n```\n\n## 用户沟通规范\n\n- **先说明动作**：执行命令前，用一句话说明要检查什么。\n- **展示关键结果**：只摘取插件状态、设备 ID、日志关键字等必要信息。\n- **区分事实和推测**：没有日志证据时，不要断言设备在线或离线。\n- **需要确认时暂停**：安装、删除、重启、配置修改前必须等待用户确认。\n- **失败时给下一步**：不要只说失败，要说明下一步检查命令或需要用户提供的信息。\n\n## 常用命令\n\n| 命令 | 用途 | 风险 |\n| --- | --- | --- |\n| `openclaw --help` | 检查 CLI 是否可用 | 只读 |\n| `openclaw plugins list` | 确认插件状态 | 只读 |\n| `openclaw smartpi accounts list` | 查看已绑定设备 | 只读 |\n| `openclaw smartpi accounts status <device_number>` | 查询指定设备连接状态 | 只读 |\n| `openclaw smartpi accounts bind` | 扫码绑定新设备 | 创建绑定 |\n| `openclaw smartpi accounts remove <deviceKey>` | 删除设备并解绑 | 高风险 |\n| `openclaw plugins install openclaw-smartpi` | 安装插件 | 修改环境 |\n| `openclaw gateway restart` | 重启 Gateway | 中断服务 |\n\n## 日志关键字\n\n| 关键字 | 含义 | 下一步 |\n| --- | --- | --- |\n| `WebSocket connected` | 设备已上线 | 验证设备列表和语音交互 |\n| `WebSocket disconnected` | 设备断开 | 检查网络、设备状态、绑定状态 |\n| `cannot resolve agentId` | 缺少或错误配置 `channels.openclaw-smartpi` | 修复 channels 配置 |\n| `AI response timeout` | AI 响应超时，可能导致 `9002` | 排查模型、MCP、Tools 响应链路 |\n\n## 最小完成标准\n\n每次使用本 Skill 后，最终回复必须包含：\n\n- **当前状态**：已绑定、已连接、未连接、未安装、配置异常或超时。\n- **证据来源**：命令输出、日志关键字或用户提供的信息。\n- **下一步**：如果未解决，明确下一条建议动作。\n\nFile v1.0.7:_meta.json\n\n{\n  \"ownerId\": \"kn72bjnwex9cmswhrh2b11zj15837qpb\",\n  \"slug\": \"smartpi\",\n  \"version\": \"1.0.7\",\n  \"publishedAt\": 1779853965579\n}\n\nFile v1.0.7:skill-card.md\n\n## Description: <br>\nHelps agents manage SmartPi device binding, QR-code setup, device listing and status checks, removal, plugin configuration, and 9002 or connection failure troubleshooting. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[fengseven777](https://clawhub.ai/user/fengseven777) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and operators use this skill to guide OpenClaw SmartPi setup and support tasks, including binding devices, checking online status, managing accounts, installing or enabling the plugin, and troubleshooting connection or 9002 timeout issues. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Plugin installation, configuration edits, gateway restarts, and device removal can change or interrupt an OpenClaw setup. <br>\nMitigation: Review proposed commands and require explicit user approval before any state-changing action. <br>\nRisk: Device status or troubleshooting conclusions could be inaccurate if inferred without command output or log evidence. <br>\nMitigation: Report only statuses supported by OpenClaw command output, SmartPi account data, or relevant log keywords. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/fengseven777/smartpi) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, code, guidance] <br>\n**Output Format:** [Markdown guidance with inline shell commands, configuration snippets, short code snippets, and status summaries.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Prompts for confirmation before plugin installation, configuration changes, gateway restarts, or device removal.] <br>\n\n## Skill Version(s): <br>\n1.0.7 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.6: 3 files, 5742 bytes\n\nFiles: _meta.json (126b), skill-card.md (2206b), skill.md (10724b)\n\nFile v1.0.6:skill.md\n\n---\nname: smartpi\ndescription: SmartPi 设备绑定、扫码、设备管理与连接故障排查。Use when the user mentions binding SmartPi, SmartPi QR code, 9002, SmartPi connection failure, listing SmartPi devices, or removing a SmartPi device.\nallowed-tools: terminal, read_file, grep, find_path\ncontext: local-first\n---\n\n# SmartPi \n\n帮助用户完成 SmartPi 插件安装检查、设备扫码绑定、设备列表查看、设备删除，以及 `9002` / 连接失败等常见问题排查。\n\n## 设计原则\n\n- **元信息负责触发**：`description` 必须直接覆盖用户常见说法，例如 SmartPi 绑定、二维码、9002、连接失败、查看设备、删除设备。\n- **正文负责执行**：按任务给出明确步骤、成功判定、失败分支和用户输出。\n- **本地优先**：优先使用本机 `openclaw` 命令、Gateway 配置和日志，不假设外部服务可用。\n- **最小副作用**：删除设备、安装插件、重启 Gateway、修改配置前必须说明影响并征得用户确认。\n\n## 触发条件\n\n当用户提出以下请求时使用本 Skill：\n\n- **绑定设备**：绑定 SmartPi、添加 SmartPi、生成 SmartPi 二维码、扫码绑定。\n- **设备管理**：查看 SmartPi 设备、列出已绑定设备、删除 SmartPi 设备。\n- **连接故障**：SmartPi 连接失败、设备不在线、WebSocket 断开。\n- **9002 故障**：用户看到 `9002`、`AI response timeout`、语音请求无响应或超时。\n- **插件配置**：安装 `openclaw-smartpi`、检查插件是否启用、修复 `channels.openclaw-smartpi`。\n\n## 不适用场景\n\n- 用户问题与 SmartPi、OpenClaw Gateway、`openclaw-smartpi` 插件无关。\n- 用户要求开发新功能、改插件源码或调试非 SmartPi 通道时，应转入代码分析/开发类流程。\n- 用户只询问泛化 IoT、语音识别或硬件设计知识时，不应直接执行 OpenClaw 命令。\n\n## 快速路由\n\n| 用户意图 | 首选流程 | 主要成功判定 |\n| --- | --- | --- |\n| 绑定/添加 SmartPi | [流程：绑定设备](#流程绑定设备) | 日志出现 `WebSocket connected: <deviceKey>` |\n| 查看/列出设备 | [流程：查看设备](#流程查看设备) | `accounts list` 返回设备列表 |\n| 删除设备 | [流程：删除设备](#流程删除设备) | 删除命令成功且列表不再包含该设备 |\n| 安装/启用插件 | [流程：首次安装或修复插件](#流程首次安装或修复插件) | `plugins list` 显示 `openclaw-smartpi: enabled` |\n| 9002/超时 | [流程：9002 排查](#流程9002-排查) | 定位为连接、路由或 AI 响应链路问题 |\n\n## 执行前检查\n\n在执行会改变状态的动作前，先确认用户意图是否明确。\n\n1. 检查 OpenClaw CLI 是否可用：`openclaw --help`\n2. 检查插件状态：`openclaw plugins list`\n3. 检查已绑定设备：`openclaw smartpi accounts list`\n4. 若需要修改配置，先读取完整配置，再构造完整 patch。\n\n## 流程：绑定设备\n\n### 目标\n\n生成 SmartPi 绑定二维码，让用户扫码绑定，并确认设备通过 WebSocket 上线。\n\n### 执行步骤\n\n1. 执行绑定命令：\n\n```bash\nopenclaw smartpi accounts bind\n```\n\n2. 从输出中提取 `绑定ID:` 后的 `bindingId`。\n3. 使用 `bindingId` 生成 `smartpi_qr.png`。\n4. 把二维码图片发给用户，并提示：`请用微信扫一扫，绑定成功后我会继续确认设备连接状态。`\n5. 等待 30-120 秒，检查日志中是否出现 `WebSocket connected: <deviceKey>`。\n6. 连接成功后告知用户：`设备已连接，可以对着 SmartPi 说话了。`\n\n### 二维码生成方式\n\n优先使用当前环境已经安装的二维码工具，不要为了生成二维码自动安装依赖。\n\nPython：\n\n```python\nimport qrcode\nbinding_id = \"REPLACE_WITH_ACTUAL_BINDING_ID\"\nqrcode.make(binding_id).save(\"smartpi_qr.png\")\n```\n\nNode.js：\n\n```bash\nnode -e \"const id=process.argv[1]; require('qrcode').toFile('smartpi_qr.png',id,{type:'png'},e=>e&&console.error(e))\" \"REPLACE_WITH_ACTUAL_BINDING_ID\"\n```\n\n### 成功判定\n\n- 已生成二维码并发送给用户。\n- 日志出现 `WebSocket connected: <deviceKey>`。\n- `openclaw smartpi accounts list` 能看到新设备。\n\n### 失败分支\n\n- **未提取到 `bindingId`**：反馈绑定命令输出异常，并展示关键输出让用户确认。\n- **二维码生成失败**：说明当前环境缺少二维码依赖，询问用户是否允许安装依赖或改用其他方式生成。\n- **120 秒内未连接**：转入 [流程：连接失败排查](#流程连接失败排查)。\n- **连接后仍不可用**：转入 [流程：9002 排查](#流程9002-排查)。\n\n## 流程：查看设备\n\n### 执行步骤\n\n```bash\nopenclaw smartpi accounts list\n```\n\n### 输出要求\n\n- 如果有设备，列出 `deviceKey`、在线状态或命令输出中的关键字段。\n- 如果没有设备，提示用户可以执行绑定流程。\n- 不要伪造设备状态；只根据命令输出和日志判断。\n\n## 流程：删除设备\n\n### 执行步骤\n\n1. 先列出现有设备：\n\n```bash\nopenclaw smartpi accounts list\n```\n\n2. 确认要删除的 `deviceKey`。\n3. 明确提醒用户：删除会解绑本地记录，并可能同步解绑云端。\n4. 用户确认后执行：\n\n```bash\nopenclaw smartpi accounts remove <deviceKey>\n```\n\n5. 再次执行 `accounts list` 验证设备已删除。\n\n### 安全规则\n\n- 删除设备前必须获得用户明确确认。\n- 如果用户没有提供 `deviceKey`，必须先列出设备并让用户选择。\n- 不要批量删除设备，除非用户明确要求并逐项确认。\n\n## 流程：首次安装或修复插件\n\n### 目标\n\n安装并启用 `openclaw-smartpi` 插件，确保 Gateway 能加载 SmartPi channel。\n\n### 执行步骤\n\n1. 检查插件状态：\n\n```bash\nopenclaw plugins list\n```\n\n2. 若插件未安装，征得用户确认后执行：\n\n```bash\nopenclaw plugins install openclaw-smartpi\n```\n\n3. 修改配置前，必须先读取完整配置。\n4. 保留已有 `plugins.allow` 和 `channels` 内容，只追加 SmartPi 所需项。\n5. 重启 Gateway 前说明影响，用户确认后执行：\n\n```bash\nopenclaw gateway restart\n```\n\n6. 重启后再次检查 `plugins list` 和日志。\n\n### 成功判定\n\n- `openclaw plugins list` 显示 `openclaw-smartpi: enabled`。\n- 配置中存在 `channels.openclaw-smartpi`。\n- 日志中没有 `cannot resolve agentId`。\n\n## 流程：连接失败排查\n\n### 排查顺序\n\n1. 检查插件是否启用：`openclaw plugins list`\n2. 检查账号是否存在：`openclaw smartpi accounts list`\n3. 检查日志是否出现 `WebSocket connected`\n4. 检查日志是否出现 `WebSocket disconnected`\n5. 检查网络、设备扫码是否完成、绑定是否过期。\n6. 若日志出现 `cannot resolve agentId`，检查 `channels.openclaw-smartpi`。\n\n### 输出要求\n\n- 先说明当前卡在哪一层：插件、账号、WebSocket、路由、AI 响应。\n- 每次只给用户一个明确下一步，不要同时抛出大量可能原因。\n\n## 流程：9002 排查\n\n`9002` 表示 AI 未在限定时间内回复。不要直接假设是设备坏了，应按链路排查。\n\n### 排查顺序\n\n1. 插件状态：`openclaw plugins list`，确认 `openclaw-smartpi: enabled`。\n2. 设备绑定：`openclaw smartpi accounts list`，确认存在设备。\n3. 设备连接：查日志 `WebSocket connected`，确认设备在线。\n4. 路由配置：查日志 `cannot resolve agentId`，确认 `channels.openclaw-smartpi` 存在。\n5. AI 响应：向 OpenClaw 发一条文本，确认本地模型、MCP、Tools 是否响应过慢。\n6. 超时日志：查 `AI response timeout`，判断是否由模型慢、MCP 阻塞或工具调用卡住导致。\n\n### 常见结论\n\n- **插件未启用**：修复插件安装或配置。\n- **没有绑定设备**：引导用户走绑定流程。\n- **WebSocket 未连接**：检查扫码、网络和绑定状态。\n- **`cannot resolve agentId`**：修复 `channels.openclaw-smartpi`。\n- **文本请求也慢**：优先排查本地模型、MCP、Tools，而不是 SmartPi 设备。\n\n## 硬性规则\n\n### `plugins.allow` 是整体替换\n\n`config.patch` 对数组是整体替换，不是追加。修改前必须先读取当前完整配置，构造包含原有插件和 `openclaw-smartpi` 的完整数组后再 patch。\n\n### `channels` 是整体替换\n\n不要只 patch `channels.openclaw-smartpi`。这可能覆盖掉已有 channel，例如 `discord`、`telegram`。必须保留所有已有 `channels`，再追加 `openclaw-smartpi`。\n\n### `channel.id` 必须匹配\n\n插件内部 `channel.id = \"openclaw-smartpi\"`，配置中必须是 `channels.openclaw-smartpi`，一字不差。否则消息无法路由，常见日志为 `cannot resolve agentId`。\n\n### 配置示例\n\n```json\n{\n  \"channels\": {\n    \"openclaw-smartpi\": {\n      \"enabled\": true,\n      \"defaultAgentId\": \"main\"\n    }\n  }\n}\n```\n\n## 用户沟通规范\n\n- **先说明动作**：执行命令前，用一句话说明要检查什么。\n- **展示关键结果**：只摘取插件状态、设备 ID、日志关键字等必要信息。\n- **区分事实和推测**：没有日志证据时，不要断言设备在线或离线。\n- **需要确认时暂停**：安装、删除、重启、配置修改前必须等待用户确认。\n- **失败时给下一步**：不要只说失败，要说明下一步检查命令或需要用户提供的信息。\n\n## 常用命令\n\n| 命令 | 用途 | 风险 |\n| --- | --- | --- |\n| `openclaw --help` | 检查 CLI 是否可用 | 只读 |\n| `openclaw plugins list` | 确认插件状态 | 只读 |\n| `openclaw smartpi accounts list` | 查看已绑定设备 | 只读 |\n| `openclaw smartpi accounts bind` | 扫码绑定新设备 | 创建绑定 |\n| `openclaw smartpi accounts remove <deviceKey>` | 删除设备并解绑 | 高风险 |\n| `openclaw plugins install openclaw-smartpi` | 安装插件 | 修改环境 |\n| `openclaw gateway restart` | 重启 Gateway | 中断服务 |\n\n## 日志关键字\n\n| 关键字 | 含义 | 下一步 |\n| --- | --- | --- |\n| `WebSocket connected` | 设备已上线 | 验证设备列表和语音交互 |\n| `WebSocket disconnected` | 设备断开 | 检查网络、设备状态、绑定状态 |\n| `cannot resolve agentId` | 缺少或错误配置 `channels.openclaw-smartpi` | 修复 channels 配置 |\n| `AI response timeout` | AI 响应超时，可能导致 `9002` | 排查模型、MCP、Tools 响应链路 |\n\n## 最小完成标准\n\n每次使用本 Skill 后，最终回复必须包含：\n\n- **当前状态**：已绑定、已连接、未连接、未安装、配置异常或超时。\n- **证据来源**：命令输出、日志关键字或用户提供的信息。\n- **下一步**：如果未解决，明确下一条建议动作。\n\nFile v1.0.6:_meta.json\n\n{\n  \"ownerId\": \"kn72bjnwex9cmswhrh2b11zj15837qpb\",\n  \"slug\": \"smartpi\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1779792578945\n}\n\nFile v1.0.6:skill-card.md\n\n## Description: <br>\nGuides SmartPi device binding, QR-code setup, device management, and troubleshooting for connection failures and 9002 timeout errors in OpenClaw. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[fengseven777](https://clawhub.ai/user/fengseven777) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users, developers, and operators use this skill to bind SmartPi devices, inspect or remove linked devices, enable the openclaw-smartpi plugin, and troubleshoot OpenClaw Gateway routing, WebSocket connection, and AI timeout issues. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can guide local OpenClaw CLI checks and state-changing actions such as plugin installation, Gateway restart, configuration patching, or SmartPi device removal. <br>\nMitigation: Review command prompts carefully and require explicit user confirmation before any install, restart, config change, or removal action. <br>\nRisk: Incorrect SmartPi channel configuration can disrupt message routing or hide the real cause of 9002 timeout failures. <br>\nMitigation: Read the complete configuration before patching and preserve existing channels and plugin allowlists while adding openclaw-smartpi settings. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/fengseven777/smartpi) <br>\n- [Publisher profile](https://clawhub.ai/user/fengseven777) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [guidance, shell commands, configuration] <br>\n**Output Format:** [Markdown with inline shell commands and configuration snippets] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Prompts the user for confirmation before plugin installs, Gateway restarts, config patches, or device removals.] <br>\n\n## Skill Version(s): <br>\n1.0.6 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.5: 3 files, 5033 bytes\n\nFiles: _meta.json (126b), skill-card.md (2550b), skill.md (9160b)\n\nFile v1.0.5:skill.md\n\n---\r\nname: openclaw-smartpi-setup\r\ndescription: SmartPi 设备绑定、扫码、设备管理与连接故障排查。Use when the user mentions binding SmartPi, SmartPi QR code, 9002, SmartPi connection failure, listing SmartPi devices, or removing a SmartPi device.\r\nallowed-tools: terminal, read_file, grep, find_path\r\ncontext: local-first\r\n---\r\n\r\n# OpenClaw SmartPi Setup\r\n\r\n用于处理 SmartPi 插件安装检查、扫码绑定、设备管理、连接失败和 `9002` 超时问题。\r\n\r\n## 触发条件\r\n\r\n- 绑定/添加 SmartPi、生成二维码、扫码绑定。\r\n- 查看、列出或删除 SmartPi 设备。\r\n- SmartPi 连接失败、设备不在线、WebSocket 断开。\r\n- 出现 `9002`、`AI response timeout`、语音请求超时。\r\n- 安装、启用或修复 `openclaw-smartpi` 插件配置。\r\n\r\n---\r\n\r\n# 快速流程\r\n\r\n## 绑定设备\r\n\r\n1. 执行：\r\n\r\n```bash\r\nopenclaw smartpi accounts bind\r\n```\r\n\r\n2. 从输出提取：\r\n\r\n```text\r\n绑定ID:\r\n```\r\n\r\n后面的真实 `bindingId`。\r\n\r\n3. 必须使用真实 `bindingId` 生成二维码。\r\n\r\n禁止：\r\n- 把 `\"bindingId\"` 当作二维码内容\r\n- 把 `\"REPLACE_WITH_ACTUAL_BINDING_ID\"` 写入二维码\r\n- 使用变量名、占位符或示例字符串生成二维码\r\n\r\n二维码示例：\r\n\r\n```python\r\nimport qrcode\r\nbinding_id = \"REPLACE_WITH_ACTUAL_BINDING_ID\"\r\nqrcode.make(binding_id).save(\"smartpi_qr.png\")\r\n```\r\n\r\n```bash\r\nnode -e \"const id=process.argv[1]; require('qrcode').toFile('smartpi_qr.png',id,{type:'png'},e=>e&&console.error(e))\" \"REPLACE_WITH_ACTUAL_BINDING_ID\"\r\n```\r\n\r\n4. 二维码生成后，必须通过 `MEDIA` 标签发送图片。\r\n\r\n示例：\r\n\r\n```text\r\n<MEDIA file=\"smartpi_qr.png\" />\r\n```\r\n\r\n不要：\r\n- 只发送文件路径\r\n- 只发送 markdown 图片\r\n- 只发送 base64\r\n- 只描述“二维码已生成”\r\n\r\n5. 提示用户使用微信扫码绑定。\r\n\r\n6. 明确要求用户在扫码完成后回复：\r\n\r\n- “扫码完成”\r\n- “已扫码”\r\n- “绑定完成”\r\n\r\n或其他明确确认语句。\r\n\r\n7. 在用户明确确认扫码完成前：\r\n\r\n禁止：\r\n- 执行 `openclaw gateway restart`\r\n- 声称设备绑定成功\r\n- 假设用户已经扫码\r\n- 自动进入连接成功流程\r\n\r\n8. 收到用户确认后，再执行：\r\n\r\n```bash\r\nopenclaw gateway restart\r\n```\r\n\r\n9. 等待 30-120 秒。\r\n\r\n10. 检查日志是否出现：\r\n\r\n```text\r\nWebSocket connected: <deviceKey>\r\n```\r\n\r\n11. 只有日志出现：\r\n\r\n```text\r\nWebSocket connected\r\n```\r\n\r\n才能认定设备真正上线。\r\n\r\n仅生成二维码不代表绑定成功。\r\n\r\n12. 如果：\r\n\r\n- 提取不到 `bindingId`\r\n- 二维码生成失败\r\n- 用户未确认扫码\r\n- 重启后 120 秒仍未连接\r\n\r\n则说明失败点，并进入连接排查流程。\r\n\r\n---\r\n\r\n## 查看设备\r\n\r\n执行：\r\n\r\n```bash\r\nopenclaw smartpi accounts list\r\n```\r\n\r\n只根据命令输出和日志判断设备状态。\r\n\r\n禁止：\r\n- 伪造在线状态\r\n- 猜测设备已连接\r\n- 在没有日志证据时声称设备在线\r\n\r\n---\r\n\r\n## 删除设备\r\n\r\n1. 先执行：\r\n\r\n```bash\r\nopenclaw smartpi accounts list\r\n```\r\n\r\n获取 `deviceKey`。\r\n\r\n2. 告知用户：\r\n\r\n删除会解绑本地记录，并可能同步解绑云端。\r\n\r\n3. 必须获得用户明确确认后，再执行：\r\n\r\n```bash\r\nopenclaw smartpi accounts remove <deviceKey>\r\n```\r\n\r\n4. 再次执行：\r\n\r\n```bash\r\nopenclaw smartpi accounts list\r\n```\r\n\r\n验证结果。\r\n\r\n禁止：\r\n- 未确认直接删除\r\n- 自动清理设备\r\n- 猜测用户想删除哪个设备\r\n\r\n---\r\n\r\n## 安装或修复插件\r\n\r\n1. 检查插件：\r\n\r\n```bash\r\nopenclaw plugins list\r\n```\r\n\r\n2. 如果插件未安装：\r\n\r\n先询问用户确认。\r\n\r\n确认后执行：\r\n\r\n```bash\r\nopenclaw plugins install openclaw-smartpi\r\n```\r\n\r\n3. 修改配置前：\r\n\r\n必须先读取完整配置。\r\n\r\n4. 保留已有：\r\n\r\n- `plugins.allow`\r\n- `channels`\r\n- 其他已有字段\r\n\r\n只能追加 SmartPi 配置。\r\n\r\n禁止：\r\n- 覆盖整个配置文件\r\n- 生成只包含 SmartPi 的最小配置\r\n- 删除已有 channels\r\n- 删除已有 plugins.allow\r\n\r\n5. 重启前：\r\n\r\n必须先告知用户会中断服务。\r\n\r\n获得确认后执行：\r\n\r\n```bash\r\nopenclaw gateway restart\r\n```\r\n\r\n6. 再次检查：\r\n\r\n```bash\r\nopenclaw plugins list\r\n```\r\n\r\n确认：\r\n\r\n```text\r\nopenclaw-smartpi: enabled\r\n```\r\n\r\n7. 同时检查日志没有：\r\n\r\n```text\r\ncannot resolve agentId\r\n```\r\n\r\n---\r\n\r\n# 9002 / 连接失败排查\r\n\r\n按顺序检查：\r\n\r\n1. 执行：\r\n\r\n```bash\r\nopenclaw plugins list\r\n```\r\n\r\n确认：\r\n\r\n```text\r\nopenclaw-smartpi: enabled\r\n```\r\n\r\n如果插件未启用：\r\n\r\n先修复插件问题。\r\n\r\n不要继续排查设备。\r\n\r\n---\r\n\r\n2. 执行：\r\n\r\n```bash\r\nopenclaw smartpi accounts list\r\n```\r\n\r\n确认存在已绑定设备。\r\n\r\n如果没有设备：\r\n\r\n先重新绑定。\r\n\r\n不要继续排查 timeout。\r\n\r\n---\r\n\r\n3. 检查日志：\r\n\r\n```text\r\nWebSocket connected\r\n```\r\n\r\n确认设备是否真正在线。\r\n\r\n---\r\n\r\n4. 检查日志：\r\n\r\n```text\r\ncannot resolve agentId\r\n```\r\n\r\n如果存在：\r\n\r\n检查：\r\n\r\n```json\r\n{\r\n  \"channels\": {\r\n    \"openclaw-smartpi\": {\r\n      \"enabled\": true,\r\n      \"defaultAgentId\": \"main\"\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n注意：\r\n\r\n插件内部：\r\n\r\n```text\r\nchannel.id = \"openclaw-smartpi\"\r\n```\r\n\r\n配置必须使用：\r\n\r\n```text\r\nchannels.openclaw-smartpi\r\n```\r\n\r\n否则会导致：\r\n\r\n```text\r\ncannot resolve agentId\r\n```\r\n\r\n---\r\n\r\n5. 向 OpenClaw 发送一条简单文本。\r\n\r\n用于判断：\r\n\r\n- 本地模型是否响应\r\n- MCP 是否阻塞\r\n- Tool 是否卡死\r\n- Agent 是否推理过慢\r\n\r\n---\r\n\r\n6. 检查日志：\r\n\r\n```text\r\nAI response timeout\r\n```\r\n\r\n常见原因：\r\n\r\n- 模型响应过慢\r\n- MCP Tool 阻塞\r\n- Tool 死锁\r\n- 长时间函数调用\r\n- Agent 推理时间过长\r\n\r\n---\r\n\r\n# 9002 重要说明\r\n\r\n`9002` 不等于设备离线。\r\n\r\n如果日志已经出现：\r\n\r\n```text\r\nWebSocket connected\r\n```\r\n\r\n则优先排查：\r\n\r\n- AI 模型速度\r\n- MCP Tool\r\n- Tool 阻塞\r\n- Agent 推理耗时\r\n- 本地服务卡顿\r\n\r\n不要直接要求用户重新扫码。\r\n\r\n---\r\n\r\n# 日志排查规则\r\n\r\n排查问题时：\r\n\r\n- 优先查看最近 100-300 行日志\r\n- 同时搜索：\r\n  - `WebSocket`\r\n  - `agentId`\r\n  - `timeout`\r\n  - `smartpi`\r\n\r\n不要只依据单一关键字下结论。\r\n\r\n不要只查看最后几行日志。\r\n\r\n---\r\n\r\n# 配置硬规则\r\n\r\n## plugins.allow\r\n\r\n`plugins.allow` 是整体替换，不是追加。\r\n\r\n修改前必须：\r\n- 读取完整配置\r\n- 保留所有已有插件\r\n\r\n禁止覆盖已有插件列表。\r\n\r\n---\r\n\r\n## channels\r\n\r\n`channels` 是整体替换。\r\n\r\n禁止只 patch：\r\n\r\n```text\r\nchannels.openclaw-smartpi\r\n```\r\n\r\n必须保留所有已有 channels。\r\n\r\n---\r\n\r\n## channel.id\r\n\r\n插件内部：\r\n\r\n```text\r\nchannel.id = \"openclaw-smartpi\"\r\n```\r\n\r\n配置必须：\r\n\r\n```json\r\n{\r\n  \"channels\": {\r\n    \"openclaw-smartpi\": {\r\n      \"enabled\": true,\r\n      \"defaultAgentId\": \"main\"\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n否则会导致：\r\n\r\n```text\r\ncannot resolve agentId\r\n```\r\n\r\n---\r\n\r\n# MEDIA 发送规则\r\n\r\n二维码图片必须通过 `MEDIA` 标签发送。\r\n\r\n示例：\r\n\r\n```text\r\n<MEDIA file=\"smartpi_qr.png\" />\r\n```\r\n\r\n不要：\r\n- 只发送图片路径\r\n- 只发送 markdown 图片\r\n- 只描述二维码已生成\r\n- 只输出 base64\r\n\r\n---\r\n\r\n# Gateway 重启规则\r\n\r\n重启 Gateway 前必须确认：\r\n\r\n- 用户已经扫码\r\n- 用户明确回复扫码完成\r\n- bindingId 未过期\r\n- 当前绑定流程仍有效\r\n\r\n如果 restart 后设备未连接：\r\n\r\n禁止：\r\n- 无限循环 restart\r\n- 连续自动重启 Gateway\r\n\r\n必须：\r\n- 先查看日志\r\n- 判断失败原因\r\n- 再决定下一步动作\r\n\r\n---\r\n\r\n# 禁止行为\r\n\r\n禁止：\r\n\r\n- 伪造设备在线状态\r\n- 假设二维码已被扫码\r\n- 在没有日志证据时声称绑定成功\r\n- 覆盖整个 OpenClaw 配置\r\n- 未确认直接删除设备\r\n- 把 `9002` 直接等同于设备离线\r\n- 自动无限重启 Gateway\r\n- 跳过日志检查直接下结论\r\n\r\n---\r\n\r\n# 命令速查\r\n\r\n| 命令 | 用途 | 风险 |\r\n| --- | --- | --- |\r\n| `openclaw plugins list` | 查看插件状态 | 只读 |\r\n| `openclaw smartpi accounts list` | 查看设备 | 只读 |\r\n| `openclaw smartpi accounts bind` | 创建扫码绑定 | 创建绑定 |\r\n| `openclaw smartpi accounts remove <deviceKey>` | 删除设备 | 高风险 |\r\n| `openclaw plugins install openclaw-smartpi` | 安装插件 | 修改环境 |\r\n| `openclaw gateway restart` | 重启 Gateway | 中断服务 |\r\n\r\n---\r\n\r\n# 日志速查\r\n\r\n| 关键字 | 含义 |\r\n| --- | --- |\r\n| `WebSocket connected` | 设备已上线 |\r\n| `WebSocket disconnected` | 设备断开 |\r\n| `cannot resolve agentId` | 缺少或错误配置 `channels.openclaw-smartpi` |\r\n| `AI response timeout` | AI 响应超时，可能导致 `9002` |\r\n\r\n---\r\n\r\n# 完成回复\r\n\r\n最终回复用户时必须说明：\r\n\r\n- 当前状态：\r\n  - 已连接\r\n  - 未连接\r\n  - 未安装\r\n  - 配置异常\r\n  - AI 超时\r\n  - 等待扫码\r\n  等明确状态\r\n\r\n- 证据来源：\r\n  - 命令输出\r\n  - 日志关键字\r\n  - 用户确认信息\r\n\r\n- 下一步动作：\r\n  - 用户需要做什么\r\n  - 或下一条排查建议\r\n\r\n禁止：\r\n- 在没有证据时宣称问题已解决\r\n- 给出模糊状态\r\n- 跳过下一步建议\n\nFile v1.0.5:_meta.json\n\n{\n  \"ownerId\": \"kn72bjnwex9cmswhrh2b11zj15837qpb\",\n  \"slug\": \"smartpi\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1779789181068\n}\n\nFile v1.0.5:skill-card.md\n\n## Description: <br>\nSmartPi device binding, QR-code setup, device management, and connection troubleshooting for OpenClaw SmartPi workflows. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[fengseven777](https://clawhub.ai/user/fengseven777) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and operators use this skill to bind SmartPi devices, generate and send binding QR codes, list or remove devices, install or repair the OpenClaw SmartPi plugin, and troubleshoot WebSocket, agentId, timeout, and 9002 connection issues. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can guide an agent to remove SmartPi devices, install plugins, modify OpenClaw configuration, or restart the gateway. <br>\nMitigation: Require explicit user confirmation before device removal, plugin installation, configuration changes, or service restarts, and review prompts before approving those actions. <br>\nRisk: Incorrect binding or troubleshooting conclusions could misstate device status or lead to unnecessary restarts. <br>\nMitigation: Use command output, recent logs, and explicit user scan confirmation as the evidence for status claims; do not treat QR generation alone as a successful binding. <br>\nRisk: Configuration edits can disrupt existing OpenClaw plugins or channels if existing settings are overwritten. <br>\nMitigation: Read the full existing configuration first and preserve existing plugins.allow entries, channels, and other fields when adding SmartPi settings. <br>\n\n\n## Reference(s): <br>\n- [ClawHub release page](https://clawhub.ai/fengseven777/smartpi) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown with inline shell commands, JSON configuration snippets, status summaries, and MEDIA-tag instructions for QR-code images.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Final responses should state the current device or plugin state, cite command output, logs, or user confirmation as evidence, and provide a precise next action.] <br>\n\n## Skill Version(s): <br>\n1.0.5 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.4: 3 files, 3512 bytes\n\nFiles: _meta.json (126b), skill-card.md (1671b), SKILL.md (4621b)\n\nFile v1.0.4:SKILL.md\n\n---\nname: smartpi\ndescription: SmartPi 设备绑定、扫码、设备管理与连接故障排查。Use when the user mentions binding SmartPi, SmartPi QR code, 9002, SmartPi connection failure, listing SmartPi devices, or removing a SmartPi device.\nallowed-tools: terminal, read_file, grep, find_path\ncontext: local-first\n---\n\n# smartpi\n\n用于处理 SmartPi 插件安装检查、扫码绑定、设备管理、连接失败和 `9002` 超时问题。\n\n## 触发条件\n\n- 绑定/添加 SmartPi、生成二维码、扫码绑定。\n- 查看、列出或删除 SmartPi 设备。\n- SmartPi 连接失败、设备不在线、WebSocket 断开。\n- 出现 `9002`、`AI response timeout`、语音请求超时。\n- 安装、启用或修复 `openclaw-smartpi` 插件配置。\n\n## 快速流程\n\n### 绑定设备\n\n1. 执行 `openclaw smartpi accounts bind`。\n2. 从输出提取 `绑定ID:` 后的 `bindingId`。\n3. 用 `bindingId` 生成 `smartpi_qr.png`，不要把字符串 `\"bindingId\"` 当作二维码内容。\n4. 发送二维码给用户，提示用微信扫码。\n5. 等待 30-120 秒，查日志是否出现 `WebSocket connected: <deviceKey>`。\n6. 成功后告知用户：设备已连接，可以对着 SmartPi 说话。\n\n二维码示例：\n\n```python\nimport qrcode\nbinding_id = \"REPLACE_WITH_ACTUAL_BINDING_ID\"\nqrcode.make(binding_id).save(\"smartpi_qr.png\")\n```\n\n```bash\nnode -e \"const id=process.argv[1]; require('qrcode').toFile('smartpi_qr.png',id,{type:'png'},e=>e&&console.error(e))\" \"REPLACE_WITH_ACTUAL_BINDING_ID\"\n```\n\n如果提取不到 `bindingId`、二维码生成失败或 120 秒未连接，说明失败点并转入连接排查。\n\n### 查看设备\n\n执行：\n\n```bash\nopenclaw smartpi accounts list\n```\n\n只根据命令输出和日志判断设备状态，不要伪造在线/离线结论。\n\n### 删除设备\n\n1. 先执行 `openclaw smartpi accounts list` 获取 `deviceKey`。\n2. 告知用户删除会解绑本地记录，并可能同步解绑云端。\n3. 用户明确确认后执行：\n\n```bash\nopenclaw smartpi accounts remove <deviceKey>\n```\n\n4. 再次执行 `accounts list` 验证结果。\n\n### 安装或修复插件\n\n1. 检查插件：`openclaw plugins list`。\n2. 插件未安装时，用户确认后执行 `openclaw plugins install openclaw-smartpi`。\n3. 修改配置前必须先读取完整配置。\n4. 保留已有 `plugins.allow` 和 `channels`，只追加 SmartPi 所需项。\n5. 重启前说明影响，用户确认后执行 `openclaw gateway restart`。\n6. 再次确认 `openclaw-smartpi: enabled`，且日志没有 `cannot resolve agentId`。\n\n### 9002 / 连接失败排查\n\n按顺序检查：\n\n1. `openclaw plugins list` → 确认 `openclaw-smartpi: enabled`。\n2. `openclaw smartpi accounts list` → 确认有设备。\n3. 日志 `WebSocket connected` → 确认设备在线。\n4. 日志 `cannot resolve agentId` → 检查 `channels.openclaw-smartpi`。\n5. 向 OpenClaw 发一条文本 → 判断本地模型、MCP、Tools 是否响应过慢。\n6. 日志 `AI response timeout` → 常见原因是模型慢、MCP 阻塞或工具调用卡住。\n\n## 配置硬规则\n\n- `plugins.allow` 是整体替换，不是追加；patch 前必须读取完整配置并保留原有插件。\n- `channels` 是整体替换；不要只 patch `channels.openclaw-smartpi`，必须保留已有 channels。\n- 插件内部 `channel.id = \"openclaw-smartpi\"`，配置必须是 `channels.openclaw-smartpi`，否则会出现 `cannot resolve agentId`。\n\n配置示例：\n\n```json\n{\n  \"channels\": {\n    \"openclaw-smartpi\": {\n      \"enabled\": true,\n      \"defaultAgentId\": \"main\"\n    }\n  }\n}\n```\n\n## 命令速查\n\n| 命令 | 用途 | 风险 |\n| --- | --- | --- |\n| `openclaw plugins list` | 查看插件状态 | 只读 |\n| `openclaw smartpi accounts list` | 查看设备 | 只读 |\n| `openclaw smartpi accounts bind` | 创建扫码绑定 | 创建绑定 |\n| `openclaw smartpi accounts remove <deviceKey>` | 删除设备 | 高风险 |\n| `openclaw plugins install openclaw-smartpi` | 安装插件 | 修改环境 |\n| `openclaw gateway restart` | 重启 Gateway | 中断服务 |\n\n## 日志速查\n\n| 关键字 | 含义 |\n| --- | --- |\n| `WebSocket connected` | 设备已上线 |\n| `WebSocket disconnected` | 设备断开 |\n| `cannot resolve agentId` | 缺少或错误配置 `channels.openclaw-smartpi` |\n| `AI response timeout` | AI 响应超时，可能导致 `9002` |\n\n## 完成回复\n\n最终回复用户时说明：\n\n- 当前状态：已连接、未连接、未安装、配置异常或超时。\n- 证据来源：命令输出、日志关键字或用户提供的信息。\n- 下一步：如果未解决，给出一个明确动作。\n\nFile v1.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn72bjnwex9cmswhrh2b11zj15837qpb\",\n  \"slug\": \"smartpi\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1779786752888\n}\n\nFile v1.0.4:skill-card.md\n\n## Description: <br>\nGuides agents through SmartPi device binding, QR-code pairing, device management, plugin setup, and connection troubleshooting. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[fengseven777](https://clawhub.ai/user/fengseven777) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and operators use this skill to manage SmartPi devices in OpenClaw, including plugin setup, QR-code binding, device listing and removal, and diagnosis of 9002, timeout, or connection failures. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Review before execution as proposals could introduce incorrect or misleading guidance into skills. <br>\nMitigation: Review and scan skill before deployment. <br>\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/fengseven777/smartpi) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Shell commands, Configuration, Code] <br>\n**Output Format:** [Markdown with inline shell, JSON, Python, and Node.js code blocks] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May propose local OpenClaw CLI actions that require review before installation, device removal, configuration changes, or gateway restart.] <br>\n\n## Skill Version(s): <br>\n1.0.4 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.3: 2 files, 2086 bytes\n\nFiles: _meta.json (126b), SKILL.md (3407b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: openclaw-smartpi-setup\ndescription: SmartPi 设备绑定、扫码、设备管理与 9002 故障排查。触发词：绑定 SmartPi、9002、SmartPi 连接失败、查看 SmartPi 设备、删除 SmartPi 设备。\n---\n\n# openclaw-smartpi-setup\n\n## 用户意图 → Agent 动作\n\n| 用户说 | Agent 立即执行 |\n|--------|----------------|\n| 绑定/添加 SmartPi 设备 | 执行 bind → 生成二维码 → 等待 WebSocket connected |\n| 查看/列出 SmartPi 设备 | `exec: openclaw smartpi accounts list` |\n| 删除 SmartPi 设备 | `exec: openclaw smartpi accounts remove <deviceKey>` |\n\n---\n\n## 绑定流程\n\n1. `exec: openclaw smartpi accounts bind`\n2. 从输出提取 `绑定ID:` 后的 bindingId\n3. 生成 QR PNG（脚本见下）\n4. 发送图片给用户，提示「用微信扫一扫，绑定成功我会告诉你」\n5. 等待 30-120 秒，查日志 `WebSocket connected: <deviceKey>`\n6. 确认连接后告知用户「设备已连接，可以对着 SmartPi 说话了」\n\n**生成 QR 脚本（选一种）：**\n\nPython：\n```python\nimport qrcode\nqrcode.make(\"bindingId\").save(\"smartpi_qr.png\")\n```\n\nNode.js：\n```bash\nnode -e \"require('qrcode').toFile('smartpi_qr.png','bindingId',{type:'png'},e=>e&&console.error(e))\"\n```\n\n---\n\n## 首次安装（插件未装时）\n\n```bash\nopenclaw plugins install openclaw-smartpi\nopenclaw gateway restart\n```\n\n然后配置（**两个关键坑**，见下方「关键坑点」），再重启 Gateway。\n\n---\n\n## 9002 排查\n\n9002 = AI 未在限定时间内回复。按顺序排查：\n\n1. `exec: openclaw plugins list` → 确认 `openclaw-smartpi: enabled`\n2. `exec: openclaw smartpi accounts list` → 确认有设备\n3. 查日志 `WebSocket connected` → 确认 WS 已连接\n4. **向 OpenClaw 发一条文本** → 确认 AI 响应速度正常（最常见原因：本地模型慢 / MCP 阻塞 / Tools 卡住）\n5. 查日志 `cannot resolve agentId` → 确认 channels 配置存在\n\n---\n\n## 关键坑点（必须保留）\n\n**坑 1：`plugins.allow` 是整体替换**\n\n`config.patch` 对数组是整体替换，不是追加。必须先 `gateway action=config.get` 读取当前配置，构造完整数组再 patch。\n\n**坑 2：`channels` 也是整体替换**\n\n`config.patch` 传 `channels.openclaw-smartpi` 会覆盖掉其他已有 channel（discord、telegram 等）。必须保留所有已有 channels，再追加 `openclaw-smartpi`。\n\n**正确配置示例：**\n```json\n\"channels\": {\n  \"openclaw-smartpi\": {\n    \"enabled\": true,\n    \"defaultAgentId\": \"main\"\n  }\n}\n```\n**坑 3：channel.id 必须匹配**\n\n插件内部 `channel.id = \"openclaw-smartpi\"`，配置中必须是 `channels.openclaw-smartpi`，一字不差，否则消息无法路由，报 `cannot resolve agentId`。\n\n---\n\n## 常用命令\n\n| 命令 | 用途 |\n|------|------|\n| `openclaw smartpi accounts list` | 查看已绑定设备 |\n| `openclaw smartpi accounts bind` | 扫码绑定新设备 |\n| `openclaw smartpi accounts remove <deviceKey>` | 删除设备（同时解绑云端） |\n| `openclaw plugins list` | 确认插件状态 |\n| `openclaw gateway restart` | 插件变更后重启 |\n\n---\n\n## 日志关键字\n\n| 关键字 | 含义 |\n|--------|------|\n| `WebSocket connected` | 设备已上线 ✅ |\n| `WebSocket disconnected` | 设备断开 |\n| `cannot resolve agentId` | 缺少 `channels.openclaw-smartpi` 配置 |\n| `AI response timeout` | AI 响应超时 → 导致 9002 |\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn72bjnwex9cmswhrh2b11zj15837qpb\",\n  \"slug\": \"smartpi\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1779352568711\n}\n\nArchive v1.0.2: 2 files, 2018 bytes\n\nFiles: _meta.json (126b), SKILL.md (3275b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: openclaw-smartpi-setup\ndescription: SmartPi 设备绑定、扫码、设备管理与 9002 故障排查。触发词：绑定 SmartPi、9002、SmartPi 连接失败、查看 SmartPi 设备、删除 SmartPi 设备。\n---\n\n# openclaw-smartpi-setup\n\n## 用户意图 → Agent 动作\n\n| 用户说 | Agent 立即执行 |\n|--------|----------------|\n| 绑定/添加 SmartPi 设备 | 执行 bind → 生成二维码 → 等待 WebSocket connected |\n| 查看/列出 SmartPi 设备 | `exec: openclaw smartpi accounts list` |\n| 删除 SmartPi 设备 | `exec: openclaw smartpi accounts remove <deviceKey>` |\n\n---\n\n## 绑定流程\n\n1. `exec: openclaw smartpi accounts bind`\n2. 从输出提取 `绑定ID:` 后的 bindingId\n3. 生成 QR PNG（脚本见下）\n4. 发送图片给用户，提示「用微信扫一扫，绑定成功我会告诉你」\n5. 等待 30-120 秒，查日志 `WebSocket connected: <deviceKey>`\n6. 确认连接后告知用户「设备已连接，可以对着 SmartPi 说话了」\n\n**生成 QR 脚本（选一种）：**\n\nPython：\n```python\nimport qrcode\nqrcode.make(\"bindingId\").save(\"smartpi_qr.png\")\n```\n\nNode.js：\n```bash\nnode -e \"require('qrcode').toFile('smartpi_qr.png','bindingId',{type:'png'},e=>e&&console.error(e))\"\n```\n\n---\n\n## 首次安装（插件未装时）\n\n```bash\nopenclaw plugins install openclaw-smartpi\nopenclaw gateway restart\n```\n\n然后配置（**两个关键坑**，见下方「关键坑点」），再重启 Gateway。\n\n---\n\n## 9002 排查\n\n9002 = AI 未在限定时间内回复。按顺序排查：\n\n1. `exec: openclaw plugins list` → 确认 `openclaw-smartpi: enabled`\n2. `exec: openclaw smartpi accounts list` → 确认有设备\n3. 查日志 `WebSocket connected` → 确认 WS 已连接\n4. **向 OpenClaw 发一条文本** → 确认 AI 响应速度正常（最常见原因：本地模型慢 / MCP 阻塞 / Tools 卡住）\n5. 查日志 `cannot resolve agentId` → 确认 channels 配置存在\n\n---\n\n## 关键坑点（必须保留）\n\n**坑 1：`plugins.allow` 是整体替换**\n\n`config.patch` 对数组是整体替换，不是追加。必须先 `gateway action=config.get` 读取当前配置，构造完整数组再 patch。\n\n**坑 2：`channels` 也是整体替换**\n\n`config.patch` 传 `channels.openclaw-smartpi` 会覆盖掉其他已有 channel（discord、telegram 等）。必须保留所有已有 channels，再追加 `openclaw-smartpi`。\n\n**坑 3：channel.id 必须匹配**\n\n插件内部 `channel.id = \"openclaw-smartpi\"`，配置中必须是 `channels.openclaw-smartpi`，一字不差，否则消息无法路由，报 `cannot resolve agentId`。\n\n---\n\n## 常用命令\n\n| 命令 | 用途 |\n|------|------|\n| `openclaw smartpi accounts list` | 查看已绑定设备 |\n| `openclaw smartpi accounts bind` | 扫码绑定新设备 |\n| `openclaw smartpi accounts remove <deviceKey>` | 删除设备（同时解绑云端） |\n| `openclaw plugins list` | 确认插件状态 |\n| `openclaw gateway restart` | 插件变更后重启 |\n\n---\n\n## 日志关键字\n\n| 关键字 | 含义 |\n|--------|------|\n| `WebSocket connected` | 设备已上线 ✅ |\n| `WebSocket disconnected` | 设备断开 |\n| `cannot resolve agentId` | 缺少 `channels.openclaw-smartpi` 配置 |\n| `AI response timeout` | AI 响应超时 → 导致 9002 |\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn72bjnwex9cmswhrh2b11zj15837qpb\",\n  \"slug\": \"smartpi\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1779344895857\n}\n\nArchive v1.0.1: 2 files, 2895 bytes\n\nFiles: _meta.json (126b), SKILL.md (5419b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: openclaw-smartpi-setup\ndescription: openclaw-smartpi 插件完整安装、配置与故障排查指南。当用户需要安装 openclaw-smartpi 插件、通过微信扫码绑定 SmartPi 设备、处理 SmartPi 连接问题（特别是错误码 9002）、管理 SmartPi 设备（查看/删除）、或设置语音与 OpenClaw 交互时触发此 skill。\n---\n\n# openclaw-smartpi-setup\n\n## 概述\n\nopenclaw-smartpi 插件允许用户通过 SmartPi 语音设备与 OpenClaw 交互。用户说话后音频通过 WebSocket 传到 OpenClaw，AI 回复后通过同一连接返回，SmartPi 设备播报语音回复。\n\n## 安装流程\n\n### 第一步：安装插件并重启\n\n```bash\nopenclaw plugins install openclaw-smartpi\nopenclaw gateway restart\n```\n\n重启后插件加载，可通过 `openclaw plugins list` 确认 `openclaw-smartpi` 状态为 `enabled`。\n\n### 第二步：扫码绑定设备\n\n```bash\nopenclaw smartpi accounts bind\n```\n\n执行后：\n1. 调用云端接口生成 `bindingId`（有效期 30 分钟）\n2. 终端打印 QR 码（ASCII 格式，**不可直接扫描**）\n3. 从输出中提取 `绑定ID:` 后面的 `bindingId`，生成 QR 图片（见下方）\n4. 将 QR 图片发送给用户，用微信扫描\n5. 扫码后终端显示 `绑定成功`，自动建立 WebSocket 长连接\n\n设备信息保存在：\n```\n~/.xxclaw/openclaw-smartpi/accounts/<deviceKey>.json\n```\n\n### 生成可扫描的 QR 图片\n\n终端打印的 QR 码为 ASCII 格式，无法直接扫描。需从命令输出中提取 `绑定ID:` 后面的 `bindingId`，生成 PNG 图片供微信扫码。\n\n**方法（Python qrcode 库）：**\n```python\nimport qrcode\nbinding_id = \"6b20121312b600a96a75e636d5222079\"  # 替换为实际 bindingId\nimg = qrcode.make(binding_id)\nimg.save(\"C:/Users/15352/.qclaw/workspace/smartpi_qr.png\")\nprint(\"Done\")\n```\n\n**方法（Node.js qrcode 包）：**\n```bash\nnpm install -g qrcode\nnode -e \"const QR = require('qrcode'); QR.toFile('C:/Users/15352/.qclaw/workspace/smartpi_qr.png', '绑定ID', {type: 'png'}, (err) => { if(err) console.error(err); else console.log('Done'); });\"\n```\n\n生成后，将 `smartpi_qr.png` 发送给用户扫描。\n\n### 第三步：验证设备状态\n\n```bash\nopenclaw smartpi accounts list\n```\n\n正常输出：\n```\nSmartPi 设备列表:\n- JL_17T_xxxx\n```\n\n同时检查 Gateway 日志中是否有 `WebSocket connected: <deviceKey>`。\n\n### 第四步：开始使用\n\n确保 Gateway 正在运行：\n```bash\nopenclaw gateway status\n```\n\n对着 SmartPi 设备说话，QClaw 会处理输入并以语音回复。\n\n## 故障排查\n\n### 错误码 9002：该功能暂不可用\n\n可能原因：\n1. **OpenClaw Gateway 未正常处理消息** — AI 模型未配置或响应失败，导致 SmartPi 服务端收不到有效回复\n2. **WebSocket 连接已断开** — 设备连接已断开，SmartPi 服务端转发请求时失败\n3. **插件未正确加载** — `openclaw-smartpi` 插件安装后未重启 Gateway，或插件加载失败\n4. **设备绑定凭证异常** — `bindId` 或 `token` 未正确保存，导致后续消息验证失败\n\n排查步骤：\n```bash\n# 1. 确认插件已加载\nopenclaw plugins list\n# 确认 openclaw-smartpi 状态为 enabled\n\n# 2. 确认设备已绑定且连接正常\nopenclaw smartpi accounts list\n# 检查网关日志：openclaw gateway status\n# 日志中应有：[gateway] WebSocket connected: <deviceKey>\n\n# 3. 确认 AI 模型已配置（能正常回复消息）\ntest: 直接向 OpenClaw 发一条消息，确认 AI 能正常回复\n\n# 4. 重启 Gateway 重刷连接\nopenclaw gateway restart\n# 重启后再次检查设备连接状态\n```\n\n若以上都正常，查看 OpenClaw 日志中是否有错误信息：`~/.openclaw/logs/openclaw-YYYY-MM-DD.log`\n\n### 设备无法连接\n\n1. 重新绑定：`openclaw smartpi accounts bind`\n2. 查看设备列表：`openclaw smartpi accounts list`\n3. 查看日志中的连接错误信息\n\n### 连接频繁断开\n\n插件内置指数退避重连（1s → 2s → 4s... 最大 60s），一般会自动恢复。若频繁断开：\n1. 检查网络稳定性\n2. 查看日志中的重连记录\n\n## 设备管理命令\n\n查看已绑定设备：\n```bash\nopenclaw smartpi accounts list\n```\n\n删除设备：\n```bash\nopenclaw smartpi accounts remove <deviceKey>\n```\n\n## 卸载流程\n\n卸载插件前，请先移除已绑定的设备账户（否则残留账户文件可能导致重新安装后行为异常）。\n\n```bash\n# 1. 查看当前绑定的设备\nopenclaw smartpi accounts list\n\n# 2. 逐一删除所有设备账户\nopenclaw smartpi accounts remove <deviceKey>\n# （如有多个设备，重复此命令逐一删除）\n\n# 3. 确认账户目录已清空\nopenclaw smartpi accounts list\n# 应输出空列表\n\n# 4. 卸载插件\nopenclaw plugins uninstall openclaw-smartpi\n\n# 5. 重启 Gateway\nopenclaw gateway restart\n```\n\n如需彻底清理，可手动删除残留文件：\n```bash\nRemove-Item -Recurse -Force \"$env:USERPROFILE\\.xxclaw\\openclaw-smartpi\"\n```\n\n## 配置文件位置\n\n| 文件 | 路径 |\n|------|------|\n| 账号数据 | `~/.xxclaw/openclaw-smartpi/accounts/<deviceKey>.json` |\n| 账号索引 | `~/.xxclaw/openclaw-smartpi/accounts.json` |\n| 日志 | `~/.xxclaw/logs/openclaw-YYYY-MM-DD.log` |\n\n## 注意事项\n\n- `sendText` 未实现：SmartPi 是被动接收模式（设备说话 → OpenClaw 回复），不支持主动发送文本\n- 心跳间隔：30 秒（ping/pong）\n- 绑定 ID 有效期：30 分钟\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn72bjnwex9cmswhrh2b11zj15837qpb\",\n  \"slug\": \"smartpi\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1779260387323\n}\n\nArchive v1.0.0: 2 files, 2617 bytes\n\nFiles: SKILL.md (4670b), _meta.json (126b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: openclaw-smartpi-setup\ndescription: openclaw-smartpi 插件完整安装、配置与故障排查指南。当用户需要安装 openclaw-smartpi 插件、通过微信扫码绑定 SmartPi 设备、处理 SmartPi 连接问题（特别是错误码 9002）、管理 SmartPi 设备（查看/删除）、或设置语音与 OpenClaw 交互时触发此 skill。\n---\n\n# openclaw-smartpi-setup\n\n## 概述\n\nopenclaw-smartpi 插件允许用户通过 SmartPi 语音设备与 OpenClaw 交互。用户说话后音频通过 WebSocket 传到 OpenClaw，AI 回复后通过同一连接返回，SmartPi 设备播报语音回复。\n\n## 安装流程\n\n### 第一步：安装插件并重启\n\n```bash\nopenclaw plugins install openclaw-smartpi\nopenclaw gateway restart\n```\n\n重启后插件加载，可通过 `openclaw plugins list` 确认 `openclaw-smartpi` 状态为 `enabled`。\n\n### 第二步：扫码绑定设备\n\n```bash\nopenclaw smartpi accounts bind\n```\n\n执行后：\n1. 调用云端接口生成 `bindingId`（有效期 30 分钟）\n2. 终端打印 QR 码（ASCII 格式，无法直接扫描）\n3. **需要生成 QR 图片** → 见下方「生成可扫描的 QR 码」\n4. 用微信扫描二维码\n5. 扫码后终端显示 `绑定成功`，自动建立 WebSocket 长连接\n\n设备信息保存在：\n```\n~/.xxclaw/openclaw-smartpi/accounts/<deviceKey>.json\n```\n\n### 生成可扫描的 QR 码\n\n`openclaw smartpi accounts bind` 输出的 QR 码是终端 ASCII 艺术格式，无法直接扫描。需要提取 `bindingId` 并生成 PNG 图片。\n\n**方法（Python qrcode 库）：**\n```python\nimport qrcode\nbinding_id = \"7d77163ba4d6c9989b668cc641b2db62\"  # 替换为实际 bindingId\nimg = qrcode.make(binding_id)\nimg.save(\"C:/Users/15352/.qclaw/workspace/smartpi_qr.png\")\nprint(\"Done\")\n```\n\n**方法（Node.js qrcode 包）：**\n```bash\nnpm install -g qrcode\nnode -e \"const QR = require('qrcode'); QR.toFile('C:/Users/15352/.qclaw/workspace/smartpi_qr.png', '绑定ID', {type: 'png'}, (err) => { if(err) console.error(err); else console.log('Done'); });\"\n```\n\n生成后，将 `smartpi_qr.png` 发送给用户扫描。\n\n### 第三步：验证设备状态\n\n```bash\nopenclaw smartpi accounts list\n```\n\n正常输出：\n```\nSmartPi 设备列表:\n- JL_17T_xxxx\n```\n\n同时检查 Gateway 日志中是否有 `WebSocket connected: <deviceKey>`。\n\n### 第四步：开始使用\n\n确保 Gateway 正在运行：\n```bash\nopenclaw gateway status\n```\n\n对着 SmartPi 设备说话，QClaw 会处理输入并以语音回复。\n\n## 故障排查\n\n### 错误码 9002：该功能暂不可用\n\n可能原因：\n1. **OpenClaw Gateway 未正常处理消息** — AI 模型未配置或响应失败，导致 SmartPi 服务端收不到有效回复\n2. **WebSocket 连接已断开** — 设备连接已断开，SmartPi 服务端转发请求时失败\n3. **插件未正确加载** — `openclaw-smartpi` 插件安装后未重启 Gateway，或插件加载失败\n4. **设备绑定凭证异常** — `bindId` 或 `token` 未正确保存，导致后续消息验证失败\n\n排查步骤：\n```bash\n# 1. 确认插件已加载\nopenclaw plugins list\n# 确认 openclaw-smartpi 状态为 enabled\n\n# 2. 确认设备已绑定且连接正常\nopenclaw smartpi accounts list\n# 检查网关日志：openclaw gateway status\n# 日志中应有：[gateway] WebSocket connected: <deviceKey>\n\n# 3. 确认 AI 模型已配置（能正常回复消息）\ntest: 直接向 OpenClaw 发一条消息，确认 AI 能正常回复\n\n# 4. 重启 Gateway 重刷连接\nopenclaw gateway restart\n# 重启后再次检查设备连接状态\n```\n\n若以上都正常，查看 OpenClaw 日志中是否有错误信息：`~/.openclaw/logs/openclaw-YYYY-MM-DD.log`\n\n### 设备无法连接\n\n1. 重新绑定：`openclaw smartpi accounts bind`\n2. 查看设备列表：`openclaw smartpi accounts list`\n3. 查看日志中的连接错误信息\n\n### 连接频繁断开\n\n插件内置指数退避重连（1s → 2s → 4s... 最大 60s），一般会自动恢复。若频繁断开：\n1. 检查网络稳定性\n2. 查看日志中的重连记录\n\n## 设备管理命令\n\n查看已绑定设备：\n```bash\nopenclaw smartpi accounts list\n```\n\n删除设备：\n```bash\nopenclaw smartpi accounts remove <deviceKey>\n```\n\n## 配置文件位置\n\n| 文件 | 路径 |\n|------|------|\n| 账号数据 | `~/.xxclaw/openclaw-smartpi/accounts/<deviceKey>.json` |\n| 账号索引 | `~/.xxclaw/openclaw-smartpi/accounts.json` |\n| 日志 | `~/.xxclaw/logs/openclaw-YYYY-MM-DD.log` |\n\n## 注意事项\n\n- `sendText` 未实现：SmartPi 是被动接收模式（设备说话 → OpenClaw 回复），不支持主动发送文本\n- 心跳间隔：30 秒（ping/pong）\n- 绑定 ID 有效期：30 分钟\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn72bjnwex9cmswhrh2b11zj15837qpb\",\n  \"slug\": \"smartpi\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1779238258493\n}","readmeExcerpt":"Skill: openclaw-smartpi Owner: fengseven777 Summary: SmartPi 设备绑定、扫码、设备管理与连接故障排查。Use when the user mentions binding SmartPi, SmartPi QR code, 9002, SmartPi connection failure, listing SmartPi devices, or removi... Tags: latest:1.0.8 Version history: v1.0.8 | 2026-06-24T08:08:58.666Z | user Summary: Removed sample documentation; enhanced troubleshooting process for unresponsive SmartPi devices. - Removed the file skil","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"openclaw smartpi accounts bind"},{"language":"python","snippet":"import qrcode\nbinding_id = \"REPLACE_WITH_ACTUAL_BINDING_ID\"\nqrcode.make(binding_id).save(\"smartpi_qr.png\")"},{"language":"bash","snippet":"node -e \"const id=process.argv[1]; require('qrcode').toFile('smartpi_qr.png',id,{type:'png'},e=>e&&console.error(e))\" \"REPLACE_WITH_ACTUAL_BINDING_ID\""},{"language":"bash","snippet":"openclaw smartpi accounts list"},{"language":"bash","snippet":"openclaw smartpi accounts status <device_number>"},{"language":"bash","snippet":"openclaw smartpi accounts list"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"skill.md","content":"---\nname: smartpi\ndescription: SmartPi 设备绑定、扫码、设备管理与连接故障排查。Use when the user mentions binding SmartPi, SmartPi QR code, 9002, SmartPi connection failure, listing SmartPi devices, or removing a SmartPi device.\nallowed-tools: terminal, read_file, grep, find_path\ncontext: local-first\n---\n\n# SmartPi \n\n帮助用户完成 SmartPi 插件安装检查、设备扫码绑定、设备列表查看、设备删除，以及 `9002` / 连接失败等常见问题排查。\n\n## 设计原则\n\n- **元信息负责触发**：`description` 必须直接覆盖用户常见说法，例如 SmartPi 绑定、二维码、9002、连接失败、查看设备、删除设备。\n- **正文负责执行**：按任务给出明确步骤、成功判定、失败分支和用户输出。\n- **本地优先**：优先使用本机 `openclaw` 命令、Gateway 配置和日志，不假设外部服务可用。\n- **最小副作用**：删除设备、安装插件、重启 Gateway、修改配置前必须说明影响并征得用户确认。\n\n## 触发条件\n\n当用户提出以下请求时使用本 Skill：\n\n- **绑定设备**：绑定 SmartPi、添加 SmartPi、生成 SmartPi 二维码、扫码绑定。\n- **设备管理**：查看 SmartPi 设备、列出已绑定设备、删除 SmartPi 设备。\n- **连接故障**：SmartPi 连接失败、设备不在线、WebSocket 断开。\n- **9002 故障**：用户看到 `9002`、`AI response timeout`、语音请求无响应或超时。\n- **插件配置**：安装 `openclaw-smartpi`、检查插件是否启用、修复 `channels.openclaw-smartpi`。\n\n## 不适用场景\n\n- 用户问题与 SmartPi、OpenClaw Gateway、`openclaw-smartpi` 插件无关。\n- 用户要求开发新功能、改插件源码或调试非 SmartPi 通道时，应转入代码分析/开发类流程。\n- 用户只询问泛化 IoT、语音识别或硬件设计知识时，不应直接执行 OpenClaw 命令。\n\n## 快速路由\n\n| 用户意图 | 首选流程 | 主要成功判定 |\n| --- | --- | --- |\n| 绑定/添加 SmartPi | [流程：绑定设备](#流程绑定设备) | 日志出现 `WebSocket connected: <deviceKey>` |\n| 查看/列出设备 | [流程：查看设备](#流程查看设备) | `accounts list` 返回设备列表 |\n| 查询设备连接状态 | [流程：查询设备连接状态](#流程查询设备连接状态) | `accounts status` 返回设备在线/离线状态 |\n| 删除设备 | [流程：删除设备](#流程删除设备) | 删除命令成功且列表不再包含该设备 |\n| 安装/启用插件 | [流程：首次安装或修复插件](#流程首次安装或修复插件) | `plugins list` 显示 `openclaw-smartpi: enabled` |\n| 9002/超时 | [流程：9002 排查](#流程9002-排查) | 定位为连接、路由或 AI 响应链路问题 |\n\n## 执行前检查\n\n在执行会改变状态的动作前，先确认用户意图是否明确。\n\n1. 检查 OpenClaw CLI 是否可用：`openclaw --help`\n2. 检查插件状态：`openclaw plugins list`\n3. 检查已绑定设备：`openclaw smartpi accounts list`\n4. 若需要修改配置，先读取完整配置，再构造完整 patch。\n\n## 流程：绑定设备\n\n### 目标\n\n生成 SmartPi 绑定二维码，让用户扫码绑定，并确认设备通过 WebSocket 上线。\n\n### 执行步骤\n\n1. 执行绑定命令：\n\n```bash\nopenclaw smartpi accounts bind\n```\n\n2. 从输出中提取 `绑定ID:` 后的 `bindingId`。\n3. 使用 `bindingId` 生成 `smartpi_qr.png`。\n4. 把二维码图片发给用户，并提示：`请用微信扫一扫，绑定成功后我会继续确认设备连接状态。`\n5. 等待 30-120 秒，检查日志中是否出现 `WebSocket connected: <deviceKey>`。\n6. 连接成功后告知用户：`设备已连接，可以对着 SmartPi 说话了。`\n\n### 二维码生成方式\n\n优先使用当前环境已经安装的二维码工具，不要为了生成二维码自动安装依赖。\n\nPython：\n\n```python\nimport qrcode\nbinding_id = \"REPLACE_WITH_ACTUAL_BINDING_ID\"\nqrcode.make(binding_id).save(\"smartpi_qr.png\")\n```\n\nNode.js：\n\n```bash\nnode -e \"const id=process.argv[1]; require('qrcode').toFile('smartpi_qr.png',id,{type:'png'},e=>e&&console.error(e))\" \"REPLACE_WITH_ACTUAL_BINDING_ID\"\n```\n\n### 成功判定\n\n- 已生成二维码并发送给用户。\n- 日志出现 `WebSocket connected: <deviceKey>`。\n- `openclaw smartpi accounts list` 能看到新设备。\n\n### 失败分支\n\n- **未提取到 `bindingId`**：反馈绑定命令输出异常，并展示关键输出让用户确认。\n- **二维码生成失败**：说明当前环境缺少二维码依赖，询问用户是否允许安装依赖或改用其他方式生成。\n- **120 秒内未连接**：转入 [流程：连接失败排查](#流程连接失败排查)。\n- **连接后仍不可用**：转入 [流程：9002 排查](#流程9002-排查)。\n\n## 流程：查看设备\n\n### 执行步骤\n\n```bash\nopenclaw smartpi accounts list\n```\n\n### 输出要求\n\n- 如果有设备，列出 `deviceKey`、在线状态或命令输出中的关键字段。\n- 如果没有设备，提示用户可以执行绑定流程。\n- 不要伪造设备状态；只根据命令输出和日志判断。\n\n## 流程：查询设备连接状态\n\n### 目标\n\n通过设备号查询指定设备的在线/离线连接状态。\n\n### 执行步骤\n\n1. 如果用户未提供设备号，先执行"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn72bjnwex9cmswhrh2b11zj15837qpb\",\n  \"slug\": \"smartpi\",\n  \"version\": \"1.0.8\",\n  \"publishedAt\": 1782288538666\n}"},{"path":"skill-card.md","content":"## Description:\n\nSmartPi device binding, QR-code setup, device management, and troubleshooting for connection failures, 9002 timeouts, and unresponsive SmartPi devices.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[fengseven777](https://clawhub.ai/user/fengseven777)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal OpenClaw users and developers use this skill to bind and manage SmartPi devices, check plugin and Gateway status, and diagnose connection, routing, and AI response timeout issues.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Installing or repairing the OpenClaw SmartPi plugin can change the local environment.\n\nMitigation: Confirm the plugin source, publisher, and version before approving installation or repair.\n\nRisk: Device removal, configuration changes, and Gateway restart can alter local state or interrupt service.\n\nMitigation: Proceed only after explicit user confirmation and only when the action matches the requested SmartPi task.\n\nRisk: Incorrect channel configuration can break message routing for SmartPi or other channels.\n\nMitigation: Read the full configuration first, preserve existing channel entries, and verify that channels.openclaw-smartpi matches the plugin channel id.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/fengseven777/skills/smartpi)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Configuration, Markdown]\n\n**Output Format:** [Markdown guidance with inline shell commands, JSON configuration examples, status summaries, and next-step recommendations]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Local-first troubleshooting; state-changing actions require user confirmation.]\n\n## Skill Version(s):\n\n1.0.8 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"SmartPi 设备绑定、扫码、设备管理与连接故障排查。Use when the user mentions binding SmartPi, SmartPi QR code, 9002, SmartPi connection failure, listing SmartPi devices, or removi... Skill: openclaw-smartpi Owner: fengseven777 Summary: SmartPi 设备绑定、扫码、设备管理与连接故障排查。Use when the user mentions binding SmartPi, SmartPi QR code, 9002, SmartPi connection failure, listing SmartPi devices, or removi... Tags: latest:1.0.8 Version history: v1.0.8 | 2026-06-24T08:08:58.666Z | user Summary: Removed sample documentation; enhanced troubleshooting process for unresponsive SmartPi devices. - Removed the file skil","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1156,"uniquenessScore":50,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T17:27:21.343Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T17:27:21.343Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T21:52:44.017Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}