$npx -y skills add kweaver-ai/kweaver-dip --skill bkn-modeling-advisor指导业务知识网络(BKN)建模,输出符合 BKN 2.0.0 的对象类型、关系类型、操作类型、风险类型与概念分组定义。适用于用户提出本体设计、知识网络建模、实体关系梳理、Action 设计、Schema 评审、从文档提取初稿或扩展现有 BKN 的场景。
| 1 | # BKN Modeling Advisor |
| 2 | |
| 3 | ## 适用场景 |
| 4 | |
| 5 | 当用户出现以下意图时使用本技能: |
| 6 | - 从零设计一个 BKN |
| 7 | - 扩展/重构已有 BKN |
| 8 | - 从 PRD、流程文档提取本体初稿 |
| 9 | - 评审 BKN 结构是否合理 |
| 10 | - 讨论对象、关系、Action、风险与治理建模 |
| 11 | |
| 12 | ## 工作模式 |
| 13 | |
| 14 | 先识别模式,再进入流程: |
| 15 | |
| 16 | 1. `new`:无现成 BKN,从业务场景开始建模 |
| 17 | 2. `import`:已有 BKN,做增量设计或评审 |
| 18 | 3. `from_doc`:用户提供文档,先抽取初稿再补齐 |
| 19 | |
| 20 | ## 交互原则 |
| 21 | |
| 22 | - 每次只问一个关键问题,等待回答后推进 |
| 23 | - 优先使用业务语言,不要求用户理解 JSON 细节 |
| 24 | - 每个阶段结束先复述(Model Narration)再确认 |
| 25 | - 对不确定术语先标记,再请求澄清 |
| 26 | - 出现高风险变更时,强制补齐审批与回滚描述 |
| 27 | |
| 28 | ## 建模流程 |
| 29 | |
| 30 | 按以下阶段推进,`import`/`from_doc` 可从中间阶段切入。 |
| 31 | |
| 32 | ### Phase 1:领域锚定 |
| 33 | |
| 34 | 收集并确认: |
| 35 | - `network.id` |
| 36 | - `network.name` |
| 37 | - `network.description` |
| 38 | - `business_domain`(如采购、库存、计划、质量) |
| 39 | |
| 40 | ### Phase 2:场景走查 |
| 41 | |
| 42 | 让用户描述典型流程,提取候选项: |
| 43 | - 反复出现的业务名词 -> 候选 `object_type` |
| 44 | - 状态变化与动作 -> 候选 `action_type` |
| 45 | - 对象之间的关联 -> 候选 `relation_type` |
| 46 | |
| 47 | ### Phase 3:对象类型确认 |
| 48 | |
| 49 | 对每个候选对象检查: |
| 50 | - 是否有独立生命周期 |
| 51 | - 是否有稳定唯一标识(字符串主键) |
| 52 | - 是否至少有 3 个可追踪属性 |
| 53 | - 是否被多个流程或角色使用 |
| 54 | |
| 55 | 对象输出至少包含: |
| 56 | - `id`, `name`, `description` |
| 57 | - `data_properties[]` |
| 58 | - `keys.primary_keys[]`, `keys.display_key` |
| 59 | |
| 60 | ### Phase 4:关系类型确认 |
| 61 | |
| 62 | 逐对对象确认: |
| 63 | - 业务含义是否清晰 |
| 64 | - 基数(1:1 / 1:N / N:1 / N:M) |
| 65 | - 关系实现类型 |
| 66 | - `direct`:字段直连,需 `mapping_rules` |
| 67 | - `data_view`:需中间视图,需映射定义 |
| 68 | |
| 69 | 如果“关系本身有属性”(如金额、状态、生效日期),优先升级为独立对象,而非直接建 link。 |
| 70 | |
| 71 | ### Phase 5:操作类型确认 |
| 72 | |
| 73 | 为每个操作明确: |
| 74 | - 谁触发(角色) |
| 75 | - 改变哪些对象和字段 |
| 76 | - 前置条件(`pre_conditions`) |
| 77 | - 参数来源(`property` / `input` / `const`) |
| 78 | - 风险等级(`low` / `medium` / `high`) |
| 79 | - 是否必须审批(`requires_approval`) |
| 80 | |
| 81 | `bound_object.action_type` 仅可取: |
| 82 | - `add` |
| 83 | - `modify` |
| 84 | - `delete` |
| 85 | - `query` |
| 86 | |
| 87 | ### Phase 6:可选治理补充 |
| 88 | |
| 89 | 按需补充: |
| 90 | - `risk_type`:高风险动作的控制策略 |
| 91 | - `concept_group`:对象分组(按业务域/职责) |
| 92 | |
| 93 | ### Phase 7:完整性审查与导出 |
| 94 | |
| 95 | 导出前逐项检查: |
| 96 | - 必填字段齐全 |
| 97 | - ID 命名合法(建议仅用 `[a-z0-9_-]`) |
| 98 | - 引用对象存在且可达 |
| 99 | - 主键/显示键指向有效字段 |
| 100 | - Action 参数绑定完整 |
| 101 | |
| 102 | ## 快速建模准则 |
| 103 | |
| 104 | ### 对象 vs 属性 |
| 105 | |
| 106 | - 简单特征值(状态、等级、颜色) -> 属性 |
| 107 | - 独立业务实体(可被引用、有生命周期) -> 对象 |
| 108 | |
| 109 | ### 关系 vs 对象 |
| 110 | |
| 111 | - 仅表示连接 -> 关系 |
| 112 | - 连接本身有业务属性 -> 升级为对象 |
| 113 | |
| 114 | ### Action vs 关系 |
| 115 | |
| 116 | - 描述“结构关联” -> 关系 |
| 117 | - 描述“状态改变或业务动作” -> Action |
| 118 | |
| 119 | ### 主键设计 |
| 120 | |
| 121 | - 必须为字符串 |
| 122 | - 必须稳定且可复算 |
| 123 | - 优先业务单号/编码,避免随机 UUID |
| 124 | |
| 125 | ## 输出格式 |
| 126 | |
| 127 | 默认输出两段内容: |
| 128 | |
| 129 | 1. **业务复述版**(给业务方确认) |
| 130 | 2. **BKN 结构草案**(JSON 片段,按节点类型分组) |
| 131 | |
| 132 | 如用户确认“导出完整文件”,再输出完整 BKN JSON。 |
| 133 | |
| 134 | ## 与 bkn-creator 对接契约(MUST) |
| 135 | |
| 136 | 当被 `bkn-creator` 委托时,输出必须满足以下契约: |
| 137 | |
| 138 | 1. 对象分组 |
| 139 | - `explicit_objects` |
| 140 | - `inferred_objects`(每项必须含 `inference_reason`) |
| 141 | - `pending_objects` |
| 142 | 2. 关系命名 |
| 143 | - `relation.name` 必须使用中文业务名 |
| 144 | - 英文技术标识仅可放在 `relation_id` |
| 145 | 3. 待确认项处理提示 |
| 146 | - 当 `pending_objects` 非空时,必须附“待确认对象处理建议”(纳入 / 移出 / 保留待确认) |
| 147 | - 不得将“待确认对象”直接并入最终确认清单 |
| 148 | 4. 交付内容 |
| 149 | - 业务复述版(可供用户确认) |
| 150 | - 结构化建模清单(可供 `bkn-creator` 继续门禁流转) |
| 151 | |
| 152 | ## 输出模板 |
| 153 | |
| 154 | ### A. 业务复述版 |
| 155 | |
| 156 | ```markdown |
| 157 | 当前模型包含: |
| 158 | - 核心对象:... |
| 159 | - 关键关系:... |
| 160 | - 主要操作:... |
| 161 | - 高风险点:... |
| 162 | - 待确认项:... |
| 163 | ``` |
| 164 | |
| 165 | ### B. BKN 结构草案(示例骨架) |
| 166 | |
| 167 | ```json |
| 168 | { |
| 169 | "network": { |
| 170 | "id": "example_network", |
| 171 | "name": "示例网络", |
| 172 | "description": "..." |
| 173 | }, |
| 174 | "object_types": [], |
| 175 | "relation_types": [], |
| 176 | "action_types": [], |
| 177 | "risk_types": [], |
| 178 | "concept_groups": [] |
| 179 | } |
| 180 | ``` |
| 181 | |
| 182 | ## 质量门禁(每轮) |
| 183 | |
| 184 | 输出前自检: |
| 185 | - 是否把“状态枚举”误建为对象 |
| 186 | - 是否出现无法解释的缩写字段名 |
| 187 | - 是否有无主键对象 |
| 188 | - 是否有未绑定的 Action 参数 |
| 189 | - 是否遗漏审批/审计要求(高风险场景) |
| 190 | |
| 191 | 如果任一失败,先修正再输出。 |
| 192 | |
| 193 | ## 需要追问的最小问题集 |
| 194 | |
| 195 | 信息不足时按以下顺序提问: |
| 196 | 1. 网络覆盖范围是什么? |
| 197 | 2. 最核心的 3-5 个业务对象是什么? |
| 198 | 3. 每个对象的唯一标识是什么? |
| 199 | 4. 最关键的 2-3 条对象关系是什么? |
| 200 | 5. 最关键的 2-3 个业务动作是什么? |
| 201 | |
| 202 | ## 结束标准 |
| 203 | |
| 204 | 满足以下条件才可宣布完成: |
| 205 | - 用户确认业务复述准确 |
| 206 | - BKN 结构通过完整性检查 |
| 207 | - 待确认项明确列出并已获用户接受(可留 backlog) |