第一篇:术语、起源与范式迁移

0 阅读16分钟

第一篇:术语、起源与范式迁移

一场变化真正开始深入现实,往往不是先改工具,而是先改语言。

旧语言还在,人们却越来越频繁地感觉到它不够用了:明明问题出在知识入口、验证回路、交接结构和责任边界,团队却还在用 prompt、工具数量和模型强弱来解释成败。语言一旦落后,解法就会跟着落后。

问题就在这里:旧词为什么开始失效,新词为什么会被逼出来,问题重心又为什么会从模型单点表现转向系统组织方式。

在方法出现之前,坐标必须先被立起来。

本篇图示见图 1-1 至图 1-4。

图 1-1 Prompt、Context、Agent、Workflow、Harness 的关系图

flowchart LR
    P["Prompt engineering<br>把意图说清楚"] --> C["Context engineering<br>让模型看见正确的信息"]
    C --> A["Agent engineering<br>让模型能采取动作"]
    A --> H["Harness engineering<br>把目标、上下文、工具、约束、验证、记忆与改进组织成系统"]

这张图里最关键的不是“先后顺序”,而是问题范围的扩大。Prompt engineering 主要解决表达问题;context engineering 处理可见性问题;agent engineering 让模型拥有行动能力;harness engineering 则试图把前面这些能力放进一个可运行、可验证、可治理的整体之中。

本篇证据骨架

本篇核心命题主要证据反向证据或边界本篇要得出的判断
prompt 已不足以解释 agent 成败OpenAI、Anthropic、LangChain 都把问题重心放在环境、验证、交接与工具上,而不只是 promptMETR 提醒我们,即使有 AI 工具,真实生产也可能先变慢争论正在从“怎么问”转向“怎么建系统”
harness 先在工程现场里发生,再被术语命名Mitchell Hashimoto 的经验总结、OpenAI 的内部实践都先有踩坑,再有抽象如果只看术语史,容易把它误写成“某篇文章发明一个词”harness engineering 是被现实逼出来的工程语言
同一模型会因系统差异而表现悬殊LangChain 在固定模型下只改 harness 就显著提分METR 显示真实熟悉仓库里的隐性知识会削弱增益模型能力重要,但系统能力开始主导生产结果

1. 当旧词开始失效

Prompt engineering 在今天仍然重要,但它的解释力已经开始收缩。它擅长处理的是表达问题:如何让模型更准确地理解意图,如何减少歧义,如何通过 few-shot 示例把输出拉近目标。只要任务停留在单轮问答、一段代码补全或一次性生成的边界内,这些技巧就足以解释大部分成败。

真实工作却不是这样。真实工作总是一个多步骤过程:理解目标、寻找背景、调用工具、修改对象、观察反馈、验证结果、必要时跨多个阶段继续推进。只要任务跨越了这些步骤,prompt 就会迅速从“主变量”退回到“众多变量之一”。

原因很简单。prompt 只能回答“我要你做什么”,却无法单独回答另外几个更难的问题:你看见了什么,你能动什么,你怎么知道自己做对了,你失败后该如何恢复。前者属于 context 和 tool 的问题,后者属于 verification、memory 和 improvement 的问题。它们合在一起,才是 agent 的真实工作系统。

这也是为什么很多团队会出现一种共同感受:继续打磨 prompt,边际收益开始下降;但一旦重做知识入口、任务模板、测试链路和反馈回路,整体质量却明显上升。这里并不是语言不再重要,而是语言被纳入了更大的结构。

所以,说 prompt engineering “过时”并不准确;更准确的说法是,它已经不再足以独立解释 agent 时代的生产问题。它仍然是入口的一部分,却不再能够单独构成全部解释(见参考文献[1]、[9]、[10])。

2. 一条更清楚的时间线

术语史最容易被写错的地方,是把它写成“某一天某个人发明了一个词”。真正推动术语变化的,通常不是发明,而是失配。旧词还能解释局面时,新词不会真正站稳;只有当现实反复溢出旧词边界,新术语才会从口头感受慢慢长成可共享的工程语言。

这也是为什么第一篇不能只做定义表。它还必须交代:在什么时间点上,工程团队开始持续感觉到 prompt 已经不够,tool use 已经不够,workflow 这个词也不够。因为只有这条时间线立起来,读者才会明白 harness engineering 不是一个“更潮的说法”,而是一组工程压力长期积累后的命名结果。

