安裝與使用

把四原則裝進你的專案,讓 Agent 照著走
兩種裝法:AGENTS.md(按專案)或作為 Skill;二選一,不要兩套都裝

這是什麼

這是一份 AGENTS.md 行為指南,源自 Andrej Karpathy 的觀察,用四個原則直接針對 LLM 最常見的編碼陷阱:錯誤假設、過度複雜、無關編輯、缺少可驗證的成功標準。

教學解說:為什麼需要「行為指南」?

LLM 的能力很強,但它有系統性的偏誤:傾向執行而非釐清、傾向複雜而非簡單、傾向改進而非配合、傾向模糊而非具體。這些偏誤不是「bug」,而是訓練過程的自然結果。

這份指南的作用是在 LLM 的推理過程中加入「檢查點」——讓它在動手之前先停下來,確認假設、簡化方案、配合風格、定義成功標準。就像資深工程師的 code review 清單,但是在寫程式碼之前就套用。

安裝後的效果: AI 會在收到需求時先列出假設、用更簡潔的方式實作、配合現有的程式碼風格、為每個步驟定義可驗證的目標。

方法一:AGENTS.md(按專案)

新專案:直接下載

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

方法二:作為 Skill 安裝

本 repo 附帶 skills/karpathy-guidelines/,把同一套指南封裝成 agent 技能(OpenCode / Claude Code / Codex 等支援 skills 的 harness 可直接套用)。指令、路徑、技能名稱照上游原樣,安裝行為不受翻譯影響。

客製化:專案特定規則

這些指南設計成可與專案特定指令合併。在 AGENTS.md 加入你自己的規則:

## 專案特定指南

- 使用 TypeScript 嚴格模式
- 所有 API 端點必須有測試
- 遵循 src/utils/errors.ts 中既有的錯誤處理模式

權衡說明

這些指南傾向於謹慎重於速度。對於瑣碎的任務(簡單的拼寫錯誤修復、顯而易見的一行修改),請自行判斷——並非每個改動都需要完整的嚴謹流程。目標是減少非瑣碎工作中代價高昂的錯誤,而不是拖慢簡單任務。

如何判斷它在起作用

Worked Example:安裝前後對照
同一個需求,安裝指南前後的 AI 輸出差異
安裝前(❌ 典型 AI 輸出)
# 使用者需求:「加入使用者偏好設定儲存功能」
# 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)
    )
關鍵差異
  • 之前:200+ 行,包含沒人要求的功能
  • 之後:6 行,只做被要求的事
  • 核心改變:從「解決所有可能的需求」變成「解決今日的問題」
常見錯誤:安裝後仍可能出現的反模式
  • 忽略指南:複雜任務中,AI 可能忘記套用指南(尤其在長對話中)
  • 過度自信:AI 認為「這次不一樣」,跳過檢查步驟
  • 瑣碎任務過度謹慎:簡單的拼字修正也跑完整流程
  • 指南疲勞:多次互動後,AI 逐漸放鬆標準
安裝後的檢核清單
  • 首次測試:用一個簡單需求測試 AI 是否先列出假設
  • diff 檢查:AI 的 diff 是否只有必要的改動?
  • 複雜度檢查:AI 的實作是否比你預期的更簡潔?
  • 風格檢查:AI 是否配合了你專案的現有風格?
  • 目標檢查:AI 是否為每個步驟定義了可驗證的標準?
  • 定期回顧:每月檢查一次,指南是否仍然在起作用

核心洞察

「LLM 非常擅長反覆執行直到達成特定目標⋯⋯不要告訴它該做什麼,給它成功標準,然後看著它完成。」——目標驅動執行原則正是捕捉了這一點。

相關連結

進階單元 · Round 1 Deepening
進階 Worked Example:團隊導入 AGENTS.md 的 30 天落地流程
「把指南貼進 repo」只是開始。真正難的是讓它持續生效、並能測量它是否在運作。
第 1 週 · 安裝與基準線(原則 4 從這裡開始)
1. 把 AGENTS.md 放進所有 agent 會讀的位置
   驗證:agent 在新 session 第一次回應前會載入它
2. 記錄「安裝前」的基線數據:
   - 平均 PR 行數 / PR 數
   - 因「改錯方向」而打回重做的次數
   - 「順帶改動」的 PR 比例
   → 這些數字是 30 天後判斷「是否在運作」的對照組。
第 2 週 · 第一次壓力測試(用一個真實小需求)
1. 丟一個「有歧義」的需求給 agent(例如「讓搜尋更快」)
   驗證:agent 是否先列假設、呈現權衡,而不是直接寫 200 行
2. 檢查 PR:diff 是否只有必要行?有沒有順帶改動?
   驗證:用「每一行可追溯」的標準過一遍
3. 找一個違反的案例,複製下來當教材
   → 有違反案例比全數通過更有價值:它是「反模式樣本」。
