乐于分享
好东西不私藏

从设计模式到 Harness:软件架构30年,我们一直在解同一道题

从设计模式到 Harness:软件架构30年,我们一直在解同一道题

每一代软件架构的本质,都是用新的抽象去驯服新的复杂性。AI Agent 时代,这个抽象叫 Harness。

如果你是一个写了十年代码的开发者,2025 年第一次认真搞 AI Agent 开发的时候,大概率会有一种强烈的"既视感"——

这混乱的场面,我好像见过。

Prompt 到处散落、上下文管理全靠手动拼接、权限控制形同虚设、调试全靠看日志猜……这不就是 2005 年 Java 企业开发的噩梦吗?那时候 Service 层跟 DAO 层纠缠不清,业务逻辑散落在 Servlet 里,每个项目都在重新发明轮子。

后来我们怎么解决的?架构。

设计模式、分层架构、微服务、数据密集型系统设计……每当复杂性膨胀到人脑管不住的时候,软件工程的回答永远是同一个:加一层抽象,把复杂性关进笼子里。

2026 年,AI Agent 开发遇到的复杂性,终于也迎来了它的架构层。

它叫 Harness

为什么叫这个名字?Harness 的英文原义是马具——缰绳、鞍具、胸带,套在马身上的那整套装备。

一匹野马力量惊人,但没有马具,你骑不了它,更别说让它拉车、犁地、上战场。马具不提供力量,它做的事情是:把力量变得可驾驭、可引导、可用。

AI 模型就是那匹马——强大、但不可控。而 Harness,就是套在模型上的那副缰绳。

这个名字起得精准。因为 Harness 要解决的问题,从来不是"让模型更聪明",而是**"让模型的聪明变得可用"**。

软件架构30年演进到Harness


先说结论:Agent = Model + Harness

理解了这个类比,公式就很直觉了:

Agent = Model + Harness

Model 是那匹马——LLM 负责思考和生成,提供原始智力。

Harness 是那副马具——负责感知环境、调用工具、管理记忆、控制权限、处理异常……一切"让这匹马能在真实世界干活"的装备。

这个公式的重要性,被一个实验彻底证实了。

2025 年,Google DeepMind 在 SWE-bench 上做了一组对比:同一个底层模型,套上不同的 Harness,性能差距巨大。 不是微调的差距,不是 Prompt 的差距——是整个"外壳"工程能力的差距。

换句话说:模型决定了智商上限,Harness 决定了实际表现。

这就像同一台发动机,装在不同底盘上——一个是赛车,一个是拖拉机。发动机一样,上路体验天差地别。

如果你还觉得"做 Agent 就是调 Prompt",这个实验应该能让你清醒过来。Agent 开发的核心战场,早就从模型转移到了 Harness。

Agent = Model + Harness


30 年架构史:每一代都在打同一个怪

为什么说 Harness 不是凭空冒出来的?因为它是软件架构演变的第五章

回看过去 30 年,每一代架构解决的核心问题都是同一个:复杂性管理。只是"复杂性"的来源在不断变化。

第一章:GoF 设计模式(1994)—— 驯服"对象的复杂性"

1994 年,四人帮(Gang of Four)出版了《设计模式》。

那时候面向对象编程刚起步,大家兴奋地创建各种类和对象,然后发现——对象之间的关系很快变成一团乱麻。谁创建谁?谁依赖谁?改一个类,崩一片功能。

GoF 给出了 23 种设计模式:工厂模式管创建、观察者模式管通信、策略模式管变化……

本质是什么?用模式把对象之间的复杂关系"标准化"。 你不再需要每次都从零设计对象交互,有了可复用的"解题套路"。

第二章:企业架构模式(2002)—— 驯服"业务系统的复杂性"

到了 2000 年代初,问题变了。单个类的复杂性搞定了,但整个企业系统变得无比臃肿——几十万行代码缠在一个巨型单体应用里,数据库调用散落各处,业务逻辑和展示逻辑混为一谈。

