別再手寫 Skill 了!微軟最新研究:像訓練神經網路一樣訓練 Skill

這篇微軟最新的研究論文,可能會改變你撰寫 Skill 文件的方式。

相信你已經在寫各種給 AI 代理用的 Skill 和指令文件了,像是 CLAUDE.md、best_skill.md、agent instructions……

手寫 Skill 文件的日常

你可能跟我一樣,會花上一、兩個小時,甚至半天的時間,精心打磨一份指令,希望 AI 代理能因此變得更聰明。

但微軟這篇論文的結論,有點扎心:你手寫的那份,很大機率不是最棒的。

微軟的研究團隊提出了一個叫做 SkillOpt 的方法,其核心概念是:

把 Skill 文件當成神經網路的「權重」,用類似訓練神經網路的方式去自動優化它。

SkillOpt 架構概覽

結果,這個方法在 52 個測試組合中,全部取得最佳或並列最佳,平均提升了 23.5 分,徹底輾壓了人類手寫的 Skill。

關於 Skill

Claude Code、Codex、Cursor 這些工具,都已經支援讓使用者寫一份「指令文件」來引導 AI 代理的行為。不管是 Claude Code 的 CLAUDE.md,或是 Codex 裡的 Agents.md,還是各式各樣的 Skill 文件,它們的共通點都是:

一段純文字指令,告訴 AI 代理在遇到某些情況時該怎麼做。

舉例來說,你寫了一句「遇到 Excel 公式時,先檢查工作表結構,再寫入靜態值,而非依賴 Excel 自動重算」,AI 代理在處理 SpreadsheetBench 這類任務時就會照著做。

這乍看之下很理所當然,好像沒什麼問題。

但關鍵在於,你怎麼知道自己寫的那幾條規則就是最好的呢?

你憑經驗寫了 5 條規則,可能漏掉了 3 條關鍵的,還有 2 條寫得不夠精確。更麻煩的是……你根本不知道自己漏了什麼,因為你不可能窮舉所有可能的寫法。

你很難在靈活性和指導性之間,找到那個完美的平衡點。

撰寫 Skill 的困境

SkillOpt 的出發點就是:既然人寫不好,那就讓 AI 自己來優化自己的說明書。

訓練迴圈

SkillOpt 的核心概念,用一句話來概括就是:

Skill 文件是 AI 代理唯一可變的外部狀態,那就把它當作「權重」來訓練。

AI 代理的模型參數是凍結的,不能動,但 Skill 文件是純文字,可以隨意修改。既然如此,為什麼不能像訓練神經網路一樣,用一套完整的優化流程來迭代優化這份文件呢?

一旦開始這麼想,整個方法論其實就水到渠成了。

SkillOpt 訓練流程

我們先來看看深度學習中的各種概念,是怎麼對應到這裡的文字空間的。

訓練神經網路時,你需要把資料送進去做前向傳播(forward pass),對應在 SkillOpt 中的操作叫做 展開(rollout):讓 AI 代理帶著當前的 Skill 文件去做一批任務,收集完成情況。

前向傳播之後要計算梯度(gradient),SkillOpt 中的對應操作叫做 反思(reflection):用一個優化器模型去分析哪些任務失敗了、為什麼失敗,並提煉出改進方向。

有了梯度就要更新權重(weight update),對應 SkillOpt 中的操作是 編輯(edit):對 Skill 文件進行新增、刪除、取代這三種結構化編輯。

訓練時還有學習率(learning rate)來控制步長,SkillOpt 也有一個 文字學習率(textual learning rate):每輪最多只允許修改 L_t 條規則(預設為 4 條),還會有類似 cosine decay 的衰減機制。

最後,訓練時會用驗證集進行檢查點(checkpoint)來儲存最佳模型,SkillOpt 同樣有 驗證閘控(validation gating):改完之後要在驗證集上跑一遍,如果分數沒有提升,那就不能接受這次的修改。

深度學習概念與 SkillOpt 的對應

整套流程跑下來,其實就是把深度學習的訓練迴圈,一比一翻譯成了文字編輯的迴圈。

兩個模型分工合作

在 SkillOpt 中,使用了兩個模型。

一個叫做 目標模型(target model),就是你平常在用來執行任務的那個 AI 代理,像是 GPT-5.5 或 Claude。它負責帶著 Skill 文件去執行任務,模型本身是凍結、不會更動的。

另一個叫做 優化器模型(optimizer model),它是另一個能力超強的前沿模型,負責分析目標模型的表現,然後提出修改建議。

打個比方,目標模型就像是工廠裡的操作員,優化器模型則像是站在旁邊觀察的管理顧問。操作員照著操作手冊幹活,顧問則觀察操作員哪裡做得不好,然後負責修改手冊。

