🐎 Harness Engineering:大模型时代的"马鞍"------从记忆层开始,让AI真正为你所用
"模型是引擎,Harness 就是装着 V8 引擎的车。引擎再强大,若没有好的变速箱、刹车、仪表盘,车也没法上路。"
📌 引入
AI 走过数十年,我们经历了从 Prompt Engineering (怎么跟 AI 说话)到 Context Engineering (怎么给 AI 搭舞台)的演进。而今天,我们正站在下一个拐点上------Harness Engineering。
如果说 Prompt 是"跟马对话",Context 是"给马指路",那么 Harness 就是那副马鞍、缰绳和马蹄铁------让这匹大模型之马,能稳稳当当地载着你跑起来,而不是撒欢乱窜。
本文定位:讲解 Harness 的第一层核心------Memory(记忆层)。后续将陆续覆盖工具层(Agent / MCP / Skills)、控制层(Plan / 测试驱动)、检索层(RAG / 压缩策略)。
📖 适合读者 :正在使用或评估 Claude Code、CodeBuddy 等 AI Agent 工具的开发者,希望系统理解"如何在模型之上搭建工程化驾驭体系"。
🌊 产业背景:AI Agent 浪潮
在深入 Harness 之前,先看当前 AI 赛道已有哪些关键玩家在实践这套思路------从编码到办公,从 CLI 到桌面端,AI Agent 正在从"聊天玩具"进化成"数字员工"。
🧑💻 Claude Code 接棒 Cursor
| 工具 | 模式 | 角色 |
|---|---|---|
| Cursor | AI 辅助人写代码(IDE 插件) | 人主导,AI 配合 |
| Claude Code | AI 自主完成开发闭环(CLI Agent) | 人定目标,AI 执行 + 验证 |
本质跃迁:从 Prompt Engineering (学如何跟 AI 说话)→ Harness Engineering(打造驾驭 AI 的缰绳)
🦞 小龙虾 OpenClaw & Hermes --- 办公赛道
- OpenClaw(养虾):开源桌面 Agent,万能工具箱。文件整理、浏览器操作、文档生成。大厂封装版:腾讯 QClaw、字节 ArkClaw、讯飞 AstronClaw。
- Hermes(养马) :Nous Research 开源,进化型数字合伙人。三层持久记忆、Skill 自进化、跨会话记住用户偏好。日 Token 调用量 2910 亿全球登顶。
💡 选型建议:日常办公选养虾,长期培养选养马。
🐧 腾讯 --- CodeBuddy & WorkBuddy
- CodeBuddy(编码) :业内首个插件+IDE+CLI 三形态,比肩 Claude Code。腾讯内部 85% 覆盖率,AI 代码生成占比 43% ,自举实践 90% 代码由 AI 生成。
- WorkBuddy(办公):系统级 AI 桌面工作台,2026.3 上线。Craft/Plan/Ask 三模式,7×24 数字员工。日活登顶国内效率 AI 榜首。
战略:编码+办公双轨,共享混元大模型 + Memory + Rules + Skills + MCP 底层生态。
🧠 什么是 Harness Engineering?
想象你有一匹马,强壮有力,但它不能自己跑。你需要用马鞍、缰绳等工具来控制它,才能让它真正为你所用。这就是 Harness Engineering。
- 🌱 当下的 LLM 很智能,但不代表能稳定给出好的输出 ,没有质的改变。所以需要设计一套技术架构------Harness。
- 🧩 Harness 主要研究怎么在模型外面套上一层"马鞍"、"缰绳"等工具,让模型的能力可以稳定、重复地去驾驭。
- 📈 Harness 不再是简单的提升 prompt 质量,它比 prompt 大一个量级。
🔍 在了解 Harness 之前,先要了 LLM 有哪些结构性的缺陷
| 缺陷 | 说明 |
|---|---|
| 1. Stateless 无状态 | 每次对话结束,它都会忘记之前内容,下次对话完全"重新认识你"。这是 LLM 最根本的缺陷------它是纯函数 output = f(input),没有内部状态。 |
| 2. 无法主动操作外部世界 | LLM 只有"嘴",没有"手"。做复杂项目时不只有读写、浏览器等常规工具,可能还有 MCP、Skills......需要管理这些工具。 |
| 3. 随机性 | 输出是概率性的,同样的输入,可能产出不同的输出。文无第一(文章生成等),武无第二(Coding 生成?赛道)。 |
| 4. 上下文限制 | 不能无限地处理信息;而且不只是"装不下"------塞得越多,中间信息越容易被忽略(Lost in the Middle)。deepseek-v4-flash 处理上限:1M(100万token)的超长上下文处理能力。 |
以上四个是 LLM 的自身特质。这四种特质是天花板,也正是 Harness Engineering 存在的根本原因。
Harness 要做的,就是在这些基本的性质上,建立一套系统(工程化手段),让模型可以完成原本无法独立完成的任务。
🧩 Harness 四层核心
| 层级 | 解决的缺陷 | 核心手段 |
|---|---|---|
| 1. 记忆层 | 无状态 | CLAUDE.md, Memory, Rules |
| 2. 工具层 | 被动生成 | MCP, Skills, Hooks, Agent |
| 3. 控制层 | 随机性 | Plan模式, 测试驱动, 人审批 |
| 4. 检索层 | 上下文限制 | RAG, Grep/Glob, 摘要压缩 |
四层的关系是递进的:记忆层是地基------没有记忆,AI 不知道"我在哪、要干什么";工具层是手足------有了记忆才能指挥手脚做事;控制层是缰绳------确保手脚不乱动;检索层是眼睛------让 AI 在需要时能精准获取外部信息。
🧭 第一层:Memory 记忆层
1. 为什么 Memory 是 Harness 的第一优先级?
LLM 的本质是纯函数:output = f(input)。每次对话结束,函数重置。
❌ 没有 Memory:
- 每次对话你都要重新解释项目背景、技术栈、编码规范
- vibe coding 氛围编程(即完全靠自然语言在每次对话中重新描述上下文来驱动 AI 编程,效率低且不可重复)
- AI 不知道你的偏好,同一个问题每次给出风格不同的答案
- 团队协作时,每个人都要单独"教" AI 一遍规则
✅ 有了 Memory:
- AI 启动时自动加载项目规则,一次定义,永久生效
- 跨会话记住你的偏好,越用越懂你
- 团队共享同一套记忆,协作标准统一
记忆层是 Harness 的地基。 首先要掌握的 Harness 记忆模块的核心,是导航地图------告诉 Agent 最关键的约束和规则,每次带上。
2. 记忆分层架构
不是所有记忆都应该常驻上下文。记忆需要分层管理,按需注入。
scss
┌──────────────────────────────────────────────────┐
│ 记忆层级 │
├─────┬────────────────┬───────────────────────────┤
│ L1 │ 会话记忆 │ 当前对话窗口内的所有消息 │
│ │ (Session) │ 对话结束即消失 │
├─────┼────────────────┼───────────────────────────┤
│ L2 │ 项目记忆 │ CLAUDE.md / agents.md │
│ │ (Project) │ 每次对话自动注入 │
│ │ │ 项目规范、技术栈、目录约定 │
├─────┼────────────────┼───────────────────────────┤
│ L3 │ 持久记忆 │ Memory 文件系统 │
│ │ (Persistent) │ 跨会话存储,按需检索注入 │
│ │ │ 用户画像、反馈偏好、项目背景 │
├─────┼────────────────┼───────────────────────────┤
│ L4 │ 知识记忆 │ 向量数据库 / RAG │
│ │ (Knowledge) │ 外部文档库、API文档 │
│ │ │ 语义检索后注入上下文 │
└─────┴────────────────┴───────────────────────────┘
🧵 L1 会话记忆
当前对话的所有消息。窗口有限,对话结束消失。这是 LLM 自身的"工作内存"。
🧵 L2 项目记忆(最核心)
- CLAUDE.md :项目级规则文件,每次对话自动加载到上下文。
- 项目功能描述、技术栈、目录结构
- 编码规范、命名约定、架构约束
- 禁止事项(如"不要引入第三方库")
- agents.md:子 Agent 的行为规则
- 🔄 每当 CLAUDE.md 有更新,都要重新
/init初始化记忆,更新缓存
🧵 L3 持久记忆(跨会话)
Claude Code 的 Memory 系统会自动写入和检索:
- user:用户角色、技能水平、职责
- feedback:行为偏好------"不要做什么"和"一直这样做"
- project:项目背景、当前目标、约束条件
- reference:外部资源位置(如"bug 跟踪在 Linear 项目 INGEST")
工作方式:
MEMORY.md是索引(一行一条,极精简,每次自动加载),具体内容存储在独立 memory 文件中(按需注入)。索引常驻,细节按需。
🧵 L4 知识记忆
外部知识库,通过 RAG 检索。不常驻上下文,需要时才查。
3. 分层 → Claude Code 工具映射
将四层记忆落实到 Claude Code 的具体功能:
| 层级 | 对应功能 | 操作 |
|---|---|---|
| L1 会话 | 上下文窗口 | 自动管理,无需手动操作 |
| L2 项目 | CLAUDE.md | /init 初始化,手动编写规则后 /init 刷新 |
| L2 项目 | agents.md | 为子 Agent 定义专属规则 |
| L3 持久 | MEMORY.md + memory/ 目录 | AI 自动写入和检索,也可用 /memory 查看 |
| L4 知识 | MCP 连接外部知识库 | 配置 MCP Server 接入企业文档库、API 文档等 |
4. 记忆注入流程
markdown
新对话启动
↓
自动加载 CLAUDE.md(L2 项目记忆,每次都带,约 1-2K token)
↓
自动加载 MEMORY.md 索引(L3 持久记忆,~1K token)
↓
匹配当前问题相关的 Memory 文件 → 注入上下文(L3 细节,按需)
↓
用户提问 ← AI 已有完整上下文
↓
对话中学习到新偏好 → 写入 memory 文件(L3 更新)
↓
下次对话自动生效
🔑 关键设计原则:
- 索引与内容分离:MEMORY.md 只存一行摘要,具体内容在独立文件。避免一次性塞太多
- 按需加载:不是所有记忆都常驻上下文,只注入当前对话相关的
- 自动更新:好的记忆系统应该是"边用边记",不需要用户手动管理
5. Memory 案例驱动 🎯
第一步:初始化项目记忆
/claude打开 Claude Code/init初始化项目的记忆(十分重要 ) 每当 CLAUDE.md 有更新,都要重新初始化记忆,更新缓存记忆
第二步:创建 CLAUDE.md 文件
CLAUDE.md 是整个记忆层的"导航地图"------告诉 Agent 关键的约束和规则,每次对话自动带上。
项目核心约束,包含项目功能、技术栈、开发规范、文件或目录结构等。
示例------极简 Node 项目:
markdown
# 项目规则 - 极简Node加法工具
## 1. 技术栈
语言:Node.js 原生JS,仅内置模块,不许引入第三方npm包
## 2. 目录规范
入口文件:index.js,所有代码写在该文件,不拆分文件
## 3. 代码要求
1. 函数必须加单行注释,代码极简,拒绝冗余
2. 输出结果用console.log清晰打印
3. 必须提供调用示例
## 4. 输出约定
写完代码后,附带运行命令:node index.js
第三步:让 Memory 自动生长
使用过程中,当 AI 了解到你的偏好时,Claude Code 的 Memory 系统会自动记录:
- 你纠正过的错误会被记住(feedback 类记忆)
- 项目背景和约束会被沉淀(project 类记忆)
- 下次对话自动生效,无需重复说明
6. 案例对比:有无 Memory 的区别 🎬
❌ 没有 CLAUDE.md:
用户:帮我写一个加法函数
AI:好的,我用 Python 写......(你项目是 Node.js)
用户:不,用 Node.js
AI:好的。我引入 lodash......(你要求零依赖)
用户:不要引入第三方库
AI:好的。我把代码拆成 5 个文件......(你只要一个 index.js)
用户:......
✅ 有 CLAUDE.md:
javascript
用户:帮我写一个加法函数
AI:(读取 CLAUDE.md → Node.js,零依赖,代码写 index.js)
在 index.js 中添加:
// 加法函数
function add(a, b) { return a + b; }
console.log(add(1, 2)); // 3
运行:node index.js
这就是 Memory 的价值:一次定义,永久省心。 🚀
7. 进阶:团队共享记忆 👥
当团队 5 个人都在同一个项目仓库中使用 Claude Code:
- 👤 每个人启动时,AI 读取的是同一份 CLAUDE.md ------编码规范、技术栈、命名约定,全队统一
- 🆕 新成员加入,不需要口头传授"我们这儿的规矩"------AI 已经帮你记住了
- 🏖️ 当你休假,同事接手你的代码------他的 AI 和你的 AI 拥有相同的"项目记忆"
这就是 Memory 从个人提效到团队标准化的跨越。
8. 记忆层的三个核心原则 💎
- 精简:CLAUDE.md 不是文档,是给 AI 的"指令卡"。控制在 1-2K token 以内,只写最关键的约束
- 具体:不说"代码要好",说"函数必须加单行注释,禁止超过 50 行"
- 可更新 :记忆不是写一次就完事。随着项目演进持续更新 CLAUDE.md,每次更新后
/init刷新
🔮 小结与预告
今天我们聊了 Harness Engineering 的第一层------记忆层(Memory)。从无状态的 LLM 出发,我们看到了记忆层如何像马的缰绳一样,让 AI 在项目中有了方向感、规则感和持续积累的能力。
🧩 RAG Retrival(检索增强生成)------ 先建个认知
在深入下一层之前,简单提一下 RAG,因为它是 Harness 检索层(第四层)的核心技术,这里先建立基础认知:
什么是RAG?
简单来说,RAG是一种让大语言模型(LLM)在回答问题前,先从外部知识库中"查资料"的技术。
传统的LLM像一个记忆力超群但知识有截止日期的"学霸"。你问它2026年的事,它可能就傻眼了,因为它只学到了2024年。而RAG就像是给这位学霸配了一个能实时联网的图书馆。当用户提问时,系统会:
- 检索(Retrieve):先去这个"图书馆"(也就是你的私有文档、数据库或网页)里,快速找到最相关的几段信息。
- 增强(Augmented):把用户的问题和检索到的信息打包在一起,组成一个"超级提示词"。
- 生成(Generate):把这个"超级提示词"交给LLM,让它基于这些真实、新鲜的资料来生成答案。
这样一来,AI的答案就变得有据可查、实时更新,并且能涵盖公司内部的私有知识,有效避免了"一本正经地胡说八道"。
📚 下一篇预告
第二层------Agent 工具链(MCP / Skills / Hooks)
我们将深入探讨:如何让 AI 拥有"手"和"脚"------操作文件、调用 API、控制浏览器、连接外部服务,真正成为能独立完成任务的数字员工。
✍️ 如果你正在使用 Claude Code、CodeBuddy 或任何 AI Agent 工具,希望这篇关于"记忆层"的文章能帮你少走弯路,让 AI 真正成为团队的得力助手。
💬 欢迎在评论区聊聊:你在项目里是怎么管理 AI 记忆的?踩过哪些坑?
🔗 如果你觉得有用,不妨点个 🌟 收藏,下一篇见!