{"id":"7c780ef9-0548-48ef-8581-87e164d13905","entityType":"agent","slug":"clawhub-zw008-iaiops-building","name":"iaiops-building","canonicalUrl":"https://www.xpersona.co/agent/clawhub-zw008-iaiops-building","canonicalPath":"/agent/clawhub-zw008-iaiops-building","generatedAt":"2026-10-10T03:06:15.393Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T21:28:56.733Z","emptyReason":null},"description":"Building edition of iaiops — facility / HVAC / BMS / 厂务 over BACnet/IP (ASHRAE 135): Who-Is discovery, object/point lists, presentValue snapshots, COV capture, TrendLog reads, one MOC-gated property write; plus Modbus-TCP/RTU for meters/chillers and optional plain MQTT for IoT sensors, with the cross-protocol brain. Use when the task mentions BACnet, BACnet-IP, HVAC, AHU, chiller, VAV, BMS, building automation, facility management, 厂务, 楼宇自控, Who-Is, presentValue, or TrendLog; also IO-Link masters for smart building sensors (JSON interface, read-only), and the vendor supervisory-controller REST layer above BACnet (Metasys/OpenBlue, Niagara/oBIX) for point/alarm/trend reads and one MOC-gated command. Read-first, MOC-gated writes. Skill: iaiops-building Owner: zw008 Summary: Building edition of iaiops — facility / HVAC / BMS / 厂务 over BACnet/IP (ASHRAE 135): Who-Is discovery, object/point lists, presentValue snapshots, COV capture, TrendLog reads, one MOC-gated property write; plus Modbus-TCP/RTU for meters/chillers and optional plain MQTT for IoT sensors, with the cross-protocol brain. Use when the task mentions BACnet, BACnet-IP, HVAC, AHU,","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 2K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s171xgnmqse0nqvgqvqnaq5f9183kyre:iaiops-building","sourceUrl":"https://clawhub.ai/zw008/iaiops-building","homepage":"https://clawhub.ai/zw008/skills/iaiops-building","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/zw008/iaiops-building","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/zw008/skills/iaiops-building","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":66,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Building edition of iaiops — facility / HVAC / BMS / 厂务 over BACnet/IP (ASHRAE 135): Who-Is discovery, object/point lists, presentValue snapshots, COV capture, "},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T21:28:56.733Z","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-09T21:28:56.733Z","emptyReason":null},"stars":null,"forks":null,"downloads":1980,"packageName":null,"latestVersion":"0.28.0","tractionLabel":"2K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T21:28:56.733Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T21:28:56.733Z","lastCrawledAt":"2026-10-09T21:28:56.733Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T21:28:56.733Z","lastVerifiedAt":null,"highlights":[{"version":"0.28.0","createdAt":"2026-09-16T05:09:20.173Z","changelog":"0.28.0: MQTT/Sparkplug collectable; onboard's two journeys (devices / uns with a B1/B2 namespace fork)","fileCount":3,"zipByteSize":9092},{"version":"0.27.0","createdAt":"2026-09-03T03:19:33.405Z","changelog":"router now routes to the pharma edition · contextual baselines · downtime attribution (D18) · alarm event-type clustering · device advisory matching · GxP crosswalk","fileCount":3,"zipByteSize":8927},{"version":"0.26.0","createdAt":"2026-09-01T12:28:41.159Z","changelog":"verify determinism (executed model-free claim) · PLC program change baseline · pharma edition","fileCount":3,"zipByteSize":7480},{"version":"0.23.1","createdAt":"2026-08-28T05:18:38.684Z","changelog":"- Removed the file skill-card.md. - Expanded \"跨协议脑\" section in SKILL.md to add new investigation and line/relationship/mechanism tools: `site_readiness`, `investigation_readiness`, `investigation_open`, `investigation_show`, `investigation_list`, `line_relation_declare`, `line_relations_list`, `mechanism_library_check`, `mechanism_library_list`. - Documented the scope and purpose of each new tool for site readiness, incident investigation, and mechanism libraries. - No changes to protocol support or dependencies.","fileCount":3,"zipByteSize":6799},{"version":"0.23.0","createdAt":"2026-08-25T04:32:06.645Z","changelog":"- Removed the deprecated or unused file `skill-card.md`. - Minor update to SKILL.md: added the tool `uns_publish` to the list of supported commands (under 合规/信创 tools), reflecting expanded publishing options via UNS. - No changes to core workflows, protocols, or main features. - Documentation and tool list now better reflect current supported interfaces.","fileCount":3,"zipByteSize":6246},{"version":"0.22.0","createdAt":"2026-08-02T13:08:43.584Z","changelog":"0.22.0 — asyncua 2.x floor; OPC-UA vs a third-party stack + cert trust; TDengine REST/WS; second MCP implementation; EtherNet/IP program scope","fileCount":3,"zipByteSize":6321},{"version":"0.21.1","createdAt":"2026-08-02T07:24:26.198Z","changelog":"0.21.1 — review round two: RCA window dilution, IoTDB header names, OPC-UA malformed-URL leak","fileCount":3,"zipByteSize":6249},{"version":"0.21.0","createdAt":"2026-08-02T03:07:09.185Z","changelog":"0.21.0 — verification sweep: 5 product fixes (IoTDB tag mislabelling, TDengine coverage, OPC-UA thread leak + interop verdict, PROFINET doc fields)","fileCount":3,"zipByteSize":6207}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s171xgnmqse0nqvgqvqnaq5f9183kyre:iaiops-building","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-zw008-iaiops-building/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zw008-iaiops-building/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zw008-iaiops-building/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-zw008-iaiops-building/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-zw008-iaiops-building/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-zw008-iaiops-building/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-10T03:06:15.390Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zw008-iaiops-building/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zw008-iaiops-building/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zw008-iaiops-building/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-zw008-iaiops-building/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-09T21:28:56.733Z","emptyReason":null},"readme":"Skill: iaiops-building\n\nOwner: zw008\n\nSummary: Building edition of iaiops — facility / HVAC / BMS / 厂务 over BACnet/IP (ASHRAE 135): Who-Is discovery, object/point lists, presentValue snapshots, COV capture, TrendLog reads, one MOC-gated property write; plus Modbus-TCP/RTU for meters/chillers and optional plain MQTT for IoT sensors, with the cross-protocol brain. Use when the task mentions BACnet, BACnet-IP, HVAC, AHU, chiller, VAV, BMS, building automation, facility management, 厂务, 楼宇自控, Who-Is, presentValue, or TrendLog; also IO-Link masters for smart building sensors (JSON interface, read-only), and the vendor supervisory-controller REST layer above BACnet (Metasys/OpenBlue, Niagara/oBIX) for point/alarm/trend reads and one MOC-gated command. Read-first, MOC-gated writes.\n\nTags: latest:0.28.0\n\nVersion history:\n\nv0.28.0 | 2026-09-16T05:09:20.173Z | user\n\n0.28.0: MQTT/Sparkplug collectable; onboard's two journeys (devices / uns with a B1/B2 namespace fork)\n\nv0.27.0 | 2026-09-03T03:19:33.405Z | user\n\nrouter now routes to the pharma edition · contextual baselines · downtime attribution (D18) · alarm event-type clustering · device advisory matching · GxP crosswalk\n\nv0.26.0 | 2026-09-01T12:28:41.159Z | user\n\nverify determinism (executed model-free claim) · PLC program change baseline · pharma edition\n\nv0.23.1 | 2026-08-28T05:18:38.684Z | auto\n\n- Removed the file skill-card.md.\n- Expanded \"跨协议脑\" section in SKILL.md to add new investigation and line/relationship/mechanism tools: `site_readiness`, `investigation_readiness`, `investigation_open`, `investigation_show`, `investigation_list`, `line_relation_declare`, `line_relations_list`, `mechanism_library_check`, `mechanism_library_list`.\n- Documented the scope and purpose of each new tool for site readiness, incident investigation, and mechanism libraries.\n- No changes to protocol support or dependencies.\n\nv0.23.0 | 2026-08-25T04:32:06.645Z | auto\n\n- Removed the deprecated or unused file `skill-card.md`.\n- Minor update to SKILL.md: added the tool `uns_publish` to the list of supported commands (under 合规/信创 tools), reflecting expanded publishing options via UNS.\n- No changes to core workflows, protocols, or main features.  \n- Documentation and tool list now better reflect current supported interfaces.\n\nv0.22.0 | 2026-08-02T13:08:43.584Z | user\n\n0.22.0 — asyncua 2.x floor; OPC-UA vs a third-party stack + cert trust; TDengine REST/WS; second MCP implementation; EtherNet/IP program scope\n\nv0.21.1 | 2026-08-02T07:24:26.198Z | user\n\n0.21.1 — review round two: RCA window dilution, IoTDB header names, OPC-UA malformed-URL leak\n\nv0.21.0 | 2026-08-02T03:07:09.185Z | user\n\n0.21.0 — verification sweep: 5 product fixes (IoTDB tag mislabelling, TDengine coverage, OPC-UA thread leak + interop verdict, PROFINET doc fields)\n\nv0.20.4 | 2026-08-02T00:28:22.055Z | user\n\nNATS egress 120s hang bounded to 5s; BACnet write now reports a read-back instead of claiming applied; MCP interface + egress sinks now driven by real counterparties\n\nv0.20.3 | 2026-08-01T04:31:47.555Z | user\n\naudit status now reflects real outcome; runaway guard sees retried denials; approval-gate contract over the real write surface\n\nv0.20.2 | 2026-07-31T14:45:44.029Z | user\n\ncredential redaction in audit log; retained mqtt_publish undo; pyopenssl resolver guard\n\nv0.20.1 | 2026-07-29T09:37:24.600Z | user\n\niaiops 0.20.1 — MCP tool annotations derived from the governance harness\n\nv0.19.0 | 2026-07-21T14:36:28.827Z | user\n\n0.19.0 — read-only gate removed; audit on both MCP+CLI; effect-based write risk\n\nv0.18.1 | 2026-07-19T17:13:56.271Z | auto\n\n- Removed the file: skill-card.md.\n- No changes to functionality or documentation in SKILL.md.\n- No new features, tools, or protocols added or removed.\n- No user-facing differences aside from the file removal.\n\nv0.18.0 | 2026-07-19T11:30:33.548Z | auto\n\n- Removed the file: skill-card.md\n- No changes to code or functionality; documentation file cleanup only.\n\nv0.17.0 | 2026-07-19T09:22:48.722Z | auto\n\n- Removed the skill-card.md file from the project.\n- No changes to user-facing features or functionality.\n\nv0.16.0 | 2026-07-17T05:13:27.836Z | user\n\n0.16.0 — protocol + intelligence depth (8 features, tool surface unchanged)\n\nv0.13.0 | 2026-07-13T06:55:23.155Z | user\n\n0.13.0: BAS controller layer (Metasys/Niagara REST above BACnet) — bas_point_list/read, bas_alarm_list, bas_trend_read (read) + bas_command (WRITE/HIGH, life-safety denylist).\n\nv0.12.0 | 2026-07-13T01:08:57.626Z | user\n\niaiops 0.12.0 edition — aligns ClawHub with the current per-industry edition architecture\n\nArchive index:\n\nArchive v0.28.0: 3 files, 9092 bytes\n\nFiles: skill-card.md (2497b), SKILL.md (13885b), _meta.json (135b)\n\nFile v0.28.0:SKILL.md\n\n---\nname: iaiops-building\ndescription: >-\n  Building edition of iaiops — facility / HVAC / BMS / 厂务 over BACnet/IP\n  (ASHRAE 135): Who-Is discovery, object/point lists, presentValue snapshots, COV\n  capture, TrendLog reads, one MOC-gated property write; plus Modbus-TCP/RTU for\n  meters/chillers and optional plain MQTT for IoT sensors, with the\n  cross-protocol brain. Use when the task mentions BACnet, BACnet-IP, HVAC, AHU,\n  chiller, VAV, BMS, building automation, facility management, 厂务, 楼宇自控,\n  Who-Is, presentValue, or TrendLog; also IO-Link masters for smart building\n  sensors (JSON interface, read-only), and the vendor supervisory-controller REST\n  layer above BACnet (Metasys/OpenBlue, Niagara/oBIX) for point/alarm/trend reads\n  and one MOC-gated command. Read-first, MOC-gated writes.\n---\n\n# iaiops-building — 楼宇/厂务 edition（BACnet + Modbus + IO-Link + MQTT + 脑）\n\n启动：`IAIOPS_MCP=building` / `iaiops-mcp-building`（= bacnet + modbus + opcua + iolink + 脑）。\nIoT 传感器走 MQTT 时叠加：`IAIOPS_MCP=building,sparkplug`。\n安装：`pip install iaiops[building]`。BACnet 的 `host` 是**本机** BACnet/IP 接口\n（`ip` 或 `ip/mask`）。\n\n## 工具\n\n### BACnet/IP（read-first；暖通/楼宇/厂务）\n- `bacnet_discover` — Who-Is：本地 BACnet/IP 网上的设备\n- `bacnet_object_list` — 设备的 object/point 列表\n- `bacnet_read_property` — 单对象属性（默认 presentValue）\n- `bacnet_read_points` — 所有 analog/binary/multistate 点的 presentValue（HVAC 快照）\n- `bacnet_cov_subscribe` — 单对象有界 Change-of-Value 捕获\n- `bacnet_read_trend_log` — 读设备 TrendLog 缓冲记录\n- `bacnet_write_property` — **[WRITE][HIGH][MOC]** 写单对象属性（默认 off：\n  `dry_run=True` + 审批双确认；可指挥楼宇设备 — 设定值、输出）\n\n### Modbus-TCP / Modbus-RTU（只读；电表/冷机/表计）\n- `modbus_read_holding` `modbus_read_input` `modbus_read_coils` `modbus_read_discrete`\n- `modbus_detect_byte_order` / `modbus_list_templates` / `modbus_apply_template`\n- `modbus_health_summary`\n\n### IO-Link（只读；主站 JSON 接口 — 楼宇智能传感器）\n- `iolink_master_info` — 主站身份（/deviceinfo）\n- `iolink_ports` — 有界端口扫描（≤32：mode/status + 在线设备身份）\n- `iolink_device_info` — 单端口设备身份\n- `iolink_read_pdin` — 过程数据输入（raw hex + 字节数组；按 IODD 解码）\n- `iolink_read_isdu` — ISDU 参数读（index/subindex 有界）\n- `iolink_scan` — 主站 + 全端口一次性快照\n- 配置 `flavor: iotcore`（ifm IoT-Core，默认）或 `rest`（plain-REST 主站）；v1 只读\n\n### BAS 控制器层（edition 工具；厂商监控控制器 REST，在 BACnet **之上**）\n厂商监控控制器（Johnson Controls Metasys/OpenBlue、Tridium Niagara oBIX/REST）把大量 BACnet\n现场点/告警/趋势聚合在一个带鉴权的企业 REST 接口后面——与 `bacnet`（现场总线）互补、非重复。\nBearer/token 从加密 secret store 按 key 取（`secret_name`），不走明文参数。\n- `bas_point_list` — 列控制器 point/object（跨厂商归一化：id/name/value/unit/status）\n- `bas_point_read` — 单/多点 present-value\n- `bas_alarm_list` — 控制器活动告警/事件（归一化）\n- `bas_trend_read` — 单点历史趋势样本（有界 ≤5000）\n- `bas_command` — **[WRITE][HIGH][MOC]**（默认 off：`dry_run=True` + 审批双确认；捕获改前值供 undo）。\n  **生命安全点(fire/smoke/egress/加压)一律拒绝**——联网前即拒，绝不下发。\n- 厂商方言（metasys/niagara：资源路径 + 字段别名）仅存在于连接器内；oBIX 原生 XML / 精确写语义 待核实。\n\n### MQTT（可选叠加 sparkplug 组；IoT 传感器/网关）\n- `mqtt_read_topic` — 裸 MQTT 有界收集；`uns_browse` — 主题树浏览\n- 完整 Sparkplug B/UNS 工具清单见 **iaiops-factory** skill\n- `mqtt_publish` — **[WRITE][HIGH][MOC]**（默认 off）\n\n### 楼宇专属（edition 工具;仅随 building edition 加载,不进全局脑）\n- `economizer_check` — AHU **经济器故障检测(FDD)**:检出同时供冷供热(纯浪费)、该用自然冷却\n  却没用(室外够冷但新风阀在最小位且机械制冷开)、越高限还开阀(把热风引进来)。逐 AHU 判定,\n  worst-first,每故障引用温度/状态。读数来自 BACnet AI/BI 点。\n- `zone_comfort` — **区域舒适度 + 室内空气质量**(ASHRAE 55/62.1):逐区判温度 20–26°C、相对湿度\n  30–60%、CO₂ ≤1000 ppm(通风充分性代理),越界即 breach,worst-first,引用数值。读数来自 BACnet AI 点。\n\n### 跨协议脑（永远随 server 暴露）\n- 诊断：`diagnose_dataflow` `downtime_root_cause` `downtime_root_cause_live` `downtime_triage`\n  `learn_cause_weights` `rca_corpus_from_maintenance` `historian_health` `alarm_bad_actors` `tag_health`\n  `subscription_health` `heartbeat_health` `alarm_flood_analysis` `alarm_cascade`\n  `alarm_rationalization_worksheet`\n- 告警事件聚类：`alarm_event_clusters` — `alarm_bad_actors` 按**来源**排名,回答的是「哪台仪表最吵」,\n  不是「哪个故障最吵」;一个把同一条件写成十种说法的厂会得到十个 bad actor。这个按事件**说了什么**分组。\n  合并规则是**去掉大小写/标点/数字后的精确相等,不是相似度** —— 故意做笨,所以不需要模型、且可核对;\n  每个簇都列出被合并的原文与来源。**它不主张两条措辞不同的告警是同一个故障**,那由人判断。\n- 数据质量：`data_quality_scorecard` `data_quality_fleet_rollup`\n- 分析：`oee_compute` `downtime_events` `oee_multidim` `monitor_changes`\n  `health_summary` (deprecated) `anomaly_scan` (deprecated)\n- 上下文基线：`baseline_learn_contextual` `baseline_check_in_context` —— 一个位号只学一条带,\n  在它有不止一个「正常」时就是错的(同一台干燥机 recipe A 走 180 °C、B 走 240 °C,一条带横跨两者,\n  于是两个工况都不可能出错)。**上下文由人声明,绝不推断**(D16);某个上下文历史太薄就**拒学**,\n  不借用别的上下文的样本;读数落在没学过的上下文里报 `unknown_context`,**绝不回落到全局带** ——\n  回落等于把「这个工况从没见过」说成「这个工况正常」。\n- 上下游归因：`downtime_attribution` —— RCA 只按**时间**加权,所以一次上游停机会让每台下游设备\n  各自给出一个自信的本地根因。方向来自**声明的**产线顺序(D25:产线上共现是必然,拿它挖边等于\n  制造因果),顺序来自时间戳,**两者都要成立**;没声明关系就报 `not_evaluable` 并给出补法。\n- 资产：`asset_inventory` `cross_protocol_asset_model` `adopt_alias_map` `diff_alias_map`\n- 设备公告对照：`device_advisory_check` —— `scan` 早就在读 vendor/model/firmware,却什么都没做。\n  这条把它接上,并**刻意停在漏洞扫描器会继续往前走的地方**:只报「落在公告声明的版本范围内」,\n  **不说「可利用」、不给严重度** —— 可达性与补偿控制决定那件事,而只读扫描看不见它们。\n  **不内置任何 CVE 库**(过期却看着像最新的库比没有更糟),由现场挂载文件、离线可用,每条必须带来源。\n  读不出固件报 `version_unknown`,读得出但排不了序报 `version_unparsed` —— 都不算通过;\n  公告没提到的设备**不出现在结果里**,那是「未知」不是「没有」。\n- 基线：`baseline_learn` `baseline_check` `baseline_record_change` `baseline_status`\n  （change-log 基线：拒学薄历史、只报持续越带、每次告警必引基线样本 —— 非黑盒异常检测）\n- 合规/信创：`compliance_mapping` `compliance_frameworks` `compliance_dengbao_levels`\n  `compliance_report` `compliance_evidence_bundle`\n  `historian_push` `export_data` `historian_query` `historian_coverage` `stream_publish` `uns_publish` `stream_publish_event` `rca_narrate` `fleet_status` `fleet_incidents` `pdm_forecast`\n  `historian_push` `export_data`\n- 程序解读：`plc_program_outline` `plc_program_xref` `plc_program_section` `plc_program_visibility`（解读导出的 ST/AWL/L5X 程序,只读文件,强制引用行号）\n- 程序变更基线：`plc_program_snapshot` `plc_program_drift` `plc_program_history` — 把「认可的那一版」\n  的结构记下来（文件 SHA-256 + 每个 block 的结构指纹：声明/调用/分支条件/定时器，**不含行号、注释、\n  block 顺序**，所以在文件顶上加一行注释不会把整份程序报成变更），之后问某一次导出**动没动**。\n  三个判词咬得很紧：`identical` **只**由 SHA-256 相同得出；`logic_changed` 逐 block 指出哪一类变了；\n  `changed_outside_extracted_structure` = 字节变了而结构指纹全同 —— 多半是注释/排版，但这些 parser\n  是结构抽取不是文法，**所以它不叫「仅文档」，也不构成放行**。删历史只在 CLI（`iaiops program forget`）：\n  删变更控制证据不该离 agent 只有一次调用。存的是 block 名 + 哈希 + 计数，**不落声明、源码行和注释**。\n- 医疗设施（healthcare facility 安全）：`isolation_room_check` — 隔离病房压差合规（ASHRAE 170 / CDC：空气传染隔离 AII 负压、保护性环境 PE 正压，≥2.5 Pa）；检出反向/不足/低裕度,worst-first,每项引用读数。读数来自 `bacnet_read_points` 的压差 AI 点或历史库,纯分析。\n- 自证：`verify_determinism` — 把「拿掉模型、断网、同一份数据重跑、输出逐字节相同」**跑出来**：\n  固定数据集过一遍分析层，规范化后取 SHA-256，在本进程跑两遍、再在两个不同 PYTHONHASHSEED 的\n  全新解释器里各跑一遍（这一臂才抓得到集合/字典迭代顺序渗进结果），全程 socket 抛异常。\n  给 CSV/验证团队的是一条能写进 IQ/OQ 的测试用例，不是一句形容词。\n- 元：`protocols_supported`(产品能做什么)· `site_readiness`(这个站点今天能跑什么、还差什么;零联网)\n  · `onboarding_status`(先判定路线：设备直读 / 已在 UNS broker，UNS 再按已存体检分 B1/B2；再给这条路上的下一步;零联网)\n  · `onboarding_config_draft`(把已存的 scan 变成 config.yaml 端点草稿 —— **只写连接事实**：\n    `value: null` 的字段是扫描没确认的，照抄它的 `caution`，别替人填也别删；`tags` 永远是空的，\n    点位语义只能人来确认 `iaiops tags export|apply`)\n- 调查层（§13，八步证据闭环）：`investigation_readiness` `investigation_open` `investigation_show`\n  `investigation_list` — 「真出事时这个站能走到第几步、每个缺口还差什么」，以及对一个**已过去的窗口**\n  逐步走完并留档（不碰设备）。缺口分两种:**你没供**(给命令) 与 **产品供不了**。\n- 产线关系与机制库：`line_relation_declare` `line_relations_list` `mechanism_library_check`\n  `mechanism_library_list` — 上下游由**人声明**（D25:线上下游共现是必然，推不出因果）；\n  机制库按 ISO 14224 分 mode/mechanism/cause，**可排除、绝不确认**，\n  库里没有这条原因 → `nothing_known`（不是「无异议」）。\n\n\n## Workflows\n\n1. **Doctor-first**：`protocols_supported` → `iaiops doctor` → `bacnet_discover`\n   （Who-Is 有响应才谈读点）。\n2. **Read-first**：`bacnet_object_list` → `bacnet_read_points` 快照 →\n   趋势用 `bacnet_read_trend_log`，变化捕获用 `bacnet_cov_subscribe`；\n   \"没数据\"用 `diagnose_dataflow`，坏点排名用 `tag_health`。\n3. **MOC 写**：`bacnet_write_property`（与可选 `mqtt_publish`）为\n   **[WRITE][HIGH][MOC]**：默认 `dry_run=True`、捕获改前值供 undo、\n   `iaiops approve` 具名审批双确认。写设定值可影响在运楼宇设备 ——\n   未经授权绝不写。\n\n## 支持版本矩阵（内部 HLD §8，设计文档不随本仓发布；`待核实` 不得当既成事实）\n\n| 协议 | 库(pin) | 规范/版本 | 覆盖 | 传输 | 自测 |\n|---|---|---|---|---|---|\n| BACnet/IP | `BAC0>=2023.6,<2026`（extra） | ASHRAE 135 Annex J | 暖通/楼宇/厂务控制器 | UDP/47808 | ✅ 读路径 verified 2026-07-02（真 bacpypes3 虚拟设备）；live HVAC 写/COV/trend 待核实 |\n| Modbus-TCP | `pymodbus>=3.5,<4` | App 1.1b3；FC 1/2/3/4/5/6/15/16 | 电表/冷机/任意 TCP 从站 | TCP/502 | ✅ |\n| Modbus-RTU | `pymodbus>=3.5,<4` + `pyserial>=3.5` | Modbus serial (RTU) | 串口表计 | RS-485/serial | ✅ socat PTY verified 2026-07-02；物理 RS-485 待核实 |\n| IO-Link | `requests>=2.31,<3`（复用 MTConnect pin） | IO-Link Master JSON Integration（IOLINK-JSON）；ifm IoT-Core / plain-REST 双 flavor | 带 JSON/REST 接口的主站（ifm/Balluff/Turck 类） | HTTP REST/JSON | ✅ mock 主站（双 flavor）；live master 待核实 |\n| MQTT | `paho-mqtt>=2.0,<3` | MQTT 3.1.1/5（裸 MQTT + SpB） | IoT 传感器/网关/Broker | TCP/1883/8883 | ✅ |\n| BAS: Metasys OpenBlue REST | `requests>=2.31,<3`（复用 MTConnect pin，无新 HTTP 依赖） | Metasys REST API v4（`/objects`·`/alarms`·`/trendedAttributes`）；JC OpenBlue 监控控制器 | NAE/SNE/SNC 类监控控制器聚合的 BACnet 现场点 | HTTPS + Bearer token | ✅ mock 控制器（in-repo）；live 设备写/trend/告警 待核实 |\n| BAS: Niagara 4 oBIX/REST | `requests>=2.31,<3`（复用 MTConnect pin，无新 HTTP 依赖） | Niagara 4 oBIX/REST（`/obix/config`·`/obix/alarms`·`/obix/histories`）；JSON 建模，原生 oBIX-XML 待核实 | Tridium JACE / Niagara Supervisor 下的点/告警/历史 | HTTPS + Bearer token | ✅ mock 控制器（in-repo）；live 设备 + oBIX-XML 编码 待核实 |\n\nFile v0.28.0:_meta.json\n\n{\n  \"ownerId\": \"kn7b067awq2s97bn3d7p5qfhw5827pxc\",\n  \"slug\": \"iaiops-building\",\n  \"version\": \"0.28.0\",\n  \"publishedAt\": 1789535360173\n}\n\nFile v0.28.0:skill-card.md\n\n## Description:\n\nBuilding edition of iaiops for facility automation over BACnet/IP, Modbus, IO-Link, MQTT, and BAS supervisory-controller APIs, with read-first workflows and approval-gated writes.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[zw008](https://clawhub.ai/user/zw008)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, facility engineers, and authorized building-automation operators use this skill to discover and read building systems, inspect HVAC and BAS data, diagnose data quality or alarm patterns, and prepare tightly controlled changes. It is intended for authorized environments where write-capable tools remain dry-run unless change approval and rollback are in place.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can interact with live building automation and HVAC systems, including high-impact write paths.\n\nMitigation: Use it only on authorized facility systems and keep write tools in dry-run mode unless a real MOC approval and rollback path are in place.\n\nRisk: Installing the `iaiops[building]` package is a supply-chain trust decision.\n\nMitigation: Install in an isolated, least-privileged environment and pin and verify the package before use.\n\nRisk: Live HVAC or BAS commands may affect operating equipment if change controls are bypassed.\n\nMitigation: Require explicit approval, preserve rollback or undo information, and avoid safety-critical points unless the site authorization and procedure explicitly permit the action.\n\n## Reference(s):\n\n- [Packaged skill source](artifact/SKILL.md)\n- [ClawHub skill page](https://clawhub.ai/zw008/skills/iaiops-building)\n- [ClawHub publisher profile](https://clawhub.ai/user/zw008)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with inline commands, configuration snippets, and structured tool recommendations]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May include read-only diagnostics, point snapshots, trend summaries, change-control recommendations, and dry-run write plans.]\n\n## Skill Version(s):\n\n0.28.0 (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 v0.27.0: 3 files, 8927 bytes\n\nFiles: skill-card.md (2715b), SKILL.md (13428b), _meta.json (135b)\n\nFile v0.27.0:SKILL.md\n\n---\nname: iaiops-building\ndescription: >-\n  Building edition of iaiops — facility / HVAC / BMS / 厂务 over BACnet/IP\n  (ASHRAE 135): Who-Is discovery, object/point lists, presentValue snapshots, COV\n  capture, TrendLog reads, one MOC-gated property write; plus Modbus-TCP/RTU for\n  meters/chillers and optional plain MQTT for IoT sensors, with the\n  cross-protocol brain. Use when the task mentions BACnet, BACnet-IP, HVAC, AHU,\n  chiller, VAV, BMS, building automation, facility management, 厂务, 楼宇自控,\n  Who-Is, presentValue, or TrendLog; also IO-Link masters for smart building\n  sensors (JSON interface, read-only), and the vendor supervisory-controller REST\n  layer above BACnet (Metasys/OpenBlue, Niagara/oBIX) for point/alarm/trend reads\n  and one MOC-gated command. Read-first, MOC-gated writes.\n---\n\n# iaiops-building — 楼宇/厂务 edition（BACnet + Modbus + IO-Link + MQTT + 脑）\n\n启动：`IAIOPS_MCP=building` / `iaiops-mcp-building`（= bacnet + modbus + opcua + iolink + 脑）。\nIoT 传感器走 MQTT 时叠加：`IAIOPS_MCP=building,sparkplug`。\n安装：`pip install iaiops[building]`。BACnet 的 `host` 是**本机** BACnet/IP 接口\n（`ip` 或 `ip/mask`）。\n\n## 工具\n\n### BACnet/IP（read-first；暖通/楼宇/厂务）\n- `bacnet_discover` — Who-Is：本地 BACnet/IP 网上的设备\n- `bacnet_object_list` — 设备的 object/point 列表\n- `bacnet_read_property` — 单对象属性（默认 presentValue）\n- `bacnet_read_points` — 所有 analog/binary/multistate 点的 presentValue（HVAC 快照）\n- `bacnet_cov_subscribe` — 单对象有界 Change-of-Value 捕获\n- `bacnet_read_trend_log` — 读设备 TrendLog 缓冲记录\n- `bacnet_write_property` — **[WRITE][HIGH][MOC]** 写单对象属性（默认 off：\n  `dry_run=True` + 审批双确认；可指挥楼宇设备 — 设定值、输出）\n\n### Modbus-TCP / Modbus-RTU（只读；电表/冷机/表计）\n- `modbus_read_holding` `modbus_read_input` `modbus_read_coils` `modbus_read_discrete`\n- `modbus_detect_byte_order` / `modbus_list_templates` / `modbus_apply_template`\n- `modbus_health_summary`\n\n### IO-Link（只读；主站 JSON 接口 — 楼宇智能传感器）\n- `iolink_master_info` — 主站身份（/deviceinfo）\n- `iolink_ports` — 有界端口扫描（≤32：mode/status + 在线设备身份）\n- `iolink_device_info` — 单端口设备身份\n- `iolink_read_pdin` — 过程数据输入（raw hex + 字节数组；按 IODD 解码）\n- `iolink_read_isdu` — ISDU 参数读（index/subindex 有界）\n- `iolink_scan` — 主站 + 全端口一次性快照\n- 配置 `flavor: iotcore`（ifm IoT-Core，默认）或 `rest`（plain-REST 主站）；v1 只读\n\n### BAS 控制器层（edition 工具；厂商监控控制器 REST，在 BACnet **之上**）\n厂商监控控制器（Johnson Controls Metasys/OpenBlue、Tridium Niagara oBIX/REST）把大量 BACnet\n现场点/告警/趋势聚合在一个带鉴权的企业 REST 接口后面——与 `bacnet`（现场总线）互补、非重复。\nBearer/token 从加密 secret store 按 key 取（`secret_name`），不走明文参数。\n- `bas_point_list` — 列控制器 point/object（跨厂商归一化：id/name/value/unit/status）\n- `bas_point_read` — 单/多点 present-value\n- `bas_alarm_list` — 控制器活动告警/事件（归一化）\n- `bas_trend_read` — 单点历史趋势样本（有界 ≤5000）\n- `bas_command` — **[WRITE][HIGH][MOC]**（默认 off：`dry_run=True` + 审批双确认；捕获改前值供 undo）。\n  **生命安全点(fire/smoke/egress/加压)一律拒绝**——联网前即拒，绝不下发。\n- 厂商方言（metasys/niagara：资源路径 + 字段别名）仅存在于连接器内；oBIX 原生 XML / 精确写语义 待核实。\n\n### MQTT（可选叠加 sparkplug 组；IoT 传感器/网关）\n- `mqtt_read_topic` — 裸 MQTT 有界收集；`uns_browse` — 主题树浏览\n- 完整 Sparkplug B/UNS 工具清单见 **iaiops-factory** skill\n- `mqtt_publish` — **[WRITE][HIGH][MOC]**（默认 off）\n\n### 楼宇专属（edition 工具;仅随 building edition 加载,不进全局脑）\n- `economizer_check` — AHU **经济器故障检测(FDD)**:检出同时供冷供热(纯浪费)、该用自然冷却\n  却没用(室外够冷但新风阀在最小位且机械制冷开)、越高限还开阀(把热风引进来)。逐 AHU 判定,\n  worst-first,每故障引用温度/状态。读数来自 BACnet AI/BI 点。\n- `zone_comfort` — **区域舒适度 + 室内空气质量**(ASHRAE 55/62.1):逐区判温度 20–26°C、相对湿度\n  30–60%、CO₂ ≤1000 ppm(通风充分性代理),越界即 breach,worst-first,引用数值。读数来自 BACnet AI 点。\n\n### 跨协议脑（永远随 server 暴露）\n- 诊断：`diagnose_dataflow` `downtime_root_cause` `downtime_root_cause_live` `downtime_triage`\n  `learn_cause_weights` `rca_corpus_from_maintenance` `historian_health` `alarm_bad_actors` `tag_health`\n  `subscription_health` `heartbeat_health` `alarm_flood_analysis` `alarm_cascade`\n  `alarm_rationalization_worksheet`\n- 告警事件聚类：`alarm_event_clusters` — `alarm_bad_actors` 按**来源**排名,回答的是「哪台仪表最吵」,\n  不是「哪个故障最吵」;一个把同一条件写成十种说法的厂会得到十个 bad actor。这个按事件**说了什么**分组。\n  合并规则是**去掉大小写/标点/数字后的精确相等,不是相似度** —— 故意做笨,所以不需要模型、且可核对;\n  每个簇都列出被合并的原文与来源。**它不主张两条措辞不同的告警是同一个故障**,那由人判断。\n- 数据质量：`data_quality_scorecard` `data_quality_fleet_rollup`\n- 分析：`oee_compute` `downtime_events` `oee_multidim` `monitor_changes`\n  `health_summary` (deprecated) `anomaly_scan` (deprecated)\n- 上下文基线：`baseline_learn_contextual` `baseline_check_in_context` —— 一个位号只学一条带,\n  在它有不止一个「正常」时就是错的(同一台干燥机 recipe A 走 180 °C、B 走 240 °C,一条带横跨两者,\n  于是两个工况都不可能出错)。**上下文由人声明,绝不推断**(D16);某个上下文历史太薄就**拒学**,\n  不借用别的上下文的样本;读数落在没学过的上下文里报 `unknown_context`,**绝不回落到全局带** ——\n  回落等于把「这个工况从没见过」说成「这个工况正常」。\n- 上下游归因：`downtime_attribution` —— RCA 只按**时间**加权,所以一次上游停机会让每台下游设备\n  各自给出一个自信的本地根因。方向来自**声明的**产线顺序(D25:产线上共现是必然,拿它挖边等于\n  制造因果),顺序来自时间戳,**两者都要成立**;没声明关系就报 `not_evaluable` 并给出补法。\n- 资产：`asset_inventory` `cross_protocol_asset_model` `adopt_alias_map` `diff_alias_map`\n- 设备公告对照：`device_advisory_check` —— `scan` 早就在读 vendor/model/firmware,却什么都没做。\n  这条把它接上,并**刻意停在漏洞扫描器会继续往前走的地方**:只报「落在公告声明的版本范围内」,\n  **不说「可利用」、不给严重度** —— 可达性与补偿控制决定那件事,而只读扫描看不见它们。\n  **不内置任何 CVE 库**(过期却看着像最新的库比没有更糟),由现场挂载文件、离线可用,每条必须带来源。\n  读不出固件报 `version_unknown`,读得出但排不了序报 `version_unparsed` —— 都不算通过;\n  公告没提到的设备**不出现在结果里**,那是「未知」不是「没有」。\n- 基线：`baseline_learn` `baseline_check` `baseline_record_change` `baseline_status`\n  （change-log 基线：拒学薄历史、只报持续越带、每次告警必引基线样本 —— 非黑盒异常检测）\n- 合规/信创：`compliance_mapping` `compliance_frameworks` `compliance_dengbao_levels`\n  `compliance_report` `compliance_evidence_bundle`\n  `historian_push` `export_data` `historian_query` `historian_coverage` `stream_publish` `uns_publish` `stream_publish_event` `rca_narrate` `fleet_status` `fleet_incidents` `pdm_forecast`\n  `historian_push` `export_data`\n- 程序解读：`plc_program_outline` `plc_program_xref` `plc_program_section` `plc_program_visibility`（解读导出的 ST/AWL/L5X 程序,只读文件,强制引用行号）\n- 程序变更基线：`plc_program_snapshot` `plc_program_drift` `plc_program_history` — 把「认可的那一版」\n  的结构记下来（文件 SHA-256 + 每个 block 的结构指纹：声明/调用/分支条件/定时器，**不含行号、注释、\n  block 顺序**，所以在文件顶上加一行注释不会把整份程序报成变更），之后问某一次导出**动没动**。\n  三个判词咬得很紧：`identical` **只**由 SHA-256 相同得出；`logic_changed` 逐 block 指出哪一类变了；\n  `changed_outside_extracted_structure` = 字节变了而结构指纹全同 —— 多半是注释/排版，但这些 parser\n  是结构抽取不是文法，**所以它不叫「仅文档」，也不构成放行**。删历史只在 CLI（`iaiops program forget`）：\n  删变更控制证据不该离 agent 只有一次调用。存的是 block 名 + 哈希 + 计数，**不落声明、源码行和注释**。\n- 医疗设施（healthcare facility 安全）：`isolation_room_check` — 隔离病房压差合规（ASHRAE 170 / CDC：空气传染隔离 AII 负压、保护性环境 PE 正压，≥2.5 Pa）；检出反向/不足/低裕度,worst-first,每项引用读数。读数来自 `bacnet_read_points` 的压差 AI 点或历史库,纯分析。\n- 自证：`verify_determinism` — 把「拿掉模型、断网、同一份数据重跑、输出逐字节相同」**跑出来**：\n  固定数据集过一遍分析层，规范化后取 SHA-256，在本进程跑两遍、再在两个不同 PYTHONHASHSEED 的\n  全新解释器里各跑一遍（这一臂才抓得到集合/字典迭代顺序渗进结果），全程 socket 抛异常。\n  给 CSV/验证团队的是一条能写进 IQ/OQ 的测试用例，不是一句形容词。\n- 元：`protocols_supported`(产品能做什么)· `site_readiness`(这个站点今天能跑什么、还差什么;零联网)\n- 调查层（§13，八步证据闭环）：`investigation_readiness` `investigation_open` `investigation_show`\n  `investigation_list` — 「真出事时这个站能走到第几步、每个缺口还差什么」，以及对一个**已过去的窗口**\n  逐步走完并留档（不碰设备）。缺口分两种:**你没供**(给命令) 与 **产品供不了**。\n- 产线关系与机制库：`line_relation_declare` `line_relations_list` `mechanism_library_check`\n  `mechanism_library_list` — 上下游由**人声明**（D25:线上下游共现是必然，推不出因果）；\n  机制库按 ISO 14224 分 mode/mechanism/cause，**可排除、绝不确认**，\n  库里没有这条原因 → `nothing_known`（不是「无异议」）。\n\n\n## Workflows\n\n1. **Doctor-first**：`protocols_supported` → `iaiops doctor` → `bacnet_discover`\n   （Who-Is 有响应才谈读点）。\n2. **Read-first**：`bacnet_object_list` → `bacnet_read_points` 快照 →\n   趋势用 `bacnet_read_trend_log`，变化捕获用 `bacnet_cov_subscribe`；\n   \"没数据\"用 `diagnose_dataflow`，坏点排名用 `tag_health`。\n3. **MOC 写**：`bacnet_write_property`（与可选 `mqtt_publish`）为\n   **[WRITE][HIGH][MOC]**：默认 `dry_run=True`、捕获改前值供 undo、\n   `iaiops approve` 具名审批双确认。写设定值可影响在运楼宇设备 ——\n   未经授权绝不写。\n\n## 支持版本矩阵（内部 HLD §8，设计文档不随本仓发布；`待核实` 不得当既成事实）\n\n| 协议 | 库(pin) | 规范/版本 | 覆盖 | 传输 | 自测 |\n|---|---|---|---|---|---|\n| BACnet/IP | `BAC0>=2023.6,<2026`（extra） | ASHRAE 135 Annex J | 暖通/楼宇/厂务控制器 | UDP/47808 | ✅ 读路径 verified 2026-07-02（真 bacpypes3 虚拟设备）；live HVAC 写/COV/trend 待核实 |\n| Modbus-TCP | `pymodbus>=3.5,<4` | App 1.1b3；FC 1/2/3/4/5/6/15/16 | 电表/冷机/任意 TCP 从站 | TCP/502 | ✅ |\n| Modbus-RTU | `pymodbus>=3.5,<4` + `pyserial>=3.5` | Modbus serial (RTU) | 串口表计 | RS-485/serial | ✅ socat PTY verified 2026-07-02；物理 RS-485 待核实 |\n| IO-Link | `requests>=2.31,<3`（复用 MTConnect pin） | IO-Link Master JSON Integration（IOLINK-JSON）；ifm IoT-Core / plain-REST 双 flavor | 带 JSON/REST 接口的主站（ifm/Balluff/Turck 类） | HTTP REST/JSON | ✅ mock 主站（双 flavor）；live master 待核实 |\n| MQTT | `paho-mqtt>=2.0,<3` | MQTT 3.1.1/5（裸 MQTT + SpB） | IoT 传感器/网关/Broker | TCP/1883/8883 | ✅ |\n| BAS: Metasys OpenBlue REST | `requests>=2.31,<3`（复用 MTConnect pin，无新 HTTP 依赖） | Metasys REST API v4（`/objects`·`/alarms`·`/trendedAttributes`）；JC OpenBlue 监控控制器 | NAE/SNE/SNC 类监控控制器聚合的 BACnet 现场点 | HTTPS + Bearer token | ✅ mock 控制器（in-repo）；live 设备写/trend/告警 待核实 |\n| BAS: Niagara 4 oBIX/REST | `requests>=2.31,<3`（复用 MTConnect pin，无新 HTTP 依赖） | Niagara 4 oBIX/REST（`/obix/config`·`/obix/alarms`·`/obix/histories`）；JSON 建模，原生 oBIX-XML 待核实 | Tridium JACE / Niagara Supervisor 下的点/告警/历史 | HTTPS + Bearer token | ✅ mock 控制器（in-repo）；live 设备 + oBIX-XML 编码 待核实 |\n\nFile v0.27.0:_meta.json\n\n{\n  \"ownerId\": \"kn7b067awq2s97bn3d7p5qfhw5827pxc\",\n  \"slug\": \"iaiops-building\",\n  \"version\": \"0.27.0\",\n  \"publishedAt\": 1788405573405\n}\n\nFile v0.27.0:skill-card.md\n\n## Description:\n\niaiops-building helps agents read building automation data over BACnet/IP, Modbus, IO-Link, MQTT, and BAS controller REST layers, run facility diagnostics, and prepare dry-run, MOC-gated commands for authorized non-life-safety controls.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[zw008](https://clawhub.ai/user/zw008)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nFacility operators, controls engineers, and developers use this skill to inspect building automation networks, collect point and trend evidence, diagnose comfort, alarm, downtime, and data-quality issues, and stage tightly controlled operational changes.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Building automation write tools can affect operating equipment, including setpoints and outputs.\n\nMitigation: Install only in authorized building-automation environments; keep dry-run defaults and MOC approval enabled before any write.\n\nRisk: BACnet, BAS, and MQTT command paths are operationally sensitive and can be misused with overly broad credentials.\n\nMitigation: Use scoped credentials from the secret store and avoid plaintext credential parameters.\n\nRisk: Connection to life-safety systems could create high-impact operational risk.\n\nMitigation: Avoid life-safety systems unless documented refusal behavior and site controls have been validated; the artifact states life-safety BAS command targets are refused before network dispatch.\n\nRisk: Live device behavior for some write, COV, trend, master, and vendor-controller paths may require site validation.\n\nMitigation: Follow read-first workflows, validate point mappings and protocol readiness, and treat unverified live paths as requiring local commissioning review.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/zw008/skills/iaiops-building)\n- [ClawHub publisher profile](https://clawhub.ai/user/zw008)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown with structured tool plans, command examples, configuration snippets, diagnostic findings, and operational guidance.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May include dry-run and MOC approval steps, cited readings, bounded scan results, and refusal messages for life-safety commands.]\n\n## Skill Version(s):\n\n0.27.0 (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 v0.26.0: 3 files, 7480 bytes\n\nFiles: skill-card.md (2204b), SKILL.md (11206b), _meta.json (135b)\n\nFile v0.26.0:SKILL.md\n\n---\nname: iaiops-building\ndescription: >-\n  Building edition of iaiops — facility / HVAC / BMS / 厂务 over BACnet/IP\n  (ASHRAE 135): Who-Is discovery, object/point lists, presentValue snapshots, COV\n  capture, TrendLog reads, one MOC-gated property write; plus Modbus-TCP/RTU for\n  meters/chillers and optional plain MQTT for IoT sensors, with the\n  cross-protocol brain. Use when the task mentions BACnet, BACnet-IP, HVAC, AHU,\n  chiller, VAV, BMS, building automation, facility management, 厂务, 楼宇自控,\n  Who-Is, presentValue, or TrendLog; also IO-Link masters for smart building\n  sensors (JSON interface, read-only), and the vendor supervisory-controller REST\n  layer above BACnet (Metasys/OpenBlue, Niagara/oBIX) for point/alarm/trend reads\n  and one MOC-gated command. Read-first, MOC-gated writes.\n---\n\n# iaiops-building — 楼宇/厂务 edition（BACnet + Modbus + IO-Link + MQTT + 脑）\n\n启动：`IAIOPS_MCP=building` / `iaiops-mcp-building`（= bacnet + modbus + opcua + iolink + 脑）。\nIoT 传感器走 MQTT 时叠加：`IAIOPS_MCP=building,sparkplug`。\n安装：`pip install iaiops[building]`。BACnet 的 `host` 是**本机** BACnet/IP 接口\n（`ip` 或 `ip/mask`）。\n\n## 工具\n\n### BACnet/IP（read-first；暖通/楼宇/厂务）\n- `bacnet_discover` — Who-Is：本地 BACnet/IP 网上的设备\n- `bacnet_object_list` — 设备的 object/point 列表\n- `bacnet_read_property` — 单对象属性（默认 presentValue）\n- `bacnet_read_points` — 所有 analog/binary/multistate 点的 presentValue（HVAC 快照）\n- `bacnet_cov_subscribe` — 单对象有界 Change-of-Value 捕获\n- `bacnet_read_trend_log` — 读设备 TrendLog 缓冲记录\n- `bacnet_write_property` — **[WRITE][HIGH][MOC]** 写单对象属性（默认 off：\n  `dry_run=True` + 审批双确认；可指挥楼宇设备 — 设定值、输出）\n\n### Modbus-TCP / Modbus-RTU（只读；电表/冷机/表计）\n- `modbus_read_holding` `modbus_read_input` `modbus_read_coils` `modbus_read_discrete`\n- `modbus_detect_byte_order` / `modbus_list_templates` / `modbus_apply_template`\n- `modbus_health_summary`\n\n### IO-Link（只读；主站 JSON 接口 — 楼宇智能传感器）\n- `iolink_master_info` — 主站身份（/deviceinfo）\n- `iolink_ports` — 有界端口扫描（≤32：mode/status + 在线设备身份）\n- `iolink_device_info` — 单端口设备身份\n- `iolink_read_pdin` — 过程数据输入（raw hex + 字节数组；按 IODD 解码）\n- `iolink_read_isdu` — ISDU 参数读（index/subindex 有界）\n- `iolink_scan` — 主站 + 全端口一次性快照\n- 配置 `flavor: iotcore`（ifm IoT-Core，默认）或 `rest`（plain-REST 主站）；v1 只读\n\n### BAS 控制器层（edition 工具；厂商监控控制器 REST，在 BACnet **之上**）\n厂商监控控制器（Johnson Controls Metasys/OpenBlue、Tridium Niagara oBIX/REST）把大量 BACnet\n现场点/告警/趋势聚合在一个带鉴权的企业 REST 接口后面——与 `bacnet`（现场总线）互补、非重复。\nBearer/token 从加密 secret store 按 key 取（`secret_name`），不走明文参数。\n- `bas_point_list` — 列控制器 point/object（跨厂商归一化：id/name/value/unit/status）\n- `bas_point_read` — 单/多点 present-value\n- `bas_alarm_list` — 控制器活动告警/事件（归一化）\n- `bas_trend_read` — 单点历史趋势样本（有界 ≤5000）\n- `bas_command` — **[WRITE][HIGH][MOC]**（默认 off：`dry_run=True` + 审批双确认；捕获改前值供 undo）。\n  **生命安全点(fire/smoke/egress/加压)一律拒绝**——联网前即拒，绝不下发。\n- 厂商方言（metasys/niagara：资源路径 + 字段别名）仅存在于连接器内；oBIX 原生 XML / 精确写语义 待核实。\n\n### MQTT（可选叠加 sparkplug 组；IoT 传感器/网关）\n- `mqtt_read_topic` — 裸 MQTT 有界收集；`uns_browse` — 主题树浏览\n- 完整 Sparkplug B/UNS 工具清单见 **iaiops-factory** skill\n- `mqtt_publish` — **[WRITE][HIGH][MOC]**（默认 off）\n\n### 楼宇专属（edition 工具;仅随 building edition 加载,不进全局脑）\n- `economizer_check` — AHU **经济器故障检测(FDD)**:检出同时供冷供热(纯浪费)、该用自然冷却\n  却没用(室外够冷但新风阀在最小位且机械制冷开)、越高限还开阀(把热风引进来)。逐 AHU 判定,\n  worst-first,每故障引用温度/状态。读数来自 BACnet AI/BI 点。\n- `zone_comfort` — **区域舒适度 + 室内空气质量**(ASHRAE 55/62.1):逐区判温度 20–26°C、相对湿度\n  30–60%、CO₂ ≤1000 ppm(通风充分性代理),越界即 breach,worst-first,引用数值。读数来自 BACnet AI 点。\n\n### 跨协议脑（永远随 server 暴露）\n- 诊断：`diagnose_dataflow` `downtime_root_cause` `downtime_root_cause_live` `downtime_triage`\n  `learn_cause_weights` `rca_corpus_from_maintenance` `historian_health` `alarm_bad_actors` `tag_health`\n  `subscription_health` `heartbeat_health` `alarm_flood_analysis` `alarm_cascade`\n  `alarm_rationalization_worksheet`\n- 数据质量：`data_quality_scorecard` `data_quality_fleet_rollup`\n- 分析：`oee_compute` `downtime_events` `oee_multidim` `monitor_changes`\n  `health_summary` (deprecated) `anomaly_scan` (deprecated)\n- 资产：`asset_inventory` `cross_protocol_asset_model` `adopt_alias_map` `diff_alias_map`\n- 基线：`baseline_learn` `baseline_check` `baseline_record_change` `baseline_status`\n  （change-log 基线：拒学薄历史、只报持续越带、每次告警必引基线样本 —— 非黑盒异常检测）\n- 合规/信创：`compliance_mapping` `compliance_frameworks` `compliance_dengbao_levels`\n  `compliance_report` `compliance_evidence_bundle`\n  `historian_push` `export_data` `historian_query` `historian_coverage` `stream_publish` `uns_publish` `stream_publish_event` `rca_narrate` `fleet_status` `fleet_incidents` `pdm_forecast`\n  `historian_push` `export_data`\n- 程序解读：`plc_program_outline` `plc_program_xref` `plc_program_section` `plc_program_visibility`（解读导出的 ST/AWL/L5X 程序,只读文件,强制引用行号）\n- 程序变更基线：`plc_program_snapshot` `plc_program_drift` `plc_program_history` — 把「认可的那一版」\n  的结构记下来（文件 SHA-256 + 每个 block 的结构指纹：声明/调用/分支条件/定时器，**不含行号、注释、\n  block 顺序**，所以在文件顶上加一行注释不会把整份程序报成变更），之后问某一次导出**动没动**。\n  三个判词咬得很紧：`identical` **只**由 SHA-256 相同得出；`logic_changed` 逐 block 指出哪一类变了；\n  `changed_outside_extracted_structure` = 字节变了而结构指纹全同 —— 多半是注释/排版，但这些 parser\n  是结构抽取不是文法，**所以它不叫「仅文档」，也不构成放行**。删历史只在 CLI（`iaiops program forget`）：\n  删变更控制证据不该离 agent 只有一次调用。存的是 block 名 + 哈希 + 计数，**不落声明、源码行和注释**。\n- 医疗设施（healthcare facility 安全）：`isolation_room_check` — 隔离病房压差合规（ASHRAE 170 / CDC：空气传染隔离 AII 负压、保护性环境 PE 正压，≥2.5 Pa）；检出反向/不足/低裕度,worst-first,每项引用读数。读数来自 `bacnet_read_points` 的压差 AI 点或历史库,纯分析。\n- 自证：`verify_determinism` — 把「拿掉模型、断网、同一份数据重跑、输出逐字节相同」**跑出来**：\n  固定数据集过一遍分析层，规范化后取 SHA-256，在本进程跑两遍、再在两个不同 PYTHONHASHSEED 的\n  全新解释器里各跑一遍（这一臂才抓得到集合/字典迭代顺序渗进结果），全程 socket 抛异常。\n  给 CSV/验证团队的是一条能写进 IQ/OQ 的测试用例，不是一句形容词。\n- 元：`protocols_supported`(产品能做什么)· `site_readiness`(这个站点今天能跑什么、还差什么;零联网)\n- 调查层（§13，八步证据闭环）：`investigation_readiness` `investigation_open` `investigation_show`\n  `investigation_list` — 「真出事时这个站能走到第几步、每个缺口还差什么」，以及对一个**已过去的窗口**\n  逐步走完并留档（不碰设备）。缺口分两种:**你没供**(给命令) 与 **产品供不了**。\n- 产线关系与机制库：`line_relation_declare` `line_relations_list` `mechanism_library_check`\n  `mechanism_library_list` — 上下游由**人声明**（D25:线上下游共现是必然，推不出因果）；\n  机制库按 ISO 14224 分 mode/mechanism/cause，**可排除、绝不确认**，\n  库里没有这条原因 → `nothing_known`（不是「无异议」）。\n\n\n## Workflows\n\n1. **Doctor-first**：`protocols_supported` → `iaiops doctor` → `bacnet_discover`\n   （Who-Is 有响应才谈读点）。\n2. **Read-first**：`bacnet_object_list` → `bacnet_read_points` 快照 →\n   趋势用 `bacnet_read_trend_log`，变化捕获用 `bacnet_cov_subscribe`；\n   \"没数据\"用 `diagnose_dataflow`，坏点排名用 `tag_health`。\n3. **MOC 写**：`bacnet_write_property`（与可选 `mqtt_publish`）为\n   **[WRITE][HIGH][MOC]**：默认 `dry_run=True`、捕获改前值供 undo、\n   `iaiops approve` 具名审批双确认。写设定值可影响在运楼宇设备 ——\n   未经授权绝不写。\n\n## 支持版本矩阵（内部 HLD §8，设计文档不随本仓发布；`待核实` 不得当既成事实）\n\n| 协议 | 库(pin) | 规范/版本 | 覆盖 | 传输 | 自测 |\n|---|---|---|---|---|---|\n| BACnet/IP | `BAC0>=2023.6,<2026`（extra） | ASHRAE 135 Annex J | 暖通/楼宇/厂务控制器 | UDP/47808 | ✅ 读路径 verified 2026-07-02（真 bacpypes3 虚拟设备）；live HVAC 写/COV/trend 待核实 |\n| Modbus-TCP | `pymodbus>=3.5,<4` | App 1.1b3；FC 1/2/3/4/5/6/15/16 | 电表/冷机/任意 TCP 从站 | TCP/502 | ✅ |\n| Modbus-RTU | `pymodbus>=3.5,<4` + `pyserial>=3.5` | Modbus serial (RTU) | 串口表计 | RS-485/serial | ✅ socat PTY verified 2026-07-02；物理 RS-485 待核实 |\n| IO-Link | `requests>=2.31,<3`（复用 MTConnect pin） | IO-Link Master JSON Integration（IOLINK-JSON）；ifm IoT-Core / plain-REST 双 flavor | 带 JSON/REST 接口的主站（ifm/Balluff/Turck 类） | HTTP REST/JSON | ✅ mock 主站（双 flavor）；live master 待核实 |\n| MQTT | `paho-mqtt>=2.0,<3` | MQTT 3.1.1/5（裸 MQTT + SpB） | IoT 传感器/网关/Broker | TCP/1883/8883 | ✅ |\n| BAS: Metasys OpenBlue REST | `requests>=2.31,<3`（复用 MTConnect pin，无新 HTTP 依赖） | Metasys REST API v4（`/objects`·`/alarms`·`/trendedAttributes`）；JC OpenBlue 监控控制器 | NAE/SNE/SNC 类监控控制器聚合的 BACnet 现场点 | HTTPS + Bearer token | ✅ mock 控制器（in-repo）；live 设备写/trend/告警 待核实 |\n| BAS: Niagara 4 oBIX/REST | `requests>=2.31,<3`（复用 MTConnect pin，无新 HTTP 依赖） | Niagara 4 oBIX/REST（`/obix/config`·`/obix/alarms`·`/obix/histories`）；JSON 建模，原生 oBIX-XML 待核实 | Tridium JACE / Niagara Supervisor 下的点/告警/历史 | HTTPS + Bearer token | ✅ mock 控制器（in-repo）；live 设备 + oBIX-XML 编码 待核实 |\n\nFile v0.26.0:_meta.json\n\n{\n  \"ownerId\": \"kn7b067awq2s97bn3d7p5qfhw5827pxc\",\n  \"slug\": \"iaiops-building\",\n  \"version\": \"0.26.0\",\n  \"publishedAt\": 1788265721159\n}\n\nFile v0.26.0:skill-card.md\n\n## Description:\n\niaiops-building helps authorized facility and building-automation operators inspect BACnet/IP, Modbus, IO-Link, BAS REST, and MQTT data, run building diagnostics, and prepare tightly gated control actions.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[zw008](https://clawhub.ai/user/zw008)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, facility engineers, and authorized building operators use this skill to discover building-system devices, read points, trends, alarms, and health data, and perform fault-detection or comfort checks. Control-oriented actions are intended for approved operational workflows with dry-run and MOC gates.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Unauthorized access to building or facility systems.\n\nMitigation: Install and enable the skill only in environments where the user is authorized to access the target building systems.\n\nRisk: Changing setpoints, outputs, or MQTT topics could affect operating building equipment.\n\nMitigation: Keep write and publish tools in dry-run and MOC-gated mode, and confirm approvals outside the agent before applying changes.\n\nRisk: Loading the skill for casual HVAC questions could expose facility-system tooling when no operational access is intended.\n\nMitigation: Enable the skill only when building-system access and operational diagnostics are part of the task.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/zw008/skills/iaiops-building)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown with inline shell commands and structured tool-use guidance]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Read-first workflows; write and publish actions are dry-run and MOC-gated by default.]\n\n## Skill Version(s):\n\n0.26.0 (source: ClawHub 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 v0.23.1: 3 files, 6799 bytes\n\nFiles: skill-card.md (2472b), SKILL.md (9804b), _meta.json (135b)\n\nFile v0.23.1:SKILL.md\n\n---\nname: iaiops-building\ndescription: >-\n  Building edition of iaiops — facility / HVAC / BMS / 厂务 over BACnet/IP\n  (ASHRAE 135): Who-Is discovery, object/point lists, presentValue snapshots, COV\n  capture, TrendLog reads, one MOC-gated property write; plus Modbus-TCP/RTU for\n  meters/chillers and optional plain MQTT for IoT sensors, with the\n  cross-protocol brain. Use when the task mentions BACnet, BACnet-IP, HVAC, AHU,\n  chiller, VAV, BMS, building automation, facility management, 厂务, 楼宇自控,\n  Who-Is, presentValue, or TrendLog; also IO-Link masters for smart building\n  sensors (JSON interface, read-only), and the vendor supervisory-controller REST\n  layer above BACnet (Metasys/OpenBlue, Niagara/oBIX) for point/alarm/trend reads\n  and one MOC-gated command. Read-first, MOC-gated writes.\n---\n\n# iaiops-building — 楼宇/厂务 edition（BACnet + Modbus + IO-Link + MQTT + 脑）\n\n启动：`IAIOPS_MCP=building` / `iaiops-mcp-building`（= bacnet + modbus + opcua + iolink + 脑）。\nIoT 传感器走 MQTT 时叠加：`IAIOPS_MCP=building,sparkplug`。\n安装：`pip install iaiops[building]`。BACnet 的 `host` 是**本机** BACnet/IP 接口\n（`ip` 或 `ip/mask`）。\n\n## 工具\n\n### BACnet/IP（read-first；暖通/楼宇/厂务）\n- `bacnet_discover` — Who-Is：本地 BACnet/IP 网上的设备\n- `bacnet_object_list` — 设备的 object/point 列表\n- `bacnet_read_property` — 单对象属性（默认 presentValue）\n- `bacnet_read_points` — 所有 analog/binary/multistate 点的 presentValue（HVAC 快照）\n- `bacnet_cov_subscribe` — 单对象有界 Change-of-Value 捕获\n- `bacnet_read_trend_log` — 读设备 TrendLog 缓冲记录\n- `bacnet_write_property` — **[WRITE][HIGH][MOC]** 写单对象属性（默认 off：\n  `dry_run=True` + 审批双确认；可指挥楼宇设备 — 设定值、输出）\n\n### Modbus-TCP / Modbus-RTU（只读；电表/冷机/表计）\n- `modbus_read_holding` `modbus_read_input` `modbus_read_coils` `modbus_read_discrete`\n- `modbus_detect_byte_order` / `modbus_list_templates` / `modbus_apply_template`\n- `modbus_health_summary`\n\n### IO-Link（只读；主站 JSON 接口 — 楼宇智能传感器）\n- `iolink_master_info` — 主站身份（/deviceinfo）\n- `iolink_ports` — 有界端口扫描（≤32：mode/status + 在线设备身份）\n- `iolink_device_info` — 单端口设备身份\n- `iolink_read_pdin` — 过程数据输入（raw hex + 字节数组；按 IODD 解码）\n- `iolink_read_isdu` — ISDU 参数读（index/subindex 有界）\n- `iolink_scan` — 主站 + 全端口一次性快照\n- 配置 `flavor: iotcore`（ifm IoT-Core，默认）或 `rest`（plain-REST 主站）；v1 只读\n\n### BAS 控制器层（edition 工具；厂商监控控制器 REST，在 BACnet **之上**）\n厂商监控控制器（Johnson Controls Metasys/OpenBlue、Tridium Niagara oBIX/REST）把大量 BACnet\n现场点/告警/趋势聚合在一个带鉴权的企业 REST 接口后面——与 `bacnet`（现场总线）互补、非重复。\nBearer/token 从加密 secret store 按 key 取（`secret_name`），不走明文参数。\n- `bas_point_list` — 列控制器 point/object（跨厂商归一化：id/name/value/unit/status）\n- `bas_point_read` — 单/多点 present-value\n- `bas_alarm_list` — 控制器活动告警/事件（归一化）\n- `bas_trend_read` — 单点历史趋势样本（有界 ≤5000）\n- `bas_command` — **[WRITE][HIGH][MOC]**（默认 off：`dry_run=True` + 审批双确认；捕获改前值供 undo）。\n  **生命安全点(fire/smoke/egress/加压)一律拒绝**——联网前即拒，绝不下发。\n- 厂商方言（metasys/niagara：资源路径 + 字段别名）仅存在于连接器内；oBIX 原生 XML / 精确写语义 待核实。\n\n### MQTT（可选叠加 sparkplug 组；IoT 传感器/网关）\n- `mqtt_read_topic` — 裸 MQTT 有界收集；`uns_browse` — 主题树浏览\n- 完整 Sparkplug B/UNS 工具清单见 **iaiops-factory** skill\n- `mqtt_publish` — **[WRITE][HIGH][MOC]**（默认 off）\n\n### 楼宇专属（edition 工具;仅随 building edition 加载,不进全局脑）\n- `economizer_check` — AHU **经济器故障检测(FDD)**:检出同时供冷供热(纯浪费)、该用自然冷却\n  却没用(室外够冷但新风阀在最小位且机械制冷开)、越高限还开阀(把热风引进来)。逐 AHU 判定,\n  worst-first,每故障引用温度/状态。读数来自 BACnet AI/BI 点。\n- `zone_comfort` — **区域舒适度 + 室内空气质量**(ASHRAE 55/62.1):逐区判温度 20–26°C、相对湿度\n  30–60%、CO₂ ≤1000 ppm(通风充分性代理),越界即 breach,worst-first,引用数值。读数来自 BACnet AI 点。\n\n### 跨协议脑（永远随 server 暴露）\n- 诊断：`diagnose_dataflow` `downtime_root_cause` `downtime_root_cause_live` `downtime_triage`\n  `learn_cause_weights` `rca_corpus_from_maintenance` `historian_health` `alarm_bad_actors` `tag_health`\n  `subscription_health` `heartbeat_health` `alarm_flood_analysis` `alarm_cascade`\n  `alarm_rationalization_worksheet`\n- 数据质量：`data_quality_scorecard` `data_quality_fleet_rollup`\n- 分析：`oee_compute` `downtime_events` `oee_multidim` `monitor_changes`\n  `health_summary` (deprecated) `anomaly_scan` (deprecated)\n- 资产：`asset_inventory` `cross_protocol_asset_model` `adopt_alias_map` `diff_alias_map`\n- 基线：`baseline_learn` `baseline_check` `baseline_record_change` `baseline_status`\n  （change-log 基线：拒学薄历史、只报持续越带、每次告警必引基线样本 —— 非黑盒异常检测）\n- 合规/信创：`compliance_mapping` `compliance_frameworks` `compliance_dengbao_levels`\n  `compliance_report` `compliance_evidence_bundle`\n  `historian_push` `export_data` `historian_query` `historian_coverage` `stream_publish` `uns_publish` `stream_publish_event` `rca_narrate` `fleet_status` `fleet_incidents` `pdm_forecast`\n  `historian_push` `export_data`\n- 程序解读：`plc_program_outline` `plc_program_xref` `plc_program_section` `plc_program_visibility`（解读导出的 ST/AWL/L5X 程序,只读文件,强制引用行号）\n- 医疗设施（healthcare facility 安全）：`isolation_room_check` — 隔离病房压差合规（ASHRAE 170 / CDC：空气传染隔离 AII 负压、保护性环境 PE 正压，≥2.5 Pa）；检出反向/不足/低裕度,worst-first,每项引用读数。读数来自 `bacnet_read_points` 的压差 AI 点或历史库,纯分析。\n- 元：`protocols_supported`(产品能做什么)· `site_readiness`(这个站点今天能跑什么、还差什么;零联网)\n- 调查层（§13，八步证据闭环）：`investigation_readiness` `investigation_open` `investigation_show`\n  `investigation_list` — 「真出事时这个站能走到第几步、每个缺口还差什么」，以及对一个**已过去的窗口**\n  逐步走完并留档（不碰设备）。缺口分两种:**你没供**(给命令) 与 **产品供不了**。\n- 产线关系与机制库：`line_relation_declare` `line_relations_list` `mechanism_library_check`\n  `mechanism_library_list` — 上下游由**人声明**（D25:线上下游共现是必然，推不出因果）；\n  机制库按 ISO 14224 分 mode/mechanism/cause，**可排除、绝不确认**，\n  库里没有这条原因 → `nothing_known`（不是「无异议」）。\n\n\n## Workflows\n\n1. **Doctor-first**：`protocols_supported` → `iaiops doctor` → `bacnet_discover`\n   （Who-Is 有响应才谈读点）。\n2. **Read-first**：`bacnet_object_list` → `bacnet_read_points` 快照 →\n   趋势用 `bacnet_read_trend_log`，变化捕获用 `bacnet_cov_subscribe`；\n   \"没数据\"用 `diagnose_dataflow`，坏点排名用 `tag_health`。\n3. **MOC 写**：`bacnet_write_property`（与可选 `mqtt_publish`）为\n   **[WRITE][HIGH][MOC]**：默认 `dry_run=True`、捕获改前值供 undo、\n   `iaiops approve` 具名审批双确认。写设定值可影响在运楼宇设备 ——\n   未经授权绝不写。\n\n## 支持版本矩阵（内部 HLD §8，设计文档不随本仓发布；`待核实` 不得当既成事实）\n\n| 协议 | 库(pin) | 规范/版本 | 覆盖 | 传输 | 自测 |\n|---|---|---|---|---|---|\n| BACnet/IP | `BAC0>=2023.6,<2026`（extra） | ASHRAE 135 Annex J | 暖通/楼宇/厂务控制器 | UDP/47808 | ✅ 读路径 verified 2026-07-02（真 bacpypes3 虚拟设备）；live HVAC 写/COV/trend 待核实 |\n| Modbus-TCP | `pymodbus>=3.5,<4` | App 1.1b3；FC 1/2/3/4/5/6/15/16 | 电表/冷机/任意 TCP 从站 | TCP/502 | ✅ |\n| Modbus-RTU | `pymodbus>=3.5,<4` + `pyserial>=3.5` | Modbus serial (RTU) | 串口表计 | RS-485/serial | ✅ socat PTY verified 2026-07-02；物理 RS-485 待核实 |\n| IO-Link | `requests>=2.31,<3`（复用 MTConnect pin） | IO-Link Master JSON Integration（IOLINK-JSON）；ifm IoT-Core / plain-REST 双 flavor | 带 JSON/REST 接口的主站（ifm/Balluff/Turck 类） | HTTP REST/JSON | ✅ mock 主站（双 flavor）；live master 待核实 |\n| MQTT | `paho-mqtt>=2.0,<3` | MQTT 3.1.1/5（裸 MQTT + SpB） | IoT 传感器/网关/Broker | TCP/1883/8883 | ✅ |\n| BAS: Metasys OpenBlue REST | `requests>=2.31,<3`（复用 MTConnect pin，无新 HTTP 依赖） | Metasys REST API v4（`/objects`·`/alarms`·`/trendedAttributes`）；JC OpenBlue 监控控制器 | NAE/SNE/SNC 类监控控制器聚合的 BACnet 现场点 | HTTPS + Bearer token | ✅ mock 控制器（in-repo）；live 设备写/trend/告警 待核实 |\n| BAS: Niagara 4 oBIX/REST | `requests>=2.31,<3`（复用 MTConnect pin，无新 HTTP 依赖） | Niagara 4 oBIX/REST（`/obix/config`·`/obix/alarms`·`/obix/histories`）；JSON 建模，原生 oBIX-XML 待核实 | Tridium JACE / Niagara Supervisor 下的点/告警/历史 | HTTPS + Bearer token | ✅ mock 控制器（in-repo）；live 设备 + oBIX-XML 编码 待核实 |\n\nFile v0.23.1:_meta.json\n\n{\n  \"ownerId\": \"kn7b067awq2s97bn3d7p5qfhw5827pxc\",\n  \"slug\": \"iaiops-building\",\n  \"version\": \"0.23.1\",\n  \"publishedAt\": 1787894318684\n}\n\nFile v0.23.1:skill-card.md\n\n## Description:\n\nBuilding automation skill for BACnet/IP, Modbus, IO-Link, MQTT, and BAS controller workflows, including discovery, point and trend reads, diagnostics, facility checks, and approval-gated write commands.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[zw008](https://clawhub.ai/user/zw008)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, building automation engineers, and facility operators use this skill to inspect HVAC/BMS systems, collect point and trend evidence, diagnose dataflow and alarm issues, and prepare controlled actions for BACnet, BAS, MQTT, and related building telemetry.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill exposes broad OT data movement and non-building analysis functions without clear gating in the skill text.\n\nMitigation: Review the skill before installing in a live facility environment and confirm export, historian, stream, and UNS publishing tools are disabled, destination-limited, audited, or approval-gated according to site policy.\n\nRisk: Commands can affect live building automation equipment if write paths are enabled.\n\nMitigation: Keep BACnet, BAS, and MQTT write commands in dry-run mode unless authorized through the documented MOC and approval workflow, and separately confirm live facility permissions before use.\n\nRisk: PLC file analysis and fleet/compliance functions may be outside the intended scope for some building deployments.\n\nMitigation: Confirm that these functions are intended for the target site before enabling them or relying on their outputs.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/zw008/skills/iaiops-building)\n- [Publisher profile](https://clawhub.ai/user/zw008)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with tool names, shell commands, configuration settings, and risk notes]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Includes read-first workflows and approval-gated write guidance for building automation contexts]\n\n## Skill Version(s):\n\n0.23.1 (source: server release metadata)\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 v0.23.0: 3 files, 6246 bytes\n\nFiles: skill-card.md (2222b), SKILL.md (8965b), _meta.json (135b)\n\nFile v0.23.0:SKILL.md\n\n---\nname: iaiops-building\ndescription: >-\n  Building edition of iaiops — facility / HVAC / BMS / 厂务 over BACnet/IP\n  (ASHRAE 135): Who-Is discovery, object/point lists, presentValue snapshots, COV\n  capture, TrendLog reads, one MOC-gated property write; plus Modbus-TCP/RTU for\n  meters/chillers and optional plain MQTT for IoT sensors, with the\n  cross-protocol brain. Use when the task mentions BACnet, BACnet-IP, HVAC, AHU,\n  chiller, VAV, BMS, building automation, facility management, 厂务, 楼宇自控,\n  Who-Is, presentValue, or TrendLog; also IO-Link masters for smart building\n  sensors (JSON interface, read-only), and the vendor supervisory-controller REST\n  layer above BACnet (Metasys/OpenBlue, Niagara/oBIX) for point/alarm/trend reads\n  and one MOC-gated command. Read-first, MOC-gated writes.\n---\n\n# iaiops-building — 楼宇/厂务 edition（BACnet + Modbus + IO-Link + MQTT + 脑）\n\n启动：`IAIOPS_MCP=building` / `iaiops-mcp-building`（= bacnet + modbus + opcua + iolink + 脑）。\nIoT 传感器走 MQTT 时叠加：`IAIOPS_MCP=building,sparkplug`。\n安装：`pip install iaiops[building]`。BACnet 的 `host` 是**本机** BACnet/IP 接口\n（`ip` 或 `ip/mask`）。\n\n## 工具\n\n### BACnet/IP（read-first；暖通/楼宇/厂务）\n- `bacnet_discover` — Who-Is：本地 BACnet/IP 网上的设备\n- `bacnet_object_list` — 设备的 object/point 列表\n- `bacnet_read_property` — 单对象属性（默认 presentValue）\n- `bacnet_read_points` — 所有 analog/binary/multistate 点的 presentValue（HVAC 快照）\n- `bacnet_cov_subscribe` — 单对象有界 Change-of-Value 捕获\n- `bacnet_read_trend_log` — 读设备 TrendLog 缓冲记录\n- `bacnet_write_property` — **[WRITE][HIGH][MOC]** 写单对象属性（默认 off：\n  `dry_run=True` + 审批双确认；可指挥楼宇设备 — 设定值、输出）\n\n### Modbus-TCP / Modbus-RTU（只读；电表/冷机/表计）\n- `modbus_read_holding` `modbus_read_input` `modbus_read_coils` `modbus_read_discrete`\n- `modbus_detect_byte_order` / `modbus_list_templates` / `modbus_apply_template`\n- `modbus_health_summary`\n\n### IO-Link（只读；主站 JSON 接口 — 楼宇智能传感器）\n- `iolink_master_info` — 主站身份（/deviceinfo）\n- `iolink_ports` — 有界端口扫描（≤32：mode/status + 在线设备身份）\n- `iolink_device_info` — 单端口设备身份\n- `iolink_read_pdin` — 过程数据输入（raw hex + 字节数组；按 IODD 解码）\n- `iolink_read_isdu` — ISDU 参数读（index/subindex 有界）\n- `iolink_scan` — 主站 + 全端口一次性快照\n- 配置 `flavor: iotcore`（ifm IoT-Core，默认）或 `rest`（plain-REST 主站）；v1 只读\n\n### BAS 控制器层（edition 工具；厂商监控控制器 REST，在 BACnet **之上**）\n厂商监控控制器（Johnson Controls Metasys/OpenBlue、Tridium Niagara oBIX/REST）把大量 BACnet\n现场点/告警/趋势聚合在一个带鉴权的企业 REST 接口后面——与 `bacnet`（现场总线）互补、非重复。\nBearer/token 从加密 secret store 按 key 取（`secret_name`），不走明文参数。\n- `bas_point_list` — 列控制器 point/object（跨厂商归一化：id/name/value/unit/status）\n- `bas_point_read` — 单/多点 present-value\n- `bas_alarm_list` — 控制器活动告警/事件（归一化）\n- `bas_trend_read` — 单点历史趋势样本（有界 ≤5000）\n- `bas_command` — **[WRITE][HIGH][MOC]**（默认 off：`dry_run=True` + 审批双确认；捕获改前值供 undo）。\n  **生命安全点(fire/smoke/egress/加压)一律拒绝**——联网前即拒，绝不下发。\n- 厂商方言（metasys/niagara：资源路径 + 字段别名）仅存在于连接器内；oBIX 原生 XML / 精确写语义 待核实。\n\n### MQTT（可选叠加 sparkplug 组；IoT 传感器/网关）\n- `mqtt_read_topic` — 裸 MQTT 有界收集；`uns_browse` — 主题树浏览\n- 完整 Sparkplug B/UNS 工具清单见 **iaiops-factory** skill\n- `mqtt_publish` — **[WRITE][HIGH][MOC]**（默认 off）\n\n### 楼宇专属（edition 工具;仅随 building edition 加载,不进全局脑）\n- `economizer_check` — AHU **经济器故障检测(FDD)**:检出同时供冷供热(纯浪费)、该用自然冷却\n  却没用(室外够冷但新风阀在最小位且机械制冷开)、越高限还开阀(把热风引进来)。逐 AHU 判定,\n  worst-first,每故障引用温度/状态。读数来自 BACnet AI/BI 点。\n- `zone_comfort` — **区域舒适度 + 室内空气质量**(ASHRAE 55/62.1):逐区判温度 20–26°C、相对湿度\n  30–60%、CO₂ ≤1000 ppm(通风充分性代理),越界即 breach,worst-first,引用数值。读数来自 BACnet AI 点。\n\n### 跨协议脑（永远随 server 暴露）\n- 诊断：`diagnose_dataflow` `downtime_root_cause` `downtime_root_cause_live` `downtime_triage`\n  `learn_cause_weights` `rca_corpus_from_maintenance` `historian_health` `alarm_bad_actors` `tag_health`\n  `subscription_health` `heartbeat_health` `alarm_flood_analysis` `alarm_cascade`\n  `alarm_rationalization_worksheet`\n- 数据质量：`data_quality_scorecard` `data_quality_fleet_rollup`\n- 分析：`oee_compute` `downtime_events` `oee_multidim` `monitor_changes`\n  `health_summary` (deprecated) `anomaly_scan` (deprecated)\n- 资产：`asset_inventory` `cross_protocol_asset_model` `adopt_alias_map` `diff_alias_map`\n- 基线：`baseline_learn` `baseline_check` `baseline_record_change` `baseline_status`\n  （change-log 基线：拒学薄历史、只报持续越带、每次告警必引基线样本 —— 非黑盒异常检测）\n- 合规/信创：`compliance_mapping` `compliance_frameworks` `compliance_dengbao_levels`\n  `compliance_report` `compliance_evidence_bundle`\n  `historian_push` `export_data` `historian_query` `historian_coverage` `stream_publish` `uns_publish` `stream_publish_event` `rca_narrate` `fleet_status` `fleet_incidents` `pdm_forecast`\n  `historian_push` `export_data`\n- 程序解读：`plc_program_outline` `plc_program_xref` `plc_program_section` `plc_program_visibility`（解读导出的 ST/AWL/L5X 程序,只读文件,强制引用行号）\n- 医疗设施（healthcare facility 安全）：`isolation_room_check` — 隔离病房压差合规（ASHRAE 170 / CDC：空气传染隔离 AII 负压、保护性环境 PE 正压，≥2.5 Pa）；检出反向/不足/低裕度,worst-first,每项引用读数。读数来自 `bacnet_read_points` 的压差 AI 点或历史库,纯分析。\n- 元：`protocols_supported`\n\n## Workflows\n\n1. **Doctor-first**：`protocols_supported` → `iaiops doctor` → `bacnet_discover`\n   （Who-Is 有响应才谈读点）。\n2. **Read-first**：`bacnet_object_list` → `bacnet_read_points` 快照 →\n   趋势用 `bacnet_read_trend_log`，变化捕获用 `bacnet_cov_subscribe`；\n   \"没数据\"用 `diagnose_dataflow`，坏点排名用 `tag_health`。\n3. **MOC 写**：`bacnet_write_property`（与可选 `mqtt_publish`）为\n   **[WRITE][HIGH][MOC]**：默认 `dry_run=True`、捕获改前值供 undo、\n   `iaiops approve` 具名审批双确认。写设定值可影响在运楼宇设备 ——\n   未经授权绝不写。\n\n## 支持版本矩阵（内部 HLD §8，设计文档不随本仓发布；`待核实` 不得当既成事实）\n\n| 协议 | 库(pin) | 规范/版本 | 覆盖 | 传输 | 自测 |\n|---|---|---|---|---|---|\n| BACnet/IP | `BAC0>=2023.6,<2026`（extra） | ASHRAE 135 Annex J | 暖通/楼宇/厂务控制器 | UDP/47808 | ✅ 读路径 verified 2026-07-02（真 bacpypes3 虚拟设备）；live HVAC 写/COV/trend 待核实 |\n| Modbus-TCP | `pymodbus>=3.5,<4` | App 1.1b3；FC 1/2/3/4/5/6/15/16 | 电表/冷机/任意 TCP 从站 | TCP/502 | ✅ |\n| Modbus-RTU | `pymodbus>=3.5,<4` + `pyserial>=3.5` | Modbus serial (RTU) | 串口表计 | RS-485/serial | ✅ socat PTY verified 2026-07-02；物理 RS-485 待核实 |\n| IO-Link | `requests>=2.31,<3`（复用 MTConnect pin） | IO-Link Master JSON Integration（IOLINK-JSON）；ifm IoT-Core / plain-REST 双 flavor | 带 JSON/REST 接口的主站（ifm/Balluff/Turck 类） | HTTP REST/JSON | ✅ mock 主站（双 flavor）；live master 待核实 |\n| MQTT | `paho-mqtt>=2.0,<3` | MQTT 3.1.1/5（裸 MQTT + SpB） | IoT 传感器/网关/Broker | TCP/1883/8883 | ✅ |\n| BAS: Metasys OpenBlue REST | `requests>=2.31,<3`（复用 MTConnect pin，无新 HTTP 依赖） | Metasys REST API v4（`/objects`·`/alarms`·`/trendedAttributes`）；JC OpenBlue 监控控制器 | NAE/SNE/SNC 类监控控制器聚合的 BACnet 现场点 | HTTPS + Bearer token | ✅ mock 控制器（in-repo）；live 设备写/trend/告警 待核实 |\n| BAS: Niagara 4 oBIX/REST | `requests>=2.31,<3`（复用 MTConnect pin，无新 HTTP 依赖） | Niagara 4 oBIX/REST（`/obix/config`·`/obix/alarms`·`/obix/histories`）；JSON 建模，原生 oBIX-XML 待核实 | Tridium JACE / Niagara Supervisor 下的点/告警/历史 | HTTPS + Bearer token | ✅ mock 控制器（in-repo）；live 设备 + oBIX-XML 编码 待核实 |\n\nFile v0.23.0:_meta.json\n\n{\n  \"ownerId\": \"kn7b067awq2s97bn3d7p5qfhw5827pxc\",\n  \"slug\": \"iaiops-building\",\n  \"version\": \"0.23.0\",\n  \"publishedAt\": 1787632326645\n}\n\nFile v0.23.0:skill-card.md\n\n## Description:\n\nBuilding edition of iaiops for facility, HVAC, BMS, and building automation workflows over BACnet/IP, Modbus, IO-Link, MQTT, and BAS controller REST layers, with read-first operations and MOC-gated writes.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[zw008](https://clawhub.ai/user/zw008)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, facilities engineers, and authorized building operations teams use this skill to inspect building automation systems, gather point and trend data, diagnose HVAC and dataflow issues, and prepare tightly gated equipment-changing commands.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Write-capable BACnet, BAS, and MQTT operations can affect active building equipment if used without authorization or review.\n\nMitigation: Install only for authorized operators, keep dry-run mode and approval gates enabled, and require explicit MOC approval before write-capable actions.\n\nRisk: The skill depends on an external iaiops package whose provenance is not established by server-resolved source metadata.\n\nMitigation: Verify the package source and release integrity before installation or deployment.\n\nRisk: Live HVAC write, COV, trend, physical RS-485, live IO-Link master, and some BAS live-device behaviors are marked as needing verification in the artifact.\n\nMitigation: Validate these paths in a controlled environment before relying on them for production building operations.\n\n## Reference(s):\n\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown and plain text with inline commands and configuration values]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Includes read-first workflow guidance and approval-gated write posture for building-system operations.]\n\n## Skill Version(s):\n\n0.23.0 (source: ClawHub 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 v0.22.0: 3 files, 6321 bytes\n\nFiles: skill-card.md (2508b), SKILL.md (8951b), _meta.json (135b)\n\nFile v0.22.0:SKILL.md\n\n---\nname: iaiops-building\ndescription: >-\n  Building edition of iaiops — facility / HVAC / BMS / 厂务 over BACnet/IP\n  (ASHRAE 135): Who-Is discovery, object/point lists, presentValue snapshots, COV\n  capture, TrendLog reads, one MOC-gated property write; plus Modbus-TCP/RTU for\n  meters/chillers and optional plain MQTT for IoT sensors, with the\n  cross-protocol brain. Use when the task mentions BACnet, BACnet-IP, HVAC, AHU,\n  chiller, VAV, BMS, building automation, facility management, 厂务, 楼宇自控,\n  Who-Is, presentValue, or TrendLog; also IO-Link masters for smart building\n  sensors (JSON interface, read-only), and the vendor supervisory-controller REST\n  layer above BACnet (Metasys/OpenBlue, Niagara/oBIX) for point/alarm/trend reads\n  and one MOC-gated command. Read-first, MOC-gated writes.\n---\n\n# iaiops-building — 楼宇/厂务 edition（BACnet + Modbus + IO-Link + MQTT + 脑）\n\n启动：`IAIOPS_MCP=building` / `iaiops-mcp-building`（= bacnet + modbus + opcua + iolink + 脑）。\nIoT 传感器走 MQTT 时叠加：`IAIOPS_MCP=building,sparkplug`。\n安装：`pip install iaiops[building]`。BACnet 的 `host` 是**本机** BACnet/IP 接口\n（`ip` 或 `ip/mask`）。\n\n## 工具\n\n### BACnet/IP（read-first；暖通/楼宇/厂务）\n- `bacnet_discover` — Who-Is：本地 BACnet/IP 网上的设备\n- `bacnet_object_list` — 设备的 object/point 列表\n- `bacnet_read_property` — 单对象属性（默认 presentValue）\n- `bacnet_read_points` — 所有 analog/binary/multistate 点的 presentValue（HVAC 快照）\n- `bacnet_cov_subscribe` — 单对象有界 Change-of-Value 捕获\n- `bacnet_read_trend_log` — 读设备 TrendLog 缓冲记录\n- `bacnet_write_property` — **[WRITE][HIGH][MOC]** 写单对象属性（默认 off：\n  `dry_run=True` + 审批双确认；可指挥楼宇设备 — 设定值、输出）\n\n### Modbus-TCP / Modbus-RTU（只读；电表/冷机/表计）\n- `modbus_read_holding` `modbus_read_input` `modbus_read_coils` `modbus_read_discrete`\n- `modbus_detect_byte_order` / `modbus_list_templates` / `modbus_apply_template`\n- `modbus_health_summary`\n\n### IO-Link（只读；主站 JSON 接口 — 楼宇智能传感器）\n- `iolink_master_info` — 主站身份（/deviceinfo）\n- `iolink_ports` — 有界端口扫描（≤32：mode/status + 在线设备身份）\n- `iolink_device_info` — 单端口设备身份\n- `iolink_read_pdin` — 过程数据输入（raw hex + 字节数组；按 IODD 解码）\n- `iolink_read_isdu` — ISDU 参数读（index/subindex 有界）\n- `iolink_scan` — 主站 + 全端口一次性快照\n- 配置 `flavor: iotcore`（ifm IoT-Core，默认）或 `rest`（plain-REST 主站）；v1 只读\n\n### BAS 控制器层（edition 工具；厂商监控控制器 REST，在 BACnet **之上**）\n厂商监控控制器（Johnson Controls Metasys/OpenBlue、Tridium Niagara oBIX/REST）把大量 BACnet\n现场点/告警/趋势聚合在一个带鉴权的企业 REST 接口后面——与 `bacnet`（现场总线）互补、非重复。\nBearer/token 从加密 secret store 按 key 取（`secret_name`），不走明文参数。\n- `bas_point_list` — 列控制器 point/object（跨厂商归一化：id/name/value/unit/status）\n- `bas_point_read` — 单/多点 present-value\n- `bas_alarm_list` — 控制器活动告警/事件（归一化）\n- `bas_trend_read` — 单点历史趋势样本（有界 ≤5000）\n- `bas_command` — **[WRITE][HIGH][MOC]**（默认 off：`dry_run=True` + 审批双确认；捕获改前值供 undo）。\n  **生命安全点(fire/smoke/egress/加压)一律拒绝**——联网前即拒，绝不下发。\n- 厂商方言（metasys/niagara：资源路径 + 字段别名）仅存在于连接器内；oBIX 原生 XML / 精确写语义 待核实。\n\n### MQTT（可选叠加 sparkplug 组；IoT 传感器/网关）\n- `mqtt_read_topic` — 裸 MQTT 有界收集；`uns_browse` — 主题树浏览\n- 完整 Sparkplug B/UNS 工具清单见 **iaiops-factory** skill\n- `mqtt_publish` — **[WRITE][HIGH][MOC]**（默认 off）\n\n### 楼宇专属（edition 工具;仅随 building edition 加载,不进全局脑）\n- `economizer_check` — AHU **经济器故障检测(FDD)**:检出同时供冷供热(纯浪费)、该用自然冷却\n  却没用(室外够冷但新风阀在最小位且机械制冷开)、越高限还开阀(把热风引进来)。逐 AHU 判定,\n  worst-first,每故障引用温度/状态。读数来自 BACnet AI/BI 点。\n- `zone_comfort` — **区域舒适度 + 室内空气质量**(ASHRAE 55/62.1):逐区判温度 20–26°C、相对湿度\n  30–60%、CO₂ ≤1000 ppm(通风充分性代理),越界即 breach,worst-first,引用数值。读数来自 BACnet AI 点。\n\n### 跨协议脑（永远随 server 暴露）\n- 诊断：`diagnose_dataflow` `downtime_root_cause` `downtime_root_cause_live` `downtime_triage`\n  `learn_cause_weights` `rca_corpus_from_maintenance` `historian_health` `alarm_bad_actors` `tag_health`\n  `subscription_health` `heartbeat_health` `alarm_flood_analysis` `alarm_cascade`\n  `alarm_rationalization_worksheet`\n- 数据质量：`data_quality_scorecard` `data_quality_fleet_rollup`\n- 分析：`oee_compute` `downtime_events` `oee_multidim` `monitor_changes`\n  `health_summary` (deprecated) `anomaly_scan` (deprecated)\n- 资产：`asset_inventory` `cross_protocol_asset_model` `adopt_alias_map` `diff_alias_map`\n- 基线：`baseline_learn` `baseline_check` `baseline_record_change` `baseline_status`\n  （change-log 基线：拒学薄历史、只报持续越带、每次告警必引基线样本 —— 非黑盒异常检测）\n- 合规/信创：`compliance_mapping` `compliance_frameworks` `compliance_dengbao_levels`\n  `compliance_report` `compliance_evidence_bundle`\n  `historian_push` `export_data` `historian_query` `historian_coverage` `stream_publish` `stream_publish_event` `rca_narrate` `fleet_status` `fleet_incidents` `pdm_forecast`\n  `historian_push` `export_data`\n- 程序解读：`plc_program_outline` `plc_program_xref` `plc_program_section` `plc_program_visibility`（解读导出的 ST/AWL/L5X 程序,只读文件,强制引用行号）\n- 医疗设施（healthcare facility 安全）：`isolation_room_check` — 隔离病房压差合规（ASHRAE 170 / CDC：空气传染隔离 AII 负压、保护性环境 PE 正压，≥2.5 Pa）；检出反向/不足/低裕度,worst-first,每项引用读数。读数来自 `bacnet_read_points` 的压差 AI 点或历史库,纯分析。\n- 元：`protocols_supported`\n\n## Workflows\n\n1. **Doctor-first**：`protocols_supported` → `iaiops doctor` → `bacnet_discover`\n   （Who-Is 有响应才谈读点）。\n2. **Read-first**：`bacnet_object_list` → `bacnet_read_points` 快照 →\n   趋势用 `bacnet_read_trend_log`，变化捕获用 `bacnet_cov_subscribe`；\n   \"没数据\"用 `diagnose_dataflow`，坏点排名用 `tag_health`。\n3. **MOC 写**：`bacnet_write_property`（与可选 `mqtt_publish`）为\n   **[WRITE][HIGH][MOC]**：默认 `dry_run=True`、捕获改前值供 undo、\n   `iaiops approve` 具名审批双确认。写设定值可影响在运楼宇设备 ——\n   未经授权绝不写。\n\n## 支持版本矩阵（内部 HLD §8，设计文档不随本仓发布；`待核实` 不得当既成事实）\n\n| 协议 | 库(pin) | 规范/版本 | 覆盖 | 传输 | 自测 |\n|---|---|---|---|---|---|\n| BACnet/IP | `BAC0>=2023.6,<2026`（extra） | ASHRAE 135 Annex J | 暖通/楼宇/厂务控制器 | UDP/47808 | ✅ 读路径 verified 2026-07-02（真 bacpypes3 虚拟设备）；live HVAC 写/COV/trend 待核实 |\n| Modbus-TCP | `pymodbus>=3.5,<4` | App 1.1b3；FC 1/2/3/4/5/6/15/16 | 电表/冷机/任意 TCP 从站 | TCP/502 | ✅ |\n| Modbus-RTU | `pymodbus>=3.5,<4` + `pyserial>=3.5` | Modbus serial (RTU) | 串口表计 | RS-485/serial | ✅ socat PTY verified 2026-07-02；物理 RS-485 待核实 |\n| IO-Link | `requests>=2.31,<3`（复用 MTConnect pin） | IO-Link Master JSON Integration（IOLINK-JSON）；ifm IoT-Core / plain-REST 双 flavor | 带 JSON/REST 接口的主站（ifm/Balluff/Turck 类） | HTTP REST/JSON | ✅ mock 主站（双 flavor）；live master 待核实 |\n| MQTT | `paho-mqtt>=2.0,<3` | MQTT 3.1.1/5（裸 MQTT + SpB） | IoT 传感器/网关/Broker | TCP/1883/8883 | ✅ |\n| BAS: Metasys OpenBlue REST | `requests>=2.31,<3`（复用 MTConnect pin，无新 HTTP 依赖） | Metasys REST API v4（`/objects`·`/alarms`·`/trendedAttributes`）；JC OpenBlue 监控控制器 | NAE/SNE/SNC 类监控控制器聚合的 BACnet 现场点 | HTTPS + Bearer token | ✅ mock 控制器（in-repo）；live 设备写/trend/告警 待核实 |\n| BAS: Niagara 4 oBIX/REST | `requests>=2.31,<3`（复用 MTConnect pin，无新 HTTP 依赖） | Niagara 4 oBIX/REST（`/obix/config`·`/obix/alarms`·`/obix/histories`）；JSON 建模，原生 oBIX-XML 待核实 | Tridium JACE / Niagara Supervisor 下的点/告警/历史 | HTTPS + Bearer token | ✅ mock 控制器（in-repo）；live 设备 + oBIX-XML 编码 待核实 |\n\nFile v0.22.0:_meta.json\n\n{\n  \"ownerId\": \"kn7b067awq2s97bn3d7p5qfhw5827pxc\",\n  \"slug\": \"iaiops-building\",\n  \"version\": \"0.22.0\",\n  \"publishedAt\": 1785676123584\n}\n\nFile v0.22.0:skill-card.md\n\n## Description: <br>\niaiops-building helps agents inspect and analyze building automation systems across BACnet/IP, Modbus, IO-Link, MQTT, and BAS controller REST layers, with read-first workflows and MOC-gated writes for authorized control actions. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[zw008](https://clawhub.ai/user/zw008) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nFacility engineers, building automation specialists, and developers use this skill to discover devices, read points, review trends, evaluate comfort and energy issues, and prepare tightly governed control actions across building systems. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Write-capable BACnet, BAS, and MQTT actions can affect connected building equipment if enabled without operational control. <br>\nMitigation: Keep write tools disabled by default and require dry-run review, named approval, destination allowlists, audit logging, and verified authority before enabling writes. <br>\nRisk: Broad cross-protocol analytics, MQTT publishing, historian/export tools, and PLC file-analysis helpers can exceed the intended deployment scope. <br>\nMitigation: Enable only the protocol groups and helper tools the deployment actually needs, and review scope before installation. <br>\nRisk: Building life-safety points require stricter handling than ordinary comfort or energy points. <br>\nMitigation: Maintain deny rules for fire, smoke, egress, and pressurization points and review point mappings before connecting to live controllers. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/zw008/skills/iaiops-building) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown or plain text with tool names, command examples, configuration notes, and review guidance] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Read-first building automation workflows with dry-run and approval guidance for write-capable actions] <br>\n\n## Skill Version(s): <br>\n0.22.0 (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 v0.21.1: 3 files, 6249 bytes\n\nFiles: skill-card.md (2363b), SKILL.md (8951b), _meta.json (135b)\n\nFile v0.21.1:SKILL.md\n\n---\nname: iaiops-building\ndescription: >-\n  Building edition of iaiops — facility / HVAC / BMS / 厂务 over BACnet/IP\n  (ASHRAE 135): Who-Is discovery, object/point lists, presentValue snapshots, COV\n  capture, TrendLog reads, one MOC-gated property write; plus Modbus-TCP/RTU for\n  meters/chillers and optional plain MQTT for IoT sensors, with the\n  cross-protocol brain. Use when the task mentions BACnet, BACnet-IP, HVAC, AHU,\n  chiller, VAV, BMS, building automation, facility management, 厂务, 楼宇自控,\n  Who-Is, presentValue, or TrendLog; also IO-Link masters for smart building\n  sensors (JSON interface, read-only), and the vendor supervisory-controller REST\n  layer above BACnet (Metasys/OpenBlue, Niagara/oBIX) for point/alarm/trend reads\n  and one MOC-gated command. Read-first, MOC-gated writes.\n---\n\n# iaiops-building — 楼宇/厂务 edition（BACnet + Modbus + IO-Link + MQTT + 脑）\n\n启动：`IAIOPS_MCP=building` / `iaiops-mcp-building`（= bacnet + modbus + opcua + iolink + 脑）。\nIoT 传感器走 MQTT 时叠加：`IAIOPS_MCP=building,sparkplug`。\n安装：`pip install iaiops[building]`。BACnet 的 `host` 是**本机** BACnet/IP 接口\n（`ip` 或 `ip/mask`）。\n\n## 工具\n\n### BACnet/IP（read-first；暖通/楼宇/厂务）\n- `bacnet_discover` — Who-Is：本地 BACnet/IP 网上的设备\n- `bacnet_object_list` — 设备的 object/point 列表\n- `bacnet_read_property` — 单对象属性（默认 presentValue）\n- `bacnet_read_points` — 所有 analog/binary/multistate 点的 presentValue（HVAC 快照）\n- `bacnet_cov_subscribe` — 单对象有界 Change-of-Value 捕获\n- `bacnet_read_trend_log` — 读设备 TrendLog 缓冲记录\n- `bacnet_write_property` — **[WRITE][HIGH][MOC]** 写单对象属性（默认 off：\n  `dry_run=True` + 审批双确认；可指挥楼宇设备 — 设定值、输出）\n\n### Modbus-TCP / Modbus-RTU（只读；电表/冷机/表计）\n- `modbus_read_holding` `modbus_read_input` `modbus_read_coils` `modbus_read_discrete`\n- `modbus_detect_byte_order` / `modbus_list_templates` / `modbus_apply_template`\n- `modbus_health_summary`\n\n### IO-Link（只读；主站 JSON 接口 — 楼宇智能传感器）\n- `iolink_master_info` — 主站身份（/deviceinfo）\n- `iolink_ports` — 有界端口扫描（≤32：mode/status + 在线设备身份）\n- `iolink_device_info` — 单端口设备身份\n- `iolink_read_pdin` — 过程数据输入（raw hex + 字节数组；按 IODD 解码）\n- `iolink_read_isdu` — ISDU 参数读（index/subindex 有界）\n- `iolink_scan` — 主站 + 全端口一次性快照\n- 配置 `flavor: iotcore`（ifm IoT-Core，默认）或 `rest`（plain-REST 主站）；v1 只读\n\n### BAS 控制器层（edition 工具；厂商监控控制器 REST，在 BACnet **之上**）\n厂商监控控制器（Johnson Controls Metasys/OpenBlue、Tridium Niagara oBIX/REST）把大量 BACnet\n现场点/告警/趋势聚合在一个带鉴权的企业 REST 接口后面——与 `bacnet`（现场总线）互补、非重复。\nBearer/token 从加密 secret store 按 key 取（`secret_name`），不走明文参数。\n- `bas_point_list` — 列控制器 point/object（跨厂商归一化：id/name/value/unit/status）\n- `bas_point_read` — 单/多点 present-value\n- `bas_alarm_list` — 控制器活动告警/事件（归一化）\n- `bas_trend_read` — 单点历史趋势样本（有界 ≤5000）\n- `bas_command` — **[WRITE][HIGH][MOC]**（默认 off：`dry_run=True` + 审批双确认；捕获改前值供 undo）。\n  **生命安全点(fire/smoke/egress/加压)一律拒绝**——联网前即拒，绝不下发。\n- 厂商方言（metasys/niagara：资源路径 + 字段别名）仅存在于连接器内；oBIX 原生 XML / 精确写语义 待核实。\n\n### MQTT（可选叠加 sparkplug 组；IoT 传感器/网关）\n- `mqtt_read_topic` — 裸 MQTT 有界收集；`uns_browse` — 主题树浏览\n- 完整 Sparkplug B/UNS 工具清单见 **iaiops-factory** skill\n- `mqtt_publish` — **[WRITE][HIGH][MOC]**（默认 off）\n\n### 楼宇专属（edition 工具;仅随 building edition 加载,不进全局脑）\n- `economizer_check` — AHU **经济器故障检测(FDD)**:检出同时供冷供热(纯浪费)、该用自然冷却\n  却没用(室外够冷但新风阀在最小位且机械制冷开)、越高限还开阀(把热风引进来)。逐 AHU 判定,\n  worst-first,每故障引用温度/状态。读数来自 BACnet AI/BI 点。\n- `zone_comfort` — **区域舒适度 + 室内空气质量**(ASHRAE 55/62.1):逐区判温度 20–26°C、相对湿度\n  30–60%、CO₂ ≤1000 ppm(通风充分性代理),越界即 breach,worst-first,引用数值。读数来自 BACnet AI 点。\n\n### 跨协议脑（永远随 server 暴露）\n- 诊断：`diagnose_dataflow` `downtime_root_cause` `downtime_root_cause_live` `downtime_triage`\n  `learn_cause_weights` `rca_corpus_from_maintenance` `historian_health` `alarm_bad_actors` `tag_health`\n  `subscription_health` `heartbeat_health` `alarm_flood_analysis` `alarm_cascade`\n  `alarm_rationalization_worksheet`\n- 数据质量：`data_quality_scorecard` `data_quality_fleet_rollup`\n- 分析：`oee_compute` `downtime_events` `oee_multidim` `monitor_changes`\n  `health_summary` (deprecated) `anomaly_scan` (deprecated)\n- 资产：`asset_inventory` `cross_protocol_asset_model` `adopt_alias_map` `diff_alias_map`\n- 基线：`baseline_learn` `baseline_check` `baseline_record_change` `baseline_status`\n  （change-log 基线：拒学薄历史、只报持续越带、每次告警必引基线样本 —— 非黑盒异常检测）\n- 合规/信创：`compliance_mapping` `compliance_frameworks` `compliance_dengbao_levels`\n  `compliance_report` `compliance_evidence_bundle`\n  `historian_push` `export_data` `historian_query` `historian_coverage` `stream_publish` `stream_publish_event` `rca_narrate` `fleet_status` `fleet_incidents` `pdm_forecast`\n  `historian_push` `export_data`\n- 程序解读：`plc_program_outline` `plc_program_xref` `plc_program_section` `plc_program_visibility`（解读导出的 ST/AWL/L5X 程序,只读文件,强制引用行号）\n- 医疗设施（healthcare facility 安全）：`isolation_room_check` — 隔离病房压差合规（ASHRAE 170 / CDC：空气传染隔离 AII 负压、保护性环境 PE 正压，≥2.5 Pa）；检出反向/不足/低裕度,worst-first,每项引用读数。读数来自 `bacnet_read_points` 的压差 AI 点或历史库,纯分析。\n- 元：`protocols_supported`\n\n## Workflows\n\n1. **Doctor-first**：`protocols_supported` → `iaiops doctor` → `bacnet_discover`\n   （Who-Is 有响应才谈读点）。\n2. **Read-first**：`bacnet_object_list` → `bacnet_read_points` 快照 →\n   趋势用 `bacnet_read_trend_log`，变化捕获用 `bacnet_cov_subscribe`；\n   \"没数据\"用 `diagnose_dataflow`，坏点排名用 `tag_health`。\n3. **MOC 写**：`bacnet_write_property`（与可选 `mqtt_publish`）为\n   **[WRITE][HIGH][MOC]**：默认 `dry_run=True`、捕获改前值供 undo、\n   `iaiops approve` 具名审批双确认。写设定值可影响在运楼宇设备 ——\n   未经授权绝不写。\n\n## 支持版本矩阵（内部 HLD §8，设计文档不随本仓发布；`待核实` 不得当既成事实）\n\n| 协议 | 库(pin) | 规范/版本 | 覆盖 | 传输 | 自测 |\n|---|---|---|---|---|---|\n| BACnet/IP | `BAC0>=2023.6,<2026`（extra） | ASHRAE 135 Annex J | 暖通/楼宇/厂务控制器 | UDP/47808 | ✅ 读路径 verified 2026-07-02（真 bacpypes3 虚拟设备）；live HVAC 写/COV/trend 待核实 |\n| Modbus-TCP | `pymodbus>=3.5,<4` | App 1.1b3；FC 1/2/3/4/5/6/15/16 | 电表/冷机/任意 TCP 从站 | TCP/502 | ✅ |\n| Modbus-RTU | `pymodbus>=3.5,<4` + `pyserial>=3.5` | Modbus serial (RTU) | 串口表计 | RS-485/serial | ✅ socat PTY verified 2026-07-02；物理 RS-485 待核实 |\n| IO-Link | `requests>=2.31,<3`（复用 MTConnect pin） | IO-Link Master JSON Integration（IOLINK-JSON）；ifm IoT-Core / plain-REST 双 flavor | 带 JSON/REST 接口的主站（ifm/Balluff/Turck 类） | HTTP REST/JSON | ✅ mock 主站（双 flavor）；live master 待核实 |\n| MQTT | `paho-mqtt>=2.0,<3` | MQTT 3.1.1/5（裸 MQTT + SpB） | IoT 传感器/网关/Broker | TCP/1883/8883 | ✅ |\n| BAS: Metasys OpenBlue REST | `requests>=2.31,<3`（复用 MTConnect pin，无新 HTTP 依赖） | Metasys REST API v4（`/objects`·`/alarms`·`/trendedAttributes`）；JC OpenBlue 监控控制器 | NAE/SNE/SNC 类监控控制器聚合的 BACnet 现场点 | HTTPS + Bearer token | ✅ mock 控制器（in-repo）；live 设备写/trend/告警 待核实 |\n| BAS: Niagara 4 oBIX/REST | `requests>=2.31,<3`（复用 MTConnect pin，无新 HTTP 依赖） | Niagara 4 oBIX/REST（`/obix/config`·`/obix/alarms`·`/obix/histories`）；JSON 建模，原生 oBIX-XML 待核实 | Tridium JACE / Niagara Supervisor 下的点/告警/历史 | HTTPS + Bearer token | ✅ mock 控制器（in-repo）；live 设备 + oBIX-XML 编码 待核实 |\n\nFile v0.21.1:_meta.json\n\n{\n  \"ownerId\": \"kn7b067awq2s97bn3d7p5qfhw5827pxc\",\n  \"slug\": \"iaiops-building\",\n  \"version\": \"0.21.1\",\n  \"publishedAt\": 1785655466198\n}\n\nFile v0.21.1:skill-card.md\n\n## Description: <br>\niaiops-building helps agents inspect building automation systems over BACnet/IP, Modbus, IO-Link, BAS REST, and optional MQTT using read-first workflows with MOC-gated writes. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[zw008](https://clawhub.ai/user/zw008) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nFacilities engineers, building automation specialists, and operations teams use this skill to discover devices, read points and trends, analyze HVAC and facility conditions, and prepare tightly controlled building-system commands. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Building automation commands can affect operating facility equipment. <br>\nMitigation: Keep write tools in dry-run mode unless an authorized MOC approval has explicitly confirmed the change. <br>\nRisk: Use outside an authorized facility environment could expose or affect building systems. <br>\nMitigation: Install and run the skill only where the operator is authorized to inspect and potentially command those systems. <br>\nRisk: BAS and MQTT credentials could be exposed if handled as plain parameters. <br>\nMitigation: Store credentials in the protected secret store and avoid passing secrets directly in prompts or command arguments. <br>\nRisk: The external iaiops[building] package is part of the operational dependency chain. <br>\nMitigation: Verify the package provenance and release source before deployment. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/zw008/skills/iaiops-building) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown text with inline commands, configuration values, and tool-use guidance] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Read-first guidance with dry-run defaults for high-impact write operations] <br>\n\n## Skill Version(s): <br>\n0.21.1 (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 v0.21.0: 3 files, 6207 bytes\n\nFiles: skill-card.md (2180b), SKILL.md (8951b), _meta.json (135b)\n\nFile v0.21.0:SKILL.md\n\n---\nname: iaiops-building\ndescription: >-\n  Building edition of iaiops — facility / HVAC / BMS / 厂务 over BACnet/IP\n  (ASHRAE 135): Who-Is discovery, object/point lists, presentValue snapshots, COV\n  capture, TrendLog reads, one MOC-gated property write; plus Modbus-TCP/RTU for\n  meters/chillers and optional plain MQTT for IoT sensors, with the\n  cross-protocol brain. Use when the task mentions BACnet, BACnet-IP, HVAC, AHU,\n  chiller, VAV, BMS, building automation, facility management, 厂务, 楼宇自控,\n  Who-Is, presentValue, or TrendLog; also IO-Link masters for smart building\n  sensors (JSON interface, read-only), and the vendor supervisory-controller REST\n  layer above BACnet (Metasys/OpenBlue, Niagara/oBIX) for point/alarm/trend reads\n  and one MOC-gated command. Read-first, MOC-gated writes.\n---\n\n# iaiops-building — 楼宇/厂务 edition（BACnet + Modbus + IO-Link + MQTT + 脑）\n\n启动：`IAIOPS_MCP=building` / `iaiops-mcp-building`（= bacnet + modbus + opcua + iolink + 脑）。\nIoT 传感器走 MQTT 时叠加：`IAIOPS_MCP=building,sparkplug`。\n安装：`pip install iaiops[building]`。BACnet 的 `host` 是**本机** BACnet/IP 接口\n（`ip` 或 `ip/mask`）。\n\n## 工具\n\n### BACnet/IP（read-first；暖通/楼宇/厂务）\n- `bacnet_discover` — Who-Is：本地 BACnet/IP 网上的设备\n- `bacnet_object_list` — 设备的 object/point 列表\n- `bacnet_read_property` — 单对象属性（默认 presentValue）\n- `bacnet_read_points` — 所有 analog/binary/multistate 点的 presentValue（HVAC 快照）\n- `bacnet_cov_subscribe` — 单对象有界 Change-of-Value 捕获\n- `bacnet_read_trend_log` — 读设备 TrendLog 缓冲记录\n- `bacnet_write_property` — **[WRITE][HIGH][MOC]** 写单对象属性（默认 off：\n  `dry_run=True` + 审批双确认；可指挥楼宇设备 — 设定值、输出）\n\n### Modbus-TCP / Modbus-RTU（只读；电表/冷机/表计）\n- `modbus_read_holding` `modbus_read_input` `modbus_read_coils` `modbus_read_discrete`\n- `modbus_detect_byte_order` / `modbus_list_templates` / `modbus_apply_template`\n- `modbus_health_summary`\n\n### IO-Link（只读；主站 JSON 接口 — 楼宇智能传感器）\n- `iolink_master_info` — 主站身份（/deviceinfo）\n- `iolink_ports` — 有界端口扫描（≤32：mode/status + 在线设备身份）\n- `iolink_device_info` — 单端口设备身份\n- `iolink_read_pdin` — 过程数据输入（raw hex + 字节数组；按 IODD 解码）\n- `iolink_read_isdu` — ISDU 参数读（index/subindex 有界）\n- `iolink_scan` — 主站 + 全端口一次性快照\n- 配置 `flavor: iotcore`（ifm IoT-Core，默认）或 `rest`（plain-REST 主站）；v1 只读\n\n### BAS 控制器层（edition 工具；厂商监控控制器 REST，在 BACnet **之上**）\n厂商监控控制器（Johnson Controls Metasys/OpenBlue、Tridium Niagara oBIX/REST）把大量 BACnet\n现场点/告警/趋势聚合在一个带鉴权的企业 REST 接口后面——与 `bacnet`（现场总线）互补、非重复。\nBearer/token 从加密 secret store 按 key 取（`secret_name`），不走明文参数。\n- `bas_point_list` — 列控制器 point/object（跨厂商归一化：id/name/value/unit/status）\n- `bas_point_read` — 单/多点 present-value\n- `bas_alarm_list` — 控制器活动告警/事件（归一化）\n- `bas_trend_read` — 单点历史趋势样本（有界 ≤5000）\n- `bas_command` — **[WRITE][HIGH][MOC]**（默认 off：`dry_run=True` + 审批双确认；捕获改前值供 undo）。\n  **生命安全点(fire/smoke/egress/加压)一律拒绝**——联网前即拒，绝不下发。\n- 厂商方言（metasys/niagara：资源路径 + 字段别名）仅存在于连接器内；oBIX 原生 XML / 精确写语义 待核实。\n\n### MQTT（可选叠加 sparkplug 组；IoT 传感器/网关）\n- `mqtt_read_topic` — 裸 MQTT 有界收集；`uns_browse` — 主题树浏览\n- 完整 Sparkplug B/UNS 工具清单见 **iaiops-factory** skill\n- `mqtt_publish` — **[WRITE][HIGH][MOC]**（默认 off）\n\n### 楼宇专属（edition 工具;仅随 building edition 加载,不进全局脑）\n- `economizer_check` — AHU **经济器故障检测(FDD)**:检出同时供冷供热(纯浪费)、该用自然冷却\n  却没用(室外够冷但新风阀在最小位且机械制冷开)、越高限还开阀(把热风引进来)。逐 AHU 判定,\n  worst-first,每故障引用温度/状态。读数来自 BACnet AI/BI 点。\n- `zone_comfort` — **区域舒适度 + 室内空气质量**(ASHRAE 55/62.1):逐区判温度 20–26°C、相对湿度\n  30–60%、CO₂ ≤1000 ppm(通风充分性代理),越界即 breach,worst-first,引用数值。读数来自 BACnet AI 点。\n\n### 跨协议脑（永远随 server 暴露）\n- 诊断：`diagnose_dataflow` `downtime_root_cause` `downtime_root_cause_live` `downtime_triage`\n  `learn_cause_weights` `rca_corpus_from_maintenance` `historian_health` `alarm_bad_actors` `tag_health`\n  `subscription_health` `heartbeat_health` `alarm_flood_analysis` `alarm_cascade`\n  `alarm_rationalization_worksheet`\n- 数据质量：`data_quality_scorecard` `data_quality_fleet_rollup`\n- 分析：`oee_compute` `downtime_events` `oee_multidim` `monitor_changes`\n  `health_summary` (deprecated) `anomaly_scan` (deprecated)\n- 资产：`asset_inventory` `cross_protocol_asset_model` `adopt_alias_map` `diff_alias_map`\n- 基线：`baseline_learn` `baseline_check` `baseline_record_change` `baseline_status`\n  （change-log 基线：拒学薄历史、只报持续越带、每次告警必引基线样本 —— 非黑盒异常检测）\n- 合规/信创：`compliance_mapping` `compliance_frameworks` `compliance_dengbao_levels`\n  `compliance_report` `compliance_evidence_bundle`\n  `historian_push` `export_data` `historian_query` `historian_coverage` `stream_publish` `stream_publish_event` `rca_narrate` `fleet_status` `fleet_incidents` `pdm_forecast`\n  `historian_push` `export_data`\n- 程序解读：`plc_program_outline` `plc_program_xref` `plc_program_section` `plc_program_visibility`（解读导出的 ST/AWL/L5X 程序,只读文件,强制引用行号）\n- 医疗设施（healthcare facility 安全）：`isolation_room_check` — 隔离病房压差合规（ASHRAE 170 / CDC：空气传染隔离 AII 负压、保护性环境 PE 正压，≥2.5 Pa）；检出反向/不足/低裕度,worst-first,每项引用读数。读数来自 `bacnet_read_points` 的压差 AI 点或历史库,纯分析。\n- 元：`protocols_supported`\n\n## Workflows\n\n1. **Doctor-first**：`protocols_supported` → `iaiops doctor` → `bacnet_discover`\n   （Who-Is 有响应才谈读点）。\n2. **Read-first**：`bacnet_object_list` → `bacnet_read_points` 快照 →\n   趋势用 `bacnet_read_trend_log`，变化捕获用 `bacnet_cov_subscribe`；\n   \"没数据\"用 `diagnose_dataflow`，坏点排名用 `tag_health`。\n3. **MOC 写**：`bacnet_write_property`（与可选 `mqtt_publish`）为\n   **[WRITE][HIGH][MOC]**：默认 `dry_run=True`、捕获改前值供 undo、\n   `iaiops approve` 具名审批双确认。写设定值可影响在运楼宇设备 ——\n   未经授权绝不写。\n\n## 支持版本矩阵（内部 HLD §8，设计文档不随本仓发布；`待核实` 不得当既成事实）\n\n| 协议 | 库(pin) | 规范/版本 | 覆盖 | 传输 | 自测 |\n|---|---|---|---|---|---|\n| BACnet/IP | `BAC0>=2023.6,<2026`（extra） | ASHRAE 135 Annex J | 暖通/楼宇/厂务控制器 | UDP/47808 | ✅ 读路径 verified 2026-07-02（真 bacpypes3 虚拟设备）；live HVAC 写/COV/trend 待核实 |\n| Modbus-TCP | `pymodbus>=3.5,<4` | App 1.1b3；FC 1/2/3/4/5/6/15/16 | 电表/冷机/任意 TCP 从站 | TCP/502 | ✅ |\n| Modbus-RTU | `pymodbus>=3.5,<4` + `pyserial>=3.5` | Modbus serial (RTU) | 串口表计 | RS-485/serial | ✅ socat PTY verified 2026-07-02；物理 RS-485 待核实 |\n| IO-Link | `requests>=2.31,<3`（复用 MTConnect pin） | IO-Link Master JSON Integration（IOLINK-JSON）；ifm IoT-Core / plain-REST 双 flavor | 带 JSON/REST 接口的主站（ifm/Balluff/Turck 类） | HTTP REST/JSON | ✅ mock 主站（双 flavor）；live master 待核实 |\n| MQTT | `paho-mqtt>=2.0,<3` | MQTT 3.1.1/5（裸 MQTT + SpB） | IoT 传感器/网关/Broker | TCP/1883/8883 | ✅ |\n| BAS: Metasys OpenBlue REST | `requests>=2.31,<3`（复用 MTConnect pin，无新 HTTP 依赖） | Metasys REST API v4（`/objects`·`/alarms`·`/trendedAttributes`）；JC OpenBlue 监控控制器 | NAE/SNE/SNC 类监控控制器聚合的 BACnet 现场点 | HTTPS + Bearer token | ✅ mock 控制器（in-repo）；live 设备写/trend/告警 待核实 |\n| BAS: Niagara 4 oBIX/REST | `requests>=2.31,<3`（复用 MTConnect pin，无新 HTTP 依赖） | Niagara 4 oBIX/REST（`/obix/config`·`/obix/alarms`·`/obix/histories`）；JSON 建模，原生 oBIX-XML 待核实 | Tridium JACE / Niagara Supervisor 下的点/告警/历史 | HTTPS + Bearer token | ✅ mock 控制器（in-repo）；live 设备 + oBIX-XML 编码 待核实 |\n\nFile v0.21.0:_meta.json\n\n{\n  \"ownerId\": \"kn7b067awq2s97bn3d7p5qfhw5827pxc\",\n  \"slug\": \"iaiops-building\",\n  \"version\": \"0.21.0\",\n  \"publishedAt\": 1785640029185\n}\n\nFile v0.21.0:skill-card.md\n\n## Description: <br>\nBuilding edition of iaiops for facility, HVAC, BMS, and building automation workflows over BACnet/IP, Modbus, IO-Link, MQTT, and BAS controller REST layers with read-first operations and MOC-gated writes. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[zw008](https://clawhub.ai/user/zw008) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers, facility engineers, and building automation teams use this skill to discover BACnet/IP devices, read points, trends, and alarms, analyze building conditions, and prepare controlled write or command workflows for authorized BMS operations. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Broad industrial analytics and data-export capabilities may expose operational or building data beyond the intended scope. <br>\nMitigation: Administrators should disable, allowlist, audit, or otherwise restrict export, stream, historian, PLC, and factory-oriented tools to approved destinations and datasets. <br>\nRisk: Write-capable BACnet, BAS, and MQTT commands can affect operating building equipment. <br>\nMitigation: Keep writes dry-run by default, require MOC approval and double confirmation, preserve undo information where available, and block life-safety points before enabling command paths. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/zw008/skills/iaiops-building) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown prose with inline command and tool names] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May include dry-run and approval guidance for write-capable building systems commands.] <br>\n\n## Skill Version(s): <br>\n0.21.0 (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 v0.20.4: 3 files, 6359 bytes\n\nFiles: skill-card.md (2560b), SKILL.md (8951b), _meta.json (135b)\n\nFile v0.20.4:SKILL.md\n\n---\nname: iaiops-building\ndescription: >-\n  Building edition of iaiops — facility / HVAC / BMS / 厂务 over BACnet/IP\n  (ASHRAE 135): Who-Is discovery, object/point lists, presentValue snapshots, COV\n  capture, TrendLog reads, one MOC-gated property write; plus Modbus-TCP/RTU for\n  meters/chillers and optional plain MQTT for IoT sensors, with the\n  cross-protocol brain. Use when the task mentions BACnet, BACnet-IP, HVAC, AHU,\n  chiller, VAV, BMS, building automation, facility management, 厂务, 楼宇自控,\n  Who-Is, presentValue, or TrendLog; also IO-Link masters for smart building\n  sensors (JSON interface, read-only), and the vendor supervisory-controller REST\n  layer above BACnet (Metasys/OpenBlue, Niagara/oBIX) for point/alarm/trend reads\n  and one MOC-gated command. Read-first, MOC-gated writes.\n---\n\n# iaiops-building — 楼宇/厂务 edition（BACnet + Modbus + IO-Link + MQTT + 脑）\n\n启动：`IAIOPS_MCP=building` / `iaiops-mcp-building`（= bacnet + modbus + opcua + iolink + 脑）。\nIoT 传感器走 MQTT 时叠加：`IAIOPS_MCP=building,sparkplug`。\n安装：`pip install iaiops[building]`。BACnet 的 `host` 是**本机** BACnet/IP 接口\n（`ip` 或 `ip/mask`）。\n\n## 工具\n\n### BACnet/IP（read-first；暖通/楼宇/厂务）\n- `bacnet_discover` — Who-Is：本地 BACnet/IP 网上的设备\n- `bacnet_object_list` — 设备的 object/point 列表\n- `bacnet_read_property` — 单对象属性（默认 presentValue）\n- `bacnet_read_points` — 所有 analog/binary/multistate 点的 presentValue（HVAC 快照）\n- `bacnet_cov_subscribe` — 单对象有界 Change-of-Value 捕获\n- `bacnet_read_trend_log` — 读设备 TrendLog 缓冲记录\n- `bacnet_write_property` — **[WRITE][HIGH][MOC]** 写单对象属性（默认 off：\n  `dry_run=True` + 审批双确认；可指挥楼宇设备 — 设定值、输出）\n\n### Modbus-TCP / Modbus-RTU（只读；电表/冷机/表计）\n- `modbus_read_holding` `modbus_read_input` `modbus_read_coils` `modbus_read_discrete`\n- `modbus_detect_byte_order` / `modbus_list_templates` / `modbus_apply_template`\n- `modbus_health_summary`\n\n### IO-Link（只读；主站 JSON 接口 — 楼宇智能传感器）\n- `iolink_master_info` — 主站身份（/deviceinfo）\n- `iolink_ports` — 有界端口扫描（≤32：mode/status + 在线设备身份）\n- `iolink_device_info` — 单端口设备身份\n- `iolink_read_pdin` — 过程数据输入（raw hex + 字节数组；按 IODD 解码）\n- `iolink_read_isdu` — ISDU 参数读（index/subindex 有界）\n- `iolink_scan` — 主站 + 全端口一次性快照\n- 配置 `flavor: iotcore`（ifm IoT-Core，默认）或 `rest`（plain-REST 主站）；v1 只读\n\n### BAS 控制器层（edition 工具；厂商监控控制器 REST，在 BACnet **之上**）\n厂商监控控制器（Johnson Controls Metasys/OpenBlue、Tridium Niagara oBIX/REST）把大量 BACnet\n现场点/告警/趋势聚合在一个带鉴权的企业 REST 接口后面——与 `bacnet`（现场总线）互补、非重复。\nBearer/token 从加密 secret store 按 key 取（`secret_name`），不走明文参数。\n- `bas_point_list` — 列控制器 point/object（跨厂商归一化：id/name/value/unit/status）\n- `bas_point_read` — 单/多点 present-value\n- `bas_alarm_list` — 控制器活动告警/事件（归一化）\n- `bas_trend_read` — 单点历史趋势样本（有界 ≤5000）\n- `bas_command` — **[WRITE][HIGH][MOC]**（默认 off：`dry_run=True` + 审批双确认；捕获改前值供 undo）。\n  **生命安全点(fire/smoke/egress/加压)一律拒绝**——联网前即拒，绝不下发。\n- 厂商方言（metasys/niagara：资源路径 + 字段别名）仅存在于连接器内；oBIX 原生 XML / 精确写语义 待核实。\n\n### MQTT（可选叠加 sparkplug 组；IoT 传感器/网关）\n- `mqtt_read_topic` — 裸 MQTT 有界收集；`uns_browse` — 主题树浏览\n- 完整 Sparkplug B/UNS 工具清单见 **iaiops-factory** skill\n- `mqtt_publish` — **[WRITE][HIGH][MOC]**（默认 off）\n\n### 楼宇专属（edition 工具;仅随 building edition 加载,不进全局脑）\n- `economizer_check` — AHU **经济器故障检测(FDD)**:检出同时供冷供热(纯浪费)、该用自然冷却\n  却没用(室外够冷但新风阀在最小位且机械制冷开)、越高限还开阀(把热风引进来)。逐 AHU 判定,\n  worst-first,每故障引用温度/状态。读数来自 BACnet AI/BI 点。\n- `zone_comfort` — **区域舒适度 + 室内空气质量**(ASHRAE 55/62.1):逐区判温度 20–26°C、相对湿度\n  30–60%、CO₂ ≤1000 ppm(通风充分性代理),越界即 breach,worst-first,引用数值。读数来自 BACnet AI 点。\n\n### 跨协议脑（永远随 server 暴露）\n- 诊断：`diagnose_dataflow` `downtime_root_cause` `downtime_root_cause_live` `downtime_triage`\n  `learn_cause_weights` `rca_corpus_from_maintenance` `historian_health` `alarm_bad_actors` `tag_health`\n  `subscription_health` `heartbeat_health` `alarm_flood_analysis` `alarm_cascade`\n  `alarm_rationalization_worksheet`\n- 数据质量：`data_quality_scorecard` `data_quality_fleet_rollup`\n- 分析：`oee_compute` `downtime_events` `oee_multidim` `monitor_changes`\n  `health_summary` (deprecated) `anomaly_scan` (deprecated)\n- 资产：`asset_inventory` `cross_protocol_asset_model` `adopt_alias_map` `diff_alias_map`\n- 基线：`baseline_learn` `baseline_check` `baseline_record_change` `baseline_status`\n  （change-log 基线：拒学薄历史、只报持续越带、每次告警必引基线样本 —— 非黑盒异常检测）\n- 合规/信创：`compliance_mapping` `compliance_frameworks` `compliance_dengbao_levels`\n  `compliance_report` `compliance_evidence_bundle`\n  `historian_push` `export_data` `historian_query` `historian_coverage` `stream_publish` `stream_publish_event` `rca_narrate` `fleet_status` `fleet_incidents` `pdm_forecast`\n  `historian_push` `export_data`\n- 程序解读：`plc_program_outline` `plc_program_xref` `plc_program_section` `plc_program_visibility`（解读导出的 ST/AWL/L5X 程序,只读文件,强制引用行号）\n- 医疗设施（healthcare facility 安全）：`isolation_room_check` — 隔离病房压差合规（ASHRAE 170 / CDC：空气传染隔离 AII 负压、保护性环境 PE 正压，≥2.5 Pa）；检出反向/不足/低裕度,worst-first,每项引用读数。读数来自 `bacnet_read_points` 的压差 AI 点或历史库,纯分析。\n- 元：`protocols_supported`\n\n## Workflows\n\n1. **Doctor-first**：`protocols_supported` → `iaiops doctor` → `bacnet_discover`\n   （Who-Is 有响应才谈读点）。\n2. **Read-first**：`bacnet_object_list` → `bacnet_read_points` 快照 →\n   趋势用 `bacnet_read_trend_log`，变化捕获用 `bacnet_cov_subscribe`；\n   \"没数据\"用 `diagnose_dataflow`，坏点排名用 `tag_health`。\n3. **MOC 写**：`bacnet_write_property`（与可选 `mqtt_publish`）为\n   **[WRITE][HIGH][MOC]**：默认 `dry_run=True`、捕获改前值供 undo、\n   `iaiops approve` 具名审批双确认。写设定值可影响在运楼宇设备 ——\n   未经授权绝不写。\n\n## 支持版本矩阵（内部 HLD §8，设计文档不随本仓发布；`待核实` 不得当既成事实）\n\n| 协议 | 库(pin) | 规范/版本 | 覆盖 | 传输 | 自测 |\n|---|---|---|---|---|---|\n| BACnet/IP | `BAC0>=2023.6,<2026`（extra） | ASHRAE 135 Annex J | 暖通/楼宇/厂务控制器 | UDP/47808 | ✅ 读路径 verified 2026-07-02（真 bacpypes3 虚拟设备）；live HVAC 写/COV/trend 待核实 |\n| Modbus-TCP | `pymodbus>=3.5,<4` | App 1.1b3；FC 1/2/3/4/5/6/15/16 | 电表/冷机/任意 TCP 从站 | TCP/502 | ✅ |\n| Modbus-RTU | `pymodbus>=3.5,<4` + `pyserial>=3.5` | Modbus serial (RTU) | 串口表计 | RS-485/serial | ✅ socat PTY verified 2026-07-02；物理 RS-485 待核实 |\n| IO-Link | `requests>=2.31,<3`（复用 MTConnect pin） | IO-Link Master JSON Integration（IOLINK-JSON）；ifm IoT-Core / plain-REST 双 flavor | 带 JSON/REST 接口的主站（ifm/Balluff/Turck 类） | HTTP REST/JSON | ✅ mock 主站（双 flavor）；live master 待核实 |\n| MQTT | `paho-mqtt>=2.0,<3` | MQTT 3.1.1/5（裸 MQTT + SpB） | IoT 传感器/网关/Broker | TCP/1883/8883 | ✅ |\n| BAS: Metasys OpenBlue REST | `requests>=2.31,<3`（复用 MTConnect pin，无新 HTTP 依赖） | Metasys REST API v4（`/objects`·`/alarms`·`/trendedAttributes`）；JC OpenBlue 监控控制器 | NAE/SNE/SNC 类监控控制器聚合的 BACnet 现场点 | HTTPS + Bearer token | ✅ mock 控制器（in-repo）；live 设备写/trend/告警 待核实 |\n| BAS: Niagara 4 oBIX/REST | `requests>=2.31,<3`（复用 MTConnect pin，无新 HTTP 依赖） | Niagara 4 oBIX/REST（`/obix/config`·`/obix/alarms`·`/obix/histories`）；JSON 建模，原生 oBIX-XML 待核实 | Tridium JACE / Niagara Supervisor 下的点/告警/历史 | HTTPS + Bearer token | ✅ mock 控制器（in-repo）；live 设备 + oBIX-XML 编码 待核实 |\n\nFile v0.20.4:_meta.json\n\n{\n  \"ownerId\": \"kn7b067awq2s97bn3d7p5qfhw5827pxc\",\n  \"slug\": \"iaiops-building\",\n  \"version\": \"0.20.4\",\n  \"publishedAt\": 1785630502055\n}\n\nFile v0.20.4:skill-card.md\n\n## Description: <br>\nBuilding edition of iaiops for facility, HVAC, BMS, and building-automation work over BACnet/IP, Modbus-TCP/RTU, IO-Link, optional MQTT, and supervisory-controller REST layers, with read-first diagnostics and MOC-gated write actions. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[zw008](https://clawhub.ai/user/zw008) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nFacility engineers, building-automation operators, and developers use this skill to discover BACnet devices, inspect points and trends, evaluate HVAC comfort and economizer behavior, and gather cross-protocol diagnostics. Authorized operators can prepare tightly gated write actions for building systems with dry-run, approval, and read-back controls. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Building-control writes can affect operating equipment, setpoints, outputs, or occupant comfort. <br>\nMitigation: Use the documented read-first workflow; keep write tools in dry-run until an approved change window, named approval, and read-back verification are in place. <br>\nRisk: Wrong credentials, secret-store keys, or network targets could direct reads or writes to the wrong building system. <br>\nMitigation: Verify secret-store keys, local BACnet/IP interface settings, controller URLs, and network targets before use in any authorized environment. <br>\nRisk: Life-safety points require stricter handling than normal facility controls. <br>\nMitigation: Do not command fire, smoke, egress, or pressurization points; the artifact states these are refused before network dispatch. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/zw008/skills/iaiops-building) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown and structured tool-call guidance with inline shell commands and configuration values] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May include building-system diagnostics, point snapshots, trend summaries, alarm summaries, and dry-run write plans.] <br>\n\n## Skill Version(s): <br>\n0.20.4 (source: 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 v0.20.3: 3 files, 6142 bytes\n\nFiles: skill-card.md (2187b), SKILL.md (8951b), _meta.json (135b)\n\nFile v0.20.3:SKILL.md\n\n---\nname: iaiops-building\ndescription: >-\n  Building edition of iaiops — facility / HVAC / BMS / 厂务 over BACnet/IP\n  (ASHRAE 135): Who-Is discovery, object/point lists, presentValue snapshots, COV\n  capture, TrendLog reads, one MOC-gated property write; plus Modbus-TCP/RTU for\n  meters/chillers and optional plain MQTT for IoT sensors, with the\n  cross-protocol brain. Use when the task mentions BACnet, BACnet-IP, HVAC, AHU,\n  chiller, VAV, BMS, building automation, facility management, 厂务, 楼宇自控,\n  Who-Is, presentValue, or TrendLog; also IO-Link masters for smart building\n  sensors (JSON interface, read-only), and the vendor supervisory-controller REST\n  layer above BACnet (Metasys/OpenBlue, Niagara/oBIX) for point/alarm/trend reads\n  and one MOC-gated command. Read-first, MOC-gated writes.\n---\n\n# iaiops-building — 楼宇/厂务 edition（BACnet + Modbus + IO-Link + MQTT + 脑）\n\n启动：`IAIOPS_MCP=building` / `iaiops-mcp-building`（= bacnet + modbus + opcua + iolink + 脑）。\nIoT 传感器走 MQTT 时叠加：`IAIOPS_MCP=building,sparkplug`。\n安装：`pip install iaiops[building]`。BACnet 的 `host` 是**本机** BACnet/IP 接口\n（`ip` 或 `ip/mask`）。\n\n## 工具\n\n### BACnet/IP（read-first；暖通/楼宇/厂务）\n- `bacnet_discover` — Who-Is：本地 BACnet/IP 网上的设备\n- `bacnet_object_list` — 设备的 object/point 列表\n- `bacnet_read_property` — 单对象属性（默认 presentValue）\n- `bacnet_read_points` — 所有 analog/binary/multistate 点的 presentValue（HVAC 快照）\n- `bacnet_cov_subscribe` — 单对象有界 Change-of-Value 捕获\n- `bacnet_read_trend_log` — 读设备 TrendLog 缓冲记录\n- `bacnet_write_property` — **[WRITE][HIGH][MOC]** 写单对象属性（默认 off：\n  `dry_run=True` + 审批双确认；可指挥楼宇设备 — 设定值、输出）\n\n### Modbus-TCP / Modbus-RTU（只读；电表/冷机/表计）\n- `modbus_read_holding` `modbus_read_input` `modbus_read_coils` `modbus_read_discrete`\n- `modbus_detect_byte_order` / `modbus_list_templates` / `modbus_apply_template`\n- `modbus_health_summary`\n\n### IO-Link（只读；主站 JSON 接口 — 楼宇智能传感器）\n- `iolink_master_info` — 主站身份（/deviceinfo）\n- `iolink_ports` — 有界端口扫描（≤32：mode/status + 在线设备身份）\n- `iolink_device_info` — 单端口设备身份\n- `iolink_read_pdin` — 过程数据输入（raw hex + 字节数组；按 IODD 解码）\n- `iolink_read_isdu` — ISDU 参数读（index/subindex 有界）\n- `iolink_scan` — 主站 + 全端口一次性快照\n- 配置 `flavor: iotcore`（ifm IoT-Core，默认）或 `rest`（plain-REST 主站）；v1 只读\n\n### BAS 控制器层（edition 工具；厂商监控控制器 REST，在 BACnet **之上**）\n厂商监控控制器（Johnson Controls Metasys/OpenBlue、Tridium Niagara oBIX/REST）把大量 BACnet\n现场点/告警/趋势聚合在一个带鉴权的企业 REST 接口后面——与 `bacnet`（现场总线）互补、非重复。\nBearer/token 从加密 secret store 按 key 取（`secret_name`），不走明文参数。\n- `bas_point_list` — 列控制器 point/object（跨厂商归一化：id/name/value/unit/status）\n- `bas_point_read` — 单/多点 present-value\n- `bas_alarm_list` — 控制器活动告警/事件（归一化）\n- `bas_trend_read` — 单点历史趋势样本（有界 ≤5000）\n- `bas_command` — **[WRITE][HIGH][MOC]**（默认 off：`dry_run=True` + 审批双确认；捕获改前值供 undo）。\n  **生命安全点(fire/smoke/egress/加压)一律拒绝**——联网前即拒，绝不下发。\n- 厂商方言（metasys/niagara：资源路径 + 字段别名）仅存在于连接器内；oBIX 原生 XML / 精确写语义 待核实。\n\n### MQTT（可选叠加 sparkplug 组；IoT 传感器/网关）\n- `mqtt_read_topic` — 裸 MQTT 有界收集；`uns_browse` — 主题树浏览\n- 完整 Sparkplug B/UNS 工具清单见 **iaiops-factory** skill\n- `mqtt_publish` — **[WRITE][HIGH][MOC]**（默认 off）\n\n### 楼宇专属（edition 工具;仅随 building edition 加载,不进全局脑）\n- `economizer_check` — AHU **经济器故障检测(FDD)**:检出同时供冷供热(纯浪费)、该用自然冷却\n  却没用(室外够冷但新风阀在最小位且机械制冷开)、越高限还开阀(把热风引进来)。逐 AHU 判定,\n  worst-first,每故障引用温度/状态。读数来自 BACnet AI/BI 点。\n- `zone_comfort` — **区域舒适度 + 室内空气质量**(ASHRAE 55/62.1):逐区判温度 20–26°C、相对湿度\n  30–60%、CO₂ ≤1000 ppm(通风充分性代理),越界即 breach,worst-first,引用数值。读数来自 BACnet AI 点。\n\n### 跨协议脑（永远随 server 暴露）\n- 诊断：`diagnose_dataflow` `downtime_root_cause` `downtime_root_cause_live` `downtime_triage`\n  `learn_cause_weights` `rca_corpus_from_maintenance` `historian_health` `alarm_bad_actors` `tag_health`\n  `subscription_health` `heartbeat_health` `alarm_flood_analysis` `alarm_cascade`\n  `alarm_rationalization_worksheet`\n- 数据质量：`data_quality_scorecard` `data_quality_fleet_rollup`\n- 分析：`oee_compute` `downtime_events` `oee_multidim` `monitor_changes`\n  `health_summary` (deprecated) `anomaly_scan` (deprecated)\n- 资产：`asset_inventory` `cross_protocol_asset_model` `adopt_alias_map` `diff_alias_map`\n- 基线：`baseline_learn` `baseline_check` `baseline_record_change` `baseline_status`\n  （change-log 基线：拒学薄历史、只报持续越带、每次告警必引基线样本 —— 非黑盒异常检测）\n- 合规/信创：`compliance_mapping` `compliance_frameworks` `compliance_dengbao_levels`\n  `compliance_report` `compliance_evidence_bundle`\n  `historian_push` `export_data` `historian_query` `historian_coverage` `stream_publish` `stream_publish_event` `rca_narrate` `fleet_status` `fleet_incidents` `pdm_forecast`\n  `historian_push` `export_data`\n- 程序解读：`plc_program_outline` `plc_program_xref` `plc_program_section` `plc_program_visibility`（解读导出的 ST/AWL/L5X 程序,只读文件,强制引用行号）\n- 医疗设施（healthcare facility 安全）：`isolation_room_check` — 隔离病房压差合规（ASHRAE 170 / CDC：空气传染隔离 AII 负压、保护性环境 PE 正压，≥2.5 Pa）；检出反向/不足/低裕度,worst-first,每项引用读数。读数来自 `bacnet_read_points` 的压差 AI 点或历史库,纯分析。\n- 元：`protocols_supported`\n\n## Workflows\n\n1. **Doctor-first**：`protocols_supported` → `iaiops doctor` → `bacnet_discover`\n   （Who-Is 有响应才谈读点）。\n2. **Read-first**：`bacnet_object_list` → `bacnet_read_points` 快照 →\n   趋势用 `bacnet_read_trend_log`，变化捕获用 `bacnet_cov_subscribe`；\n   \"没数据\"用 `diagnose_dataflow`，坏点排名用 `tag_health`。\n3. **MOC 写**：`bacnet_write_property`（与可选 `mqtt_publish`）为\n   **[WRITE][HIGH][MOC]**：默认 `dry_run=True`、捕获改前值供 undo、\n   `iaiops approve` 具名审批双确认。写设定值可影响在运楼宇设备 ——\n   未经授权绝不写。\n\n## 支持版本矩阵（内部 HLD §8，设计文档不随本仓发布；`待核实` 不得当既成事实）\n\n| 协议 | 库(pin) | 规范/版本 | 覆盖 | 传输 | 自测 |\n|---|---|---|---|---|---|\n| BACnet/IP | `BAC0>=2023.6,<2026`（extra） | ASHRAE 135 Annex J | 暖通/楼宇/厂务控制器 | UDP/47808 | ✅ 读路径 verified 2026-07-02（真 bacpypes3 虚拟设备）；live HVAC 写/COV/trend 待核实 |\n| Modbus-TCP | `pymodbus>=3.5,<4` | App 1.1b3；FC 1/2/3/4/5/6/15/16 | 电表/冷机/任意 TCP 从站 | TCP/502 | ✅ |\n| Modbus-RTU | `pymodbus>=3.5,<4` + `pyserial>=3.5` | Modbus serial (RTU) | 串口表计 | RS-485/serial | ✅ socat PTY verified 2026-07-02；物理 RS-485 待核实 |\n| IO-Link | `requests>=2.31,<3`（复用 MTConnect pin） | IO-Link Master JSON Integration（IOLINK-JSON）；ifm IoT-Core / plain-REST 双 flavor | 带 JSON/REST 接口的主站（ifm/Balluff/Turck 类） | HTTP REST/JSON | ✅ mock 主站（双 flavor）；live master 待核实 |\n| MQTT | `paho-mqtt>=2.0,<3` | MQTT 3.1.1/5（裸 MQTT + SpB） | IoT 传感器/网关/Broker | TCP/1883/8883 | ✅ |\n| BAS: Metasys OpenBlue REST | `requests>=2.31,<3`（复用 MTConnect pin，无新 HTTP 依赖） | Metasys REST API v4（`/objects`·`/alarms`·`/trendedAttributes`）；JC OpenBlue 监控控制器 | NAE/SNE/SNC 类监控控制器聚合的 BACnet 现场点 | HTTPS + Bearer token | ✅ mock 控制器（in-repo）；live 设备写/trend/告警 待核实 |\n| BAS: Niagara 4 oBIX/REST | `requests>=2.31,<3`（复用 MTConnect pin，无新 HTTP 依赖） | Niagara 4 oBIX/REST（`/obix/config`·`/obix/alarms`·`/obix/histories`）；JSON 建模，原生 oBIX-XML 待核实 | Tridium JACE / Niagara Supervisor 下的点/告警/历史 | HTTPS + Bearer token | ✅ mock 控制器（in-repo）；live 设备 + oBIX-XML 编码 待核实 |\n\nFile v0.20.3:_meta.json\n\n{\n  \"ownerId\": \"kn7b067awq2s97bn3d7p5qfhw5827pxc\",\n  \"slug\": \"iaiops-building\",\n  \"version\": \"0.20.3\",\n  \"publishedAt\": 1785558707555\n}\n\nFile v0.20.3:skill-card.md\n\n## Description: <br>\nBuilding edition of iaiops for facility, HVAC, BMS, and building automation work over BACnet/IP, Modbus, IO-Link, BAS controller REST, and optional MQTT, with read-first workflows and MOC-gated write paths. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[zw008](https://clawhub.ai/user/zw008) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nFacility engineers, building automation specialists, and developers use this skill to discover building devices, read points and trends, triage operational data, and prepare gated operational commands for authorized building systems. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Write-capable BACnet, BAS command, and MQTT publish paths can affect live building systems if used outside an authorized operational process. <br>\nMitigation: Install only in authorized facility or lab environments and verify dry-run, approval, and undo procedures before allowing live commands. <br>\nRisk: Building automation reads and commands may expose operationally sensitive facility information. <br>\nMitigation: Limit use to authorized users and approved systems, and review outputs before acting on operational recommendations. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill release page](https://clawhub.ai/zw008/skills/iaiops-building) <br>\n- [Publisher profile](https://clawhub.ai/user/zw008) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown with inline commands and structured operational guidance] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Includes read-first building automation workflows and dry-run, approval-gated write guidance.] <br>\n\n## Skill Version(s): <br>\n0.20.3 (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>","readmeExcerpt":"Skill: iaiops-building Owner: zw008 Summary: Building edition of iaiops — facility / HVAC / BMS / 厂务 over BACnet/IP (ASHRAE 135): Who-Is discovery, object/point lists, presentValue snapshots, COV capture, TrendLog reads, one MOC-gated property write; plus Modbus-TCP/RTU for meters/chillers and optional plain MQTT for IoT sensors, with the cross-protocol brain. Use when the task mentions BACnet, BACnet-IP, HVAC, AHU, ","codeSnippets":[],"executableExamples":[],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: iaiops-building\ndescription: >-\n  Building edition of iaiops — facility / HVAC / BMS / 厂务 over BACnet/IP\n  (ASHRAE 135): Who-Is discovery, object/point lists, presentValue snapshots, COV\n  capture, TrendLog reads, one MOC-gated property write; plus Modbus-TCP/RTU for\n  meters/chillers and optional plain MQTT for IoT sensors, with the\n  cross-protocol brain. Use when the task mentions BACnet, BACnet-IP, HVAC, AHU,\n  chiller, VAV, BMS, building automation, facility management, 厂务, 楼宇自控,\n  Who-Is, presentValue, or TrendLog; also IO-Link masters for smart building\n  sensors (JSON interface, read-only), and the vendor supervisory-controller REST\n  layer above BACnet (Metasys/OpenBlue, Niagara/oBIX) for point/alarm/trend reads\n  and one MOC-gated command. Read-first, MOC-gated writes.\n---\n\n# iaiops-building — 楼宇/厂务 edition（BACnet + Modbus + IO-Link + MQTT + 脑）\n\n启动：`IAIOPS_MCP=building` / `iaiops-mcp-building`（= bacnet + modbus + opcua + iolink + 脑）。\nIoT 传感器走 MQTT 时叠加：`IAIOPS_MCP=building,sparkplug`。\n安装：`pip install iaiops[building]`。BACnet 的 `host` 是**本机** BACnet/IP 接口\n（`ip` 或 `ip/mask`）。\n\n## 工具\n\n### BACnet/IP（read-first；暖通/楼宇/厂务）\n- `bacnet_discover` — Who-Is：本地 BACnet/IP 网上的设备\n- `bacnet_object_list` — 设备的 object/point 列表\n- `bacnet_read_property` — 单对象属性（默认 presentValue）\n- `bacnet_read_points` — 所有 analog/binary/multistate 点的 presentValue（HVAC 快照）\n- `bacnet_cov_subscribe` — 单对象有界 Change-of-Value 捕获\n- `bacnet_read_trend_log` — 读设备 TrendLog 缓冲记录\n- `bacnet_write_property` — **[WRITE][HIGH][MOC]** 写单对象属性（默认 off：\n  `dry_run=True` + 审批双确认；可指挥楼宇设备 — 设定值、输出）\n\n### Modbus-TCP / Modbus-RTU（只读；电表/冷机/表计）\n- `modbus_read_holding` `modbus_read_input` `modbus_read_coils` `modbus_read_discrete`\n- `modbus_detect_byte_order` / `modbus_list_templates` / `modbus_apply_template`\n- `modbus_health_summary`\n\n### IO-Link（只读；主站 JSON 接口 — 楼宇智能传感器）\n- `iolink_master_info` — 主站身份（/deviceinfo）\n- `iolink_ports` — 有界端口扫描（≤32：mode/status + 在线设备身份）\n- `iolink_device_info` — 单端口设备身份\n- `iolink_read_pdin` — 过程数据输入（raw hex + 字节数组；按 IODD 解码）\n- `iolink_read_isdu` — ISDU 参数读（index/subindex 有界）\n- `iolink_scan` — 主站 + 全端口一次性快照\n- 配置 `flavor: iotcore`（ifm IoT-Core，默认）或 `rest`（plain-REST 主站）；v1 只读\n\n### BAS 控制器层（edition 工具；厂商监控控制器 REST，在 BACnet **之上**）\n厂商监控控制器（Johnson Controls Metasys/OpenBlue、Tridium Niagara oBIX/REST）把大量 BACnet\n现场点/告警/趋势聚合在一个带鉴权的企业 REST 接口后面——与 `bacnet`（现场总线）互补、非重复。\nBearer/token 从加密 secret store 按 key 取（`secret_name`），不走明文参数。\n- `bas_point_list` — 列控制器 point/object（跨厂商归一化：id/name/value/unit/status）\n- `bas_point_read` — 单/多点 present-value\n- `bas_alarm_list` — 控制器活动告警/事件（归一化）\n- `bas_trend_read` — 单点历史趋势样本（有界 ≤5000）\n- `bas_command` — **[WRITE][HIGH][MOC]**（默认 off：`dry_run=True` + 审批双确认；捕获改前值供 undo）。\n  **生命安全点(fire/smoke/egress/加压)一律拒绝**——联网前即拒，绝不下发。\n- 厂商方言（metasys/niagara：资源路径 + 字段别名）仅存在于连接器内；oBIX 原生 XML / 精确写语义 待核实。\n\n### MQTT（可选叠加 sparkplug 组；IoT 传感器/网关）\n- `mqtt_read_topic` — 裸 MQTT 有界收集；`uns_browse` — 主题树浏览\n- 完整 Sparkplug B/UNS 工具清单见 **iaiops-factory** skill\n- `mqtt_publish` "},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7b067awq2s97bn3d7p5qfhw5827pxc\",\n  \"slug\": \"iaiops-building\",\n  \"version\": \"0.28.0\",\n  \"publishedAt\": 1789535360173\n}"},{"path":"skill-card.md","content":"## Description:\n\nBuilding edition of iaiops for facility automation over BACnet/IP, Modbus, IO-Link, MQTT, and BAS supervisory-controller APIs, with read-first workflows and approval-gated writes.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[zw008](https://clawhub.ai/user/zw008)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, facility engineers, and authorized building-automation operators use this skill to discover and read building systems, inspect HVAC and BAS data, diagnose data quality or alarm patterns, and prepare tightly controlled changes. It is intended for authorized environments where write-capable tools remain dry-run unless change approval and rollback are in place.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill can interact with live building automation and HVAC systems, including high-impact write paths.\n\nMitigation: Use it only on authorized facility systems and keep write tools in dry-run mode unless a real MOC approval and rollback path are in place.\n\nRisk: Installing the `iaiops[building]` package is a supply-chain trust decision.\n\nMitigation: Install in an isolated, least-privileged environment and pin and verify the package before use.\n\nRisk: Live HVAC or BAS commands may affect operating equipment if change controls are bypassed.\n\nMitigation: Require explicit approval, preserve rollback or undo information, and avoid safety-critical points unless the site authorization and procedure explicitly permit the action.\n\n## Reference(s):\n\n- [Packaged skill source](artifact/SKILL.md)\n- [ClawHub skill page](https://clawhub.ai/zw008/skills/iaiops-building)\n- [ClawHub publisher profile](https://clawhub.ai/user/zw008)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with inline commands, configuration snippets, and structured tool recommendations]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May include read-only diagnostics, point snapshots, trend summaries, change-control recommendations, and dry-run write plans.]\n\n## Skill Version(s):\n\n0.28.0 (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":"Building edition of iaiops — facility / HVAC / BMS / 厂务 over BACnet/IP (ASHRAE 135): Who-Is discovery, object/point lists, presentValue snapshots, COV capture, TrendLog reads, one MOC-gated property write; plus Modbus-TCP/RTU for meters/chillers and optional plain MQTT for IoT sensors, with the cross-protocol brain. Use when the task mentions BACnet, BACnet-IP, HVAC, AHU, chiller, VAV, BMS, building automation, facility management, 厂务, 楼宇自控, Who-Is, presentValue, or TrendLog; also IO-Link masters for smart building sensors (JSON interface, read-only), and the vendor supervisory-controller REST layer above BACnet (Metasys/OpenBlue, Niagara/oBIX) for point/alarm/trend reads and one MOC-gated command. Read-first, MOC-gated writes. Skill: iaiops-building Owner: zw008 Summary: Building edition of iaiops — facility / HVAC / BMS / 厂务 over BACnet/IP (ASHRAE 135): Who-Is discovery, object/point lists, presentValue snapshots, COV capture, TrendLog reads, one MOC-gated property write; plus Modbus-TCP/RTU for meters/chillers and optional plain MQTT for IoT sensors, with the cross-protocol brain. Use when the task mentions BACnet, BACnet-IP, HVAC, AHU,","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1382,"uniquenessScore":49,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T21:28:56.733Z","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-09T21:28:56.733Z","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-10T03:06:15.393Z","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"}]}}}