【论文阅读笔记】谷歌 WikiSkill:给 Agent 修一座「越用越聪明」的知识库

19 min

8 月 27 日,Google Research(与 Virginia Tech 合作)在 arXiv 上放出一篇论文:WikiSkill: Compiling Agent Experience into Persistent Knowledge for Skill Evolution(arXiv

.27454)。几天之内,中英文技术圈都在转,标题起得一个比一个猛——「技能可以自己进化了」「给 AI Agent 一本记事本,它就不会重复犯错」。

扒完论文原文和各方报道之后,我觉得它值得关注的原因很简单:它把「Agent 技能」从一个静态的、靠人维护的产物,变成了一个会随使用不断自我修订的系统,而且给出了一套相当干净的分层方案。这篇笔记是我自己的完整拆解——动机、架构、工作流、实验数字、消融结论、局限,最后聊聊它对我们这些日常给 Agent 写技能文件的人有什么启发。

TL;DR:WikiSkill 把 Agent 的运行经验分成三层——不可变的原始轨迹层、人类可读的持久 Wiki 层、可执行的技能层。经验不直接变技能,而是先沉淀进 Wiki(连失败记录一起存),再由独立的「技能提议者」从 Wiki 里提炼出带安全护栏的可执行技能。结果:五个基准上平均提升约 12 分,Qwen-9B + WikiSkill 反超裸奔的 27B,技能可跨模型迁移,沉淀的数据还能反哺未来训练(数据飞轮)。

一、它要解决什么问题:经验在「蒸发」

现在的 Agent 技能生态有个隐含假设:技能(比如 Anthropic 的 Agent Skills、各种 SKILL.md 文件)是人写好、封装好、交给 Agent 用的。论文开篇就点出这个假设的三宗罪:

  1. 静态:技能写完就冻结了,世界在变、工具在变、模型在变,技能文件不会自己更新;
  2. 人工:技能的获取靠人肉整理,成本高、覆盖窄,「workflows or approaches quickly become outdated or incomplete」;
  3. 经验蒸发:Agent 每次任务运行产生的成败经验——哪个动作序列有效、哪个坑导致失败——跑完就丢,下次遇到同类任务从零开始。

换句话说,Agent 有记忆产品(memory),但没有真正的「学习曲线」。RAG 式的向量记忆解决「存」,不解决「把经验编译成可复用的方法论」;RL 微调解决「练」,但成本高、周期长,而且知识锁在权重里说不清。WikiSkill 选的是第三条路:测试时学习(test-time learning),靠上下文推理把经验滚成知识复利

这里有个有意思的思想源头:论文明确说灵感来自 Karpathy 今年 4 月发布的 LLM Wiki gist——「把源材料丢给 LLM,让它编译成持久、可复利的知识库」。Karpathy 那个是给「人」建第二大脑,Google 这篇是把这个模式搬给 Agent 自己用。

二、核心设计:三层知识架构

WikiSkill 的核心是一个持久化数据池,切成三层,各管一段:

存什么性质
Raw Layer 原始层每次任务运行的完整记录:任务描述、完整轨迹(trajectory)、二元测试反馈(成功/失败)不可变、可回放,是所有后续编译的证据底稿
Wiki Layer 知识层wiki 形态的知识库,按 domain → topic → entry 组织;每个条目总结「这类任务怎么打、哪些动作有效、哪些路走不通、为什么」持久、人类可读,条目自带战绩记录(track record),随经验积累自我更新
Skill Layer 技能层可执行技能:SKILL.md 指令 + 库代码,与 Wiki 共同进化持久、可执行,带页面级护栏(单元测试、安全默认值、最小权限)

几个设计细节值得单独说:

每个 Wiki 条目自带「战绩」。 这是我觉得全文最妙的一个小设计。条目不只写结论,还定量记录:这个知识点基于过去多少次成功/失败、哪些做法试过且有效、哪些失败过、失败原因是什么、给下次尝试的建议。相当于每条知识都带一份「证据清单 + 胜率」,后续 Agent 引用它时可以自己判断可信度,Wiki 维护者更新它时有数据可依——被新证据推翻的结论会被改写,而不是无限追加。

Wiki 永不回滚,技能可以回滚。 Wiki 层是只进不退的知识沉淀;技能层则每次更新都要过验证门控(gating),门控失败就回滚到上一个版本。知识和行动的容错策略被刻意分开了:知识允许被证伪和改写,动作必须先证明自己。

护栏做在技能页面级。 每个技能内置单元测试和安全默认值,权限「最小化」、只在需要时激活。这是对「自我进化技能」最大的质疑——AI 自己改自己的行动手册,改坏了怎么办——的直接回应。

