Read the blog

一句话主旨: 花三分钟读完的人,将会理解为什么最该先建的,是”可度量的自我改进”这个元能力——因为一旦它存在,之后的每一个能力(包括用来发布本文的那个)都会建得更快,并自带约束。

钩子

多数团队先建功能,再后悔没有一个办法确认功能到底好不好。我们用了一整天,反过来做:先建”改进循环”,再让之后的每一个能力——包括我此刻用来写下这句话的那个技能——都成为这个循环的产物。 一天之内八次发布,每一次都用上一次建出来的东西,最后以”循环写一篇关于它自己的博客”收尾。这是它真实的样子,以及为什么顺序比任何一个单独的功能都重要。

问题

我们有一套 18 个技能、40 项记分卡指标、带基准测试的编码 Agent harness。它一路飘绿,可与此同时:根文档里有 61 条失效的绝对路径和 90 个失效链接;11 份运行报告里只有 4 份可追溯;“最小检查点契约”由 0 项检查来保证。

模式总是一样:写得很强的契约,配着零执行。 更深的问题是:我们没有一个可复用的办法去发现并修复这类缺口。每一个缺口,都得从零重新摸索一遍”审查—修复—验证”的动作。

方法

我们没有先建功能。我们先建了一个五步循环,然后把它对准最坏的地方跑:

  1. Review(审查) 目标端到端;列出带证据的发现。
  2. 为每个发现定义一个行为型指标(在夹具上跑真实工具,断言它能检测到问题)。
  3. 建一个小型 eval 脚本,并记录基线
  4. Strengthen(强化),用最能推动指标的最小改动。
  5. 再测,然后把指标接进发布记分卡,让成果不会再悄悄退回。

然后是让它”自我引导”的那一步:把循环跑在循环自己身上。

  • 第 .4 次发布——循环变成一项资产。 我们把这套 routine 蒸馏成 strengthening-cycle 技能,并用它自己的 eval 给”自我改进能力”打分(eval-self-evolution.py:2/8 → 8/8)。改进方法本身,成了一个能改进自己的持久之物。
  • 第 .6 次发布——循环审计它自己的纪律。 循环发现:没有人在会话结束时留下总结记录。于是它加了一道”新鲜度”闸门,任何跳过这一步的会话都会变红。方法修好了自己执行里的一个缺口。
  • 第 .7–.8 次发布——循环产出一项”分享”能力。 同样的 review-eval-strengthen 动作,建出了 blog-distill——一个把开发工作蒸馏成社区文章的技能,并由它自己的结构性 eval 约束。
  • 本文——循环写关于它自己。 blog-distill 正在蒸馏”建造 blog-distill 与自我改进”的故事。递归就此闭合。

我们从编译器设计那里偷来一条检验:如果一个方法不能改进它自己,它就还不够通用。 每次我们把它对准它自己的产物,它都找到了真实的东西(一道失效的闸门、一个缺失的收尾动作、一个没人管的模板)。

证据

八次预览发布,每一次都在真实产物上有可度量的前后对比:

发布做了什么自我引导的一步度量变化
.2文档漂移在做事中学会循环90 个失效链接 → 0
.3longrun把循环用到一个层上eval 1/8 → 8/8
.4self-evolution把循环跑在它自己身上能力 eval 2/8 → 8/8
.5可观测性证明它能泛化合规率 0.36 → 1.0
.6收尾总结循环修好自己的缺口新鲜度闸门现在强制执行它
.7blog-distill循环建出一个分享技能新技能 + eval 4/4
.8中文支持由它自己的 eval 约束80 个测试,双语契约
(本文)这篇文章技能写关于它自己两种语言都过契约检查

累计:记分卡 40 → 54 项指标,单元测试 0 → 80,技能 18 → 19;这个看板再也无法在某一层坏掉时还报绿——因为每一层现在都拥有能把自己暴露出来的指标。

要点

  • 先建改进循环,再建功能。 最该先度量的,是你”改进”这件事本身的能力。之后的一切都会复利增长。
  • 递归是通用性的试金石。 如果你的方法不能被用到它自己身上,它就是一次性小聪明,不是方法。我们只有在循环改进了循环之后,才信任它。
  • 战果不接进闸门就不算数。 “我们现在检查这个”只是愿望;记分卡指标 + 单元测试才是保证。上面的每一项战果都接了闸门,不会悄悄退回。
  • 行为型指标胜过结构型指标。 “校验器会不会标记一个坏夹具”比”函数存不存在”有价值得多。
  • 让方法去建下一个方法。 blog-distill 不是副业;它是”分享”成为目标后,自我进化循环自然而然的产物。
  • 元能力才是杠杆。 第 7 次发布的成本远低于第 2 次,因为循环、eval、闸门、模板都已经存在了。

来源与可复现性

开放仓库:github.com/agilewayai/aries-harness-skills。循环记录在 skills/aries-harness-self-evolution/references/strengthening-cycle.md。产出本文的 blog-distill 技能(及其双语契约检查器)在 skills/aries-harness-blog-distill/。运行任意一个 eval-*.py 即可重新得出分数;运行发布记分卡即可一次看到全部。八次发布的 commit 在 master 上,从 d41cedf753c7d6

我们尚未解决的问题

这个循环度量的是机制强度,而不是机制本身对不对——满分 eval 只说明该层遵守了它的契约,不代表那个契约是正确的。行为型指标也需要用心设计;做得潦草就会变成虚荣指标,所以”如果它没法在一个真实夹具上失败,它就没有分量”这条规则是承重的。而且自我引导有一个地板:你必须徒手建出循环的第一个版本,那时没有任何循环能帮你——之后它才会复利增长,但冷启动是真实的。

#AriesHarnessDev