# 策展 · X (Twitter) 🔥🔥🔥🔥

> 作者：AVB (@neural_avb) · 平台：X (Twitter) · 日期：2026-05-12

> 原始來源：https://x.com/neural_avb/status/2053873358853591435

## 中文摘要

# Skill Curation for Self-Evolving Agents，清晰解析

Google 最新的論文介紹了 SkillOS，這是一個旨在透過學習管理自身「記憶」（以可重複使用的技能形式存在）來幫助 LLM Agent 進化的框架。

> 也就是說：自動化地經歷 經驗 -> 記憶 -> 技能 的過程。

SkillOS 將技能管理視為作業系統（OS）。

> 它處理檔案，並組織與優化一個持久化的 SkillRepo。這個方法中最有趣的部分在於如何使用一個稱為 Curator（策展人）的可訓練模組來發現技能。（劇透：他們使用了 RL）

![](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/1778546554145-diaHIDRpWIbEAAGtUjpg.jpg)

本文解釋了 Google 的這篇 SkillOS 新論文。由 AVB（本人）撰寫，並在 Paper Breakdown harness 中獲得 GPT-5.5 的協助。

## 你應該知道的 3 件事……

1. Agent Executor（凍結）：這只是一個「執行者」LLM，負責從 SkillRepo 中檢索技能來解決任務。它在訓練期間是「凍結」的，這意味著我們完全不會更新它的權重。它的效能提升純粹是因為為它提供了更好的技能。

1. Skill Curator（可訓練）：這是另一個 LLM，負責觀察 Executor 的軌跡並決定如何更新 SkillRepo。它可以執行諸如 Insert（新增技能）、Update（優化現有技能）或 Delete（刪除冗餘或無用技能）等操作。

1. SkillRepo：一個以結構化 Markdown 檔案儲存的技能儲存庫。每個技能都包含名稱、描述、程式碼片段和使用指南，讓 Executor 易於理解與應用。

![](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/1778546554034-iaHIDQe9YaUAAiRmDjpg.jpg)

## 

## 你可能已經知道什麼是技能了。

如果不知道，你可以從這篇 Anthropic 的原始文章了解技能：https://anthropic.skilljar.com/introduction-to-agent-skills/434525

> 從最基本的意義上來說，技能只是延遲載入的 Prompt。

它只是一個包含標題和描述的 YAML 或 MD 檔案。看起來像這樣：

```markdown
---
name: frontend-design
description: techniques and instructions to write good UI code
---

instructions: <an essay about frontend patterns>
```

想像一個目錄裡裝滿了這些涵蓋各種主題（frontend-design、programming-patterns、marketing-skills 等）的技能檔案。每個技能都寫在不同的 Markdown 檔案中，且每個技能都在標頭中包含名稱和描述。

```
(cmd) ➜ tree ~/.agents/skills
~/.agents/skills
├── copywriting
│   ├── references
│   │   ├── copy-frameworks.md
│   │   └── natural-transitions.md
│   └── SKILL.md
├── programming-patterns
│   └── SKILL.md
├── frontend-design
│   └── SKILL.md
├── marketing-psychology
│   └── SKILL.md
└── web-design-guidelines
    └── SKILL.md
```

你的 Agent harness（Claude Code、Codex 等）會在系統 Prompt 的頂部接收一份可用技能清單。當你要求它執行特定任務（例如「幫我為這個網頁建立 UI」）時，它會推斷在繼續處理你的請求之前，應該先完整閱讀 `frontend-design` 技能。接著 Agent 會執行檔案讀取操作（~/.AGENTS/skills/frontend-design/SKILL.md）並將完整的指令載入到它的 context 中。

> 這篇論文的目標在於技能建立階段。產生清晰且可執行的指令，以提升 Agent 在特定任務中的效能。Curator LLM 負責執行維護技能儲存庫的任務。

> Executor Agent 被刻意保持簡單。它的表現與任何其他 harness 一樣——接收技能標頭作為輸入、任務請求，並透過工具呼叫讀取一個或多個技能。Google 對 Executor Agent 沒有任何貢獻——全部的重點都在於 Curator 和技能儲存庫。

請注意，原始的 Anthropic 技能架構還包括資源檔案和可執行程式碼等內容。這些並非 Google SkillOS 工作的一部分，儘管他們確實提到未來有可能朝該方向發展。SkillOS 只學習技能中的文字/敘述部分。

# 技能是如何有機地被發現的

SkillOS 透過探索來學習技能/指令。廣義來說，LLM Agent 會進入環境中進行探索，然後我們將它的經驗提煉成指令和技能。

讓我們拆解每個步驟，以清楚理解它是如何運作的。

## 階段 1：Agent Executor 執行

在建立任何技能之前，凍結的 Agent Executor 必須先嘗試解決任務 x。它透過以下方式進行：

1. 透過 BM25 關鍵字匹配 YAML 描述，從 SkillRepo 中檢索前 k 個最相關的現有技能。

1. 執行它與環境的多步驟互動，產生一條軌跡：軌跡是一系列觀察和動作的序列。

