前陣子 Hacker News 上有一篇貼文衝上熱門,標題是「AI Agent Guidelines for CS336 at Stanford」,短短時間內拿到了四百多則按讚。
第一眼看到的時候,我心裡想的是:不過就是一份 prompt 吧?但仔細看完之後,發現這份只有兩千多字的 Markdown 檔案,其實藏著不少值得開發者思考的東西。
什麼是 CS336?
CS336 是史丹佛大學一門叫做「Language Modeling from Scratch」的課程。簡單來說,這門課不教你怎麼呼叫 API,而是從零開始,用 Python 和 PyTorch 實作一個語言模型。
課程非常硬核——你需要自己寫 tokenizer、transformer block、訓練迴圈,甚至 Triton kernel。正因如此,學生在作業上花的时间非常多。
於是教授們想了一個辦法:讓學生在寫作業時,可以請 AI 助手幫忙,但有一套明確的「遊戲規則」。
核心原則:Agent 是助教,不是解答器
這份 Guidelines 的第一句話就點出了核心精神:
AI agents should function as teaching aids that help students learn through explanation, guidance, and feedback—not by completing assignments for them.
換句話說,AI Agent 的角色是「老師」,不是「代考」。
接下來,文件列出了 Agent 應該做和不應該做的事情。我整理成幾個重點:
Agent 應該做的:
- 解釋概念,引導學生往正確方向思考
- 指出學生程式碼可以改進的地方
- 用提問的方式幫助除錯,而不是直接給答案
- 建議測試案例、斷言、profiler 檢查
Agent 不應該做的:
- 直接寫 Python 程式碼
- 給出問題的答案
- 修改學生 repo 裡的程式碼
- 執行 bash 指令
- 把 assignment 需求直接轉成可運作的程式
為什麼要限制這麼嚴格?
乍看之下,這些規則好像有點矯枉過正。既然 AI 可以瞬間寫出完整的程式碼,為什麼還要限制它?
原因很簡單:學習發生在「做」的過程中。
如果 Agent 直接幫你寫完 tokenizer,你確實拿到了正確答案,但你不知道 BPE 演算法怎麼運作、不知道為什麼需要建立詞典、不知道處理未登錄詞(OOV)時會發生什麼事。
Guidelines 裡有一個很生動的範例:
學生:「我的 causal mask 好像有問題,訓練爆掉了。請告訴我哪裡錯了。」
Agent:「我先引導你理解,不是直接給答案。你目前試了什麼?」
學生:「我試了只跑一個 attention layer,但還是崩潰。」
Agent:「檢查三件事:mask 是不是在 softmax 之前套用?是不是正確廣播到 score tensor 的形狀?被 mask 的位置是不是變成一個很大的負數而不是零?一個好的 sanity test 是用長度 3 的小樣本,印出 mask 前後 attention scores 的數值。你看到的結果是什麼?」
注意看這個 Agent 的回應——它沒有給出修復程式碼,而是給了三個具體的檢查點和一個驗證方法。學生照做之後,自己找到了問題。
這個過程,才是真正的學習。
更深的思考:Agent 的「教學哲學」
Guidelines 裡還提到一個有趣的原則:偏好測試和不變量,而不是修復方案。
舉例來說,與其讓 Agent 幫你改掉 bug,不如讓它建議你加一個 shape assertion,或者寫一個 tiny toy input 來驗證。這樣即使下次遇到類似問題,你也有方法自己處理。
這背後其實反映了一個更深的問題:在 AI 時代,我們到底要培養什麼能力?
如果 Agent 什麼都能做,我們還需要學會寫程式嗎?我的答案是:需要,但「會寫程式」的定義改變了。
過去,「會寫程式」意味著你知道語法、你知道 API、你知道怎麼調錯。現在,「會寫程式」意味著你知道要讓 Agent 做什麼、怎麼驗證它的輸出、怎麼在 Agent 出錯時引導它回到正確方向。
這其實是一種更高階的能力——不是手寫每一行程式碼,而是理解程式碼背後的邏輯,並能有效地與 AI 協作。
不只是教育場景
雖然這份 Guidelines 是為 CS336 的學生設計的,但它的原則同樣適用於其他場景:
- 工作場景: 讓 AI 幫你寫程式碼時,你應該檢查它的輸出,而不是盲目信任
- 開源專案: 在 PR 中使用 AI 生成程式碼,確保 Agent 遵循專案的 coding style 和測試慣例
- 日常開發: 用 Agent 除錯時,讓它解釋問題的原因,而不只是給修復方案
結語
這份只有兩千多字的 Guidelines,其實提出了一個簡單卻深刻的問題:
我們使用 AI 的目的是什麼?
如果答案是「更快完成工作」,那 Agent 應該盡可能多做。但如果答案是「學會並理解」,那 Agent 就應該適度克制,引導我們自己思考。
我想,無論你是學生、開發者,還是對 AI 感興趣的普通人,這份 Guidelines 都值得讀一遍。至少下次你讓 Claude Code 幫你寫程式碼的時候,你會問自己一句:
「這個答案,我真的理解了嗎?」