這是一份 AGENTS.md 行為指南,源自 Andrej Karpathy 的觀察,用四個原則直接針對 LLM 最常見的編碼陷阱:錯誤假設、過度複雜、無關編輯、缺少可驗證的成功標準。
LLM 的能力很強,但它有系統性的偏誤:傾向執行而非釐清、傾向複雜而非簡單、傾向改進而非配合、傾向模糊而非具體。這些偏誤不是「bug」,而是訓練過程的自然結果。
這份指南的作用是在 LLM 的推理過程中加入「檢查點」——讓它在動手之前先停下來,確認假設、簡化方案、配合風格、定義成功標準。就像資深工程師的 code review 清單,但是在寫程式碼之前就套用。
安裝後的效果: AI 會在收到需求時先列出假設、用更簡潔的方式實作、配合現有的程式碼風格、為每個步驟定義可驗證的目標。
新專案:直接下載
curl -o AGENTS.md https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/AGENTS.md
既有專案(追加到既有檔尾):
echo "" >> AGENTS.md curl https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/AGENTS.md >> AGENTS.md
本 repo 附帶 skills/karpathy-guidelines/,把同一套指南封裝成 agent 技能(OpenCode / Claude Code / Codex 等支援 skills 的 harness 可直接套用)。指令、路徑、技能名稱照上游原樣,安裝行為不受翻譯影響。
這些指南設計成可與專案特定指令合併。在 AGENTS.md 加入你自己的規則:
## 專案特定指南 - 使用 TypeScript 嚴格模式 - 所有 API 端點必須有測試 - 遵循 src/utils/errors.ts 中既有的錯誤處理模式
這些指南傾向於謹慎重於速度。對於瑣碎的任務(簡單的拼寫錯誤修復、顯而易見的一行修改),請自行判斷——並非每個改動都需要完整的嚴謹流程。目標是減少非瑣碎工作中代價高昂的錯誤,而不是拖慢簡單任務。
# 使用者需求:「加入使用者偏好設定儲存功能」
# AI 輸出:
class PreferenceManager:
def __init__(self, db, cache=None, validator=None):
self.db = db
self.cache = cache or InMemoryCache()
self.validator = validator or DefaultValidator()
def save(self, user_id, prefs, merge=True, validate=True, notify=False):
# 200+ 行,包含快取、驗證、合併、通知⋯⋯
# 同樣的需求,AI 先確認假設:
# 1. 需要快取嗎?(目前不需要,之後效能出問題再加)
# 2. 需要驗證嗎?(目前不需要,錯誤資料出現時再加)
# 3. 需要合併嗎?(目前不需要,需求出現時再加)
def save_preferences(db, user_id: int, preferences: dict):
"""Save user preferences to database."""
db.execute(
"UPDATE users SET preferences = ? WHERE id = ?",
(json.dumps(preferences), user_id)
)
「LLM 非常擅長反覆執行直到達成特定目標⋯⋯不要告訴它該做什麼,給它成功標準,然後看著它完成。」——目標驅動執行原則正是捕捉了這一點。
1. 把 AGENTS.md 放進所有 agent 會讀的位置 驗證:agent 在新 session 第一次回應前會載入它 2. 記錄「安裝前」的基線數據: - 平均 PR 行數 / PR 數 - 因「改錯方向」而打回重做的次數 - 「順帶改動」的 PR 比例 → 這些數字是 30 天後判斷「是否在運作」的對照組。
1. 丟一個「有歧義」的需求給 agent(例如「讓搜尋更快」) 驗證:agent 是否先列假設、呈現權衡,而不是直接寫 200 行 2. 檢查 PR:diff 是否只有必要行?有沒有順帶改動? 驗證:用「每一行可追溯」的標準過一遍 3. 找一個違反的案例,複製下來當教材 → 有違反案例比全數通過更有價值:它是「反模式樣本」。
1. 每週回顧 3 份 PR,用四原則打分(1-4 分) 驗證:分數趨勢是否上升、是否有某個原則特別弱 2. 把「專案特定規則」加進 AGENTS.md 後段 驗證:agent 是否遵守專案規則(例如「所有端點要有測試」) 3. 第 30 天:對照第 1 週的基線數據 驗證:PR 行數下降?重做次數下降?順帶改動比例下降? → 數字說話:如果沒變,回診斷表找原因。
這份指南不是「魔法」,它作用在模型的幾個真實機制上:
團隊「安裝」了指南,卻把 AGENTS.md 放在一個 agent 不讀的目錄,或要求「先載入它」但每次都在長對話中把它擠出上下文。於是 agent 表現得像沒裝一樣,團隊結論是「這指南沒用」。真正違反的是安裝的驗證:安裝指南本身也要符合原則 4——「安裝」的成功標準不是「檔案存在」,而是「agent 每輪推理都讀得到它、並在第一個壓力測試中表現出被引導」。裝完不測,等於沒裝。
| 症狀 | 可能原因 | 解決方案 |
|---|---|---|
| agent 在長對話後完全忽略指南 | 上下文崩潰——指南被後續內容擠出有效窗口 | 把關鍵規則放在檔頭;長任務中定期重述需求與原則 |
| 簡單任務被過度謹慎拖慢 | 指南被「過度執行」,agent 變成什麼都問 | 善用指南內的「瑣碎任務自行判斷」釋壓閥,定義何謂瑣碎 |
| 前兩週有效、之後逐漸失效 | 指南疲勞——對常駐內容的注意力衰減 | 加入月檢:用基線數字校準;或輪換措辭讓規則重新被注意到 |
| 只有特定原則被遵守、其他被忽略 | 指南篇幅不均——弱的原則篇幅太少 | 用「違反頻率」重新分配篇幅,把最常被違反的放在最前面 |
| agent 說「我遵守了」但 diff 證明沒有 | 形式主義——模型在表演遵守 | 不看宣言,只看證據:要求每個變更附上「對應需求」的標註 |