如何撰寫好的 program.md:AI 代理指令實踐指南
Andrej Karpathy 的 autoresearch 證明了一個寫得好的 Markdown 檔案可以指導 AI 代理在一夜間做出真正的科學發現。但並非所有 program.md 檔案都是平等的。
你的 Markdown 指令品質直接決定 AI 代理輸出的品質。模糊的 program.md 產生隨機、無方向的實驗。精確的指令則產生有重點的、複合改進的結果。
以下是如何撰寫一個真正有效的 program.md。
好的 program.md 結構
每個有效的 program.md 都需要五個部分,無論你是在做 ML 研究還是任何其他代理導向的工作。
1. 上下文:代理需要知道什麼?
代理從零開始,對你的專案毫無了解。你的第一項工作是給它足夠的上下文來做出明智的決策。
應包含的內容:
- 專案做什麼
- 程式碼庫的樣子
- 關鍵檔案及其用途
- 特定領域的術語
- 當前狀態和已知問題
應跳過的內容:
- LLM 已經知道的顯而易見的資訊
- 它可以從程式碼中讀取的實作細節
- 不影響當前決策的歷史
2. 目標:代理應該優化什麼?
這是最關鍵的部分。代理需要一個清晰、可測量的目標。
在 autoresearch 中,目標很簡單:減少 val_bpb(驗證每位元組位元數)。代理可以在每次 5 分鐘的訓練執行後測量這個值。
對於你自己的專案,用代理可以評估的術語定義成功:
- 「將頁面載入時間減少到 2 秒以下」
- 「將測試覆蓋率提高到 80% 以上」
- 「將打包大小減少至少 15%」
「讓程式碼變得更好」這樣模糊的目標會產生模糊的結果。可測量的目標會產生有重點的改進。
3. 約束:代理永遠不應該做什麼?
約束和目標同樣重要。沒有約束,代理可能會找到你不想要的創造性解決方案——比如刪除所有測試來「改進」建構速度。
常見約束:
- 不修改測試檔案或評估程式碼
- 不改變公共 API
- 不引入新相依項
- 不超過記憶體預算
- 保持程式碼可讀和可維護
在 autoresearch 中,關鍵約束是只能修改 train.py。資料管道、評估程式碼和測試集是鎖定的。這防止代理對指標做手腳。
4. 策略:代理應該如何處理問題?
這是你的領域專業知識發光的地方。你知道代理不知道的事情——哪些方向有前途,哪些是死胡同。
好的策略指令:
- 「在架構改變之前先調整超參數」
- 「專注於注意力機制——當前實作可能不夠最優」
- 「先嘗試正則化技術:dropout、權重衰減、層歸一化」
- 「避免將訓練時間增加超過 10% 的改變」
糟糕的策略指令:
- 「嘗試一切」(太模糊)
- 「將學習率改為 0.001」(太具體——你在微管理)
甜蜜點是給代理在富有成效的邊界內探索的方向性指導。
5. 評估:代理如何判斷成功?
代理需要知道如何測量其改變是否有所幫助。在 autoresearch 中,這內建於迴圈中:如果 val_bpb 改進了,就保留改變;如果沒有,就回退。
對於其他情境,定義你的評估標準:
- 哪些指標重要?
- 什麼閾值算作改進?
- 代理應該如何處理模糊的結果?
- 代理什麼時候應該停下來並回報?
常見錯誤
過於模糊
「讓模型變得更好」沒有給代理任何方向。要具體說明「更好」意味著什麼,如何衡量它,以及先嘗試哪些方法。
過於具體
「將第 47 行改為使用學習率 3e-4」違背了 agentic 工程的目的。你應該設定方向,而不是規定實作細節。讓代理去探索。
忘記約束
沒有約束,代理會找阻力最小的路徑——這往往不是你想要的。被告知「減少訓練時間」的代理可能會跳過一半的訓練資料,如果你沒有另外說明的話。
不迭代
你的第一個 program.md 不會是完美的。觀察代理的行為,看看它哪裡出錯,並更新你的指令。最好的 program.md 檔案經過數十次迭代演化而來。
迭代迴圈
撰寫 program.md 不是一次性的過程,而是一個迴圈:
- 撰寫初始
program.md - 執行代理
- 審查代理所做的事情
- 更新指令,基於什麼有效、什麼沒有
- 重複
每次迭代都使你的指令更加精確。經過幾輪之後,你將擁有一個能持續產生好結果的 program.md。
這是 agentic 工程的核心技能:不是寫程式碼,而是透過迭代撰寫越來越有效的代理指令。
建構你的參考庫
最好的 program.md 檔案不是憑空而來的。它們建立在對領域的深刻了解之上——文件、論文、最佳實踐和範例。
當你在網路上遇到有用的參考材料時,將其儲存為 Markdown。然後在撰寫 program.md 時,你可以引入相關上下文,引用特定技術,並給代理提供所需的背景知識。
從 autoresearch 中獲得最佳結果的研究人員不只是優秀的寫手。他們是擁有良好組織參考材料的領域專家,能夠將其綜合成清晰的代理指令。
Save 將任何網頁轉換為乾淨的 Markdown——完美適合建構驅動有效 program.md 檔案的參考庫。免費試用 Save。