工人與顧問的比喻

這個分工模式帶來一個好處:優化器模型的成本只有在訓練階段才會產生,實際部署時完全不需要它。

論文也測試了使用同等級模型作為優化器的效果(例如用 GPT-5.4 來優化 GPT-5.4 自己的 Skill)。

結果顯示,同等級的優化器也能運作,大約能達到強優化器 56% 至 74% 的增益效果。但如果使用更強的優化器,效果顯然會更好,因為它能看見目標模型自己看不到的問題。

克制的學問

在這裡有一個設計巧思:SkillOpt 每輪最多只修改 4 條規則。

你可能直覺會想:既然都讓 AI 來優化了,為什麼不讓它一次性地把整份文件重寫呢?

研究團隊還真的試過了……結論是:不做限制反而更差。

無限制重寫(unbounded)的效果,比設定 L_t=4 還要低上 2 到 3 分。

原因很好理解,這就跟訓練神經網路時,如果學習率太大會導致震盪一樣。一次修改太多東西,好的改動和壞的改動會混在一起,驗證集無法準確判斷哪些是有用的。

克制與激進策略的比較

還有另一個設計叫做 被拒編輯緩衝區(rejected-edit buffer)

那些被驗證集否決掉的修改並不會直接丟掉,它們會被儲存在一個緩衝區裡。後續的反思(reflection)階段會看到這些「前車之鑑」,以避免重複犯下相同的錯誤。

這就像是訓練時的負面回饋(negative feedback),讓整個優化過程擁有記憶。

另一個關鍵機制叫做 慢速/元更新(slow/meta update),類似於深度學習中的動量(momentum)。

每個 epoch 結束時,優化器會回顧這個 epoch 和上一個 epoch 的 Skill 文件,進行一次跨 epoch 的縱向更新。這種慢速更新的內容會受到保護,步驟層級的編輯不能覆蓋它。

消融實驗顯示,拿掉慢速/元更新機制,會導致 SpreadsheetBench 的分數從 77.5 暴跌到 55.0,足足掉了 22.5 分之多。

各元件的消融實驗結果

克制,有時候比激進更有效。

效果生猛

講了這麼多設計理念,效果到底怎麼樣呢?

一個字:非常生猛。

研究團隊在 6 個基準測試上進行了實驗,涵蓋了單輪問答、多輪程式碼生成、文件操作、多模態文件理解、數學推理,以及具身環境互動。

相較於直接跟 GPT-5.5 對話的結果:

SearchQA:77.7 → 87.3,提升 +9.6

SpreadsheetBench:41.8 → 80.7,提升 +39.0

OfficeQA:33.1 → 72.1,提升 +39.0

DocVQA:78.8 → 91.2,提升 +12.4

LiveMath:37.6 → 66.9,提升 +29.3

ALFWorld:83.6 → 95.5,提升 +11.9

平均提升分數:+23.5

訓練過程中分數的變化曲線

SpreadsheetBench 和 OfficeQA 各自漲了 39 分……這可以說,遠遠不只是小打小鬧的微調了,幾乎是從「不太能用」到「相當能打」的質變。

而且不光是在直接對話的情境下有效,在 Codex 執行環境中平均提升了 +24.8 分,在 Claude Code 執行環境中則平均提升了 +19.1 分。

全部模型與執行環境的完整結果

總共 52 個測試組合,全部取得最佳或並列最佳。沒有一個是輸的。

輾壓人類手寫

你可能想問:那跟人類手寫的 Skill 相比呢?

研究團隊特別做了對照實驗。

SkillOpt 與所有基線方法的比較

他們把人類精心編寫的 Skill 文件(約 145-516 個 token)作為基線。SkillOpt 在 GPT-5.5 直接對話情境下的平均分數是 82.3,而包含人類手寫 Skill 在內,其他所有方法中「針對每個基準測試挑出表現最佳者」所組合出來的平均分數,也只有 76.9。

這也就是說,即使你針對每個基準測試,都挑選表現最好的那個基線方法來組合,其平均分數依然比不過 SkillOpt。

被拿來比較的方法包括:單次 LLM 生成的 Skill、Trace2Skill(從軌跡中蒸餾)、TextGrad(梯度風格優化)、GEPA(帕雷托反射演化)、EvoSkill(技能資料夾演化)。

所有方法被輾壓的示意圖

全部,都被輾壓。

AI 學到了什麼

那麼,被優化出來的 Skill 文件長什麼樣子呢?

論文裡展示了幾條學到的規則。看完之後,你會覺得這些規則人類確實很難憑空想到,但一旦看到了,又會覺得「確實應該這麼寫」。

SearchQA

