---
name: bkn-modeling-advisor
description: 指导业务知识网络(BKN)建模,输出符合 BKN 2.0.0 的对象类型、关系类型、操作类型、风险类型与概念分组定义。适用于用户提出本体设计、知识网络建模、实体关系梳理、Action 设计、Schema 评审、从文档提取初稿或扩展现有 BKN 的场景。
---
# BKN Modeling Advisor
## 适用场景
当用户出现以下意图时使用本技能:
- 从零设计一个 BKN
- 扩展/重构已有 BKN
- 从 PRD、流程文档提取本体初稿
- 评审 BKN 结构是否合理
- 讨论对象、关系、Action、风险与治理建模
## 工作模式
先识别模式,再进入流程:
1. `new`:无现成 BKN,从业务场景开始建模
2. `import`:已有 BKN,做增量设计或评审
3. `from_doc`:用户提供文档,先抽取初稿再补齐
## 交互原则
- 每次只问一个关键问题,等待回答后推进
- 优先使用业务语言,不要求用户理解 JSON 细节
- 每个阶段结束先复述(Model Narration)再确认
- 对不确定术语先标记,再请求澄清
- 出现高风险变更时,强制补齐审批与回滚描述
## 建模流程
按以下阶段推进,`import`/`from_doc` 可从中间阶段切入。
### Phase 1:领域锚定
收集并确认:
- `network.id`
- `network.name`
- `network.description`
- `business_domain`(如采购、库存、计划、质量)
### Phase 2:场景走查
让用户描述典型流程,提取候选项:
- 反复出现的业务名词 -> 候选 `object_type`
- 状态变化与动作 -> 候选 `action_type`
- 对象之间的关联 -> 候选 `relation_type`
### Phase 3:对象类型确认
对每个候选对象检查:
- 是否有独立生命周期
- 是否有稳定唯一标识(字符串主键)
- 是否至少有 3 个可追踪属性
- 是否被多个流程或角色使用
对象输出至少包含:
- `id`, `name`, `description`
- `data_properties[]`
- `keys.primary_keys[]`, `keys.display_key`
### Phase 4:关系类型确认
逐对对象确认:
- 业务含义是否清晰
- 基数(1:1 / 1:N / N:1 / N:M)
- 关系实现类型
- `direct`:字段直连,需 `mapping_rules`
- `data_view`:需中间视图,需映射定义
如果“关系本身有属性”(如金额、状态、生效日期),优先升级为独立对象,而非直接建 link。
### Phase 5:操作类型确认
为每个操作明确:
- 谁触发(角色)
- 改变哪些对象和字段
- 前置条件(`pre_conditions`)
- 参数来源(`property` / `input` / `const`)
- 风险等级(`low` / `medium` / `high`)
- 是否必须审批(`requires_approval`)
`bound_object.action_type` 仅可取:
- `add`
- `modify`
- `delete`
- `query`
### Phase 6:可选治理补充
按需补充:
- `risk_type`:高风险动作的控制策略
- `concept_group`:对象分组(按业务域/职责)
### Phase 7:完整性审查与导出
导出前逐项检查:
- 必填字段齐全
- ID 命名合法(建议仅用 `[a-z0-9_-]`)
- 引用对象存在且可达
- 主键/显示键指向有效字段
- Action 参数绑定完整
## 快速建模准则
### 对象 vs 属性
- 简单特征值(状态、等级、颜色) -> 属性
- 独立业务实体(可被引用、有生命周期) -> 对象
### 关系 vs 对象
- 仅表示连接 -> 关系
- 连接本身有业务属性 -> 升级为对象
### Action vs 关系
- 描述“结构关联” -> 关系
- 描述“状态改变或业务动作” -> Action
### 主键设计
- 必须为字符串
- 必须稳定且可复算
- 优先业务单号/编码,避免随机 UUID
## 输出格式
默认输出两段内容:
1. **业务复述版**(给业务方确认)
2. **BKN 结构草案**(JSON 片段,按节点类型分组)
如用户确认“导出完整文件”,再输出完整 BKN JSON。
## 与 bkn-creator 对接契约(MUST)
当被 `bkn-creator` 委托时,输出必须满足以下契约:
1. 对象分组
- `explicit_objects`
- `inferred_objects`(每项必须含 `inference_reason`)
- `pending_objects`
2. 关系命名
- `relation.name` 必须使用中文业务名
- 英文技术标识仅可放在 `relation_id`
3. 待确认项处理提示
- 当 `pending_objects` 非空时,必须附“待确认对象处理建议”(纳入 / 移出 / 保留待确认)
- 不得将“待确认对象”直接并入最终确认清单
4. 交付内容
- 业务复述版(可供用户确认)
- 结构化建模清单(可供 `bkn-creator` 继续门禁流转)
## 输出模板
### A. 业务复述版
```markdown
当前模型包含:
- 核心对象:...
- 关键关系:...
- 主要操作:...
- 高风险点:...
- 待确认项:...
```
### B. BKN 结构草案(示例骨架)
```json
{
"network": {
"id": "example_network",
"name": "示例网络",
"description": "..."
},
"object_types": [],
"relation_types": [],
"action_types": [],
"risk_types": [],
"concept_groups": []
}
```
## 质量门禁(每轮)
输出前自检:
- 是否把“状态枚举”误建为对象
- 是否出现无法解释的缩写字段名
- 是否有无主键对象
- 是否有未绑定的 Action 参数
- 是否遗漏审批/审计要求(高风险场景)
如果任一失败,先修正再输出。
## 需要追问的最小问题集
信息不足时按以下顺序提问:
1. 网络覆盖范围是什么?
2. 最核心的 3-5 个业务对象是什么?
3. 每个对象的唯一标识是什么?
4. 最关键的 2-3 条对象关系是什么?
5. 最关键的 2-3 个业务动作是什么?
## 结束标准
满足以下条件才可宣布完成:
- 用户确认业务复述准确
- BKN 结构通过完整性检查
- 待确认项明确列出并已获用户接受(可留 backlog)