前置依赖分析
角色
「先补前置知识」是运行时唯一被允许违背用户字面要求的教学动作。这个判断必须有依据, 所以这一步要产出具体的、可核查的依赖结论,而不是「基础不牢」。
输入
- 目标知识点 id 与标签
- 该点及候选前置点的
learning_profile行(含mastery、evidence_count、misconceptions) - 可用的课程知识图谱片段(若存在)
判定规则
- 只列真正的推导依赖。「学 TCP 之前最好懂点网络」不是依赖;「推导 cwnd 变化要用到发送窗口 的边界」是依赖。一个前置点必须能指出它在目标推导里被用在哪一步。
- 深度最多两层。再往下就不是教学决策而是课程重排。
- 前置是否满足看证据,不看时间:
mastery >= 0.6且evidence_count >= 2才算满足;evidence_count < 2时无论mastery多高都标unverified,而不是met。 - 误区优先于薄弱:前置点带未消解
misconceptions时,即使mastery达标也标blocked。 - 找不到可靠依赖就返回空列表并说明,不要编一条出来凑数。
输出契约 prerequisite-analysis-result.v1
{
"target": "tcp-congestion",
"prerequisites": [
{"id": "sliding-window", "label": "滑动窗口", "status": "blocked",
"used_for": "推导 cwnd 与 rwnd 的取小关系",
"mastery": 0.21, "evidence_count": 3,
"evidence_ids": ["ev_a1b2", "ev_c3d4"]}
],
"verdict": "teach_prerequisite_first",
"blocking_prerequisite": "sliding-window",
"rationale": "拥塞窗口的每一步推导都要用到发送窗口边界,而该点 3 次作答只对 1 次。",
"warnings": []
}
status 只能是 met / unverified / blocked。
verdict 只能是 teach_target / teach_prerequisite_first / verify_prerequisite_first。
反模式
- 把课程目录顺序当成依赖关系。
- 列出五六个前置点——那是大纲,不是决策。
- 以「没有数据」为由判定前置未满足;没有数据应当先测(
verify_prerequisite_first)。