教程2026-11-04 · 智涌AI

Agent 复盘 Skill 有用吗:12 项改动只有 2 项见效

Agent 复盘 Skill 教程头图:四组改动前后对照,CLAUDE.md 测试命令和已知失败清单把问题降到 0,泛化规则让耗时从 82 秒涨到 245 秒

让 Agent 做完任务后复盘一遍,把踩过的坑写进 CLAUDE.md、加个检查脚本,下次就不再犯,这是很多人给编程 Agent「调教环境」的做法。2026-10-26 挂上 arXiv 的一篇实证论文,专门测了这件事:用开源的 /retro 复盘 Skill 跑 30 个真实修 bug 任务,得到 125 条改进建议,挑 12 条做了前后对照,结果只有 2 条把目标问题彻底消掉。下面按论文和 Skill 官方仓库(2026-11-04 北京时间查阅),讲清 /retro 怎么用,以及哪类改动值得留。

/retro 是什么:只提建议,不自己动手

/retro 是 mattpocock/skills 仓库(MIT 协议)里的一个工程类 Skill。它在一次会话结束后读整段对话,找出 Agent 绕远路、反复试错、违反规范的地方,再按类别提改进建议:导航指针、自动检查、编码规范、全局 AGENTS.md、工具用法、无需改动、信息获取。

SKILL.md 开头写着 disable-model-invocation: true,意思是模型不会自己触发它,只能人手动敲 /retro。它也只出建议清单,改哪条由人挑。仓库文档给的分工很明确:CLAUDE.md / AGENTS.md 只放「去哪找」的导航指针,规范交给评审环节的 CODING_STANDARDS.md,能机械判断的违规改成确定性检查(lint、测试、pre-commit)。

安装两种方式任选(来自仓库 README):

# Claude Code 插件市场
claude plugin install mattpocock-skills@claude-plugins-official

# 或用 skills CLI 装到 Cursor、OpenCode 等其他 Agent
npx skills@latest add mattpocock/skills -a cursor

装好后,在一次干完活的会话里输入 /retro,它会列出建议和对应类别。仓库文档自己也写了:这个 Skill 不负责回头审计、清理以前加的检查。

论文怎么测的

论文题为 How Do Coding-Agent Harnesses Self-Evolve?,作者是新加坡管理大学的 Christoph Treude 和海德堡大学的 Sebastian Baltes。实验环境是 Claude Code 2.1.295 加 Opus 5.5,/retro 固定在 commit b0618bc,任务取自 SWE-bench Verified 的 30 个 issue。

流程分三段:先让 Agent 修 bug,再跑 /retro 收建议,最后把其中 24 条落地,挑 12 条在同一类任务上各跑 5 次,对比改动前后目标行为出现的次数。建议总数 125 条,其中 101 条有会话里的具体经历支撑,19 条是凭通用经验提的,5 条依据很弱。凭经验提的那 19 条里,有 18 条属于 lint 类,lint 类建议一共 43 条。

建议机制条数
可执行检查(lint、测试、脚本)38
导航指针(告诉 Agent 去哪找)24
文字指令21
信息获取20
工具或配置12
无需改动10

12 条改动,2 条见效

彻底消掉目标行为的两条都很朴素。一条是在 SymPy 仓库的 CLAUDE.md 里写明「测试用 bin/test,环境里没装 pytest」,Agent 先去试 pytest 的情况从 5/5 降到 0/5。另一条是给 Astropy 加了一个「已知失败测试」文件,列出 3 个本来就挂的测试,Agent 为它们白查原因的情况从 3/5 降到 0/5。

另有一条只减轻了问题:Astropy 的缓存插件加脚本,让目标行为从 5/5 降到 2/5。剩下 4 条看不出减少。作者自己写的 pre-commit 配置,5 次会话里 Agent 一次都没读过。

改动有没有用,先看 Agent 到底读没读到它。

副作用也要算进去。论文在 Sphinx 上放了一个对照任务,加了一条「没列进已知清单的失败,都当成你自己弄坏的」。结果 Agent 在 5 次里有 4 次额外跑了基线对比(原来是 0 次),中位耗时从 82 秒涨到 245 秒。SymPy 那份 CLAUDE.md 里顺手捎上的一行 lint 要求,也把中位耗时从 88 秒拉到 156 秒。各组的任务成功数最多只差 1 个,复盘改动基本没换来更高的通过率。

哪些改动该留,哪些该删

改动类型论文里的表现建议
仓库级事实:测试命令、缺什么工具5/5 → 0/5优先写,长期留
环境相关清单:已知失败测试3/5 → 0/5,但会过期写上日期,环境变了就删
泛化规则:「所有失败都当成自己的」耗时 82 秒 → 245 秒别加,或限定到具体场景
捎带的 lint 要求耗时 88 秒 → 156 秒改成 lint 命令,别写成文字
没人读的配置5 次会话 0 次读取在 CLAUDE.md 里放指针,或直接删

这和 /retro 文档的分工一致:CLAUDE.md 越短越好,只放 Agent 每次都会用到的事实和指针。站内那篇 Agent 自我改进 讲的是另一条路,可以对照着看。

按论文结论用 /retro 的四步

  1. 只在真踩过坑的会话后跑。没遇到问题就跑,拿到的多是「建议加 lint」这类凭经验的建议,论文里这类占了凭经验建议的大多数。
  2. 每条建议先问「有会话证据吗」。能指出对话里哪一步绕了路的留下,说不出来的跳过。
  3. 落地后看三件事。同类任务再跑几次:问题还出现吗?Agent 读到改动了吗(看它有没有打开那个文件)?行为和耗时变了吗?
  4. 定期删。给环境类条目写上添加日期,依赖升级或环境修好后回头清理。/retro 不会替你做这一步。

常见坑

完成标准

最后

下次觉得 Agent 又在同一个地方绕路,先跑一次 /retro,只挑一条有证据的「仓库级事实」写进 CLAUDE.md,再用同类任务复跑看效果。想先理清 CLAUDE.md 该写什么,看本站的 grill-me 需求盘问 Skill 和 CLAUDE.md 教程。

关注公众号「智涌AI速递」

每天的 AI 快讯、实用教程和 AI项目实测,也会同步发到微信公众号。在微信里搜索「智涌AI速递」就能关注;不用微信的话,可以用 RSS 订阅本站。