你的 CLAUDE.md 是写给一个已经不存在的模型的
本周最大的一次自我改进结果,是一次删除。
Teknium 把 110 个子代理指向 Hermes 的代码库,让它们跑了十五个小时。它们做了 111352 次工具调用,在一个 PR 里产出 4271 次提交,触及 2655 个文件。净变化是减少 167429 行,超过整个源码的三分之一。这个数字底下最主要的改动,是 run_agent.py 终于被拆开了——agent loop、provider 解析、回落链、工具分发、会话状态各自有了自己的文件,而在这之前,任何人想改任何东西,都得先撞上那个一万四千行的单文件。
一支 agent 机群被放进一个代码库,它做的最有价值的一件事,是把其中三分之一扔掉。
这不是一次孤立的表演。它是当下 agent 工具圈里最被少报的那件事最清楚的一个实例:所有人过去一年半攒下来的那些脚手架,正在以比替换速度更快的节奏贬值,而没有人会给你发通知。
证据在同一周里,从四个毫不相干的方向到齐。
有人发了一条读起来像在搞破坏的建议:如果你用 Claude Code 或者任何编程 agent 已经好几个月甚至好几年,立刻全部清空。各个层级的每一个 CLAUDE.md。记忆文件夹、skills、slash 命令、MCP 配置、允许列表、插件、子代理。全部。他的理由是,这些规则是为已经不存在的模型和推理方式写的,而新模型在被那些针对它早已没有的问题的指令打断时,会被压制、会困惑。而最后那句才值得去验证:清空旧记忆带来的性能跃升,比任何一次新模型发布都大。
你可以把这当成一个人的轶事,但 OpenAI 从厂商那一侧公布了完全相同的发现。他们的 GPT-6 Astra 文档写着:以前的模型需要被明确告知去跑测试、去检查自己的工作,而 Astra 自己就会做,所以你 AGENTS.md 里那几行原封不动留着,现在只会制造多余的重复测试。他们还往前走了一步,说过去有帮助的非常详细的指导,现在反而会拖住模型。把这句慢慢再读一遍:上个季度让你的 agent 变好的那些指令,就是这个季度让它变差的那些指令;而你唯一能发现这件事的办法,是把它们删掉,然后看会发生什么。
Anthropic 显然早就知道,而且把它变成了一道工序。Boris Cherny 描述了他们维护 system prompt 的真实方法,粗暴得非常物理:把整个 system prompt 删掉,然后一行一行加回去,搞清楚每一行各自在干什么。每次新模型发布,他们都会剥掉旧指令、重新测一遍 Claude Code。这是几乎每支团队都会跳过的纪律,因为没人愿意动一个正在工作的 prompt,而且这件事很贵。它同时也是对抗「配置在无声腐烂」的唯一防线。
而当 Anthropic 本周把 Claude Code 团队的三个人放到镜头前,他们对产品本身说了同一件事:当模型长过了他们自己的功能,他们就把那个功能删掉。不是标记为废弃,是删掉。
接下来这部分,让这件事不只是一项维护杂活。
DeepSeek V4.1 Flash 的技术报告里有一节,5.3.4,做了一件几乎没人做的事:固定模型,只变 harness。在 DeepSWE 基准上,同一份权重在 OpenCode 下是 65.5,在 Claude Code 下是 69.8,在 mini-SWE 下是 74.2。全表最高分属于其中最极简的那个 harness。而在 DeepSeek 自家 harness 内部——三种配置全由他们自己控制——排序是 Minimal 72.6、Standard 70.5、PTC 67.6。工具越多,分数越低。稳定地、单调地更低。
而整个行业当下正在朝相反的方向建设。本周发布的每一个编排器都在加面积:更多 skill、更多子代理、更多 MCP 服务器、更多插件、更多 hook。而那个受控实验说的是:更简单的接口更稳。
这背后有机制,而且并不神秘。你加进 harness 的每一样东西都占据上下文,而上下文是唯一一个没有跟着能力一起扩张的资源。在 Claude Code 团队工作的 Daisy Hollman 把这点说得很直接:相对于 agent 现在能做的事,上下文窗口几乎没怎么变大,所以难的技能已经不是往模型里塞更多信息,而是决定把什么留在外面。她的类比是在 Arduino 上跑 npm。在笔记本上你可以一直加;而在一个固定预算里,每一条信息都在跟其他每一条竞争。
而这场竞争并不公平,因为参与竞争的大部分东西已经死了。Anthropic 本周发布的 /skill-doctor 命令就是专门用来让你看见这件事的,而演示结果很难堪:二十三个 skill 已加载进会话,一次都没被调用过。它们作为一张清单留在上下文里,每一轮都在消耗 token,不管它们有没有触发。一位开发者对新的 plugin eval 的反应,是所有人的 skill 目录的诚实版本:我一直靠感觉留着一堆半死不活的 skill,而一个成对的分数就是我需要的那个终止开关。另一位干脆说,随着模型变强,他的 skill 基本已经删得差不多了。
所以本周到货的工具,几乎无一例外全是「做减法」的工具。/skill-doctor 是一份该被移除的东西的清单。plugin eval 是一套用来证明某样东西该被移除的机制;而对它最锋利的那个解读把框架说得完全正确:对一个插件来说,「通过」是错误的发布标准,「贡献度」才是——同一个请求,装了打一次分,不装再打一次分,然后相减。如果两边都是 1.0,delta 就是零,你的插件没有表现出任何可测量的价值。而一个负的 delta 意味着它正在把事情弄糟。
本周没有人造一个工具来告诉你「你的配置是不是在帮忙」。好几个人造了工具来告诉你「它是不是在帮倒忙」。
而这把我们带到这一切最让人不舒服的那个版本,它来自唯一一篇肯去实地看的论文。
Ecdysis 研究了 agent 在失败之后自动编辑自己 harness 时会发生什么。性能数字确实漂亮:平均准确率从 58.67% 到 69.56%,Qwen3-8B 在 Airline 上从 35% 到 60%,而用 Qwen3-8B 演化出来的 harness 在没有再次演化的情况下把 Qwen3-32B 从 51.67% 提到了 68.33%。自我改进的 harness 是管用的。
然后研究者做了几乎没人做的那件事:人工检查这些改动。结果是常规自我演化里 60% 的修改,其实是在迁就当前运行的那个模型的怪癖。不是对系统的改进,是针对某一组特定权重的绕行。而在某些运行里,agent 会看到模型仅仅误用了一次某个合法动作,然后就修改 harness 把那个动作全局禁掉,永久地。
一个局部的错误,变成了永久的基础设施。
把这两个结果并排放着,问题的形状就完整了。一个自我改进的循环会以机器的速度自动生成配置债,而它生成的东西大部分是针对那天恰好在跑的那个模型的。然后模型被换掉了。而那些迁就留了下来。它们现在是纯成本,而且跟真正有用的那部分无法区分——因为没人写下过哪个是哪个。
这就是为什么当下最好的动作是减法,也是为什么 Hermes 那个结果是未来的形状而不是一桩奇闻。一支 agent 机群对一个成熟代码库能做的最有价值的事,不是加功能。是找出其中已经不再承重的那三分之一。
所以,给每天在跑这套东西的人,一个可执行的版本。
把你的配置当成有半衰期的东西,而不是一个状态。给你写的每一条规则标上日期,因为有用的问题不是「这条规则对不对」,而是「它是为你现在正在跑的那个模型写的吗」。当一个新模型发布,迁移不只是把模型名字换掉,它还包含一次排定的删除通过;而这件事应该和升级并排写进日历。在你测量出「加进去的东西确实有帮助」之前,优先选最小的 harness,因为我们手上唯一那个受控实验说的是:工具越多,分数越低。而当某样东西出问题时,忍住那个「再加一条规则」的冲动——因为那恰恰是 Ecdysis 抓到的、把一次误用变成永久全局限制的那个动作。
那个已经悄悄变错的框架,是「你在搭一套配置」这个想法。你不是。你在维护一个针对某一组特定权重的迁就层,而那组权重正在每隔几个月被一群根本不知道你写过什么的人换掉。
所有人今年都学到了:harness 比模型更重要。这句话是对的,而它现在有点危险了,因为它把所有人都送去尽可能多地堆 harness。
而修正已经写在数据里了。harness 比模型更重要,而你那套 harness 大部分已经过期了。
← 返回所有文章
Teknium 把 110 个子代理指向 Hermes 的代码库,让它们跑了十五个小时。它们做了 111352 次工具调用,在一个 PR 里产出 4271 次提交,触及 2655 个文件。净变化是减少 167429 行,超过整个源码的三分之一。这个数字底下最主要的改动,是 run_agent.py 终于被拆开了——agent loop、provider 解析、回落链、工具分发、会话状态各自有了自己的文件,而在这之前,任何人想改任何东西,都得先撞上那个一万四千行的单文件。
一支 agent 机群被放进一个代码库,它做的最有价值的一件事,是把其中三分之一扔掉。
这不是一次孤立的表演。它是当下 agent 工具圈里最被少报的那件事最清楚的一个实例:所有人过去一年半攒下来的那些脚手架,正在以比替换速度更快的节奏贬值,而没有人会给你发通知。
证据在同一周里,从四个毫不相干的方向到齐。
有人发了一条读起来像在搞破坏的建议:如果你用 Claude Code 或者任何编程 agent 已经好几个月甚至好几年,立刻全部清空。各个层级的每一个 CLAUDE.md。记忆文件夹、skills、slash 命令、MCP 配置、允许列表、插件、子代理。全部。他的理由是,这些规则是为已经不存在的模型和推理方式写的,而新模型在被那些针对它早已没有的问题的指令打断时,会被压制、会困惑。而最后那句才值得去验证:清空旧记忆带来的性能跃升,比任何一次新模型发布都大。
你可以把这当成一个人的轶事,但 OpenAI 从厂商那一侧公布了完全相同的发现。他们的 GPT-6 Astra 文档写着:以前的模型需要被明确告知去跑测试、去检查自己的工作,而 Astra 自己就会做,所以你 AGENTS.md 里那几行原封不动留着,现在只会制造多余的重复测试。他们还往前走了一步,说过去有帮助的非常详细的指导,现在反而会拖住模型。把这句慢慢再读一遍:上个季度让你的 agent 变好的那些指令,就是这个季度让它变差的那些指令;而你唯一能发现这件事的办法,是把它们删掉,然后看会发生什么。
Anthropic 显然早就知道,而且把它变成了一道工序。Boris Cherny 描述了他们维护 system prompt 的真实方法,粗暴得非常物理:把整个 system prompt 删掉,然后一行一行加回去,搞清楚每一行各自在干什么。每次新模型发布,他们都会剥掉旧指令、重新测一遍 Claude Code。这是几乎每支团队都会跳过的纪律,因为没人愿意动一个正在工作的 prompt,而且这件事很贵。它同时也是对抗「配置在无声腐烂」的唯一防线。
而当 Anthropic 本周把 Claude Code 团队的三个人放到镜头前,他们对产品本身说了同一件事:当模型长过了他们自己的功能,他们就把那个功能删掉。不是标记为废弃,是删掉。
接下来这部分,让这件事不只是一项维护杂活。
DeepSeek V4.1 Flash 的技术报告里有一节,5.3.4,做了一件几乎没人做的事:固定模型,只变 harness。在 DeepSWE 基准上,同一份权重在 OpenCode 下是 65.5,在 Claude Code 下是 69.8,在 mini-SWE 下是 74.2。全表最高分属于其中最极简的那个 harness。而在 DeepSeek 自家 harness 内部——三种配置全由他们自己控制——排序是 Minimal 72.6、Standard 70.5、PTC 67.6。工具越多,分数越低。稳定地、单调地更低。
而整个行业当下正在朝相反的方向建设。本周发布的每一个编排器都在加面积:更多 skill、更多子代理、更多 MCP 服务器、更多插件、更多 hook。而那个受控实验说的是:更简单的接口更稳。
这背后有机制,而且并不神秘。你加进 harness 的每一样东西都占据上下文,而上下文是唯一一个没有跟着能力一起扩张的资源。在 Claude Code 团队工作的 Daisy Hollman 把这点说得很直接:相对于 agent 现在能做的事,上下文窗口几乎没怎么变大,所以难的技能已经不是往模型里塞更多信息,而是决定把什么留在外面。她的类比是在 Arduino 上跑 npm。在笔记本上你可以一直加;而在一个固定预算里,每一条信息都在跟其他每一条竞争。
而这场竞争并不公平,因为参与竞争的大部分东西已经死了。Anthropic 本周发布的 /skill-doctor 命令就是专门用来让你看见这件事的,而演示结果很难堪:二十三个 skill 已加载进会话,一次都没被调用过。它们作为一张清单留在上下文里,每一轮都在消耗 token,不管它们有没有触发。一位开发者对新的 plugin eval 的反应,是所有人的 skill 目录的诚实版本:我一直靠感觉留着一堆半死不活的 skill,而一个成对的分数就是我需要的那个终止开关。另一位干脆说,随着模型变强,他的 skill 基本已经删得差不多了。
所以本周到货的工具,几乎无一例外全是「做减法」的工具。/skill-doctor 是一份该被移除的东西的清单。plugin eval 是一套用来证明某样东西该被移除的机制;而对它最锋利的那个解读把框架说得完全正确:对一个插件来说,「通过」是错误的发布标准,「贡献度」才是——同一个请求,装了打一次分,不装再打一次分,然后相减。如果两边都是 1.0,delta 就是零,你的插件没有表现出任何可测量的价值。而一个负的 delta 意味着它正在把事情弄糟。
本周没有人造一个工具来告诉你「你的配置是不是在帮忙」。好几个人造了工具来告诉你「它是不是在帮倒忙」。
而这把我们带到这一切最让人不舒服的那个版本,它来自唯一一篇肯去实地看的论文。
Ecdysis 研究了 agent 在失败之后自动编辑自己 harness 时会发生什么。性能数字确实漂亮:平均准确率从 58.67% 到 69.56%,Qwen3-8B 在 Airline 上从 35% 到 60%,而用 Qwen3-8B 演化出来的 harness 在没有再次演化的情况下把 Qwen3-32B 从 51.67% 提到了 68.33%。自我改进的 harness 是管用的。
然后研究者做了几乎没人做的那件事:人工检查这些改动。结果是常规自我演化里 60% 的修改,其实是在迁就当前运行的那个模型的怪癖。不是对系统的改进,是针对某一组特定权重的绕行。而在某些运行里,agent 会看到模型仅仅误用了一次某个合法动作,然后就修改 harness 把那个动作全局禁掉,永久地。
一个局部的错误,变成了永久的基础设施。
把这两个结果并排放着,问题的形状就完整了。一个自我改进的循环会以机器的速度自动生成配置债,而它生成的东西大部分是针对那天恰好在跑的那个模型的。然后模型被换掉了。而那些迁就留了下来。它们现在是纯成本,而且跟真正有用的那部分无法区分——因为没人写下过哪个是哪个。
这就是为什么当下最好的动作是减法,也是为什么 Hermes 那个结果是未来的形状而不是一桩奇闻。一支 agent 机群对一个成熟代码库能做的最有价值的事,不是加功能。是找出其中已经不再承重的那三分之一。
所以,给每天在跑这套东西的人,一个可执行的版本。
把你的配置当成有半衰期的东西,而不是一个状态。给你写的每一条规则标上日期,因为有用的问题不是「这条规则对不对」,而是「它是为你现在正在跑的那个模型写的吗」。当一个新模型发布,迁移不只是把模型名字换掉,它还包含一次排定的删除通过;而这件事应该和升级并排写进日历。在你测量出「加进去的东西确实有帮助」之前,优先选最小的 harness,因为我们手上唯一那个受控实验说的是:工具越多,分数越低。而当某样东西出问题时,忍住那个「再加一条规则」的冲动——因为那恰恰是 Ecdysis 抓到的、把一次误用变成永久全局限制的那个动作。
那个已经悄悄变错的框架,是「你在搭一套配置」这个想法。你不是。你在维护一个针对某一组特定权重的迁就层,而那组权重正在每隔几个月被一群根本不知道你写过什么的人换掉。
所有人今年都学到了:harness 比模型更重要。这句话是对的,而它现在有点危险了,因为它把所有人都送去尽可能多地堆 harness。
而修正已经写在数据里了。harness 比模型更重要,而你那套 harness 大部分已经过期了。
评论