學到的規則:「根據線索的措辭來推斷預期答案的類型,然後從共現的獨特證據中,選擇最短的規範實體。」

背後的邏輯:這告訴 AI 代理不要給出冗長的答案,要精準定位到最短的、符合標準命名規範的實體。

SpreadsheetBench

學到的規則:「先檢查工作簿的結構和公式,然後在整個請求的目標範圍內,寫入已計算的靜態值,而非依賴 Excel 自動重算。」

背後的邏輯:這抓住了一個關鍵的錯誤模式。不少 AI 代理會寫入 Excel 公式,然後期望它能自動計算出結果,但在自動化環境中……這往往行不通。

ALFWorld

學到的規則:「維護一個具備地平線感知的已造訪/前沿位置清單,在連續遭遇相同類型的失敗後切換搜尋方向,並在拿到目標物品前,避免重返目的地。」

背後的邏輯:這教會了 AI 代理在虛擬環境中進行空間記憶管理,防止它一直在同一個地方打轉。

這些規則有幾個共同特點:

極度具體: 沒有「仔細檢查」、「認真思考」這類你的老闆愛講的空話,每一條都精確到操作層面。

反直覺: 它所涉及的場景,是人類在寫 Skill 時壓根不會想到的。

緊湊: 最終的 Skill 檔案只有 379 到 1995 個 token,中位數大約是 920 個 token。有些基準測試甚至只需要一條被採納的修改,就讓分數飆升了 39 分。

AI 自己撰寫的規則範例

演化過程

光看最終的規則,你可能感受還不深。

因此,論文裡還展示了 Skill 文件的完整演化過程,你可以看到一份空白的 Skill 是怎麼一步步長成最終版本的。

ALFWorld 來舉個例子:

初始狀態:一份泛泛的指令,像是搜尋、變換、放置,類似於「找到東西、處理一下、放到指定位置」。

第一輪展開(Rollout):發現 AI 代理常常找不到目標物品,在同一個房間裡反覆搜尋。於是加了規則:記住你去過哪些地方,別重複訪問。

繼續迭代:發現 AI 代理拿到東西後,在路途上把它弄丟了。於是加了規則:拿到物品後鎖定進度,不要做多餘的操作。

深度優化:加入循環檢測器、物件名稱精確匹配等規則。

最終成果:分數從 49.3 提升到 74.6(+25.3),從幾乎不能用,進化到相當能打。

SpreadsheetBench 的演化過程也很類似。最初的 Skill 只是一個通用的自動化指令。經過幾輪優化後,AI 代理學會了先檢查工作簿的表頭(header)和範圍(range)、進行索引鍵(key)正規化處理、用靜態值取代對公式的依賴、保留輔助計算欄位等一系列細緻的操作。

最終效果:分數從 40.4 漲到 78.9,大幅提升了 38.5 分。

這些演化過程都顯示出一件事:好的 Skill 文件,不是一個人坐在那裡憑空想出來的,它應該是從實踐中跑出來的

Skill 文件的生長過程

跨模型跨環境

SkillOpt 還有一個很棒的特性:優化出來的 Skill 文件,可以跨模型、跨執行環境進行遷移。

跨模型遷移: 將為 GPT-5.4 優化的 Skill 用在 GPT-5.4-mini 上(於 SpreadsheetBench 測試),分數提升了 +9.4。

跨執行環境遷移: 將在 Codex 環境優化的 Skill 用到 Claude Code 上(於 SpreadsheetBench 測試),分數提升了 +59.7。

跨任務遷移: 將從 OlympiadBench 優化來的 Skill 用到 Omni-MATH 上(使用 GPT-5.4),分數提升了 +3.7。

這也就是說,你用某個模型優化出來的 Skill,換個模型、換個工具……甚至換個相關的任務,很大概率還是有效的。

一份 Skill 到處都能用

訓練成本是一次性付出的(在離線狀態下完成),而部署時的額外開銷為零。優化後的 Skill 文件就是一段純文字,拿過來就可以直接使用。

訓練成本

那麼,這個優化過程要花多少錢呢?

論文提供的數據是:對於流程類的基準測試(如 SearchQA、DocVQA),每提升一個絕對測試分數,大約需要 60 萬到 360 萬個訓練 token。對於複雜軌跡類的基準測試(如 SpreadsheetBench、ALFWorld),則需要 3790 萬到 4640 萬個 token。

這筆錢其實並不算貴(甚至可以說很便宜了),而且關鍵在於:這只需要訓練一次。

訓練好的 Skill 文件,在每次使用時都不會產生額外的成本。如果你的 AI 代理要執行成千上萬次任務,這一點點訓練成本早就攤平了,但它所帶來的巨大提升,顯然是極其值得的。

