Harness Engineering:大模型时代的“马鞍”——从记忆层开始,让AI真正为你所用

🐎 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. 记忆层的三个核心原则 💎

  1. 精简CLAUDE.md 不是文档,是给 AI 的"指令卡"。控制在 1-2K token 以内,只写最关键的约束
  2. 具体:不说"代码要好",说"函数必须加单行注释,禁止超过 50 行"
  3. 可更新 :记忆不是写一次就完事。随着项目演进持续更新 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 记忆的?踩过哪些坑?

🔗 如果你觉得有用,不妨点个 🌟 收藏,下一篇见!

相关推荐
云技纵横1 小时前
一个 @Async,把 @Transactional 的事务边界打穿了
后端·面试
老程序猿1 小时前
AI 的「狼来了」,该不该信?一次真正感受到「恶意提示词」的误报
aigc·ai编程
Warson_L14 小时前
独立开发推荐安装的skills
ai编程
threerocks14 小时前
一用一个不吱声的视频解析 Skill,你值得拥有
aigc·ai编程
吴佳浩16 小时前
AI 工程师知识地图:模型格式、框架、部署工具一次讲明白
人工智能·aigc·ai编程
kyriewen16 小时前
我手写了一个 EventEmitter,面试官追问了 6 个问题——第 4 个我没答上来
前端·javascript·面试
青木_JS17 小时前
Headroom 是怎么给 Codex 省 Token 的:策略、效果与一次历史恢复记录
ai编程
MomentYY17 小时前
Temperature:AI 的“脑洞旋钮”
前端·llm·ai编程
她的男孩17 小时前
后台接口加密别只会 HTTPS,ForgeAdmin 的 RSA + SM4/AES 源码拆解
后端·面试·开源