Reading Archive
← 返回文章列表
nash_su - e/acc @nash_su · 2026-04-18

Thin Harness, Fat Skills

原文:Garry Tan (@garrytan) | 2026年4月11日 翻译 & 精简版

Steve Yegge 说,用 AI 编程智能体的人比用 Cursor 和 Chat 的人高效 10x 到 100x,比 2005 年的 Google 工程师高效约 1000x。

这是真的数字。我见过。我亲历过。

但大家听到这个数字时,找错了原因。更好的模型。更聪明的 Claude。更多参数。

2x 的人和 100x 的人用的模型完全一样。区别不在于模型,在于架构——而这个架构可以写在一张索引卡片上。

The harness is the product

2026年3月31日,Anthropic 意外把 Claude Code 全部 51.2 万行源代码发布到了 npm registry。我全部读完了。

它证实了我一直在 YC 教的东西:秘诀不在于模型,而在于包裹模型的那层东西。

Live repo context。Prompt caching。专用构建的工具。Context 膨胀最小化。结构化会话记忆。并行子智能体。

这些没有一样让模型更聪明。但它们都在正确时刻给了模型正确的上下文,而没有用噪音淹没它。

那层包装叫做 harness(马具)。

每个 AI 开发者都应该问的问题是:什么放 harness 里,什么不放进去?

答案有一个特定的形状。我叫它:thin harness, fat skills。

五个核心定义

瓶颈从来不是模型的智能。模型已经知道如何推理、综合、写代码。它们失败是因为它们不理解你的数据——你的 schema,你的约定,你问题的特定形状。五个定义解决这个。

  1. Skill files(技能文件)

技能文件是一个可复用的 markdown 文档,教模型如何做某件事。

不是做什么——那是用户提供的。是过程。

大多数人都忽略的关键洞察:技能文件像方法调用一样工作。 它接收参数,用不同参数调用它,同一个过程产生完全不同的能力。

/investigate 技能为例。它有七个步骤:确定数据集范围、建立时间线、对每份文档做 diarize(后面会讲)、综合分析、论证正反两面、引用来源。它接收三个参数:TARGET、QUESTION 和 DATASET。

  • 指向一位安全科学家 + 210万封发现邮件 → 获得判断举报者是否被噤声的医学研究员

  • 指向一家壳公司 + FEC 竞选捐款记录 → 获得追踪协同竞选捐款的法务分析师

同一技能,同七步,同一个 markdown 文件。 技能描述的是判断过程,调用提供的是世界。

Article image

这不是提示词工程,这是用 markdown 作为编程语言、人类判断作为运行时的软件设计。Markdown 实际上比僵硬源代码更完美地封装了能力,因为它用模型本来就在思考的语言描述过程、判断和上下文。

  1. The harness(马具)

Harness 是跑 LLM 的程序,它做四件事:

  • 在循环中运行模型

  • 读写文件

  • 管理上下文

  • 执行安全策略

这就是"薄"的部分。

反面模式是 fat harness with thin skills(厚马具薄技能):

  • 40+ 工具定义吃掉一半上下文窗口

  • 2-5秒延迟的 MCP 往返

  • 把每个端点都包装成独立工具的 REST API 包装器

结果是:3 倍 token、3 倍延迟、3 倍失败率。

正确做法:专用构建的工具,要快且窄。 一个 Playwright CLI 每个浏览器操作 100 毫秒完成,而不是 Chrome MCP 那样 screenshot-find-click-wait-read 要 15 秒——快 75 倍。

Article image

软件不需要做得太娇贵。精确构建你需要的,别做多余的东西。

  1. Resolvers(解析器)

解析器是上下文的路由表。

当任务类型 X 出现时,加载文档 Y。 仅此而已。

  • Skills 告诉模型怎么做

  • Resolvers 告诉模型何时加载什么

例子:开发者改了一个提示词就发布了。没有解析器的话直接上线。有解析器的话,模型先读 docs/EVALS.md——上面写着:运行评估套件、比较分数、如果精度下降超过 2% 就回滚并调查。开发者不知道评估套件存在,但解析器在正确时刻加载了正确上下文。

Garry 的自白:

我的 CLAUDE.md 曾有 2 万行。每个习惯、每个模式、每个被坑过的边缘案例,全都塞进去。模型注意力严重退化。Claude Code 甚至让我删掉一些——这说明已经过度了。

修复后只有约 200 行——只是指向文档的指针。20,000 行知识,按需加载,不污染上下文。

Article image

不是因为模型变聪明了,是因为我停止用噪音盲它了。

  1. Latent vs. Deterministic(潜在空间 vs. 确定性)

系统中的每一步要么是潜在空间,要么是确定的,混淆它们是智能体设计中最常见的错误。

  • Latent space(潜在空间):智能所在的地方。模型阅读、解读、决定。判断、综合、模式识别。

  • Deterministic(确定性):信任所在的地方。同输入,同输出,每次一样。SQL 查询、编译好的代码、算术运算。

LLM 能给 8 人排晚餐座位,考虑性格和社会动态。让它给 800 人排,它会编出看起来合理但完全错的座位表——这是组合优化问题,被强行塞进了潜在空间。

最差的系统把工作放错了边界。最好的系统对此非常残酷。

Article image

  1. Diarization

这是让 AI 对真实知识工作有用的步骤。模型阅读关于一个主题的所有内容,写出结构化档案——从数十或数百份文档中提炼出一页判断。

  • 没有 SQL 查询能产生这个

  • 没有 RAG pipeline 能产生这个

  • 模型必须真正阅读、同时记住矛盾、注意变化和时间线,然后综合出结构化情报

这是数据库查询和分析师简报之间的区别。

Article image

架构

五个概念组合成简单的三层架构:

  • Fat Skills/厚技能:90% 的价值在这里(markdown 程序,编码判断、过程、领域知识)

  • Thin CLI Harness/薄马具:(约 200 行代码,JSON 进,文本出)

  • Your Application/你的应用:确定性基础,可信可靠(QueryDB, ReadDoc, Search, Timeline)

原则是单向的:

  • 把智能推进技能

  • 把执行推进确定性工具

  • 保持马具薄

这样做,每次模型改进,自动改进每个技能,而确定性层完全保持可靠。

技能是永久升级

我给 OpenClaw 的一条指令,引发了比预期更强烈的共鸣:

你不允许做一次性工作。

如果我让你做某件以后还需要再做的事,你必须:

  1. 先手动做 3 到 10 项

  2. 给我看输出

  3. 如果我批准了,把它编纂成技能文件

  4. 如果应该自动运行,就加上 cron

测试:如果我不得不问你第二次,你就失败了。

这不是提示词技巧,这是之前描述的架构。

你写的每个技能都是对系统的永久升级。 永不退化。永不遗忘。凌晨 3 点你睡觉时它也在运行。而且下一个模型发布时,每个技能立刻变好——潜在步骤的判断变好,而确定性步骤完全可靠。

这就是 Yegge 100x 的方法。不是更聪明的模型。是厚技能、薄马具、和把所有东西编纂成规则的纪律。

系统会复合增长。构建一次,永远运行。

核心原则总结

Article image

原文链接:

https://x.com/garrytan/status/2042925773300908103

查看原文 ↗