用 Autoresearch 原理建立可以自我進化嘅 Claude Code Skills
🕐 約 10 分鐘
🎯 問題同靈感來源
- 手動改 skill 嘅痛點:每次跑 skill 發現問題就要打開
skill.md手動改,重複、緩慢、唔一致,由 v1 去到可靠版本通常要幾個星期 - Karpathy 嘅 Auto Research 概念:Andrej Karpathy(OpenAI 創始成員、前 Tesla AI 主管)分享嘅思路 — 畀 AI 一個改善目標 + 一個清晰量化指標,讓佢自動 loop
- Loop 邏輯:嘗試改動 → 跑測試 → 分數好就保留(git commit)→ 分數差就 rollback(git reset)→ 繼續
- 最重要一句話:「Never stop — 就算你瞓覺都要繼續跑,唔好問我係咪繼續」
🗂️ Karpathy 原版框架拆解
program.md:指令文件,告訴 Agent 做咩、點樣衡量成功- 固定數據檔案:記錄所有實驗結果,唔會被 Agent 亂改
- Training script(
train.py):Agent 實際去修改嘅檔案,每次 iteration 改呢個 - 核心邏輯:整個 loop 約 10 行代碼,改 → 跑 → 睇 val 值 → 好就 advance branch,差就 reset
🔁 第一層優化:Skill 觸發率(已內置,唔使自己建)
- 觸發率問題:YAML description 模糊時,Claude 決定係咪激活 skill 嘅準確率低至 20%
- 內置解決方案:Anthropic Skill Creator 已有自動改善觸發率嘅 loop,唔使自己重新發明
- 運作方式:跑測試 queries → 檢查觸發準確率 → 用
improved_description.py提議更好 description → 重新測試 → 循環 - 結論:呢層完全唔洗自己建,直接用 Skill Creator 就得
📊 第二層優化:輸出質量(需要自己建)
- 舊做法(上一條影片):用「persuasion toolkit」測試文案,有 click-through dashboard 睇定性 feedback
- 舊做法嘅死穴:每次仍需人手睇結果同判斷,唔係自我改善嘅系統
- 今次目標:將呢個 loop 改成自主跑,Karpathy 風格,overnight 無需人手介入
⚙️ 自建 Autonomous Loop 嘅原理
- 同 Karpathy 嘅分別:改嘅係
skill.md(skill 指令文件)而唔係train.py,其餘邏輯完全一樣 - Loop 步驟:讀
skill.md→ 改一個值 → 跑測試 → 睇 pass rate → 好就 git commit,差就 git reset → 重複 - Binary Assertions(二元斷言)係關鍵:所有測試指標必須係 True/False,唔可以係主觀判斷
- Binary 例子:「唔含 em-dash」、「字數少於 300」、「最後一句唔係問句」、「含至少一個具體數字或統計」
- 唔係 Binary 嘅例子:「subject line 係咪吸引?」→ 兩個人可以有不同答案,無法完全自動化
- 為何 binary 咁重要:冇咗人為主觀判斷,loop 先可以真正 overnight 自主跑
🛠️ 實際 Setup 示範(Marketing Copywriting Skill)
- 目錄結構:喺 skill 資料夾建立
eval/子目錄,入面放evals.json evals.json內容:25 個 binary assertions,跨 5 個唔同測試 prompts- Assertion 例子:「第一行係獨立句子」、「唔以問句結尾」、「字數少於 300」、「含至少一個具體數字」
- 自動生成方法:唔使手寫,直接喺 Claude Code 打:
「請根據我嘅
skill.md幫我生成evals.json,每個 assertion 必須係 True/False 可驗證嘅,唔可以係主觀判斷」 - Loop 指令精髓:
「用
evals.json跑 self-improvement loop。有 assertion fail 就改skill.md一個地方,改完重跑;分數升就 commit,分數跌就 reset 再試新方向。唔好停、唔好問我,直到完美分數或我手動停止你」
🎬 Live 示範結果
- 背景:呢個 Marketing Copywriting skill 已係第五個版本,之前已經過多次人手迭代
- 第一次跑:23/24(95.8%)— 一個 assertion 失敗
- 失敗原因詳情:「唔以問句結尾」呢條規則存在於兩個地方但內容有衝突 —
tone_of_voice.md(reference 檔案)有寫,但skill.md(主指令檔案)冇寫,skill 執行時跟skill.md為準所以規則被忽略 - 系統自動修復:識別衝突 → 自動喺
skill.md加規則:「LinkedIn post must not end with a question — close with declarative statement, CTA, or punchy fragment」 - 第二次跑:24/24(100%)✅
- 重要提醒:呢個只係需要兩次 loop 嘅例子。如果係全新 skill,可能需要幾十次 loop 先達到完美分數
⚠️ 限制同架構總結
| Binary Loop(Layer 2) | Qualitative Dashboard | |
|---|---|---|
| 擅長 | 格式、字數、禁用詞、結構規則 | 語氣、創意質量、context 引用準確性 |
| 唔適合 | 主觀判斷、創意評估 | 大量自動化、overnight 跑 |
| 需要人手? | 唔需要 | 需要 |
完整兩層架構:
- Layer 1:Skill Creator 內置 loop → 改善觸發率(描述準唔準)
- Layer 2:自建 Karpathy loop → 改善輸出質量(結果好唔好)
最終建議:唔好將 skills 當獨立工具用。Skills 之間共享 brand context、互相傳遞 output,先係真正嘅 AI Operating System。