在軌跡結束時，一個 LLM-as-a-Judge（一個獨立的 Qwen3-32B 模型）會判斷任務是否成功完成，並發出正確性訊號。

這條軌跡、正確性訊號以及先前檢索到的技能 St，隨後會被交給 Curator。

## 階段 2：Curator 輸入

Skill Curator 接收一個包含四個關鍵資訊的結構化 Prompt：

1. 任務描述：Agent 試圖完成什麼。

1. 過去的技能：執行期間可用的先前檢索到的相關技能清單（名稱 + 內容）。

1. Agent 軌跡：顯示發生了什麼的完整逐步追蹤。

1. 結果：Agent 是成功還是失敗。

正如其系統 Prompt 中明確指出的，Curator 的角色是：

> 「將 Agent 執行任務的過去經驗轉換為可重複使用、通用的技能，以便它們能造福並啟發未來的任務。」

## 階段 3：Curator 輸出

Curator 隨後會產生一系列結構化的函式呼叫。它是一個 ReAct（推理與行動模組），包含以下工具：

1. new_skill_insert

建立一個全新的技能。Curator 提供：

- skill_name (string)：人類可讀的識別碼

- content (string)：技能的完整 Markdown 本體

當軌跡揭示了一種尚未在 SkillRepo 中呈現的通用策略時，就會用到這個！在訓練初期，當儲存庫為空時特別有用。

2. skill_update

修改現有技能。Curator 提供：

- skill_name：要更新的技能的確切名稱（必須完全匹配！）

- new_name：如果需要重新命名

- new_content：完整的替換內容

3. skill_delete

透過 skill_name 刪除現有技能。

當技能冗餘、誤導或已被取代時很有用。

這是 Curator 的完整系統 Prompt

![](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/1778546554356-iaHIDRIdmaMAANfxljpg.jpg)

## 每個技能都遵循簡單的格式：

YAML Frontmatter（強制）

```markdown
---
name: <人類可讀的技能名稱>
description: <一句話總結什麼/何時/為什麼/如何，簡潔且可執行>
---
```

description 欄位至關重要，因為它在檢索時被 BM25 用於將任務與技能進行匹配。它必須簡潔且可執行！

Markdown 本體

緊接在 frontmatter 之後。建議的章節包括：

- Workflow（工作流程）：逐步指令

- When NOT to use（何時不該使用）：避免錯誤應用的負面條件

- 其他章節，如實作範例、公式或邊緣案例

這是一個技能範例。

![](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/1778546554846-iaHIDDpePbsAEH5sTjpg.jpg)

Curator 被明確指示要遵守這些規則：

- 無特定細節：移除特定的數字/名稱，替換為變數/概念

- 無幻覺：僅包含實際軌跡所支持的事實

- 原子化與模組化：每個技能必須是獨立的，且能單獨重複使用

- 可執行：本體必須提供具體指導，而非模糊的建議

## 

# 這很好，但我們該如何提升技能呢？

> 這就是 RL 發揮作用的地方。我們透過在成功的技能上給予獎勵，來訓練 Curator 編寫更好的技能。

Curator 的訓練迴圈是 SkillOS 技術上最複雜的部分。它解決了一個本質上困難的 RL 問題：你如何透過另一個 Agent，來訓練一個決策只在未來才有回報的 Agent？

標準 RL 假設你可以快速衡量動作的效果。但策展（Curation）不同：

> 「主要的挑戰在於對策展決策的間接且延遲的回饋，這只有透過技能在未來相關任務上的表現才能顯現出來。」

如果 Curator 在任務 t 之後編寫了一個糟糕的技能，直到任務 t+5 因為它而失敗之前，你都不會知道它是糟糕的。這篇論文透過兩個核心機制解決了這個問題：分組訓練實例和複合獎勵。

## 階段 1：分組訓練實例建構（最重要）

在進行任何訓練之前，資料集必須預處理成相關任務的群組。這是一個兩階段的管線。我不會在這裡深入探討太多細節，但基本要點如下：

1. 在階段 1，我們進行潛在屬性標註。基本上，他們使用 Gemini-2.5-Pro 根據類型標註資料集中的每個任務。

1. 在階段 2，我們進行群組建構，在給定標註資料集的情況下建立任務群組。每個任務也有難度排名，因此每個任務群組中都有一個自然的課程。

Google 在 ALFWorld 和 WebShop 環境中測試了 10 個任務的群組大小。對於推理任務（數學、GPQA 等），則隨機設定為 (5, 12)。

群組結構確保了從早期任務中策展出的技能，可以直接在同一群組的後續任務中進行測試。

## 階段 2：技能建立迴圈

在每個訓練步驟中，我們首先採樣一個任務群組，初始化一個空的 SkillRepo，並遵循前面描述的技能建立過程。回顧：

1. Executor 執行：凍結的 Executor 透過 BM25 檢索前 5 名技能，解決任務並產生軌跡。

1. 正確性判斷：LLM-judge 評估任務是否成功。

1. Curator：讀取軌跡並呼叫工具來更新技能儲存庫。

## 階段 3：複合獎勵

