跳到主要内容

s01-s06 里什么是真骨架

先说我的结论

s01-s06 这 6 节都重要,但它们重要的方式并不一样。

如果我要判断“哪些是 Claude Code 类 harness 的真骨架”,我会这样分:

  • 核心骨架:s01 Agent Loops02 Tool Uses06 Context Compact
  • 稳定器:s03 TodoWrite
  • 放大器:s04 Subagentss05 Skills

这个排序的意思不是后面几节不值钱,而是没有前面三层,你很难做出一个长期可工作的 coding agent。

s01:循环是心脏

没有 loop,就没有 agent harness。

s01 真正值钱的地方,是把一件经常被神秘化的事讲回了工程事实:

  • 读输入
  • 调模型
  • 看模型要不要调工具
  • 执行工具
  • 把结果塞回下一轮
  • 决定什么时候停

如果这一层没建立起来,后面所有花样都只是在空中加装饰。

s02:工具是外部能力的接缝

s02 重要,是因为它决定 agent 什么时候开始不再只是“会说”,而是“能做”。

我很认同这条资源那个味道很重的判断:加一个工具,本质上就是多一个 handler,不是突然获得魔法。

这个视角很关键。

因为它会逼你把问题想得更清楚:

  • 工具接口是不是足够小
  • 工具结果回写后,模型下一轮到底看到了什么
  • 调工具失败时,应该在哪一层补保护

s03:TodoWrite 不是花活,是防漂移装置

很多人第一次看 TodoWrite 会觉得它只是产品体验优化。

我不这么看。它更像一个非常便宜、但极有效的稳定器。

原因是长任务里最容易坏掉的,不是单轮推理,而是目标漂移:

  • 做着做着忘了原问题
  • 子任务做完了但没人收口
  • 任务中途切换后再回来,状态已经散了

TodoWrite 本质上是在给 agent 一个外显的工作记忆面板。没有它也能跑,但长期任务会更容易散。

s04:Subagents 是上下文隔离,不只是“多开几个 agent”

s04 真正值钱的点,不是“有多个 agent 很酷”,而是它把一个关键工程动作显性化了:上下文隔离。

大任务拆分后,如果所有子问题都继续堆在同一个主上下文里,主 agent 很快就会被无关细节淹没。

Subagents 的意义,是让子任务带着自己的局部上下文完成,再把结果回收到主线,而不是让主上下文无限膨胀。

所以我把它放在“放大器”而不是“最小骨架”。它很重要,但前提是前面的 loop 和 tool use 已经站住了。

s05:Skills 是按需加载知识,不是预塞一切

Skills 的关键不是知识多,而是加载时机对。

这一点对 coding agent 很重要,因为上下文预算是真约束,不是抽象问题。

如果每轮都把所有规则、模板、注意事项预塞进去,模型很快就会被固定成本拖死。Skills 的好处是:

  • 平时不占上下文
  • 需要时再拉入
  • 还能把经验沉淀成结构化能力

所以它也是放大器,不是 loop 那种底层骨架,但它对长期可维护性很关键。

s06:Context Compact 是长期运行的生存条件

如果只让我从 s01-s06 里挑一个最容易被低估的章节,我会选 s06

很多人能接受“Agent 需要 loop”“Agent 会调工具”,却低估了另一个现实:上下文总会满。

没有 compact,前面那些能力很容易只在短任务里好用。任务一长,消息一多,工具结果一堆,系统就开始变慢、变贵、变糊。

所以我把 s06s01s02 放在同一级。它不只是优化项,而是“让前面所有能力还能继续工作下去”的条件。

如果我要自己从零做一个最小 harness

我会按这个顺序做:

  1. s01 loop
  2. s02 tool use
  3. s03 todo
  4. s06 compact
  5. s04 subagents
  6. s05 skills

原因很简单:先让系统能跑,再让它不漂,再让它能活久一点,最后再加杠杆。