Martin Fowler 在 2002 年出版了《企业应用架构模式》,提出了分层架构、Repository 模式、工作单元模式等一套体系。

本质:用"分层"和"边界"把企业系统的复杂性隔离开。 表现层、业务层、数据层各管各的,改一层不影响另一层。

第三章:微服务(2010s)—— 驯服"分布式的复杂性"

系统越做越大,单体应用扛不住了。一个服务挂掉,整个系统跟着崩。部署一次,全量发布。团队规模一大,代码冲突不断。

微服务架构在 2010 年代兴起:把大系统拆成独立的小服务,每个服务独立部署、独立扩展、独立演进。Netflix、Amazon 是最早的大规模实践者。

但微服务也带来了新的复杂性——服务发现、负载均衡、链路追踪、分布式事务……一个新的基础设施层应运而生(Service Mesh、API Gateway 等)。

本质:用"拆分 + 基础设施层"来管住分布式系统的复杂性。

第四章:DDIA(2017)—— 驯服"数据的复杂性"

Martin Kleppmann 在 2017 年出版的《设计数据密集型应用》(DDIA)几乎成了分布式系统工程师的圣经。

它解决的核心问题是:当系统的核心瓶颈从"计算"转向"数据"——海量数据的存储、复制、分区、一致性、流处理——该怎么架构?

本质:为"数据密集型"这个新的复杂性来源,提供了系统化的架构思维。

四代架构演进


第五章:Harness(2026)—— 驯服"智能体的复杂性"

现在轮到 AI Agent 了。

2023 年 ChatGPT 爆发后,所有人都开始做 Agent。Demo 阶段一切美好——调几个 API,写几段 Prompt,Agent 就能"自主完成任务"了。

然后问题来了。

跟过去 30 年每一次一模一样——当你试图把 Demo 变成产品,复杂性会指数级爆炸。

Agent 开发中的复杂性长什么样?五个典型深坑:

问题
具体表现
后果
死循环
Agent 反复调用同一个工具,陷入无限循环
烧 token,系统卡死
上下文爆炸
对话越来越长,模型开始"忘记"关键信息
输出质量断崖下跌
权限失控
Agent 自主执行了不该执行的危险操作
删库、发错消息、泄露数据
质量不可控
同一个 Prompt,今天好用明天就不行
无法稳定上线
成本黑箱
不知道一次任务到底烧了多少 token 和 API 调用
账单失控

有没有很熟悉?

  • 死循环 → 像不像没有断路器的微服务调用链?
  • 上下文爆炸 → 像不像没有分页的数据库全表扫描?
  • 权限失控 → 像不像没有 RBAC 的企业系统?
  • 质量不可控 → 像不像没有测试框架的单体应用?

每一代新技术带来的混乱,本质上都是同一种病:复杂性超过了现有工具的管控能力。

而每一次的药方也都一样:在混乱之上,加一层架构。

Harness,就是 AI Agent 时代的那层架构。

Agent深坑与传统架构问题对比


Harness 到底长什么样?

说了半天 Harness 重要,它到底包含什么?

拆开来看,一个完整的 Harness 系统有 6 个核心组件:

1. Agentic Loop(智能体循环)

这是 Agent 的"心跳"。它定义了 Agent 的基本行为模式:感知 → 思考 → 行动 → 观察 → 再思考……

关键不是循环本身,而是循环的控制机制——什么时候该停?出错了怎么回退?陷入死循环怎么打断?

这就像操作系统的进程调度器——不是让程序"跑起来"难,是让它"跑得稳、停得住"难。

2. Tool System(工具系统)

Agent 的能力边界,取决于它能调用什么工具。代码执行、文件读写、API 调用、数据库查询……

Tool System 要解决的问题是:工具的注册、发现、描述、调用、错误处理,以及最关键的——权限控制。

