# Question Coach 三问质量评测实验 类型:`learning-experiment` ## 1.1 为什么值得做 这个主题不是噪音:同一条线索从“生成三道 active-recall questions”被用户明确校正为“认知杠杆三问”,并已经形成 Q1 世界模型、Q2 深层机制、Q3 战略动作的目标结构。当前代码仍是 questions:string[] 与浅层 prompt,缺少可评测的结构化输出和认知质量筛选,因此适合做一个小型学习实验来定义并验证“好问题”的标准。 ## 1.2 学习实验 / Before-After ## 思维实验:三问从阅读理解变成认知杠杆 ### 输入 一篇文章讲“团队为什么总在临近 deadline 才发现需求理解偏差”。页面证据包括:早期讨论只记录结论,不记录反例;评审只看交付物,不看决策过程;负责人把模糊问题当作执行问题。 ### Before:active-recall 版本 1. 这篇文章的核心观点是什么? 2. 文中提到了哪些导致延期的原因? 3. 你会如何把文章内容应用到工作中? 问题能检查是否读懂,但几乎不会改变读者的判断框架。 ### After:认知杠杆三问版本 | Slot | Question | Why it matters | Evidence | | --- | --- | --- | --- | | Q1 世界模型题 | 如果把“deadline 前才发现偏差”视为系统输出,而不是个人失误,这个系统里最关键的反馈延迟发生在哪里? | 迫使读者重建因果图,而不是复述延期原因。 | 早期讨论只记录结论,不记录反例;评审只看交付物。 | | Q2 深层机制题 | 为什么“只记录结论”会让团队误以为已经对齐?这里被隐藏掉的分歧类型是什么? | 把表层流程问题推进到信息损失机制。 | 文章指出反例和决策过程没有被保留。 | | Q3 战略动作题 | 下次开需求会时,你会新增哪一个 10 分钟动作,让分歧在早期暴露而不是在 deadline 前暴露? | 把认知洞察落到可执行行为。 | 文章把模糊问题被误当执行问题列为关键原因。 | ### 实验判定 通过信号:三题各自命中不同认知层级,有页面证据,能让用户改变判断框架或下一步动作。 失败信号:题目只是“文章说了什么”,没有机制抽取,没有个人行动指向,或 Odyssey 先验喧宾夺主导致问题脱离原文。 ## 1.3 落地动作 - 改 `/Users/bytedance/Documents/product-bu/obsidian/obsidian-clipper/src/utils/question-coach.ts`:把 `QuestionCoachResult.questions: string[]` 升级为结构化 `QuestionCoachQuestion[]`,字段至少包含 `question`、`type`、`why_it_matters`、`expected_answer`、`source_evidence`、`odyssey_target`;prompt 固定生成 Q1 `world_model`、Q2 `mechanism`、Q3 `strategic_action`,并要求每题引用页面证据。 - 加 `/Users/bytedance/Documents/product-bu/obsidian/obsidian-clipper/src/utils/question-coach-eval.ts`:实现一个离线评测函数,输入为页面上下文、Odyssey 先验摘要和模型输出,输出 `groundedness`、`cognitive_depth`、`personal_relevance`、`actionability`、`slot_fit` 五个分数与 reject reason;先用规则打底,后续可接 LLM judge。 - 扩展 `/Users/bytedance/Documents/product-bu/obsidian/obsidian-clipper/src/utils/question-coach.test.ts`:新增 fixture 覆盖“浅层阅读理解题被拒绝”“三问 slot 类型错误被拒绝”“缺少 source_evidence 被拒绝”“高质量认知杠杆三问通过”四类用例。 - 更新 `/Users/bytedance/Documents/product-bu/obsidian/obsidian-clipper/QUESTION_COACH.md`:把 Question Coach 的产品定义从 active-recall 改成 cognitive leverage questions,记录最低验收线、评分 rubric、Odyssey 只作为认知先验而非输出主语的边界。