這就好比,花一筆錢請了個頂尖顧問來撰寫操作手冊,之後所有員工只要照著操作手冊幹活就行了。顧問當然是用一次就可以讓他走了……

顧問走了,但手冊留下來了

大小通吃

論文還測試了不同規模模型的表現。

除了 GPT-5.5、GPT-5.4、GPT-5.2 這些前沿的大模型之外,研究團隊也在 GPT-5.4-mini、GPT-5.4-nano、Qwen3.5-4B、Qwen3.6-35B-A3B 這些更小的模型上做了實驗。

結果顯示,所有規模的模型都獲得了一致的提升。

這表示,你不一定非得用最貴的模型才能從 SkillOpt 中獲益。即便是小模型,只要配上優化過的 Skill,其效果也可能比大模型裸跑來得好。

另外一個數據是:訓練資料量對效果的影響。

以 SpreadsheetBench 為例,用 1% 的訓練資料做優化,分數是 47.5。用上 100% 的訓練資料,分數則可以漲到 78.0。

資料越多,Skill 就優化得越好。但即使資料量不大,SkillOpt 依然能帶來可觀的提升。

動手試試看

微軟已經將 SkillOpt 完整開源了(採用 MIT 授權),你可以直接讓它跑起來了。

安裝方式非常簡單:

git clone https://github.com/microsoft/SkillOpt.git
cd SkillOpt
pip install -e .

接著設定好 API 金鑰:

cp .env.example .env
# 填入你的 API 金鑰,然後執行 source
source .env
# Azure OpenAI(推薦)(畢竟是微軟自家產品)
export AZURE_OPENAI_ENDPOINT="https://your-resource.openai.azure.com/"
export AZURE_OPENAI_API_KEY="your-key"
# 或者直接使用 OpenAI
export OPENAI_API_KEY="sk-..."
# 也支援 Anthropic Claude
export ANTHROPIC_API_KEY="sk-ant-..."

然後,只要一行指令就能開始訓練:

python scripts/train.py \
    --config configs/searchqa/default.yaml \
    --split_dir /path/to/your/searchqa_split \
    --optimizer_model gpt-5.5 \
    --target_model gpt-5.5 \
    --num_epochs 4 \
    --batch_size 40

目前支援 6 個基準測試:SearchQA、SpreadsheetBench、OfficeQA、DocVQA、LiveMathematicianBench、ALFWorld。每一個都有對應的配置檔案,放在 configs/ 目錄底下。

訓練完成後,輸出目錄裡會有一個 best_skill.md,這就是最終優化好的 Skill 文件,可以直接拿去用:

outputs/<run_name>/
├── best_skill.md            # 最佳 Skill 文件
├── history.json             # 訓練歷史紀錄
├── skills/skill_vXXXX.md   # 每一步的快照
└── steps/step_XXXX/        # 每一步的修補檔和評估結果

你也可以單獨執行評估(eval):

python scripts/eval_only.py \
  --config configs/searchqa/default.yaml \
  --skill outputs/my_run/best_skill.md \
  --split valid_unseen \
  --split_dir /path/to/searchqa_split

更棒的是,團隊還提供了一個 WebUI 可以即時監控訓練過程:

pip install -e ".[webui]"
python -m skillopt_webui.app --port 7860

整個專案還支援從中斷點接續訓練。如果訓練中斷了,重新執行相同的指令,它就會自動從上次完成的步驟(step)繼續下去。

別再手寫了

微軟這篇論文所傳遞的訊息是:

手寫 Skill 文件或許是一個好的起點,但不應該是終點。

當然,論文也坦承了這個方法的限制:SkillOpt 需要任務具備可自動評估的標準(例如完全匹配或自動評分機制),對於開放性任務,目前暫時還不太適用。

別再手寫了

總結一下,SkillOpt 的核心迴圈是:

讓 AI 代理執行任務 → 分析失敗原因 → 生成修改建議 → 在驗證集上驗證 → 接受或拒絕。這個流程你完全可以手動模仿:觀察 AI 代理在哪些任務上犯錯,分析錯誤模式,針對性地補充規則,然後驗證效果。

Skill 文件不應該是一次性寫完就放著不管的東西,它應該像模型的權重一樣,持續地被優化。

相關連結

論文:https://arxiv.org/abs/2605.23904

專案主頁:https://microsoft.github.io/SkillOpt/

GitHub 程式碼:https://github.com/microsoft/SkillOpt

展示影片:https://youtu.be/JUBMDTCiM0M

相關專案 SkillLens:https://microsoft.github.io/SkillLens/

相關文章推薦

分享網址
AINews·AI 新聞聚合平台
© 2026 AINews. All rights reserved.