哪些工具可以自动执行?哪些必须人类确认?哪些绝对不能碰?这套权限体系不亚于 Linux 的文件权限模型。

3. Memory & Context Management(记忆与上下文管理)

LLM 有 context window 限制。对话越长,早期信息被挤出窗口。Agent 在长任务中会逐渐"失忆"。

记忆系统要解决:什么信息该保留?什么该压缩?什么该持久化存储?怎么在需要的时候精准召回?

这像不像数据库的缓存策略?热数据留内存,冷数据落磁盘,LRU 淘汰,按需加载。

4. Guardrails(护栏系统)

Agent 不是人——它没有"常识"。你让它优化代码,它可能把整个目录删了重写。你让它发邮件,它可能给错误的人发了敏感信息。

Guardrails 是 Agent 的"安全围栏":内容过滤、操作限制、输出验证、危险操作拦截。

5. Hooks(钩子系统)

在 Agent 执行流程的关键节点插入自定义逻辑——工具调用前后、消息生成前后、错误发生时。

这跟 Web 框架的中间件、Git 的 pre-commit hooks 是同一个思路:在不修改核心逻辑的情况下,扩展行为。

6. Session(会话管理)

管理 Agent 与用户之间的交互状态:对话历史、任务进度、中断恢复、多轮协作。

Harness六大组件架构


三个阶段:从 Prompt 到 Harness

理解了 Harness 的组成,再回头看 Agent 工程的演进,你会发现它经历了三个清晰的阶段:

阶段一:Prompt Engineering(2023)

ChatGPT 刚火的时候,所有人都在研究怎么写 Prompt。

"你是一个资深产品经理……请按以下格式输出……" 各种 Prompt 模板、技巧、框架层出不穷。

这个阶段的隐含假设是:只要 Prompt 写得好,模型就能干好活。

很快大家发现不够。Prompt 控制不了工具调用,管不了上下文窗口,防不住幻觉。

阶段二:Context Engineering(2024-2025)

Prompt Engineering 不够用了,问题出在"上下文"——模型看到了什么,决定了它输出什么。

于是大家开始琢磨:怎么组织上下文?怎么做 RAG(检索增强生成)?怎么管理对话历史?怎么注入系统指令?

Andrej Karpathy 甚至说:"与其叫 Prompt Engineering,不如叫 Context Engineering。"

这个阶段的本质是:从"优化一句话"升级到"优化模型看到的全部信息"。

进步很大,但还是不够。因为 Agent 不只是"看"和"说"——它还要"做"。调用工具、操作环境、管理状态、处理异常……这些不是 Context 能搞定的。

阶段三:Harness Engineering(2026)

当你把 Agentic Loop、Tool System、Memory、Guardrails、Hooks、Session 全部加在一起,你就从"优化上下文"升级到了**"构建完整的智能体运行时"**。

这就是 Harness Engineering。

它跟前两个阶段的关系不是替代,而是包含:

Harness Engineering ⊃ Context Engineering ⊃ Prompt Engineering

Prompt 是一句话,Context 是一页纸,Harness 是整个操作系统。

从Prompt到Context到Harness三阶段


Claude Code:第一个"跑通"的 Harness

说了这么多架构和理论,有没有真正落地的产品?

有。目前做得最好的,是 Anthropic 的 Claude Code

Claude Code 不是一个简单的"AI 编程助手"。它是目前市面上最完整的 Harness 实现——六个组件全部做到了产品级。

来看它怎么解决那五个深坑的:

问题
Claude Code 的 Harness 方案
死循环
Agentic Loop 内置最大迭代次数 + 异常检测 + 自动终止
上下文爆炸
自动压缩历史对话、分层记忆(短期/长期/持久化)、按需召回
权限失控
分级权限模型——读操作自动执行,写操作需确认,危险操作强制拒绝
质量不可控
Guardrails 做输出校验 + Hooks 做流程控制 + 人在环中审核
成本黑箱
Session 级别的 token 统计 + 工具调用计数 + 透明的用量反馈

