🚀 从 Prompt 到 Harness:AI 编程的下半场,我们如何给大模型套上“挽具”?

🤔 为什么我们需要"Harness"?

想象一下,你拥有一匹烈马(LLM)。它拥有惊人的力量(海量的知识、强大的逻辑),但它野性难驯,没有方向,甚至可能随时尥蹶子(产生幻觉、遗忘上下文)。

Harness 的本意是"马具"、"挽具"。

在 AI 领域,Harness Engineering 就是研究如何给这匹烈马套上缰绳、马鞍和挽具。它不再仅仅是简单的"提示词优化",而是一个比 Prompt Engineering 大一个量级的系统工程。

📉 LLM 的四大"结构性缺陷"

在了解 Harness 之前,我们必须诚实地面对 LLM 自身的局限性。无论模型多大(哪怕是 DeepSeek-V4-Flash 这种拥有 1M 超长上下文的怪兽),它们都有四个无法忽视的特质:

  1. 无状态 (Stateless) :金鱼记忆。每次对话结束,它就忘了你是谁,也不知道你项目的历史规范。
  2. 无法主动操作 (Passive) :它只能生成文字或图片,无法直接操作文件系统、浏览器或执行复杂任务(除非通过 MCP、Skills 等工具扩展)。
  3. 概率性输出 (Probabilistic) :文无第一,武无第二。但在 Coding 这种"武"的赛道,我们需要确定的结果,而不是"可能正确"的代码。
  4. 上下文限制 (Context Limit) :虽然上下文窗口在变大,但依然无法无限处理信息,且越长越贵,越长越慢。

Harness 的使命:就是在这些基本性质之上,建造一套系统(工程化手段),让模型可以完成原本无法独立完成的任务。

模型是引擎,Harness 就是装着 V8 引擎的赛车。 引擎再牛,没有好的变速箱、刹车和仪表盘,这车根本没法上路。


🏗️ Harness Engineering 的核心四层架构

Harness Engineering 不是一个具体的框架,而是围绕模型构建的基础设施总称。核心包含以下四层:

1. 记忆层 (Memory Layer)

解决痛点:无状态 (Stateless)

这是 Harness 的基石。既然模型记不住,我们就帮它记。

  • 文件系统即记忆 :利用 CLAUDE.mdAGENTS.md 等文件,将项目规则持久化。
  • 导航地图:这些文件告诉 Agent 项目的核心约束、技术栈和规范。每次对话,这些文件的内容都会被"挂载"到上下文中。

💡 实战案例:CLAUDE.md 的威力

不要急于生成代码,先初始化记忆。这是 Harness 思维的第一步。

场景:你需要一个极简的 Node.js 加法工具。

第一步:初始化记忆 (/init)

在全新的项目中,创建 CLAUDE.md。这是项目的"宪法"。

markdown

编辑

shell 复制代码
1# 项目规则 - 极简Node加法工具
2
3## 1. 技术栈
4- 语言:Node.js 原生JS,仅内置模块,不许引入第三方npm包
5
6## 2. 目录规范
7- 入口文件:index.js,所有代码写在该文件,不拆分文件
8
9## 3. 代码要求
101. 函数必须加单行注释,代码极简,拒绝冗余
112. 输出结果用console.log清晰打印
123. 必须提供调用示例
134. 代码全面使用es6+,如果有非es6+代码,帮修改
14
15## 4. 输出约定
16写完代码后,附带运行命令:node index.js

第二步:执行任务

此时,你只需要对 AI 说:"帮我写一个加法和减法函数。"

因为有了 CLAUDE.md 这个 Harness,AI 会自动遵守所有约束,输出如下代码:

javascript

编辑