如果把过去几年最关键的公开材料排成一条线,大致会看到下面的迁移:

图 1-2 从 prompt 到 harness 的压力时间线

flowchart LR
    A["2023-2024<br>Prompt 仍能解释大多数单轮生成问题"] --> B["2025-05<br>Codex 等执行型系统公开化<br>隔离环境、可执行验证开始上升"]
    B --> C["2025-11<br>Anthropic 强调长时程 agent 的交接、日志与 clean state"]
    C --> D["2026-02-05<br>Mitchell Hashimoto 把反复犯错的问题转成环境机制问题"]
    D --> E["2026-02-11<br>OpenAI 正式把这一层经验命名为 harness engineering"]
    E --> F["2026-02-17 之后<br>LangChain、Thoughtworks、Mollick 等把它外化成行业语言"]

这条时间线里最值得注意的,不是最后那个名字,而是前面的压力如何一点点累积。2025 年 Codex 等系统公开以后,工程团队第一次大规模遇到一种新现实:模型不只是在回答问题,而是在读仓库、调工具、跑验证、跨文件改动、进入带状态的运行环境。这时,很多过去可以被一句 prompt 掩盖的问题都浮出来了,比如目录信息是否可发现、默认命令是否正确、测试是否足够快、失败后能否恢复、权限和边界是否被写清楚(见参考文献[2])。

到了 2025 年底,Anthropic 讨论长时程 agent 的文章把另一层问题推到台前:即使模型单次任务表现不错,只要任务持续时间够长,系统就会很快暴露出 handoff、progress log、clean state 和 thread continuity 的重要性。问题已经不再是“模型会不会做”,而是“系统有没有办法让它持续做、交接做、恢复做”(见参考文献[9])。

2026 年初,Mitchell Hashimoto 用一种更接地气的语言把这种变化说透了:当 agent 反复犯同一种错,真正值得做的不是重复抱怨模型,而是把“防止它下次再错”的机制写进环境。这一步看似朴素,却完成了一次重要转向:错误第一次不只被理解成模型失误,而被理解成环境没有把经验沉成机制(见参考文献[6])。

几天之后,OpenAI 把这层变化明确命名,并公开展示它在团队内部已经长到什么程度:不只是 prompt 和工具,而是 repo 结构、文档布局、评估回路、worktree、可观测性、background cleanup 和默认路径,全部一起被当成一个工作系统来设计(见参考文献[1])。再往后,LangChain 用 benchmark 证据说明固定模型只改 harness 也能显著提分,Thoughtworks 则把它重新拆解为 context、constraints 和 garbage collection,Mollick 又把 harness 推到更广泛的 agent 使用讨论里(见参考文献[7]、[8]、[10])。

所以,术语史如果写得准确,应该不是“谁发明了 harness engineering”,而是:工程现场先持续撞上一类旧词解释不了的问题,后来才终于找到一个更能容纳这些问题的词。 这也是为什么本书要把“术语、起源与范式迁移”写成同一篇,而不是拆开来分别讨论。它们本来就是同一件事。

3. harness engineering 是怎么被逼出来的

重要概念很少是先由理论家发明,再由工程团队照着执行的。Harness engineering 的生成过程恰好相反:工程团队先在真实工作里撞上了同一类问题,才逐渐需要一个更大的词,把这些分散动作收拢在一起。

这些问题都很具体。模型单轮看起来很聪明,一进真实仓库就容易失焦;单次输出看起来不错,一跨会话就开始失忆;一开始像在帮忙,规模一上来却不断复制坏模式。工程团队慢慢意识到,问题不只是模型,而是“围绕模型的东西”:知识是不是可发现,工具是不是闭环,测试是不是够快,边界是不是够清楚,错误信息是不是足够有用,系统是否能观察到 agent 的中间行为。

Mitchell Hashimoto 在 2026 年初回顾自己的 AI 使用历程时,把这种直觉说得很朴素:当 agent 反复犯同一种错,真正值得做的不是继续抱怨模型,而是把“防止它下次再错”的机制写进环境里。这个机制可以是 AGENTS.md,可以是验证脚本,也可以是目录说明和边界约束。这个表述的力量,不在于抽象,而在于它来自工程现场反复踩坑后的反应(见参考文献[6])。

