$npx -y skills add kweaver-ai/kweaver-dip --skill bkn-envBKN 执行前环境就绪检查与 bootstrap 判定。
| 1 | # 环境检查 |
| 2 | |
| 3 | 公约:`../_shared/contract.md` |
| 4 | 插件检测:`../_shared/plugin-check.md` |
| 5 | |
| 6 | ## 做什么 |
| 7 | |
| 8 | 在绑定/推送前,检查环境是否就绪。如果缺少必要资源,判定是否需要搭建。同时检测可插拔插件可用性。 |
| 9 | |
| 10 | ## 输入 |
| 11 | |
| 12 | - `network_dir`:网络目录(`.bkn` 文件位于 `{network_dir}/bkn/`) |
| 13 | - `network_context`:网络名称、领域 |
| 14 | - `goal`:validate / push / update / copy |
| 15 | |
| 16 | ## 检查清单 |
| 17 | |
| 18 | | 检查项 | 方法 | 失败结果 | |
| 19 | |--------|------|---------| |
| 20 | | 草案目录 | `{network_dir}/bkn/` 存在 + `network.bkn` 齐备 | blocked | |
| 21 | | CLI | `kweaver --version` | blocked | |
| 22 | | 平台连通性 | `kweaver config show` | blocked | |
| 23 | | 业务域 | 配置是否匹配 | warning | |
| 24 | | 同名网络 | `kweaver bkn list` | 记录冲突 | |
| 25 | | 资源就绪 | 数据源 + 数据视图是否存在 | 触发 bind_mode 判定 | |
| 26 | | Skill 模块 | `kweaver skill list --limit 1` | warning(记入 capability_matrix) | |
| 27 | | Agent 工厂 | `kweaver agent list --limit 1` | warning(记入 capability_matrix) | |
| 28 | | 定时任务(巡检用) | OpenClaw 调度 API 可用性 | warning(记入 capability_matrix) | |
| 29 | |
| 30 | 所有 CLI 操作委托 `bkn-kweaver`(读取 `../bkn-kweaver/SKILL.md`)。 |
| 31 | |
| 32 | ### 定时任务能力检测 |
| 33 | |
| 34 | 在检查清单末尾,检测 OpenClaw 定时任务能力: |
| 35 | |
| 36 | **前提条件**:定时任务能力仅在 `plugin_availability.test == available`(有 `bkn-test` 插件)时才有意义。若 test 插件不可用,巡检功能整体不可用,定时任务不会创建。 |
| 37 | |
| 38 | 1. 检测 OpenClaw 是否已安装且可访问(委托 `bkn-kweaver` 检查环境) |
| 39 | 2. 检测 OpenClaw 调度 API 是否可用(`openclaw cron list` 或等价命令) |
| 40 | 3. 结果写入 `env_capability_matrix.patrol_cron`:`available` | `unavailable` |
| 41 | 4. 不可用时不阻塞流程,但若同时 `plugin_availability.test == unavailable`,pipeline 阶段八整体跳过巡检 |
| 42 | |
| 43 | ### 插件可用性检测 |
| 44 | |
| 45 | 在检查清单末尾,按 `../_shared/plugin-check.md` 协议检测可插拔插件: |
| 46 | |
| 47 | 1. 检测 `../_plugins/bkn-rules/SKILL.md` 文件存在且非空 → `plugin_availability.rules: available` |
| 48 | 2. 检测 `../_plugins/bkn-test/SKILL.md` 文件存在且非空 → `plugin_availability.test: available` |
| 49 | 3. 根据检测结果判定 `plugin_mode`(见 `plugin-check.md`) |
| 50 | 4. 结果写入 `pipeline_state.yaml`,pipeline 据此裁剪阶段分支 |
| 51 | |
| 52 | ## 数据视图可用性检查 |
| 53 | |
| 54 | 在资源就绪检查阶段,获取平台可用数据视图列表(仅元数据),供后续绑定阶段使用: |
| 55 | |
| 56 | 1. 执行 `kweaver dataview list` 获取平台全部可用数据视图 |
| 57 | - **必须获取全部视图**:优先使用 `--all` 参数;如不支持则使用 `--page-size` 分页循环获取,直到获取数量等于平台返回的总数 |
| 58 | - 如平台未返回总数且 CLI 不支持分页参数,执行 `kweaver dataview list --limit 9999` 作为降级方案 |
| 59 | 2. 输出 `dataview_availability`(仅含视图元数据,不做对象-视图匹配推荐) |
| 60 | 3. 对象-视图匹配的决策权交由 `bkn-bind` |
| 61 | 4. **视图字段 schema 由 `bkn-bind` 按需获取**(`bkn-bind` 执行 `kweaver dataview get` 获取已匹配视图的完整字段 schema) |
| 62 | |
| 63 | ```yaml |
| 64 | dataview_availability: |
| 65 | total_views: 0 |
| 66 | fetched_views: 0 # 实际获取的视图数量 |
| 67 | truncated: false # true 表示平台有截断风险,bkn-bind 应 warn 用户 |
| 68 | available_views: [{view_id, view_name, datasource_id, field_count}] |
| 69 | ``` |
| 70 | |
| 71 | ## Bootstrap 与 bind_mode 判定 |
| 72 | |
| 73 | | 资源状态 | bootstrap_level | result_status | bind_mode | |
| 74 | |---------|----------------|---------------|-----------| |
| 75 | | 数据源+视图都有 | none | ready | full | |
| 76 | | 仅有其一 | soft | need_user_confirm | full | |
| 77 | | 都没有 | none | ready | deferred | |
| 78 | |
| 79 | `bind_mode: deferred` 表示当前环境无可用数据视图,pipeline 将跳过视图绑定阶段(阶段四),推送门禁中的绑定相关条件自动豁免。网络以 schema-only 模式推送,数据视图可后续通过 update pipeline 补绑。 |
| 80 | |
| 81 | ## 输出 |
| 82 | |
| 83 | ```yaml |
| 84 | environment_status: ready | blocked | warning |
| 85 | bootstrap_required: true | false |
| 86 | bootstrap_level: soft | none |
| 87 | bind_mode: full | deferred |
| 88 | plugin_mode: full | limited |
| 89 | plugin_availability: |
| 90 | rules: available | unavailable |
| 91 | test: available | unavailable |
| 92 | check_summary: {cli, connectivity, domain, draft, resource_readiness} |
| 93 | blocking_issues: [{issue, reason, suggested_fix}] |
| 94 | bootstrap_plan: {steps, estimated_effort} |
| 95 | dataview_availability: {total_views, fetched_views, truncated, available_views} |
| 96 | env_capability_matrix: |
| 97 | cli: available | unavailable |
| 98 | platform: available | unavailable |
| 99 | skill_module: available | unavailable |
| 100 | agent_factory: available | unavailable |
| 101 | dataview: available | unavailable |
| 102 | context_loader: available | unavailable |
| 103 | patrol_cron: available | unavailable # P1-5/P1-6 巡检自动创建 |
| 104 | ``` |
| 105 | |
| 106 | `env_capability_matrix` 和 `plugin_availability` 写入 `pipeline_state.yaml`,后续阶段据此裁剪分支(如 Skill 注册降级、Agent QA 降级、插件阶段跳过)。 |
| 107 | |
| 108 | ## 约束 |
| 109 | |
| 110 | - 仅检查不修改 .bkn |
| 111 | - 不执行 push/delete/update |
| 112 | - bootstrap 前需用户确认 |