在完整的群組 rollout 完成後，計算複合獎勵。它由四個部分組合而成：

1. 任務結果獎勵

第一個任務使用空的 SkillRepo，在任何 Curator 更新發生之前。當我們透過任務完成來建立技能時，我們必須追蹤從這些任務中策展出的技能有多成功（或不成功）。

這是主要的學習訊號：從早期任務中策展出的技能是否有助於後續任務成功？

2. 函式呼叫獎勵

衡量產生的函式呼叫中有多少比例在語法上是有效的，並成功對 SkillRepo 執行。

這是一個中間格式獎勵，防止 Curator 產生格式錯誤的 JSON，或對不存在的技能呼叫 skill_update。

3. 壓縮獎勵

這會懲罰逐字複製軌跡的行為，並獎勵真正經過壓縮、提煉過知識的技能。

如果沒有這個，Curator 就會學會直接將原始軌跡傾倒到儲存庫中。

4. 內容品質獎勵

由 Qwen3-32B 作為評審分配：它閱讀策展出的技能，並根據以下標準進行評分：

- 語意上有意義

- 對未來任務可能有幫助

- 真實且可執行

這提供了一個獨立於實際下游任務成功的密集中間訊號。

> 所有這些獎勵都會被合併（加權平均）以計算最終的群組獎勵。

## 階段 4：GRPO 策略優化

我們使用 GRPO 來訓練 Curator 模型。對於每個群組，我們採樣 N=8 個獨立的 rollout，每個都會產生一個複合獎勵。然後我們遵循標準的 GRPO 優化來更新網路（歸一化優勢函數，以及 clipped surrogate PPO 目標）。

重要的是，KL 散度懲罰從標準 GRPO 公式中被捨棄了。這是刻意的，旨在鼓勵在技能策展學習期間進行策略探索。

![](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/1778546554076-diaHIDQl9boAAqQPGjpg.jpg)

> 在 RL 訓練中，rollout 僅僅是任務（或任務序列）的一次完整運行——模型採取行動，接收回饋，而整條軌跡被用於學習。

> 在 SkillOS 中，訓練單元不是單一任務。它是一個任務群組（例如，連續解決 10 個相關任務）。這裡的 rollout 意味著從頭到尾運行整個群組一次。

是什麼讓每個 rollout 獨立？

8 個 rollout 中的每一個都是對同一任務群組的獨立平行嘗試：

- Rollout 1：Curator 做出策展決策 c1,c2,…,cn -> SkillRepo 以一種方式進化

- Rollout 2：Curator 做出不同的策展決策 -> SkillRepo 以不同方式進化

- ……以此類推，直到所有 8 個 rollout。

每個 rollout 都會產生不同版本的 SkillRepo，因為 Curator 的隨機採樣導致了不同的插入/更新/刪除決策。

GRPO 計算 8 個 rollout 的相對獎勵。對於任務位置 i 的 rollout k，獎勵 r_k 反映了該策展序列對解決未來任務的幫助程度。

> 導致更好技能策展（更高獎勵）的 rollout 會獲得正向優勢並得到強化。表現不佳的 rollout 會獲得負向優勢並被抑制。

![](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/1778546554031-iaHIDQyxbbkAIV8Tfjpg.jpg)

# 結果

以下是 SkillOS 的主要收穫和結果：

1. SkillOS 持續擊敗所有基準模型

在多輪 Agentic 任務（ALFWorld、WebShop）和單輪推理任務（AIME 數學）中，SkillOS 的表現均優於無記憶基準（完全沒有記憶）和強大的基於記憶的基準（例如 ReasoningBank、MemP）。

![](https://pub-75d4fe1e4e80421b9ecb1245a7ae0d1a.r2.dev/curated/1778546554239-iaHIDQ8ycbUAEM1r8jpg.jpg)

2. Curator 可推廣至未見過的 Executor

Curator 是使用 Qwen3-8B 作為 Executor 進行訓練的。但在測試時，它能與它從未見過的完全不同的模型一起工作：

- 開源：Qwen3-8B、Qwen3-32B

- 前沿：Gemini-2.5-Pro

> 一個關鍵洞察：直接使用 Gemini-2.5-Pro 作為 Curator（SkillOS-gemini）的表現，實際上不如訓練過的 SkillOS Curator，特別是在面對較弱的 Executor 時。

> 單純更強的推理能力並不能保證好的策展。經過 RL 訓練的策展是建立在 Executor 的實際能力基礎上的。

3. 每個獎勵組件都很重要（消融實驗）

移除訓練配方的任何部分都會損害效能：

- 完整 SkillOS：61.2

- 無內容品質獎勵：58.6

- 無壓縮獎勵：60.0

- 無任務分組：57.3

最大的下降來自於移除任務分組。這證實了從相關的順序任務中學習是整個方法的核心洞察。

---

在此研究完整論文：https://arxiv.org/abs/2605.06614

在 Paper Breakdown 上研究該論文：http://paperbreakdown.com/abs/2605.06614

## 標籤

Skills, Agent, 研究論文, 記憶系統, Google
