Skip to main content
Glama

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

TableJSON Schema
NameRequiredDescriptionDefault
methodYes
evidenceYes必填。本次 session 里的具体观察,不是归因的同义复述.
lesson_idNo可选, 推荐填——挂锚这份反思是为哪节课写的。反思挂在课上, 下一任老师才能按课读回, 而不是靠 pair 级近似猜。填了会校验: 必须是已存在的 lesson id, 且属于当前 pair。不填时 server 会从现场上下文强推断 (见工具描述); 推断也落空则该反思不计入任何课的 closure。
rationaleYes
action_linkYes必填。归因必须接行动(§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_actionYes
what_failedNo
what_workedNo
counterfactualYes必填。防自利归因机关(§3):一句话——"如果真相是(另一个最可信的归因),我预期会看到 X;我实际看到的是 Y。"
actual_evidenceNo
idempotency_keyNo可选。幂等键 (建议 uuid) —— 同一 key 重放此调用返回首次结果, 不重复写入. 网络重试/断线重连时带上同一个 key, 而不是猜"上次到底写没写".
live_session_idNo可选——挂锚这份反思是为哪场 Live 课写的。填了会校验: 必须是已存在的 live_session id, 且属于当前 pair。
expected_outcomeNo
weather_expires_atNo仅 primary_attribution=weather 时必填 (ISO timestamp),过期即焚——过期后不再出现在任何读路径.
primary_attributionYes必填单选,逼出立场:not_yet_mastered=①学生尚未掌握 material_flaw=②教学材料有误或不完整 difficulty_timing=③难度与时机不合适 path_mismatch=④解释路径不适合这个人 judgment_error=⑤原判断本身就错 weather=⑥天气(同日状态性噪音: 累/疼/心不在焉) path_worked=⑦路径适配、如预期奏效——全对的课选这个,但必须写出什么奏效了、证据是哪几次作答;"一切都好"不带证据等于什么都没说。禁止在有真实问题时用它逃避归因.
secondary_attributionNo可选,至多一个,且必须不同于 primary_attribution——留一格诚实,不是多选打勾.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility and does so extensively. It discloses the silent UI (return only counts, no UI entry), weather_expires_at expiry and the prohibition on learner-profile writes, server-side anchor validation and rejection of non-pair ids, anchor inference fallback with warnings for unanchored reflections, and the closure-progress inclusion in the receipt.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but flawlessly structured: it front-loads the core action and then details the attribution skeleton, anchor validation, inference logic, and return-receipt behavior. Every sentence contributes a distinct fact about behavior or constraints, with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a highly complex tool with no annotations and no output schema, the description is remarkably complete. It covers the return value (one-line count plus receipt fields like created_refs.anchored_lesson_id and human_note), failure modes (unanchored reflection, pair mismatch), inference precedence order, and closure-progress semantics, leaving very few ambiguities for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 56%, and while the description reinforces key parameter relationships (e.g., action_link type-to-ref_id mapping, weather_expires_at requirement), it adds little beyond what the schema's descriptions already state. Several required parameters without schema descriptions (method, rationale, next_action) remain unexplained in both places, making this a minimal-viable rather than compensatory score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool's purpose ('写一份 TeacherReflection') with clear scope (per-lesson, starting from lesson 3). However, it does not explicitly distinguish itself from sibling tools like record_post_lesson_evaluation or close_lesson_loop, relying instead on its unique attribution-skeleton requirements to imply differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: use at the end of each lesson, attach lesson_id, and it explicitly says the receipt includes closure progress so '不用另查状态机' (no need to query the state machine separately), which is a when-not guidance. It does not name alternative tools for similar actions like recording evaluations, limiting it below a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sf-shenfeng/learn-shell'

If you have feedback or need assistance with the MCP directory API, please join our Discord server