--- name: bkn-doctor description: 建模质量诊断与多轮收敛。主路径不稳定时介入。 --- # 建模诊断 公约:`../_shared/contract.md` ## 做什么 当 `bkn-extract` 产出的清单不稳定时,通过多轮对话诊断问题、收敛对象/关系/动作清单。 ## 触发条件(满足任一) - 输入模糊:对象/关系边界不清 - 领域冲突:候选领域分差小且未确认 - 待确认对象 >= 3 - 清单质量不足:方向冲突、主键缺失、命名异常 ## 输入 - `problem_signal`:ambiguous_input / domain_conflict / too_many_pending / draft_quality_low - `current_material`:原始文本 + 当前候选清单 ## 三步收敛 **1. 识别问题** → 范围/对象/关系/动作/质量,哪个不稳定? **2. 稳定骨架** → 先锁定:网络范围 + 核心 3-5 对象 + 关键 2-3 关系/动作。未稳定不进细节。 **3. 修正交付** → 逐项修正后输出结构化清单 + 稳定/待确认标记。 ## 建模准则 | 判断 | 规则 | |------|------| | 对象 vs 属性 | 简单特征值 → 属性;独立业务实体 → 对象 | | 关系 vs 对象 | 仅表示连接 → 关系;连接有业务属性 → 升级为对象 | | Action vs 关系 | 结构关联 → 关系;状态改变/业务动作 → Action | | 主键 | 字符串、稳定可复算、优先业务单号 | ## 交互原则 - 每次只追问一个关键问题 - 先收敛范围与核心对象,再讨论关系/动作 - 冲突时并列候选,不强行裁决 - 未稳定前只输出"候选 + 原因 + 待确认" ## 输出 所有键名使用中文,便于非技术人员阅读: ```yaml 澄清摘要: {问题, 解决方案} 稳定建模清单: 显式对象: [] 推断对象: [] 待确认对象: [] 关系清单: [] 动作候选: [] 问题解决记录: [{问题, 状态, 解决方案}] 待解决建议: [] ``` ## 质量自检(每轮输出前) - 状态枚举误建为对象? - 无主键对象? - 关系方向未标注? - pending 无处理建议? - 未稳定写成确定? 任一失败先修正再输出。