论文还明确写了三条设计原则:P1 把经验蒸馏成可复用知识;P2 测试时学习走上下文推理(不动权重);P3 关注点分离——Wiki 和 Skill 是两个东西,Wiki 负责「知道」,Skill 负责「做到」。

三、工作流:三个角色加一道门

按论文的描述,整个闭环由三个角色(可以理解为三个被提示词约束的同一模型实例)加一道验证门组成:

  1. Inference Agent(推理主体):带着当前技能库去干活。跑完(无论成败)把任务、轨迹、测试反馈写进原始层。训练用途的 rollout 不允许访问 Wiki,保证轨迹「干净」、不被已有知识污染。
  2. Wiki Maintainer(Wiki 维护者):分析新轨迹,把可复用的发现写进 Wiki——按中文技术社区对论文的拆解,具体落地是一个 patterns/ 目录(每种失败/成功模式一个 markdown)、一份 logs.md(演化日志)、一份 skill-impact.md(记录每个技能被接受/拒绝的历史差异,让被拒绝的干预可追踪)。
  3. Skill Proposer(技能提议者):读更新后的 Wiki 和执行数据,提出针对性的技能修改——每个技能还带一份溯源文件(PURPOSE.md,记录它解决的是哪个 pattern),改完交给验证门。
  4. Gating(门控验证):单元测试 + 评估,通过才入库,不通过就回滚。

整个循环是异步的:推理主体干活的时候,维护者和提议者在后台编译经验,互不阻塞。这个「异步」不是实现细节,而是消融实验里的大头(下面会说)。

四、实验:平均 +12 分,9B 反超 27B

论文在五个基准、五个模型上做了评估。基准覆盖了 Web 交互(WebArena)、通用助理(GAIA)、真实仓库修 bug(SWE-Bench-Verified)、数据科学代码(DS-1000)和软件工程(Score);模型横跨 Gemini、GPT、Claude、Qwen 等家族。

摘要里给出的 Gemini 3 Pro 头牌数字(第四轮技能进化 Skill-4 对比无技能基线):

基准无技能WikiSkill提升
GAIA30.937.2+6.3
SWE-Bench-Verified23.633.6+10.0
DS-100048.764.5+15.8
Score31.448.3+16.9
平均+12.6

几个更有意思的发现:

技能增益随模型规模放大。 在 Qwen 家族内(按论文实验数据,中文解读多方交叉印证):4B 模型 +12.3 分,9B 模型 +17.5 分,27B 模型 +23.9 分。越强的脑子,从同一套「学习方法论」里获益越多——因为执行技能指令本身也需要能力,模型太弱时「知道」转化不成「做到」。

技能可以弥补规模差距。 9B 模型 + WikiSkill 的平均表现(约 47.4%)反超了裸奔的 27B 模型(约 39.4%)。省下的算力预算是实打实的:与其硬堆参数,不如给小模型配一套会进化的技能。

技能可以跨模型迁移。 论文测了把一个模型进化出的技能交给另一个模型用,性能照样涨。中文解读里给出的具体数字:Qwen-3.5-9B 使用由 Qwen-3.6-27B 进化出的技能,得分 70.2%,比用它自己进化出的技能(63.4%)还高——强模型沉淀的技能,弱模型直接受益。这和 Anthropic 那套 SKILL.md「一次编写、多模型使用」的生态假设形成呼应,只不过 WikiSkill 证明了「机器自己进化的技能」同样具备可移植性。

数据飞轮。 沉淀下来的轨迹 + Wiki + 技能库,可以直接作为未来模型训练的数据——跑得越多,资产越厚,越能反哺下一代模型。这是「测试时学习」和「训练时学习」被打通的地方。

跑赢了现有技能进化方法。 按第三方解析文章对论文表格的汇总:WikiSkill 平均约 68.1%,最强的已有技能进化基线约 56.1%,无技能基线约 49.5%。(中文解读提及的对比方法包括 EvoSkill、Trace2Skill、SkillOpt 等。)

五、消融:为什么必须是「Wiki + Skill」双轮

这部分是我读完觉得最「涨姿势」的,四个消融各自回答一个质疑:

只留 Wiki、不留 Skill 行不行? 不行。Wiki-only 和 Skill-only 各自只能拿到大约一半的收益。更狠的是 DS-1000(数据科学代码生成)上 Wiki-only 直接崩盘——光「知道」方法论,没有可执行、可测试的技能载体,代码类任务落不了地。这正好论证了 P3(关注点分离):知识和行动是互补品,不是替代品。