更关键的是,Claude Code 的 Harness 是开放的。你可以自定义 Hooks、配置权限策略、接入自己的工具、管理自己的记忆系统。

这让人想到一个类比:Claude Code 之于 Agent,就像 Linux 之于服务器。

它不是一个封闭的产品,而是一个可组装、可扩展的基础设施。你在上面搭什么,取决于你自己。

Claude Code Harness架构全景


一张图看懂:30 年架构演变的底层逻辑

现在把整条线串起来:

1994  GoF 设计模式
      复杂性来源:对象交互
      解法:23种标准化模式
          ↓
2002  企业应用架构模式 (Fowler)
      复杂性来源:业务系统膨胀
      解法:分层架构 + 边界隔离
          ↓
2010s 微服务架构
      复杂性来源:分布式系统
      解法:服务拆分 + 基础设施层
          ↓
2017  DDIA 数据密集型系统
      复杂性来源:海量数据
      解法:数据分区/复制/一致性模型
          ↓
2026  Harness Engineering
      复杂性来源:智能体行为
      解法:6组件运行时架构

每一代的模式完全一样:

  1. 新技术带来新能力
  2. 新能力催生新的复杂性
  3. 复杂性膨胀到人脑管不住
  4. 新的架构范式诞生,用抽象"驯服"复杂性
  5. 行业标准化,进入下一轮循环

Harness 不是什么全新的发明。它是软件工程30年来"用架构管理复杂性"这条主线的最新延伸。

理解了这一点,你就不会把 Harness 当成一个流行词汇,而是看到它在技术史中的必然位置。

30年架构演变全链路时间线


给开发者的启发

1. 别再只关注模型了

DeepMind 的实验说得很清楚:同一个模型,不同 Harness,性能天壤之别。

如果你在做 Agent 产品,花 80% 的精力研究"用哪个模型",不如花 60% 在 Harness 工程上。模型是军备竞赛,Harness 是护城河。

2. 你过去的架构经验没有白费

如果你做过微服务——服务发现、熔断、限流那套东西,迁移到 Harness 里几乎是降维打击。

如果你做过分布式系统——状态管理、一致性、容错那些概念,Agent 的记忆系统和会话管理对你来说毫无障碍。

Harness Engineering 不是一个全新的学科。它是传统软件架构能力在 AI 时代的投射。

3. 现在入场,不早不晚

2026 年的 Harness Engineering,大概相当于 2014 年的微服务——概念已经清晰,先行者已经验证(Claude Code),但行业标准还没有固化,开源生态还在早期。

这意味着:你现在积累的 Harness 实践经验,在两年后就是稀缺资产。


结语

回看软件架构这 30 年,最让人感慨的是这条线的一致性。

从 GoF 到 Fowler,从微服务到 DDIA,再到今天的 Harness——我们一直在解同一道题:怎么用抽象驯服复杂性。

工具在变,语言在变,范式在变,但这道题从来没变过。

AI Agent 的出现,带来了一种前所未有的复杂性:你管理的不再是确定性的代码逻辑,而是一个会"思考"、会犯错、会自主行动的智能体。

Harness,是我们目前找到的最好答案。

不一定是最终答案。但如果 30 年的历史能说明什么的话——每一次我们以为"这次不一样"的时候,架构思维最终都会回来。

这次也不例外。


参考资料

  1. 黄佳/Datawhale [万字综述Harness革命:从Prompt Engineering到Harness Engineering]
  2. Gamma et al. [Design Patterns: Elements of Reusable Object-Oriented Software (1994)]
  3. Martin Fowler [Patterns of Enterprise Application Architecture (2002)]
  4. Martin Kleppmann [Designing Data-Intensive Applications (2017)]
  5. Google DeepMind [SWE-bench Harness 对比实验 (2025)]