用 AI 教學:分析史丹佛大學 CS336 Agent 指南
將 AI 編碼助手整合進技術教育中,引發了一個根本性的矛盾:如何在利用 LLM 生產力的同時,又不削弱學習所需的認知掙扎?史丹佛大學的 CS336 課程嘗試透過發布一套特定的指南來解決這個問題——這些指南包含在一個 CLAUDE.md 檔案中——旨在指導 AI agent 如何與學生互動。
課程設計者並非禁止使用 AI,而是嘗試將 AI 程式化為一名蘇格拉底式導師(Socratic tutor)。這種方法將 AI 的角色從「解決方案生成器」轉變為「教學助理」,優先考慮概念理解而非即時的輸出結果。
框架:將 AI 作為蘇格拉底式導師
CS336 指南的核心哲學是,AI 應該透過引導、回饋和解釋來促進學習,而不是完成工作。由於該課程刻意強調實作強度——要求學生構建如 transformer blocks 和 Triton kernels 等複雜組件——指南明確禁止 AI 編寫程式碼。
AI 被鼓勵採取的行動
為了維持作業的教育價值,指南指示 AI agent 執行以下操作:
- 引導而非給予: 解釋概念並在不提供最終答案的情況下,將學生引向正確的方向。
- 引用官方來源: 指引學生參考講義材料、官方文件和 profiling tools。
- 審查與評論: 分析學生編寫的程式碼以建議改進方案、識別邊緣案例(edge cases)或建議不變量(invariants),但保持回饋的概括性。
- 透過詢問進行除錯: 透過提出引導性問題(例如,「如果 mask 是在 softmax 之後套用的會發生什麼?」)來幫助學生除錯,而不是直接提供修復方案。
- 解釋「為什麼」: 專注於建議背後的底層邏輯和理論,而不僅僅是實作步驟。
AI Agent 的硬性界限
為了防止「學習自動化」,指南建立了嚴格的禁令。AI agent 被指示不得:
- 編寫任何 Python 或 pseudocode。
- 完成作業程式碼中的
TODO部分。 - 編輯學生的 repository 或執行 bash commands。
- 實作核心課程組件(例如:tokenizers、optimizers 或 distributed training logic)。
- 指引學生參考第三方實作,以確保課程材料仍是主要的真理來源。
教學意義與社群辯論
這些指南的發布,在教育者和開發者之間引發了關於此類系統之有效性與執行力的重大辯論。
「健康使用」的論點
許多觀察者將此視為一個現實的折衷方案。透過定義何謂「健康使用」,大學為學生提供了一個藍圖,讓他們將 AI 作為加速工具而非取得學位的捷徑。正如一位評論者所言,這是嘗試為學術誠信的盜版行為提供一個「穩固的法律替代方案」——讓學生能夠以一種真正有益於其成長的方式,來使用他們已有的工具。
執行力的挑戰
批評者認為,這些指南本質上是「榮譽制度」規則,很容易被規避。由於學生可以使用課程提供的框架之外的任何模型,只需簡單地更改 prompt,即可覆蓋 CLAUDE.md 的指令。
社群中出現了幾種反對提案:
- 審計追蹤: 一些講師建議要求提供一個包含所有 prompt 和 response 的 markdown 紀錄的
.history資料夾,以識別哪些學生將 AI 當作拐杖使用。 - 回歸「老派」評量: 有強大的論點認為,確保學習的唯一方法是回歸受控環境——紙筆考試或在沒有網路存取的房間內編寫程式碼——以證明獨立於工具之外的知識。
- 「現實世界」的方法: 有人認為,屏蔽學生免於自動化一切的誘惑是適得其反的,因為這無法讓他們為在 AI 無處不在的專業環境中會遇到的「認知債務」和不明確的 bug 所做準備。
給學習者的實用建議
雖然是為教室環境設計的,但 CS336 的方法為自學開發者或正在學習新語言的人提供了寶貴的策略。透過刻意限制 AI 提供程式碼的能力,學習者可以強迫自己參與實作中的「重活」。
對於使用 Claude Code 等工具的人,社群建議利用「學習模式」(透過 /config > output styles > Learning)來模擬這種蘇格拉底式方法,確保 AI 引導使用者完成解決方案,而非僅僅是交付結果。