同步进化还是异步进化? 异步(+21.4 分)碾压同步(+6.8 分)。同步模式让推理主体等编译完成再干活,任务分布被拖慢、失真;异步让经验编译在后台滚,主干流程永远畅跑。

Wiki 该用什么结构组织? 论文比较了树状、图状、层级结构等变体,结论是当前这种按 domain → topic → entry 的「组织式(organizational)」结构最好——而且关键不在层级形态本身,在于知识的可定位性和战绩记录

自我进化会不会漂移? 会,所以要「价值校验(value verification)」:只接受带来实际收益的技能更新。校验后收益从 +11.5 降到 +10.8(保留约九成),但能防止技能库被无效更新带偏。这是一个「用一成收益换长期稳定」的明确权衡。

六、和既有思路的关系

把 WikiSkill 放回地图上看,它的位置大概是这样:

  • 对比 RAG / 向量记忆:RAG 是「检索原始经验」,WikiSkill 是「检索 + 推理编译过的知识」。论文的立场是两者互补——Wiki 处理可复用方法论,原始层保留完整证据供回溯。The Decoder 的报道把它总结为「给 Agent 一个持久记忆,让它们从错误和成功中学习」,但准确说,它记住的不是流水账,是编译产物
  • 对比 Voyager 等技能库方案:Voyager(2023,Minecraft Agent)证明了「自动技能库」可行,但技能直接从轨迹生成,缺一个独立的知识层做沉淀与证伪。WikiSkill 的差异就是把「学到什么」和「能做什么」拆开,中间靠 Wiki 做缓冲。
  • 对比 Claude Agent Skills / 人写的 SKILL.md:现有人工技能是 WikiSkill 的「第 0 轮」——论文实验的技能种子也是专家写好再启动进化的。它没有否定人工技能,而是给人工技能加了一条随使用自动修订的通路。
  • 对比 RL 微调:一个不动权重、一个动权重;一个分钟级见效、一个训练周期级见效。论文的姿态是互补,而且 WikiSkill 的沉淀数据(轨迹 + 知识 + 技能)本身就是 RL 的上好燃料(数据飞轮)。

七、冷静面:局限与没说透的事

论文自己列的局限,加上我读下来的几个保留意见:

  1. 基准与数据部分是内部的:五个基准里 Score 等并非完全公开可复现的标准化基准,实验细节有内部依赖,社区复现门槛不低;
  2. 技能种子是专家写的:冷启动仍然依赖人工,「从零自举」没有被证明;
  3. 经验性结论多于理论刻画:为什么组织式结构优于图/树?为什么异步优势这么大?论文给了实验证据,没给理论解释;
  4. 训练域和测试域是分开的:这是为了回应「会不会只是过拟合训练任务」的质疑,但也意味着「同域持续进化」的上限没有被直接测量;
  5. 截至本笔记写作(2026-08-31),论文没有放出公开代码仓库——我搜遍了 google-research 的 GitHub 组织没有找到对应 repo,想上手复现的还得再等等。

另外提醒一句:中文自媒体上流传的部分具体数字(比如某些单点基准分数)与英文一手报道存在出入,我这篇笔记里的数字以论文摘要原文为准,二手数字均已标注来源或用「约」处理。读这类热点论文的中文转述时,建议始终回到 arXiv 原文核对。

八、对我们的启示

最后说点落地的。这篇论文虽然是 Google 的研究工作,但它的方向和每个在用 Agent Skills 的人直接相关:

给「技能」加上使用寿命的概念。 我们现在写 SKILL.md,写完就是终点。WikiSkill 的启示是:技能应该有「战绩」——用了多少次、成功率多少、哪些场景失败过。哪怕不搞自动进化,在技能文件里手动维护一段使用记录,也能帮后来的 Agent(和写技能的自己)判断可信度。

失败比成功更值钱。 原始层连失败轨迹一起存,Wiki 条目明确记录「哪些路走不通、为什么」。我们日常折腾 Agent 时的踩坑记录(比如我这个博客里记的那一堆「坑」),其实就是手动的 Wiki 条目——问题只在于没有被系统性地编译回技能。

知识和动作分开维护。 把「经验教训」(Wiki 型内容)和「操作步骤」(Skill 型内容)混在一个文件里,是技能文件腐化的常见原因。WikiSkill 用架构证明了这个分离的价值:知识可以大胆地被证伪改写,动作必须保守地过门控。

小模型 + 好技能的组合值得认真对待。 9B 反超 27B 的结果,对本地跑模型、对推理成本敏感的场景是个强信号——技能库是在模型之外的「外挂大脑」,一次投入、多方复用(还能跨模型)。

参考资料