课程知识萃取
只生成证据化知识卡,不设计模块顺序,不写完整课程正文。
开始前读取 materials.jsonl、定位、访谈记录,以及 知识库/方法论/知识萃取.md 和 知识库/模板/知识卡模板.json。
执行流程
- 按材料记录读取
course_material,跳过执行指令和会议闲聊;不可读项沿用 blocker。 - 书籍材料按
processing_mode限定证据边界:notes可按实际覆盖章节提取全部知识卡类型;summary只支持相关性、主题概览和待补章节,不生成假装覆盖全书的data或verbatim;quotes只把带版本与页码/章节位置的短引文转成verbatim,不扩写未读取上下文;study中的章节笔记可回源取证,自测问题和模型答案不作为来源事实。
- 优先读取
authority_status: confirmed的当前材料;candidate与conflict只用于并列比较,不能静默覆盖。若材料规模很大,先用覆盖不同来源和内容类型的小样本验证卡片边界、字段与去重规则,再分批扩展;不要在结构未稳定时直接全量抽取。 - 以最小完整含义为单位提取知识卡,类型只能是
viewpoint、method、step、case、data、boundary、verbatim、claim_to_verify。 - 每张卡保留
source_id与可回到原文的evidence_locator:页码、时间戳、标题路径或 block id。不要只写文件名。 - 区分原话与改写:
verbatim必须逐字且注明 speaker;其他卡用summary,不要把润色后的句子冒充原话。受版权保护书籍只保留完成教学证据所需的短引文,不连续复制章节。 - 事实、数字和背书缺少可核证来源时转为
claim_to_verify;讲师观点可以以其原话为证据,但不能证明外部事实。 - 为方法卡补齐适用场景、输入、步骤、输出、完成标准和失败边界。原材料没有的字段标为
unknown,不补造。 - 合并语义重复卡时保留全部证据;互相冲突的卡不得合并,设置同一
conflict_group。 - 为每张卡补充少量、可检索的
concepts;为需要组合使用的卡记录relations,只表达可证实的supports、explains、contradicts或depends_on,并写明target_card_id。没有证据时不猜关系。 - 输出
.course-producer/artifacts/knowledge-cards.jsonl,逐行校验 JSON、唯一 id、来源和定位符。 - 校验通过后运行
node skills/course-knowledge-extraction/scripts/course-knowledge-graph.mjs --root <课程项目目录>,生成.course-producer/artifacts/knowledge-graph/graph.json与manifest.json。这是从知识卡确定性生成的导航副本,不直接上传或重解析原始转写。
完成检查
- 观点、方法、步骤、案例、数据、边界和高价值原话均已覆盖或在缺口中说明。
- 所有卡都能从
source_id + evidence_locator回到原始证据。 - 书籍知识卡没有超出登记的
processing_mode + coverage;摘要、自测问题和模型答案没有冒充原文证据。 - 无来源的事实主张没有混入 data 卡。
- 方法卡没有把未知步骤补成常识答案。
- 冲突、重复和待验证状态可见。
knowledge-graph/manifest.json的输入指纹对应当前知识卡;图节点仍保留card_id + source_id + evidence_locator。- 大规模材料先经过代表性样本验证,卡片边界与关系规则稳定后才分批扩展。
若本机有 Graphify,可用 graphify query "<问题>" --graph .course-producer/artifacts/knowledge-graph/graph.json --budget 1200 做范围检索;Graphify 缺失时直接检索 JSONL,不阻塞课程生产。查询结果只是导航候选,写课前仍须回到知识卡和原始证据。
完成后把知识卡和知识图导航交给 course-outline-design。