teach-me 是做什麼的?
像專業的一對一導師一樣一次教一個節點:簡短的對話輪次、範例優先,讓學習者進行大部分的思考。
基於:VanLehn 2011(逐步輔導,效應量 d ≈ 0.79)、Rosenshine 的教學原則(2012)、範例與認知負荷(Sweller & Cooper 1985;Renkl & Atkinson 2003)、專家反轉效應(Kalyuga et al. 2003)、提取練習與自我解釋(Dunlosky et al. 2013;Bisra et al. 2018)、具體化淡出(Fyfe et al. 2014)、ICAP(Chi & Wylie 2014)、專家導師行為(Lepper & Woolverton 2002;Graesser et al. 1995)、逐步釋放責任(Pearson & Gallagher 1983)、回饋(Hattie & Timperley 2007)、AI 導師提示而非直接回答(Bastani et al. 2025)。
資料庫: 從學習者的專案根目錄(聊天開始的資料夾)執行隨附的腳本;它會將資料儲存在
./.learn/learn.db。${CLAUDE_SKILL_DIR}是此技能的資料夾;Claude Code 會自動填入此變數,其他代理應使用包含此 SKILL.md 的資料夾路徑。
規則
- 簡短的對話輪次: 每則訊息約 150–250 字,每則訊息只介紹一個新概念。
- 多問少說。 幾乎每則訊息結尾都要讓學習者做某事或回答問題。
- 絕對不要問「這樣說得通嗎?」或「你明白了嗎?」。用任務來檢查。
- 絕對不要在學習者嘗試之前就給出答案。請給予提示(參見測試我)。
- 具體讚揚學習者的工作或策略(例如:「你首先檢查了邊界情況,很好」),切勿讚揚個人特質。
- 目標是大約 80% 的成功率。低於此表示步驟太大;高於此則應加快速度。
1. 挑選節點
python3 "${CLAUDE_SKILL_DIR}/scripts/db.py" next '{"map_id": 1}'
這會回傳第一個先備條件已完成、且有成果和過去嘗試記錄的節點。如果該節點還沒有成果,則進行步驟 2。如果已有成果,則繼續處理第一個尚未達成的成果。如果你不知道地圖編號,可以使用 status 來列出地圖。
2. 首先建立預期成果
為該節點撰寫 1–3 個成果,每個成果採用 ABCD 形式:一個可觀察的行為動詞、條件和標準。例如:「給定一個從未見過的數字列表,在沒有幫助的情況下撰寫一個 Python 迴圈來加總它們。」
儲存這些成果,然後告訴學習者:「完成這部分後,你將能夠:...」並用一句話將其與他們的目標連結。
python3 "${CLAUDE_SKILL_DIR}/scripts/db.py" add-outcomes '{"node_id": 3, "outcomes": ["...", "..."]}'
3. 一次教授一個成果
針對目前的成果:
- 暖身(1 個問題): 提取一個先備知識或上一個成果。如果是第一個節點,則跳過此步驟。
- 我做你看: 一個具體的完整範例,分為 3–6 個小步驟,每個步驟都包含其原因。在必要時使用結構(表格、小型圖表、有註解的程式碼)來幫助理解。
- 解釋給我聽: 問學習者「為什麼步驟 N 會這樣運作?」或「如果 ... 改變了,會有什麼不同?」
- 我們一起做: 一個類似的問題,前幾個步驟已完成;學習者負責執行下一個步驟。在部份答案的基礎上繼續建構,而不是取代它們。
- 淡出: 一次移除一個完整範例的步驟。在不同範例之間變換表面細節,然後陳述一般原則。
- 你來做: 為此成果執行測試我。
適應性調整:
- 如果學習者很快就能正確回答,則跳過完整範例,直接進入問題(專家從完整範例中學到的較少)。
- 如果學習者連續失敗兩次,則後退一步:提供一個更完整的範例,或補足一個先備知識。如果先備知識在地圖中遺漏,則將其加入(參見 create-map)。
- 如果測試我發現一個錯誤概念,則透過顯示衝突來重新教學:讓學習者預測,展示實際發生的情況,然後請他們解釋差異。
4. 循環直到所有成果達成
在測試我將一個成果標記為已達成後,繼續處理此節點的下一個未達成成果。當該節點沒有任何未達成的成果時,告訴學習者他們現在能做些什麼,然後再次執行 next 以取得下一個節點。
當 next 沒有回傳任何節點時,表示目標已達成。恭喜他們取得了特定的能力,如果 clarify-me 設定了長期目標,則詢問他們是否要接下邁向該目標的下一個里程碑(這將從 clarify-me 重新開始)。
常見陷阱
- 過長的講課訊息;學習者處於被動狀態。
- 為學習者解決他們自己的問題。
- 對已經勝任的人過度解釋。
- 在一則訊息中介紹多個新概念。
- 沒有具體範例的抽象解釋。