install
source · Clone the upstream repo
git clone https://github.com/kweaver-ai/kweaver-dip
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/kweaver-ai/kweaver-dip "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/bkn-creator/internal/bkn-backfill" ~/.claude/skills/kweaver-ai-kweaver-dip-bkn-backfill && rm -rf "$T"
manifest:
skills/bkn-creator/internal/bkn-backfill/SKILL.mdsource content
BKN 回填
公约:
../_shared/contract.md
做什么
把
bkn-bind 和 bkn-map 的结果合并,写回 .bkn 文件,完成数据视图绑定闭环。
输入
:对象级绑定结果binding_decision_list
:属性级映射结果property_mapping_draft
:.bkn 文件所在目录network_dir
流程
- 属性回灌门禁(P1-2):
- 读取
(文件不存在时视为{network_dir}/pipeline_state.yaml
缺失)map_completed
→ 继续map_completed == true
(map_completed == skipped
场景)→ 记录bind_mode == deferred
,继续map_status: skipped (deferred)
不存在或为 false:map_completed- 用户明确要求跳过 → 在
中追加pipeline_state.yaml
,输出警告后继续skipped_steps: [bkn-map] - 否则,阻断并回交 pipeline 调度,输出:
"bkn-backfill 需要 bkn-map 先执行完成(map_completed 未就绪)。请 pipeline 调度 bkn-map 后再调用本 skill。"
- 用户明确要求跳过 → 在
- 读取
- 合并绑定变更 + 属性变更 + 映射状态为统一差异清单
- 存储位置过滤:
- 跳过
的对象(本地对象无需数据视图绑定,不参与回填)存储位置: local - 在输出摘要中单独列出被跳过的 local 对象
- 跳过
- 对象类回填(仅 platform 对象):
- Data Source 绑定值替换(名称/技术名 → 稳定
)view_id - Mapped Field 更新为数据视图真实字段名
- 数据视图中不存在的属性:默认标注 Mapped Field 为
(保留属性定义,便于后续补绑);用户可指定删除该行- - 不改动 Description 或其他业务语义字段
- Data Source 绑定值替换(名称/技术名 → 稳定
- 级联修正(关键改进):
- 构建
:rename_map{object_id: {old_property_name → new_property_name}}- 来源 1:
的bkn-map
动作(draft 属性名 → 视图字段名)property_regen_summary.rename - 来源 2:用户手动指定的属性重命名
- 来源 1:
- 扫描
的 Mapping Rules,将 Source Property / Target Property 中引用了已重命名属性的值替换relation_types/*.bkn - 扫描
的 Parameter Binding / Pre-conditions,将 Binding 列中引用了已重命名属性的值替换action_types/*.bkn - 级联修正只改引用名,不改语义
- 构建
- 推送前关系映射完整性预检(执行
):../_shared/prepush-validation.md- 检查所有
的 Source/Target Property 是否存在于对应对象的 Data Propertiesrelation_types - 检查所有
的 Parameter Binding 属性是否存在于绑定对象的 Data Propertiesaction_types - 检查 Concept Group 成员和 Network Overview 一致性
对象跳过属性存在性检查,但仍参与对象存在性检查local- 预检失败 → 阻断写入,列出全部错误,提示修复后重试
- 检查所有
- 执行写入
- 回读校验(文件存在、关键字段已替换、级联引用一致)
- 输出精简摘要,提示用户检查
输出
backfill_plan: binding_replacements: [{object, old_value, new_view_id}] property_changes: [{object, property, action, layer}] cascade_renames: [{file, table, old_ref, new_ref}] skipped_local_objects: [对象名] map_gate: {map_completed: true|false|skipped, user_skipped_map: true|false, blocked_for_map: true|false} prepush_validation: {status, errors} # 写入前预检结果 backfill_status: success | partial | failed verification: {files_checked, fields_replaced, cascade_refs_fixed, issues}
约束
- 只写 Data Source、Mapped Field 和级联引用,不改业务语义字段
- 级联修正仅限属性名引用,不修改关系方向或动作语义
- 写入前必须执行
预检,失败则阻断写入../_shared/prepush-validation.md - 执行回填前必须确认
或map_completed == true
,否则阻断并回交 pipeline 调度skipped - 写入后必须回读校验,包括级联引用一致性
- 回填失败时保留差异清单,可重试