第 3-4 週 · 校正與回饋迴圈
1. 每週回顧 3 份 PR,用四原則打分(1-4 分)
   驗證:分數趨勢是否上升、是否有某個原則特別弱
2. 把「專案特定規則」加進 AGENTS.md 後段
   驗證:agent 是否遵守專案規則(例如「所有端點要有測試」)
3. 第 30 天:對照第 1 週的基線數據
   驗證:PR 行數下降?重做次數下降?順帶改動比例下降?
   → 數字說話:如果沒變,回診斷表找原因。
為什麼要「測量」而不是「感覺」
  • 因為行為指南的失敗是漸進的:指南疲勞(guideline fatigue)不會一夜發生,而是每次放鬆一點點。沒有基線數字,你就察覺不到漂移。
  • 因為「有裝」不等於「在運作」:指令被載入 ≠ 指令被遵守。壓力測試是唯一能證明「它在起作用」的方法。
  • 因為回饋迴圈要雙向:不只有 agent 在學,你的 AGENTS.md 也要學——哪個原則最常被違反,就在檔裡加重它的篇幅。
深入原理:為什麼一份文字檔案能改變模型的行為?

這份指南不是「魔法」,它作用在模型的幾個真實機制上:

  • 指令層級優先(Instruction hierarchy):系統提示、專案檔、使用者指令,是模型在每一輪生成前都重新「看見」的上下文。把行為規則放在 AGENTS.md,等於在每輪推理的起點植入一份常駐檢查清單——它比對話中某一句話更有機會被遵守,因為它每次都重新出現。
  • 前置上下文優勢(Primacy effect):模型對上下文開頭的內容記得住。AGENTS.md 放在專案根目錄、被合併進上下文的較前段,就是利用這個位置優勢——四原則必須在需求湧入之前就先被讀到。
  • 可執行的檢驗標準(Operational criteria):指南裡的「為 X 寫測試 → 讓它通過」不是形容詞,是可執行的指令序列。模型本質上是把指令翻譯成動作,具體的動作比抽象的態度(「要謹慎」)更可能被精確執行。
  • 權衡條款的防漂移作用:檔裡的「瑣碎任務自行判斷」不是漏洞,是刻意的釋壓閥——它防止指南在低風險任務上被「過度執行」而讓 agent 學會整體忽略它。好的行為指南知道自己的適用範圍。
案例:大家以為遵守原則,其實違反了

團隊「安裝」了指南,卻把 AGENTS.md 放在一個 agent 不讀的目錄,或要求「先載入它」但每次都在長對話中把它擠出上下文。於是 agent 表現得像沒裝一樣,團隊結論是「這指南沒用」。真正違反的是安裝的驗證:安裝指南本身也要符合原則 4——「安裝」的成功標準不是「檔案存在」,而是「agent 每輪推理都讀得到它、並在第一個壓力測試中表現出被引導」。裝完不測,等於沒裝。

診斷式疑難排解:「指南好像沒在運作」的症狀
症狀可能原因解決方案
agent 在長對話後完全忽略指南上下文崩潰——指南被後續內容擠出有效窗口把關鍵規則放在檔頭;長任務中定期重述需求與原則
簡單任務被過度謹慎拖慢指南被「過度執行」,agent 變成什麼都問善用指南內的「瑣碎任務自行判斷」釋壓閥,定義何謂瑣碎
前兩週有效、之後逐漸失效指南疲勞——對常駐內容的注意力衰減加入月檢:用基線數字校準;或輪換措辭讓規則重新被注意到
只有特定原則被遵守、其他被忽略指南篇幅不均——弱的原則篇幅太少用「違反頻率」重新分配篇幅,把最常被違反的放在最前面
agent 說「我遵守了」但 diff 證明沒有形式主義——模型在表演遵守不看宣言,只看證據:要求每個變更附上「對應需求」的標註
進階挑戰題
  1. 設計基線:為你的專案設計一份「指南是否在運作」的測量方案:列出 3 個可量測的指標、測量方法、以及「判斷失敗」的門檻值。
    提示:平均 PR 行數、重做率、順帶改動比例——想想哪個指標最容易造假、哪個最誠實。
  2. 寫一段「反引導」:有人主張「AGENTS.md 只要寫『請遵守最佳實務』就好」。寫一段反駁:為什麼模糊的「最佳實務」會失效?用「可執行的檢驗標準」機制解釋。
    提示:回想「驗證:功能正常」的案例——抽象指示無法被執行,就無法被檢查。
  3. 為你的團隊客製化:在你的 AGENTS.md 結尾,用同樣的格式加上 3 條「專案特定規則」,其中至少一條是「可以被驗證的」(例如:所有 API 端點必須有測試)。寫出它們。
    提示:參考 install.html 的客製化範例——好的專案規則要具體到「能檢查」。