reflect_on_teaching
Write structured lesson reflections with mandatory attribution, evidence, and action links, anchored to a lesson ID to track closure progress.
Instructions
写一份 TeacherReflection (每节课末尾, 第 3 课起开始升级). §1-§5: 归因骨架已收紧——必须站队一个主归因、给证据、给反事实、挂一个类型匹配的 action_link;weather(⑥天气)必须带 weather_expires_at 且禁止触发任何学习者画像写入,过期即焚。呈现全静默:返回值只捎带一行近 20 次主归因计数,不进任何 UI。 反思挂锚: lesson_id/live_session_id 可选, 但推荐至少挂 lesson_id —— 反思挂在课上, 下一任老师才能按课读回"这节课到底反思过没有", 而不是靠 pair 级近似猜。两者若填写, server 会校验存在性 + 与当前 pair 一致(lesson 经 courses.pair_id, live_session 经 live_sessions.pair_id), 不属于本 pair 的 id 直接拒写。 挂锚推断: lesson_id 不填时 server 会从现场上下文强推断——依次看 live_session_id 指向的场次的课 / 当前唯一 active 的 Live 教室 / 24h 内最近一场 Live 课; 推断命中会替你挂上并在回执明示来源(created_refs.anchored_lesson_id + human_note), 推不出则落无主反思并在回执警告: 无主反思不计入任何课的 closure(closure_progress.reflection 会一直显示缺)。回执自带闭环进度(带 lesson 锚时, 显式或推断皆算)——不用另查状态机。
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| method | Yes | ||
| evidence | Yes | 必填。本次 session 里的具体观察,不是归因的同义复述. | |
| lesson_id | No | 可选, 推荐填——挂锚这份反思是为哪节课写的。反思挂在课上, 下一任老师才能按课读回, 而不是靠 pair 级近似猜。填了会校验: 必须是已存在的 lesson id, 且属于当前 pair。不填时 server 会从现场上下文强推断 (见工具描述); 推断也落空则该反思不计入任何课的 closure。 | |
| rationale | Yes | ||
| action_link | Yes | 必填。归因必须接行动(§4),否则只是日记。type 由 primary_attribution 决定: not_yet_mastered→review_action material_flaw→lesson_revision difficulty_timing→course_adjustment path_mismatch→intervention_note judgment_error→hypothesis_update weather→retest_only path_worked→hypothesis_update(证实现有假设, 走 confidence-up 而非 judgment_error 的纠错方向). **ref_id 的合法落点按 type 定死如下**(服务端逐一验存在+同 pair 归属, 幽灵引用直接拒 ——所以不必试探, 照表填即可): review_action→flashcards / exercises / concepts / lessons; lesson_revision→lesson_revisions(最精确: 填 update_lesson 回执里的 lesson_revision_id) / lessons; course_adjustment→courses / lessons; intervention_note→lessons / live_sessions / session_events / lesson_patches; hypothesis_update→learner_hypotheses; retest_only→exercises / flashcards / lessons。**注意六类里有五类都收 lessons**——拿本课的 lesson_id 当落点是合法的, 不是权宜之计。 | |
| next_action | Yes | ||
| what_failed | No | ||
| what_worked | No | ||
| counterfactual | Yes | 必填。防自利归因机关(§3):一句话——"如果真相是(另一个最可信的归因),我预期会看到 X;我实际看到的是 Y。" | |
| actual_evidence | No | ||
| idempotency_key | No | 可选。幂等键 (建议 uuid) —— 同一 key 重放此调用返回首次结果, 不重复写入. 网络重试/断线重连时带上同一个 key, 而不是猜"上次到底写没写". | |
| live_session_id | No | 可选——挂锚这份反思是为哪场 Live 课写的。填了会校验: 必须是已存在的 live_session id, 且属于当前 pair。 | |
| expected_outcome | No | ||
| weather_expires_at | No | 仅 primary_attribution=weather 时必填 (ISO timestamp),过期即焚——过期后不再出现在任何读路径. | |
| primary_attribution | Yes | 必填单选,逼出立场:not_yet_mastered=①学生尚未掌握 material_flaw=②教学材料有误或不完整 difficulty_timing=③难度与时机不合适 path_mismatch=④解释路径不适合这个人 judgment_error=⑤原判断本身就错 weather=⑥天气(同日状态性噪音: 累/疼/心不在焉) path_worked=⑦路径适配、如预期奏效——全对的课选这个,但必须写出什么奏效了、证据是哪几次作答;"一切都好"不带证据等于什么都没说。禁止在有真实问题时用它逃避归因. | |
| secondary_attribution | No | 可选,至多一个,且必须不同于 primary_attribution——留一格诚实,不是多选打勾. |