🚀 Harness Engineering(挽具工程):给 AI 套上"缰绳"——从千里马到可靠生产力的工程化之路
摘要:2025 年下半年,Claude Code 接棒 Cursor,AI Coding 从"辅助编程"迈入"自主工程"时代。背后的核心技术范式,就是 Harness Engineering(挽具工程)。本文将深入解析 LLM 的四大结构性缺陷、Harness 的四层核心架构、记忆层的工程实践,以及这条技术路线的未来图景。
一、引言:千里马也需要挽具
先讲一个比喻:
🐴 想象你有一匹马。这匹马非常强壮,日行千里不在话下。但真正让马为你干活的,是什么?
是 Harness——挽具。缰绳、马鞍、马镫、嚼子……这些东西统称为 Harness。
没有挽具的马,再强壮你也骑不上去、控制不了方向、没法让它拉车耕地。
当下的 LLM 就像这匹千里马——非常智能,但不代表能给出一个好的输出。
这个比喻是 Harness Engineering 整个方法论的起点。它揭示了一个核心认知:
模型是引擎,Harness 就是装着 V8 引擎的车。引擎再牛,没有好的变速箱、没有刹车、没有仪表盘,这个车没法上路。
二、AI 工程化的三次浪潮
在深入 Harness Engineering 之前,我们先看清这条技术路线的演进脉络:
Prompt Engineering Context Engineering Harness Engineering
(2022-2023) → (2024-2025) → (2025-2026)
写提示词 补上下文 套挽具
2.1 Prompt Engineering(2022-2023)
- 关键词:提示词设计、Few-shot、Chain-of-Thought
- 局限:不确定性高,幻觉频发,"手艺活"而非"工程化"
- 底层模型:GPT-3.5 级别
2.2 Context Engineering(2024-2025)
- 关键词:上下文注入、RAG、结构化信息
- 突破:让 LLM 基于"给定的事实"而非"训练记忆"来回答
- 代表产品:Cursor(将整个代码库作为上下文)
2.3 Harness Engineering(2025-2026)
- 关键词:记忆层、工具编排、确定性交付、工程护栏
- 突破:让 LLM 从"一次性问答"升级为"可持续的工程系统"
- 代表产品:Claude Code、Codex、Hermes
- 行业格局:
- Claude Code 接棒 Cursor,成为 AI Coding 领域新王
- OpenClaw(小龙虾)、Hermes(爱马仕) 主攻办公自动化赛道
- 腾讯 CodeBuddy / WorkBuddy + 微信生态,发力办公自动化
- LLM 终于在 2025-2026 年走向成熟,企业全面拥抱 AI 数字化
三、Harness Engineering 不是什么
在正面定义 Harness Engineering 之前,先澄清两个常见误解:
❌ 误解一:Harness 是一个具体框架或工具
Harness Engineering 不是一个 npm 包,不是一个开源项目,不是一个你可以 pnpm install harness 的东西。
它是一个方法论总称——围绕 LLM 构建的一整套工程基础设施的统称。就像"微服务架构"不是一个具体的框架,而是一套设计原则和基础设施的组合。
❌ 误解二:Harness 就是升级版 Prompt Engineering
Harness 比 Prompt Engineering 大一个量级。打个比方:
- Prompt Engineering 是给马喂更好的草料(让模型本身表现更好)
- Context Engineering 是给马指路(告诉模型应该关注什么信息)
- Harness Engineering 是给马装上缰绳、马鞍、马车(让模型的能力可以被驾驭、被编排、被交付)
四、LLM 的四大结构性缺陷
要理解 Harness Engineering 解决什么问题,首先需要深入认识 LLM 的结构性缺陷——这些不是 bug,而是 LLM 作为概率预测模型的固有特质。
4.1 缺陷一:无状态(Stateless)
┌─────────────────────────────────────┐
│ 对话一:"帮我写一个登录接口" │
│ AI:✅ 好的,这是代码... │
├─────────────────────────────────────┤
│ 对话二:"给它加上 JWT 鉴权" │
│ AI:❓ "它"是什么?我不知道... │
└─────────────────────────────────────┘
每次对话结束后,LLM 什么都不记得。
它不知道你上一轮聊了什么,不知道你的项目用了什么技术栈,不知道你团队的编码规范是什么,不知道你上次修复了哪个 Bug。
这就是为什么你需要反复解释相同的背景——因为每次对话对 LLM 来说都是一张白纸。
4.2 缺陷二:无法主动操作外部世界
LLM 只能生成文字(或图片/音频),无法主动与外部世界交互。
它不能自己读文件、不能自己写代码运行、不能自己查数据库、不能自己打开浏览器。
在复杂的 AI 项目中,LLM 需要的工具远不止「读写文件」和「浏览器」这么简单:
- MCP(Model Context Protocol):连接各种外部工具和数据源
- Skills:可复用的能力模块
- Loop:循环执行和自我修正
- Memory:跨对话的记忆持久化
这些工具的多寡、质量、编排方式,直接决定了 LLM 的能力边界。如何管理、编排、协调这些工具,正是 Harness Engineering 要解决的核心问题。
4.3 缺陷三:输出是概率性的
同样的 prompt → 第一次:输出 A
第二次:输出 B(可能完全不同)
第三次:输出 C(又是一个新答案)
"文无第一,武无第二。"
- 在文章生成、创意写作等场景("文"),没有唯一正确答案,概率性输出可以接受甚至欢迎。
- 但在代码生成、数据处理等场景("武"),你需要的是确定性——同样的输入必须产生功能等价的输出。
传统软件工程的核心特征就是确定性交付:输入 A,必然输出 B。但 LLM 本质上是一个概率系统,输入 A,可能输出 B、C、D……
如何用概率性的引擎实现确定性的交付? 这是 Harness Engineering 要解决的核心矛盾。
4.4 缺陷四:上下文窗口有限
即使是最先进的模型也有处理上限:
- DeepSeek-V4-Flash:100 万 Tokens 的超长上下文
- 但百万级 Token 仍然无法容纳大型项目的完整代码库 + 文档 + 对话历史
这意味着:你不能把所有信息都塞给 LLM,它处理不了。 你需要一个机制来决定——在有限的上下文窗口中,装入哪些最关键的信息?
4.5 四大缺陷小结
| 缺陷 | 本质问题 | 工程挑战 |
|---|---|---|
| 无状态 | 每次对话是孤立的 | 如何让 AI 拥有"记忆"? |
| 无法操作外部 | 只能生成,不能行动 | 如何让 AI 使用工具? |
| 概率性输出 | 同一输入,不同输出 | 如何实现确定性交付? |
| 上下文有限 | 处理能力有上限 | 如何选择性注入信息? |
Harness Engineering 要做的,就是在这些基础性质之上,建造一套工程化系统,让模型可以完成原本无法独立完成的任务。
五、Harness 的四层核心架构
根据当前的技术实践和发展趋势,Harness Engineering 可以抽象为四个核心层次:
┌──────────────────────────────────────────────────┐
│ Harness Engineering │
│ │
│ ┌────────────────────────────────────────────┐ │
│ │ Layer 1: 记忆层 (Memory) │ │
│ │ 解决「无状态」:让 AI 记住该记住的 │ │
│ └────────────────────────────────────────────┘ │
│ ┌────────────────────────────────────────────┐ │
│ │ Layer 2: 工具层 (Tool Orchestration) │ │
│ │ 解决「无法行动」:让 AI 调用外部工具 │ │
│ └────────────────────────────────────────────┘ │
│ ┌────────────────────────────────────────────┐ │
│ │ Layer 3: 控制层 (Control & Guard) │ │
│ │ 解决「概率性」:规则、护栏、安全约束 │ │
│ └────────────────────────────────────────────┘ │
│ ┌────────────────────────────────────────────┐ │
│ │ Layer 4: 编排层 (Orchestration) │ │
│ │ 解决「上下文有限」:Loop、Skills、流程编排 │ │
│ └────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────┘
5.1 记忆层(Memory Layer)
核心目标:让无状态的 LLM 拥有"记忆"。
记忆层是 Harness Engineering 中最基础、最优先要掌握的一层。它回答一个根本问题:每次对话时,AI 应该"知道"什么?
记忆层的实现形式包括:
- claude.md / agent.md:以文件系统为载体,描述项目核心约束、技术栈、开发规范、目录结构
- RULES.md / CONVENTIONS.md:团队编码规范
- Memory 文件系统:持久化的用户偏好、项目历史决策
5.2 工具层(Tool Orchestration)
核心目标:让 AI 能够操作外部世界。
工具层管理 LLM 可以调用的所有外部能力:
- 文件操作:读、写、编辑
- Shell 执行:运行命令、启动服务
- MCP Server:连接数据库、API、第三方服务
- 浏览器:获取网页、执行前端操作
工具层的挑战不在"能调用",而在如何管理、编排、约束这些工具——就像一个操作系统管理硬件资源一样。
5.3 控制层(Control & Guard)
核心目标:将概率性输出约束在安全、可靠的范围内。
控制层相当于传统软件中的护栏(Guardrails):
- 规则引擎:定义什么能做、什么绝对不能做
- 安全约束:防止危险操作(如
rm -rf /、泄露密钥) - 输出校验:检查 AI 输出是否符合预期格式和质量标准
- 权限控制:不同场景下 AI 能做什么、不能做什么
5.4 编排层(Orchestration)
核心目标:在有限的上下文窗口中,高效完成复杂任务。
编排层负责流程级别的控制:
- Loop Engineering:循环执行 + 自我修正,直到输出满足要求
- Skills 系统:可复用的能力模块,按需加载
- 工作流编排:多步骤任务的自动串联
- 上下文窗口管理:决定在当前任务中加载哪些信息
六、记忆层深度解析:Harness 的基石
在所有四层中,记忆层是最基础、最优先要掌握的一层。因为没有记忆,其他三层都无从谈起——一个连项目背景都不知道的 AI,你给它再多工具也没用。
6.1 记忆层要解决的核心问题
Vibe Coding(氛围编程)的矛盾:
你不停地用自然语言描述需求
↓
AI 不停地生成代码
↓
但 AI 不知道你的项目规范 ← 这就是"无状态"的代价
↓
每次对话都是一张白纸
↓
代码碎片化、风格不一致、Bug 反复出现
Vibe Coding 的本质问题是:没有记忆的 AI,只能进行"一次性"的代码生成,无法形成累积效应。
6.2 claude.md:记忆层的核心载体
claude.md 是目前 Claude Code 生态中记忆层的主要实现方式。它的角色可以类比为:
🗺️ claude.md 是给 Agent 的导航地图。告诉它最关键的约束和规则,每次对话都要带上。
claude.md 中应该包含什么?
┌──────────────────────────────┐
│ claude.md 内容 │
│ │
│ ✅ 项目功能描述 │
│ 这是做什么的项目? │
│ │
│ ✅ 技术栈 │
│ 用了哪些语言、框架、库? │
│ │
│ ✅ 开发规范 │
│ 代码风格、命名约定、提交规范 │
│ │
│ ✅ 文件/目录结构 │
│ 代码组织方式、模块划分 │
│ │
│ ✅ 关键约束 │
│ 绝对不能做的事、必须遵守的规则│
│ │
│ ❌ 不需要的细节 │
│ 每次对话都会加载的内容 │
│ 要保持精炼,只放最关键的信息 │
└──────────────────────────────┘
6.3 /init 命令:记忆初始化的工程实践
在 Claude Code 中,/init 命令是记忆层的关键工具:
/init # 初始化/更新项目记忆
它的工作流程:
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 分析当前项目 │ ──→ │ 提取核心信息 │ ──→ │ 生成/更新 │
│ 目录结构 │ │ 技术栈 │ │ claude.md │
│ 依赖配置 │ │ 代码规范 │ │ │
│ 代码风格 │ │ 项目架构 │ │ │
└──────────────┘ └──────────────┘ └──────────────┘
关键实践原则:
-
项目初期就执行
/init——不要等到写了一堆代码后再补。项目记忆应该从一开始就建立。 -
每次 claude.md 变更后,再次执行
/init更新——记忆需要迭代,不是一次性的。当你发现 AI 反复犯错时,往往是因为记忆中没有相关的约束。 -
记忆要精炼,不是越长越好——每次对话都会加载记忆内容,过长的记忆会消耗宝贵的上下文窗口。只放最关键、最高频的信息。
6.4 记忆层的工程价值
有记忆层:
对话1: "帮我写登录" → AI 知道用了 JWT、TypeScript、Prisma
对话2: "加个注册" → AI 仍然知道用了 JWT、TypeScript、Prisma
对话3: "优化一下" → AI 还是知道用了 JWT、TypeScript、Prisma
没有记忆层:
对话1: "帮我写登录" → AI:好的!(你得解释技术栈)
对话2: "加个注册" → AI:🤷 你是谁?什么项目?
对话3: "优化一下" → AI:🤷🤷 你到底在说什么?
记忆层让 LLM 从"金鱼记忆"变成"大象记忆"——虽然不是真的记住了一切,但至少记住了真正重要的。
七、案例驱动:不要急于生成代码
Harness Engineering 有一条核心实践哲学:
⚠️ 不要急于生成代码。先建好 Harness。
7.1 新项目的正确启动顺序
步骤 1: 创建 claude.md
├── 写清楚项目是做什么的
├── 列出技术栈
├── 定义开发规范
└── 描述目录结构
步骤 2: 执行 /init
└── 让 AI 理解并内化你的项目记忆
步骤 3: 开始开发
└── 每次 prompt,AI 都会带上你的项目记忆
↓
输出更一致、更符合规范
7.2 已有项目如何迁移
对于已经开发了一段时间、但还没有建立 Harness 的项目:
步骤 1: 在项目根目录创建 claude.md
步骤 2: 回顾项目中反复出现的问题 → 写入约束
步骤 3: 执行 /init 初始化记忆
步骤 4: 后续每个新功能都基于 Harness 开发
7.3 Harness 记忆维护的节奏
- 日常维护:每次发现 AI 犯了重复的错误时 → 检查是不是记忆中没有相关约束
- 迭代更新:技术栈变更、架构调整时 → 更新 claude.md → 再次
/init - 定期审查:每隔一段时间回顾记忆文件 → 删除过时信息 → 补充新约束
八、行业全景:2025-2026 的 AI 工程化竞争格局
Harness Engineering 不是学术概念,而是正在发生的产业变革。以下是当前这个赛道的主要玩家和格局:
AI Coding 赛道
| 产品 | 定位 | 核心特点 |
|---|---|---|
| Claude Code | 终端原生 AI 编程助手 | Harness 理念的标杆实现,深度工程化 |
| Cursor | 基于 VSCode 的 AI IDE | Context Engineering 的开创者 |
| Codex | OpenAI 的编程代理 | 与 GPT 生态深度整合 |
办公自动化赛道
| 产品 | 定位 | 核心特点 |
|---|---|---|
| Hermes(爱马仕) | 企业级办公 AI 助手 | 记忆管理 + 工具编排 + 企业集成 |
| OpenClaw(小龙虾) | 办公自动化 | 流程自动化 + AI 编排 |
| CodeBuddy / WorkBuddy | 腾讯 AI 编程/办公助手 | 微信生态整合 + 企业办公场景 |
底层技术趋势
- MCP(Model Context Protocol):定义 LLM 与外部工具交互的标准协议,是工具层的基石
- Skills 生态:可复用的 AI 能力模块,类似 npm 之于 Node.js
- Loop Engineering:循环执行 + 自我修正,实现确定性交付的关键技术
- FDE(AI 工程交付):LLM 走向成熟的标志——从"AI 生成"到"AI 交付"
九、总结与展望
核心要点回顾
-
Harness Engineering ≠ 框架或工具——它是围绕 LLM 构建工程化基础设施的方法论总称。
-
Harness 解决 LLM 的四大结构性缺陷:
- 无状态 → 记忆层
- 无法行动 → 工具编排层
- 概率性 → 控制层(护栏、规则)
- 上下文有限 → 编排层(Loop、Skills)
-
记忆层是 Harness 的基石——claude.md +
/init是现阶段最务实的实践路径。 -
不要急于生成代码,先建好 Harness——这跟"磨刀不误砍柴工"是同一个道理。
-
Harness Engineering 是 AI 工程化的最终形态——目标是实现类似传统软件的确定性交付,让 AI 从"能干活"升级为"能靠谱地干活"。
从 Prompt 到 Harness:一张全景图
┌──────────────────────────────────────────────────────┐
│ AI 工程化的进化 │
│ │
│ Prompt Engineering │
│ "怎么写好提示词" │
│ ↓ │
│ Context Engineering │
│ "给 AI 什么信息" ← RAG 是最佳实践 │
│ ↓ │
│ Harness Engineering │
│ "如何驾驭 AI" ← 本文主题 │
│ │
│ Memory + Tools + Control + Orchestration │
│ ‖ │
│ 确定性、可靠、可复用的 AI 工程系统 │
└──────────────────────────────────────────────────────┘
千里马常有,而伯乐不常有。但有了好的 Harness,不需要伯乐——人人都能驾驭千里马。
附录:Harness Engineering 概念速查表
| 概念 | 一句话解释 |
|---|---|
| Harness | 比喻:让 LLM 这匹千里马能被驾驭的"缰绳+马鞍"系统 |
| Memory Layer | 解决无状态问题:claude.md + /init |
| Tool Orchestration | 解决无法行动:MCP + Skills + Shell |
| Control & Guard | 解决概率性输出:规则 + 护栏 + 安全约束 |
| Orchestration | 解决上下文限制:Loop + Skills + 流程编排 |
| Vibe Coding | 无记忆的自然语言编程(氛围编程) |
| FDE | AI 工程交付——确定性、可靠地交付 AI 产出的工程 |