perl 复制代码
1// index.js
2
3// 两数相加,返回 a + b 的结果
4const add = (a, b) => a + b;
5
6// 两数相减,返回 a - b 的结果
7const sub = (a, b) => a - b;
8
9// 调用测试
10if (require.main === module) {
11    console.log(add(1, 2));       // 3
12    console.log(add(-5, 10));     // 5
13    console.log(add(0, 0));       // 0
14    console.log(add(3.14, 2.86)); // 6
15
16    console.log(sub(5, 3));       // 2
17    console.log(sub(0, 7));       // -7
18    console.log(sub(10, -2));     // 12
19}

关键点

  • 自动加载 :每次 Prompt 都会带上 CLAUDE.md 的内容,解决了 Stateless 问题。
  • /init 的作用/init 是初始化项目记忆的指令。每当 CLAUDE.md 改变,或者项目结构大改,重新执行 /init 可以刷新 AI 的认知,确保记忆同步。

2. 工具与执行层 (Tools & Execution)

解决痛点:无法主动操作

光有记忆不够,还得有手有脚。

  • MCP (Model Context Protocol) :标准化的工具连接协议。
  • Skills:将复杂流程封装成技能。
  • 执行钩子 (Hooks) :在 AI 执行动作前进行拦截和校验,这是 Harness 的"缰绳",防止 AI 乱删文件。

3. 约束与验证层 (Constraints & Verification)

解决痛点:概率性输出

  • RAG (检索增强生成) :先检索相关知识,再让模型生成,减少幻觉。
  • 反馈循环:AI 写完代码 -> 自动运行测试 -> 如果报错,将错误信息回传给 AI -> AI 自我修正。这才是真正的 Harness,让模型在闭环中进化。

4. 上下文管理层 (Context Management)

解决痛点:上下文限制

  • 记忆压缩:像人类的睡眠一样,定期整理记忆,将长对话压缩成摘要。
  • 优先级调度CLAUDE.md 是高频记忆,历史对话是低频记忆,合理分配 Token 预算。

📌 总结:从 Prompt Engineering 到 Harness Engineering

回顾 AI 发展的这几年,我们经历了一个清晰的演进路径:

  1. Prompt Engineering:像魔法师一样念咒语,试图通过精妙的语言控制模型。
  2. Context Engineering:开始注重上下文的投喂,RAG 技术兴起。
  3. Harness Engineering (现在)工程化驾驭

我们不再迷信"咒语",而是转向构建系统

  • Prompt 是点对点的控制。
  • Harness 是系统级的治理。

在 2025 年的下半场,无论是 Claude Code、Cursor 还是国内的 CodeBuddy,谁能提供更完善、更灵活的 Harness 基础设施(更好的记忆管理、更强的工具调用、更稳的验证机制),谁就能真正驯服 LLM 这匹烈马,让 AI 从"聊天玩具"变成"超级员工"。

Harness Engineering,是 AI 落地的必经之路。

相关推荐
用户852495071842 小时前
手搓自然语义搜索:从传统匹配到向量化,理解 RAG 的第一步
面试
C语言小火车2 小时前
C++ 快速排序(Quick Sort)深度精讲:分治思想、Lomuto 分区法及三数取中优化,面试手撕必会
c语言·开发语言·c++·面试·排序算法·快速排序
水木流年追梦7 小时前
agent面试必备31- AI Agent 核心进阶:工具路由(Tool Routing)
数据库·人工智能·oracle·面试·职场和发展·embedding
林希_Rachel_傻希希8 小时前
web性能优化之延迟加载图片和<inframe>
前端·javascript·面试
帅次8 小时前
Android 高级工程师面试:Java 多线程与并发 近1年高频追问 22 题
android·java·面试
林希_Rachel_傻希希10 小时前
web性能优化之——AI总结视频
前端·javascript·面试
子建莫敌10 小时前
ROS2 面试总结
面试·职场和发展
前端炒粉10 小时前
个人简历面经总结二
前端·网络·vue.js·react.js·面试
AI人工智能+电脑小能手10 小时前
【大白话说Java面试题 第154题】【06_Spring篇】第14题:Spring 支持的 Bean 作用域
java·开发语言·spring·面试