Harness Engineering(挽具工程):给 AI 套上"缰绳"——从千里马到可靠生产力的工程化之路

1 阅读13分钟

🚀 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   │
│ 依赖配置      │     │ 代码规范     │     │             │
│ 代码风格      │     │ 项目架构     │     │             │
└──────────────┘     └──────────────┘     └──────────────┘

关键实践原则:

  1. 项目初期就执行 /init——不要等到写了一堆代码后再补。项目记忆应该从一开始就建立。

  2. 每次 claude.md 变更后,再次执行 /init 更新——记忆需要迭代,不是一次性的。当你发现 AI 反复犯错时,往往是因为记忆中没有相关的约束。

  3. 记忆要精炼,不是越长越好——每次对话都会加载记忆内容,过长的记忆会消耗宝贵的上下文窗口。只放最关键、最高频的信息。

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 IDEContext Engineering 的开创者
CodexOpenAI 的编程代理与 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 交付"

九、总结与展望

核心要点回顾

  1. Harness Engineering ≠ 框架或工具——它是围绕 LLM 构建工程化基础设施的方法论总称。

  2. Harness 解决 LLM 的四大结构性缺陷:

    • 无状态 → 记忆层
    • 无法行动 → 工具编排层
    • 概率性 → 控制层(护栏、规则)
    • 上下文有限 → 编排层(Loop、Skills)
  3. 记忆层是 Harness 的基石——claude.md + /init 是现阶段最务实的实践路径。

  4. 不要急于生成代码,先建好 Harness——这跟"磨刀不误砍柴工"是同一个道理。

  5. 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无记忆的自然语言编程(氛围编程)
FDEAI 工程交付——确定性、可靠地交付 AI 产出的工程