OpenAI 随后把这类反应推进到更极端的位置。2026 年 2 月那篇文章里,他们描述的不是一个“提示词技巧合集”,而是一支几乎不手写代码的团队,如何被迫把文档、规则、工具、测试、可观测性和 repo 结构全部重写成 agent 能工作的环境。文章最值得注意的,不只是那些惊人的产能数字,而是他们明确承认:一份越写越长的 AGENTS.md 很快会失效,真正起作用的是把知识拆进仓库、让 worktree 可运行、把日志和 DevTools 暴露给 agent、再用评分系统和 background cleanup 持续收敛质量(见参考文献[1])。

因此,harness engineering 的传播速度本身就在说明一件事:它命中了一个已经普遍存在、却还没有被清楚命名的问题。这个词的价值,不在于替代所有旧概念,而在于给工程团队一个更高一层的观察视角。

4. 几次典型误判,是怎样把系统问题重新讲回旧语言的

一门新工程语言真正站稳之前,总会先经历一段误判密集期。大家已经感觉到旧解法不够用了,却还没有完全承认问题已经换层,于是会本能地把新问题重新翻译回旧语言。第一篇如果不把这些误判写出来,后面的方法论就很容易显得只是换了一套名词。

最典型的误判至少有四类。

第一类误判,是把一切失败都继续归因于 prompt 不够好。一个 agent 找错目录、漏掉关键上下文、在错误路径上持续推进,团队最容易做的动作仍然是“再改一版 prompt”。但很多时候,真正缺的不是表达,而是知识入口、目录地图、默认命令、退出条件和快速验证。继续只在 prompt 层打磨,等于在错误层级上投入越来越多精力。

第二类误判,是把工具数量当成 agent 成熟度。工具当然重要,没有工具,agent 很难进入真实工作;但工具一多并不自动等于更强。太多团队在早期会把“接了浏览器、接了 shell、接了数据库、接了外部 API”理解成能力升级,却忽略了更难的问题:这些工具之间有没有清晰默认路径,授权带是否明确,错误是否可观察,失败后有没有足够快的恢复手段。工具扩张和系统成熟,不是同一件事。

第三类误判,是把局部成功当成普遍规律。OpenAI、Anthropic 或 LangChain 这样的前沿案例很容易制造一种错觉:似乎只要把模型接进工作流,所有团队都会自然获得高吞吐。METR 的结果恰好提醒我们,现实并不会这么顺滑。真实熟悉仓库里那些隐性知识、局部默契、未文档化边界和脆弱验证,会让 agent 的增益大幅缩水,甚至先表现为摩擦(见参考文献[11])。因此,成功案例不能直接当通用规律,反例也不能直接当全面否定,两者都必须被放回“环境条件”之内理解。

第四类误判,是把 harness engineering 看成“老工程常识换个名字”。这个误判之所以顽固,是因为它表面上很像对的:文档、规则、测试、日志、模板、平台,这些东西过去本来就重要。问题在于,过去它们首先服务人;现在它们还必须服务 agent。对象一旦变化,很多旧实践就不再只是“原样延续”,而是被迫进入新的组织方式。不能被机器发现的知识、不能被系统执行的规则、不能被自动回路使用的验证,都会在 agent 时代暴露出新缺口。

把这几类误判放在一起看,就会发现一个很稳定的模式:每当新问题出现,团队总会先尝试用旧词解释它;而 harness engineering 之所以必要,正是因为旧词已经无法持续容纳这些问题。

图 1-3 典型误判如何把系统问题重新讲回旧语言

flowchart TB
    A["系统问题出现"] --> B["归因给 prompt"]
    A --> C["归因给模型不够强"]
    A --> D["归因给工具还不够多"]
    A --> E["归因给团队还没更努力"]
    B --> F["真正根因继续留在环境里"]
    C --> F
    D --> F
    E --> F

因此,术语不是修辞装饰,而是一次根因重分配。它逼迫团队承认:不是所有失败都发生在输出层,也不是所有成功都来自模型层。很多真正决定结果的变量,早已上移到环境、控制和组织层。

5. 从“模型能力”到“系统能力”

在纯生成场景中,把性能主要归因于模型能力是有道理的。模型更强,系统通常更强;模型更弱,系统通常更弱。进入 agent 场景之后,这种理解开始显得粗糙。

