← 返回文章列表

可信系统为什么必须会说“不知道”

区分 unknown、no-match、unavailable、stale 与拒答,让不确定性变成可行动的产品状态。

返回 TeachFlow 项目总览

教学系统最危险的错误不一定是报错,而是用一个看起来完整的答案掩盖证据缺口。没有作答数据时显示“薄弱”,教材未命中时编造引用,记忆服务不可用时悄悄回退旧记忆——这些行为都让界面更顺滑,却让教师失去判断真实状态的能力。

TeachFlow 因此把“我不知道”拆成不同机器状态,而不是一个笼统的失败提示。

五种不确定性,五种下一步

TeachFlow 不确定性状态与下一步行动

unknown:缺少足够学习证据。
它不等于学生不会。系统应提示收集首条正式证据,而不是把学生放进“薄弱”名单。

no-match:输入存在,但目录中没有可靠匹配。
例如教材映射或知识点匹配只能在规范全名确定命中时给出建议;没有命中就留空,等待教师选择,而不是让模型凑一个最像的节点。

unavailable:依赖暂时无法访问。
Foundation Memory 不可用时,客观图谱结果仍可保留,个性化依据标为暂不可验证并允许重试;不能静默回退到另一套旧权威。

stale:结果曾经有效,但前提已经变化。
旧课程图版本、旧提案聚合值或过期 preview 都必须在提交时被拒绝。它们不是“稍微旧一点的建议”,而是不能再作为当前写入依据。

拒答或 abstention:系统在风险过高时主动不作结论。
这可能来自模型,也可能来自业务规则。例如输出缺少必须字段、证据来源不满足白名单,或者权限作用域无法确认。

拒答不是失败率的另一种名字

选择性分类研究把“拒绝一部分输入”视为风险—覆盖率的权衡:系统覆盖越多,不一定越好;允许在不确定样本上 abstain,可以降低被覆盖样本的错误风险。这个研究结论来自分类任务,不能直接证明教育系统的最佳阈值,但它提供了一个重要视角:覆盖率本身不是唯一目标。

在 TeachFlow 中也一样。若知识点映射的自动覆盖率从 80% 提升到 100%,但最后 20% 是猜出来的,那么更高的覆盖率反而降低了数据可信度。真正应该同时观察的是:

  • 自动覆盖了多少;
  • 覆盖部分的错误成本;
  • 被拒绝样本是否给出了明确人工路径;
  • 重试是否可能改变结果;
  • 拒答有没有被界面误写成普通低分。

状态必须决定行动

不确定性只有进入工作流才有价值:

状态用户看到什么可以做什么不能做什么
unknown证据不足收集正式作答归类为不会
no-match暂无可靠匹配人工选择或补目录自动发布映射
unavailable个性化依据暂不可验证保留客观结果、重试回退旧权威
stale前提已变化刷新并重新预览沿用旧提交
abstain当前无法安全判断补输入或转人工伪造确定答案

这个表也是错误设计的验收表。若所有状态最后都变成“请稍后再试”,系统仍然没有表达不确定性。

最小反例

假设学生只有一次被提示后的正确作答。如果系统把它显示为 0 分,是把未知和错误混在一起;如果显示为 secure,是把单次结果和稳定掌握混在一起;如果完全隐藏,是把数据缺口交给教师猜。

更可信的表达是:当前有一条提示依赖的正确证据,尚不足以判断独立掌握;下一步提供同知识点的独立迁移题。这里的“不知道”已经包含证据、边界和行动。

当前边界

TeachFlow 目前在学习状态、教材映射、Memory-first 和 stale proposal 等路径中实现了部分明确语义,但还没有一份覆盖所有 API、UI 文案和模型拒答的统一状态注册表,也没有真实用户研究证明教师能准确理解这些差异。本文总结的是现有设计方向,不应被描述成已完成全产品不确定性治理。

常见问题与设计边界

拒答太多会不会让产品不可用?
会,所以必须观察风险—覆盖率,同时给被拒绝样本提供低成本的人工作业路径。目标不是拒答最多,而是在错误成本和处理成本之间找到边界。

unknown 和 0 分有什么区别?
0 分需要一条可确定评分的失败证据;unknown 表示没有足够合格证据。二者会触发完全不同的教学动作。

为什么 unavailable 时不能回退旧数据?
因为旧数据可能已经被撤销、越权或语义过期。除非回退源与主权威有明确一致性合同,否则“保持可用”会变成使用错误依据。

参考资料

结论

“不知道”不是一句谦虚文案,而是一组必须影响权限、状态和下一步动作的产品语义。可信系统不追求每次都回答;它追求在能回答时说明依据,在不能回答时说明缺什么,并且不让一次降级悄悄改写事实。

← 返回文章列表