# Bkn Extract

> Bkn Extract

- Skill: `openbkn-ai/bkn-extract` (Agent Skill)
- Install (CLI): `npx skillmds@latest add openbkn-ai/bkn-extract`
- Raw SKILL.md: https://api.skillmd.com/api/skills/openbkn-ai/bkn-extract/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: openbkn-ai (https://skillmd.com/u/openbkn-ai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/openbkn-ai/bkn-extract

---


# 对象关系提取

公约：`../_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: 低 | 中 | 高
```

