讓你的AI寫程式更聰明:Karpathy-Inspired Claude Code Guidelines 實戰教學
哈囉,各位程式設計新手們!你是否也曾經歷過,用AI寫程式,結果程式碼一團糟,或是根本跑不動的窘境?別擔心,這不是你一個人的問題!今天,我們要一起來學習一套超實用的「程式碼撰寫指南」,這套指南受到AI界大師Andrej Karpathy的啟發,能幫助你更好地引導AI,寫出更清晰、更容易維護的程式碼。
什麼是Karpathy-Inspired Claude Code Guidelines?
這套指南就像是給AI寫程式的「行為準則」,它的核心理念是:引導AI像一個經驗豐富、注重程式碼品質的工程師一樣思考和行動。 這套指南主要是針對使用像是 Claude 這種大型語言模型 (LLM) 來寫程式的人。
為什麼這套指南這麼重要?
我們都知道,AI雖然厲害,但它也常犯一些「工程師式」的錯誤:
- 容易產生錯誤的假設:AI可能會自作主張地做出假設,但卻沒有驗證,導致程式碼出錯。
- 程式碼過度複雜化:AI有時候會為了「彈性」或「擴展性」,寫出過於複雜的程式碼,反而難以理解和維護。
- 不必要的修改:AI可能會修改它不理解的程式碼,或是加入一些和任務無關的程式碼,造成混亂。
Karpathy-Inspired Claude Code Guidelines,就是為了解決這些問題而生的。它就像一位經驗豐富的導師,一步步引導AI寫出更好的程式碼。
四大核心原則:讓你成為AI程式碼的「把關者」
這套指南的核心由四大原則組成,涵蓋了程式碼撰寫的關鍵面向:
- Think Before Coding (先思考再寫程式):
- 核心精神:不要急著動手,先搞清楚需求,明確地提出假設,並考慮不同的可能性。
- 實作方法:
- 明確地陳述假設:如果對某些細節不確定,就向使用者提問,而不是自己猜測。
- 提出多種解釋:如果存在多種理解,不要直接選一個,而是列出來讓使用者選擇。
- 提出質疑:如果現有的方法過於複雜,提出更簡單的替代方案。
- 當困惑時停下來:如果遇到不清楚的地方,直接指出,並尋求進一步的說明。
- 對應問題:解決了 AI 做出錯誤假設、隱藏困惑、忽略權衡取捨的問題。
- 舉例說明:
- 錯誤範例:「請幫我新增一個使用者註冊功能。」 (AI 直接開始寫程式)
- 正確範例:「請幫我新增一個使用者註冊功能。首先,我需要了解使用者註冊需要哪些欄位?這些欄位的驗證規則是什麼?註冊成功後,我需要做什麼?請使用者確認。」 (AI 先提問,釐清需求)
- Simplicity First (簡單至上):
- 核心精神:以最少的程式碼解決問題,避免過度設計。
- 實作方法:
- 只實現被要求的:不要加入任何額外的功能,除非使用者特別要求。
- 不要為了單次使用而建構抽象:避免為了未來可能的需求而進行過度設計。
- 避免不可能發生的錯誤處理:不要為不可能發生的情況編寫錯誤處理程式碼。
- 如果可以用更短的程式碼完成,就重寫:如果程式碼可以更簡潔,就進行重構。
- 對應問題:解決了 AI 程式碼過度複雜化、抽象程度過高的問題。
- 測試標準:問問自己,如果這段程式碼被資深工程師看到,他們會覺得它過於複雜嗎?如果是,就簡化它。
- 舉例說明:
- 錯誤範例:使用者要求「新增一個按鈕」,AI 卻為了這個按鈕建構了一個複雜的UI框架。
- 正確範例:使用者要求「新增一個按鈕」,AI 直接用最簡單的方式實現了按鈕功能。
- Surgical Changes (精準修改):
- 核心精神:只修改必要的部分,不要動到其他程式碼。
- 實作方法:
- 不要「改善」附近的程式碼:只修改與任務相關的部分,不要去動其他不相干的程式碼。
- 不要重構沒有壞掉的程式碼:除非有必要,不要對現有的程式碼進行重構。
- 遵循現有的程式碼風格:即使你覺得現有的風格不好,也要保持一致性。
- 如果注意到不相干的程式碼,提出來,但不要刪除:如果發現不相干的程式碼,可以提出來,但不要擅自刪除。
- 處理你造成的孤兒:只刪除因為你的修改而變得不再使用的程式碼。
- 對應問題:解決了 AI 修改不相關程式碼的問題。
- 測試標準:確保每一行修改都直接與使用者的請求相關。
- 舉例說明:
- 錯誤範例:使用者要求修改一個函式,AI 卻順便把整個檔案的程式碼風格都改了。
- 正確範例:使用者要求修改一個函式,AI 只修改了那個函式,並保持程式碼風格一致。
- Goal-Driven Execution (目標導向的執行):
- 核心精神:將任務轉化為可驗證的目標,並建立迴圈,直到目標達成。
- 實作方法:
- 將命令式指令轉化為聲明式目標:不要告訴 AI 怎麼做,而是告訴它要達到什麼目標。
- 定義成功標準:明確地定義程式碼成功的標準,讓 AI 可以自我驗證。
- 建立驗證迴圈:讓 AI 不斷地嘗試,直到滿足成功標準。
- 對應問題:讓 AI 更好地執行任務,減少不斷的修改和溝通。
- 舉例說明:
- 不要這樣:「新增驗證功能。」
- 要這樣:「為無效的輸入寫測試,然後讓測試通過。」
- 不要這樣:「修復這個 bug。」
- 要這樣:「寫一個測試來重現這個 bug,然後讓測試通過。」
如何開始使用這套指南?
1. 安裝 (推薦使用 Claude Code Plugin)
- Claude Code Plugin 的優勢: 將指南整合到你的 Claude 程式碼編輯器中,讓所有專案都能使用。
- 安裝步驟:
- 在 Claude Code 中,先新增 marketplace:
/plugin marketplace add forrestchang/andrej-karpathy-skills - 安裝插件:
/plugin install andrej-karpathy-skills@karpathy-skills
- 在 Claude Code 中,先新增 marketplace:
2. 或者,使用 CLAUDE.md (針對每個專案)
- 步驟:
- 建立 CLAUDE.md 檔案。
- 將指南內容複製到 CLAUDE.md 檔案中。
- 在 Claude Code 中,將 CLAUDE.md 作為提示輸入。
3. 使用 Cursor (整合至你的程式碼編輯器)
- 步驟:
- 這個儲存庫已經包含了 Cursor 專案規則 (
.cursor/rules/karpathy-guidelines.mdc)。 - 按照說明設定,以便在 Cursor 中使用這些指南。
- 這個儲存庫已經包含了 Cursor 專案規則 (
如何知道這套指南是否有效?
你會看到以下幾點變化:
- 減少不必要的修改:AI 只會修改你要求的內容。
- 程式碼更簡潔:程式碼在一開始就會寫得很簡單,避免了過度設計。
- 在實作前會提出澄清問題:AI 在編寫程式碼之前,會先向你提問。
- 程式碼提交更乾淨:沒有不必要的重構或「改善」。
自定義你的指南
這套指南可以與你專案特定的指令結合使用。你可以在 CLAUDE.md 中加入更多內容,例如:
## 專案特定指南
- 使用 TypeScript strict mode
- 所有 API 終點都要有測試
- 依照 `src/utils/errors.ts` 中現有的錯誤處理模式
額外提醒:平衡速度與品質
這套指南傾向於「謹慎優先」。對於簡單的任務 (例如拼寫錯誤修正),可以根據情況判斷,不需要完全遵循所有原則。
目的是減少在非簡單任務上的錯誤,而不是減慢簡單任務的速度。
我的實作心得
我個人在使用這套指南時,發現它真的能幫助我更好地引導AI。以下是我的一些心得:
- 提問的重要性:在寫程式碼之前,花時間提問,搞清楚需求,可以大大減少後續的錯誤和修改。
- 成功標準:明確定義程式碼成功的標準,讓AI有明確的目標,可以更快地完成任務。
- 持續改進:這套指南是一個持續改進的過程。你可以根據自己的經驗和需求,不斷地調整和優化你的指南。
錯誤排除指南
- AI 還是過度複雜? 檢查你的指令是否過於寬鬆,或是成功標準不夠明確。
- AI 修改了不相干的程式碼? 檢查你的指令是否過於籠統,或是在
CLAUDE.md中加入了不必要的規則。 - AI 無法完成任務? 嘗試將任務分解成更小的步驟,並為每個步驟設定明確的成功標準。
結論
Karpathy-Inspired Claude Code Guidelines 是一套非常有價值的工具,能幫助你更好地與AI合作,寫出更清晰、更容易維護的程式碼。雖然這套指南需要花一些時間來學習和適應,但它絕對值得你的投入。 讓我們一起用AI寫出更棒的程式碼吧!
參考資料
參考閱讀
https://github.com/multica-ai/andrej-karpathy-skills