原文:Threads(作者 @magic.tw)

摘要

andrej-karpathy-skills 是一個 GitHub 專案(貼文連到 github.com/multica-ai/andrej-karpathy-skills),整個 repo 幾乎只有一個 CLAUDE.md,卻拿到約 18.4 萬顆星。它把 Andrej Karpathy(前 Tesla AI 總監、OpenAI 創始成員)對「AI 寫程式會出什麼問題」的觀察,整理成四條給 Claude Code 的行為原則:先想再寫、簡單優先、精準修改、目標導向執行。貼文作者認為第四條最實用:不要叫 AI「修 bug」,而是叫它「先寫一個能重現 bug 的測試,再讓測試通過」,給的是成功標準而不是步驟,AI 就能自己驗證有沒有做完。

重點

  • 原則一:先想再寫(Think Before Coding):不要默默假設需求。要把假設講明、有歧義時列出多種解讀、如果有更簡單的做法要提出來、不懂就問。
  • 原則二:簡單優先(Simplicity First):只寫解決當前問題的最少程式碼。不預先做「以後可能用到」的功能、不做只用一次的抽象、不加沒人要求的彈性、不替不可能發生的情況寫錯誤處理。檢驗標準:資深工程師看了會不會說「太複雜了」。
  • 原則三:精準修改(Surgical Changes):只動需求要求的地方。不順手改旁邊的程式、不重構沒壞的東西、遵守既有風格。看到無關的死程式碼只「提一下」不刪;只清掉因為自己這次改動才變成沒用的 import/變數/函式。
  • 原則四:目標導向執行(Goal-Driven Execution):把任務轉成「可驗證的成功標準」加「驗證迴圈」。例如不要說「加驗證」,而是先寫無效輸入的測試;多步驟工作先講簡短計畫,每步附上檢查方式。
  • 核心洞見(README 原話):“LLMs are exceptionally good at looping until they meet specific goals… Don’t tell it what to do, give it success criteria and watch it go.” 意思是 LLM 很擅長一直迭代直到達成明確目標,所以要給它成功標準,而不是指令清單。
  • 安裝兩種方式,一行指令就好:
    • Claude Code plugin:/plugin marketplace add forrestchang/andrej-karpathy-skills 再 /plugin install andrej-karpathy-skills@karpathy-skills
    • 單一專案用:curl -o CLAUDE.md https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/CLAUDE.md
  • README 自己提醒:這套規則偏「謹慎」而不是「快」,小事可以自行斟酌;貼文作者也建議只留跟自己專案有關的條目。

個人洞見

這四條原則對應的正是 AI 寫程式最常見的三種翻車:沒搞清楚需求就動手、30 行能解決卻寫 300 行、改到不相干的程式。跟 Vercel 的 8 條 prompt 原則 和 Codex/Claude Code 常用指令 一樣,重點都是把「要什麼結果」講清楚,而不是教 AI 每一步怎麼做;Stanford CS329A 講的「靠測試與錯誤訊息自我修正」就是第四條的理論基礎。Karpathy 的另一招 ASD-STE100 簡化英語 則是從輸出可讀性下手,兩者可以一起放進 CLAUDE.md。