同一个模型,在两个团队手里可能表现出完全不同的生产力。原因不在模型参数,而在系统能力。一个团队有清晰的知识入口、快速测试、明确边界、稳定工具链和持续改进回路;另一个团队的事实散落在会议、聊天记录和个人脑中,验证脆弱,目录混乱,错误信息含糊,权限设计粗放。两者即使使用同一模型,也几乎不在一个竞争平面上。

LangChain 在 2026 年给出的实验,把这件事讲得很直白:使用同一个模型 gpt-5.2-codex,只改 harness,不改模型,就把 Terminal Bench 2.0 的分数从 52.8 拉到了 66.5。这当然不能直接外推到所有真实工作,但它至少提供了一个清楚证据:系统设计本身就足以改变上限(见参考文献[10])。

另一方面,METR 的研究又提醒我们,系统能力不是“给 agent 加更多能力”这么简单。在熟悉自己仓库、依赖大量隐性知识的真实项目里,2025 年初的 AI 工具让资深开发者平均慢了 19%。这说明系统能力还包括另一层判断:什么任务形态适合 agent,什么环境整理程度足以支撑 agent,什么场景里人类专家仍然占据明显上下文优势(见参考文献[11])。

把这两个结果放在一起看,结论就比较稳了:模型能力仍然重要,但真正决定产出能否被兑现的,已经越来越是整套系统能力。知识组织、验证链路、边界清晰度、记忆结构和改进回路,这些东西第一次从“辅助条件”上升成了更接近主导变量的位置。

图 1-4 从模型能力到系统能力的转移

flowchart TB
    A["模型能力<br>推理、生成、工具使用"] --> C["系统能力<br>知识结构、验证、边界、记忆、改进"]
    B["更强模型"] --> D["更强环境<br>把模型能力兑现为稳定产能"]
    C --> E["真实生产结果"]
    D --> E

6. 术语不是名词游戏,而是解题路径

这个领域最大的噪声之一,就是术语混乱。很多时候,人们用不同的词在说同一件事;也常常用同一个词指代完全不同的东西。对工程团队而言,这不是学术问题,而是解题路径问题。词一旦用错,解决方案就会错配。

下面这个区分,是本书后续讨论的坐标系:

名词它首先解决什么问题典型误判
Prompt engineering如何把意图说清楚把所有失败都归为“prompt 不够好”
Context engineering模型究竟看见什么以为“多给一点信息”就等于更好
Agent engineering模型怎样拥有行动能力以为工具越多越强
Workflow automation多步骤怎么被串成流程以为流程存在就等于系统可靠
Harness engineering如何把目标、上下文、工具、约束、验证、记忆与改进组织成系统把系统问题重新讲回单点工具问题

这个分层之所以重要,是因为它能帮助团队识别问题到底在哪一层。一个 agent 明明拥有正确工具,却总从错误文件开始改,很可能是 context 问题;一个 agent 输出格式正确却行为错误,更像 verification 问题;一个 agent 单次任务表现不错,跨会话后持续退化,则大概率是 memory 和 improvement 的问题。

如果没有清楚的分层,团队就很容易陷入一种昂贵模式:发现问题后,下意识去改 prompt、换模型、加工具,结果却始终没有碰到根因。术语看似只是语言,实际上决定了解法。

7. 为什么本书坚持用“harness engineering”

本书选择“harness engineering”作为总框架,不是为了追赶热词,而是因为它最能容纳这组变化。它允许我们在一个统一视角下同时讨论:

  • 目标如何被定义
  • 知识如何被组织
  • 工具如何被接入
  • 边界如何被编码
  • 验证如何被运行
  • 记忆如何被延续
  • 经验如何被改进

也只有在这个视角下,我们才不至于把所有新问题都重新说回“prompt 怎么写”或“模型够不够强”。

问题先在这里被校准。再往下走,讨论就不能只停在命名上了;那个“登录与邀请流程改造”的小案例,也会在下一篇里被真正拆开,变成一条能反复照见结构的贯穿线。

本篇小结

这一章的意义,不在于再发明一个术语,而在于把观察角度从模型单点表现推向系统组织方式。

旧词为何失效,新词为何出现,压力如何从表达问题一路传到验证、交接与责任问题,坐标到这里才算真正立稳。下一篇会把这些压力继续拆开,落到一套可设计、可修补的七层系统上。