bkn-extract

$npx mdskill add kweaver-ai/kweaver-dip/bkn-extract

Extract objects, relations, and actions from text into structured groups.

  • Identifies explicit, inferred, pending, and rejected objects from business text.
  • Uses domain reference or generic extraction rules for guidance.
  • Determines storage location as platform or local based on data source.
  • Outputs a structured YAML list of objects, relations, and action candidates.

SKILL.md

.github/skills/bkn-extractView on GitHub ↗
---
name: bkn-extract
description: 从文本提取对象/关系/动作,输出四分组结构化清单。
---

# 对象关系提取

公约:`../_shared/contract.md`

## 做什么

给定业务文本和领域识别结果,提取对象类、关系类、动作候选,分组输出。

## 输入

- `source_text`:业务文本
- `domain`:`bkn-domain` 的识别结果
- `domain_reference`(可选):对应领域参考文件路径

## 流程

1. 按领域参考(或通用规则 `../bkn-domain/references/generic-extraction.md`)提取
2. 对象分为四组:
   - **显式对象**(`explicit`):文本直接出现,有明确定义
   - **推断对象**(`inferred`):领域闭环补全(每项必须含推断理由)
   - **待确认对象**(`pending`):证据不足,需用户确认
   - **排除候选**(`rejected`):复合表达/噪音/不适合建模的
3. 对每个对象判定 **存储位置**(`platform` 或 `local`):
   - **`platform`**:需要与外部系统/数据视图绑定的业务对象(如物料、订单、工单等),有实际数据源
   - **`local`**:仅用于模型内部逻辑推理、规则锚定、中间态表示的对象(如监控任务、状态标记、规则容器等),无外部数据源
   - 判定依据:是否提及数据来源/系统对接/视图绑定;若无则为 `local`
   - 不确定时默认标记为 `platform`,并在业务含义中备注
4. 提取关系(name 用中文业务名)
5. 提取动作候选
6. 领域闭环完整性检查(缺失对象补入推断组)
7. 质量校验:命名归一化、去重、引用完整性

## 输出

所有键名和分组标签使用中文,便于非技术人员阅读:

```yaml
对象清单:
  显式对象:
    - 名称: ""
      别名: []
      业务含义: ""
      候选主键: ""
      来源证据: ""
      存储位置: platform | local
  推断对象:
    - 名称: ""
      别名: []
      业务含义: ""
      候选主键: ""
      推断理由: ""
      存储位置: platform | local
  待确认对象:
    - 名称: ""
      不确定原因: ""
      存储位置: platform | local
  排除候选:
    - 候选名: ""
      排除原因: ""
关系清单:
  - 名称: ""
    关系ID: ""
    源对象: ""
    目标对象: ""
    基数: ""
    来源证据: ""
动作候选:
  - 名称: ""
    触发条件: ""
    目标对象: ""
    风险等级: 低 | 中 | 高
```

### 风险等级说明

| 等级 | 标签 | 含义 | 示例 |
|------|------|------|------|
| 低 | `低` | 只读或对单条记录的非破坏性操作 | 查询、生成报表 |
| 中 | `中` | 影响多条记录或触发下游流程 | 批量状态变更、MRP 计算 |
| 高 | `高` | 删除、跨系统推送、审批流触发、资金相关 | 删除网络、推送生产计划 |

## 升级条件

以下情况建议 pipeline 调用 `bkn-doctor`:
- 待确认对象 >= 3
- 关系方向冲突
- 主键缺失
- 清单质量不足

## 业务规则检查(阶段一末尾)

清单确认后,逐对象扫描规则:

| 规则类型 | 示例 |
|---------|------|
| 主键规则 | forecast 以 billno 为主键 |
| 外键规则 | mrp.rootdemandbillno → forecast.billno |
| 过滤规则 | mrp 仅取 closestatus_title='正常' |
| 状态枚举 | 采购状态 = normal / watch / abnormal |
| 计算规则 | coverage = (mapped + waived) / total |
| 层级规则 | BOM 多版本取 audit_date 最近 |
| 约束规则 | alt_priority == 0 才参与 MRP |

输出 `rule_extraction_check`,供后续 `bkn-rules` 直接消费:

```yaml
rule_extraction_check:
  - rule_id: "RE-001"
    rule_type: 主键规则 | 外键规则 | 过滤规则 | 状态枚举 | 计算规则 | 层级规则 | 约束规则
    description: ""
    related_objects: [""]
    source_evidence: ""
    confidence: high | medium | low
    risk_level: 低 | 中 | 高
```

More from kweaver-ai/kweaver-dip