news 2026/5/25 21:37:45

万字图文,带你吃透Prompt工程 Context工程 Harness工程是如何演进的

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
万字图文,带你吃透Prompt工程 Context工程 Harness工程是如何演进的

导读:你是不是也觉得"调好 Prompt 就万事大吉"了?说实话,小编当初也这么想。但随着项目越做越复杂,我才发现——Prompt 只是起点,后面还有两层更硬核的工程等着你。本文带你一口气吃透 AI 工程的三次进化:Prompt Engineering → Context Engineering → Harness Engineering。零基础友好,万字长文,建议收藏慢慢看。


一、那些年,我们"调 Prompt 调到怀疑人生"

小编自己做 AI 应用的前半年,几乎所有精力都花在一件事上——调 Prompt

改措辞、加角色、塞示例、排列组合……有时候换一个逗号,结果就不一样。你品品,这像什么?像炼丹。

一开始觉得挺有意思,但项目复杂度上来之后,问题来了:

  • • 写了个 2000 字的 Prompt,维护起来比代码还难
  • • 上下文一长,模型就"失忆",该记的不记、不该编的瞎编
  • • 接了工具之后,模型动不动就调错函数、传错参数
  • • 每次发版都提心吊胆——Prompt 改了一行,别的地方就崩了

这时候你会发现:光会写 Prompt,根本不够。

“Prompt 写得再漂亮,模型看不到该看的信息,一样是瞎子。”

小编后来才慢慢悟明白——这三个阶段,是 AI 应用开发工程师必经的进化路线:

阶段核心关注点一句话定义
Prompt Engineering输入文本设计、优化模型输入(提示词),引导模型输出符合预期
Context Engineering上下文窗口内容管理进入上下文窗口的所有信息——放什么、放多少、怎么排列
Harness Engineering智能体外围基础设施围绕 Agent 构建约束、反馈、容错、安全的完整工程体系

下面小编详细展开,带你看看这三大工程是怎么一步步演进出来的。


二、Prompt Engineering:一切的起点

2.1 它是什么

💡一句话定义:Prompt Engineering 就是"学会好好问问题"——通过精心设计你给模型的指令,让它输出你想要的结果。

打个比方:你去餐厅点菜,说"来个好吃的"——厨师可能上一盘你完全不想吃的东西。但如果你说"来一份微辣的番茄牛腩,少油,多给点汤"——得到满意结果的概率就高多了。

Prompt Engineering 干的就是这件事:把你对 AI 的模糊需求,翻译成它能精确理解的指令。

2.2 怎么用

自 GPT-3 问世以来,Prompt Engineering 迅速成了 AI 应用开发的"必修课"。小编自己常用的几招:

① 角色设定:给模型一个身份

你是一位资深的法律顾问,擅长劳动合同纠纷。

② 任务描述:清晰说明你想要什么

请根据以下合同条款,分析甲方是否存在违约行为。

③ 输出格式:指定结构化输出

请以 JSON 格式返回,包含:violation(bool)、reason(string)、suggestion(string)

④ 少样本学习:给几个示例让模型"照葫芦画瓢"

示例1:输入→输出示例2:输入→输出现在请处理:新输入→?

⑤ 思维链提示:让模型一步步推理

请逐步分析,先列出关键事实,再推导结论。

说实话,这些技巧在很多场景下效果显著。小编第一次用 Few-shot 把模型输出的格式从"随心所欲"调成"稳如老狗"时,那种成就感——挺爽的。

2.3 但是,局限来了

随着应用场景越来越复杂,Prompt Engineering 的天花板就露出来了:

局限性具体表现小编踩过的坑
静态性Prompt 是预定义的,难以适应动态变化同一个 Prompt 对不同用户效果差异巨大
孤立性只关注单次交互,缺乏跨轮次管理聊了 5 轮之后模型就"失忆"了
可扩展性差任务复杂了,Prompt 就变成一坨写到 3000 字的 Prompt 没人敢动
缺乏工程化靠直觉和试错,没有系统方法论每次改 Prompt 都是"碰运气"

“Prompt 调得好,只能保证这一次没问题;但下一次呢?”

当你开始问这个问题的时候,说明你该进化了。


三、Context Engineering:比"写什么"更重要的是"模型看到什么"

3.1 从 Prompt 到 Context 的认知跳跃

如果说 Prompt Engineering 关注的是"写什么指令",那么 Context Engineering 关注的是——

“如何构建送给模型的完整信息环境。”

Anthropic 在官方文档中明确说过一句话:Prompt Engineering 是 Context Engineering 的一个子集。

小编第一次看到这句话时,愣了一下。后来仔细想想——还真是。

Prompt 只是上下文窗口里的"一行字"。但模型做决策时看到的,远不止你写的那行指令。它看到的是整个上下文窗口里的所有内容:

看明白了吗?Prompt 只是八分之一。Context Engineering 管的是这整个窗口:放什么、放多少、按什么顺序、什么该压缩、什么该丢弃。

“上下文工程师不是在写指令,而是在做信息建筑师。”

3.2 Context Engineering 催生了哪些核心技术

在 Context Engineering 的发展过程中,衍生出了几个极其重要的概念。小编按重要程度依次给你捋一遍:


🔍 RAG:让 AI 学会"开卷考试"

RAG(检索增强生成)——2025 年 AI 工程领域最火的概念之一,没有之一。

它解决的问题很直白:

  • 知识局限:大模型的知识来自训练数据。你公司的内部文档、最新政策、私域数据——它统统不知道
  • 幻觉问题:模型本质是概率计算,经常"一本正经地胡说八道"
  • 数据安全:没有企业愿意把私域数据上传给第三方训练

RAG 的核心思路:先检索相关文档,再把文档塞进上下文,让模型"开卷答题"。

打个比方:

没有 RAG 的 AI = 闭卷考试 → 只能靠训练时"背过的"知识作答 → 遇到没见过的题就编答案有 RAG 的 AI = 开卷考试 → 先在"参考资料"里找到相关段落 → 基于找到的材料组织答案 → 不知道就说不知道,不会瞎编

为什么 RAG 属于 Context Engineering?因为它本质上就是在做一件事:动态地往上下文窗口里塞入最相关的信息。

这块内容小编前面已经出了一整个系列,从原理到实战都有,还没看过的朋友可以去合集里系统学习 👉 RAG 系列合集


🛠️ Tools:给大模型装上手和脚

如果没有工具,LLM 就是一个"缸中之脑"——能推理,但不知道现在几点,不知道今天发生了什么,更不能亲手执行动作。

说白了就是:很聪明,但很"无力"。

所以我们给模型接工具:

  • • 要知道时间 → 接时间工具
  • • 要知道现实世界信息 → 接搜索或 API
  • • 要改文件、跑命令 → 接代码执行工具

这条路线一直在进化:

正则匹配模型输出 → Function Calling → MCP 协议层抽象 (早期) (稳定期) (解耦期)

但工具一多,新问题来了:工具描述本身就占上下文,选错工具还有执行成本。所以现在越来越多系统开始做"按需加载"——把工具封装成 Skills,不一上来就把所有能力全塞给模型。

后面小编会单独出一个系列介绍工具调用,这里先挖个坑。


🧠 记忆系统:让 AI 不再是"会失忆的傻子"

随着 Agent 要处理的任务越来越复杂,一个尴尬的问题暴露了——

模型没有记忆。

每次对话,它都像个失忆的人。昨天聊的事今天全忘了。你的偏好、你的历史、你反复强调过的需求——统统重来。

记忆系统就是为了解决这个问题:

  • 短期记忆:在单次对话内保持上下文连贯
  • 长期记忆:跨会话记住用户偏好和历史交互

这块内容小编之前也出了两期——理论篇 和 LangChain 实战篇,后面还会分享如何用 Mem0 搭建企业级长期记忆。


3.3 Context Engineering 的局限

上下文工程非常有效,但它也有结构性限制——它主要影响单次推理。

小编自己遇到过这些场景:

  • • 模型在某次推理出错了,下次可能还犯同样的错——因为没有"学习失败"的机制
  • • 工具调用的安全约束靠 Prompt 写的——模型"记得就做,忘了就乱来"
  • • 上下文变化后,同一条错误路径又被走了一遍

换句话说:

上下文工程能提升"命中率",但不等于具备"防故障能力"。

当你的 Agent 要上生产环境,面对真实用户、真实流量、各种边界情况——光靠"把正确信息塞进上下文",远远不够。

这时候,你需要第三层——


四、Harness Engineering:给 Agent 套上"黄金缰绳"

4.1 它是什么

💡一句话定义:Harness Engineering(驾驭工程)是围绕 AI 智能体构建约束、反馈、容错和持续改进循环的系统工程实践。

它不优化模型本身,而是优化模型运行的环境

核心哲学八个字:人类掌舵,智能体执行。

“Harness” 这个词来自马具——缰绳、马鞍、嚼子——这是一套引导强大但不可预测的动物的完整装备。

小编给你举个更通俗的例子:

你可以把 AI Agent 想象成一个刚入职的天才实习生。他智商 180,什么都能学,但——

  • • 他可能理解错你的意思,把客户邮件发到竞争对手那
  • • 他可能一个人干着干着就跑偏了,你根本不知道他在干嘛
  • • 他犯了错不会告诉你,默默继续干,错上加错
  • • 他没有"权限感",你让他查个资料他可能顺手把数据库删了

Harness 是什么?Harness 就是你给这个天才实习生配的一整套管理体系:

  • • 工牌门禁(安全边界)——只能进该进的门
  • • 操作审批流(决策管控)——大事必须请示
  • • 工作日报(可观测性)——干了什么一清二楚
  • • 试错培训(容错机制)——犯错有人兜底、有人教
  • • KPI 面板(度量体系)——干得好不好看数据说话

驾驭工程不是削弱 AI 的能力,而是给它打造一套黄金缰绳,让它跑得又快又稳。

再说直白一点:

没有 Harness有 Harness
Agent 像个"裸奔的天才"Agent 像个"有纪律的特种兵"
干对了是运气好干对了是系统保障
崩了就是崩了崩了自动恢复
出事了才知道出事了全程有监控、有预警
每次都是"赌"每次都有"底"

4.2 为什么需要 Harness?——三大核心约束

你可能会问:Context Engineering 已经很强了,为什么还需要 Harness?

小编用三个真实的"翻车场景"来告诉你:


翻车场景 1:模型今天正常明天抽风

你有一个 Agent,负责解析用户上传的合同,输出结构化 JSON。你测了 100 遍都正常。

结果上线第三天,用户上传了一份格式稍微不同的合同——模型突然输出了一段散文而不是 JSON。后端json.loads()直接报错,整条链路挂了。

用户看到的是:白屏。

这就是LLM 的非确定性——同一个模型,同样的 Prompt,换一个输入它就可能"抽风"。


翻车场景 2:信息太多,模型"选择性失明"

你的 Agent 需要同时看用户画像、历史订单、当前问题、产品文档……加起来 50000 字。

但模型的上下文窗口只有 128K Token。就算塞得下,模型也不会均匀地关注所有内容——它会"选择性失明",漏掉关键信息。

你在 Prompt 里写了"请务必参考用户历史订单"——有时候它参考了,有时候它视而不见。

这就是有限上下文窗口的问题——不是放不下,是模型"看不过来"。


翻车场景 3:Agent 自作主张干了"大事"

你给 Agent 接了文件操作工具。本意是让它帮用户整理文档。

结果有一天,模型"理解"错了用户意图,把一整个文件夹删了。

用户的反馈是:我让它帮我"清理一下",它把我项目代码全清了……

这就是外部世界的无限状态——模型能操作真实世界,但它对"后果"没有概念。


看完这三个场景,你就明白了——Harness 不是锦上添花,是生存必需。

总结成表格:

约束问题(大白话)Harness 的解法
LLM 非确定性模型会"抽风",今天正常明天崩自动检测异常 → 重试 → 降级 → 兜底
有限上下文窗口信息太多,模型看不过来Token 预算管理 + 优先级排序 + 分层压缩
外部世界无限状态模型能动真东西,但不懂后果沙箱隔离 + 权限最小化 + 操作审批

小编用一个更直白的类比:

Harness 就是给 AI 安装了三套系统:

  • 保险丝(非确定性)——电流异常自动断电,不会烧坏整个电路
  • 仪表盘(有限窗口)——驾驶员一眼看到最关键的信息
  • 安全气囊(外部世界)——真撞了也不会致命

不再是"崩了就崩了",而是"崩了有人兜底、有人报警、有人善后"。

4.3 六大设计原则(用大白话解释)

一个合格的 Harness 系统,必须遵循这六条原则。小编逐条翻译成人话:


① 为失败而设计(Design for Failure)

把失败当成常态,而不是意外。

大白话:你家的保险丝为什么存在?不是因为你"计划"短路,而是因为短路迟早会发生。Harness 的第一原则就是:假设 Agent 一定会出错,提前把"出错了怎么办"设计好。

具体怎么做?小编举个例子:

场景:Agent 要调用天气 API,返回用户所在城市今天的天气。没有 Harness: API 超时 → 程序崩溃 → 用户看到 500 错误有 Harness(为失败而设计): API 超时(3秒无响应) → 第一道防线:自动重试(最多 2 次) → 第二道防线:切换备用 API → 第三道防线:返回缓存的上次天气 + 提示"数据可能延迟" → 兜底:告诉用户"天气服务暂时不可用,请稍后再试"

层层兜底,永远不让用户看到"白屏"。


② 契约优先(Contract-First)

大白话:你能用一句"别删我的文件"来防止别人删你文件吗?当然不能。你需要的是文件权限设置——技术层面的保障。

同理,在 Harness 里,不是靠"在 Prompt 里写 ‘不要调用危险函数’"来约束 Agent,而是靠代码级别的契约来保证。

❌ Prompt 约束(不靠谱): "请注意,delete_file 函数很危险,除非用户明确要求,否则不要调用。" → 模型可能忘了、可能误解、可能直接忽略✅ 契约约束(靠谱): Schema 定义:delete_file 函数标记为 "requires_confirmation: true" → 代码层面拦截:调用前必须弹出确认 → 不管模型怎么想,代码都不会让它直接删

Prompt 是"口头约定",Schema 是"签字合同"。你选哪个?


③ 默认安全(Secure by Default)

大白话:你新办了一张银行卡,默认单笔限额 5000。你不需要做任何操作来"开启安全"——安全是默认的。

Harness 也是这个思路:Agent 诞生那一刻,它的权限是最小的。想做更多事?必须逐条申请、逐条审批。

三个核心概念:

  • 最小权限:Agent 默认只能读文件,不能写;只能查数据库,不能改
  • 零信任:每一次操作都要验证身份和权限,不因为"上次验过了"就放行
  • 纵深防御:一道防线被突破了还有下一道,不把安全赌在单一机制上

④ 决策与执行分离

大白话:军队里为什么要分"参谋部"和"作战部队"?因为做决策的人和执行任务的人,能力要求不一样,风险管控方式也不一样。

在 Harness 里:

  • 决策层(规划):Agent 说"我要删除这个文件"
  • 执行层(动作):实际去删文件的代码

为什么要分开?因为你可以在决策层加一道"人工审批":

Agent 决策:"我判断应该删除 /data/user_records.csv" ↓Harness 拦截:这是高危操作! ↓通知人类审批:"Agent 想删除用户数据文件,是否允许?" ↓人类确认/拒绝 ↓执行层:执行(或拒绝执行)

决策可以大胆,执行必须谨慎。中间隔一层 Harness,就是你的安全阀。


⑤ 万物皆可度量

大白话:你去健身房不记录数据,三个月后你根本不知道自己进步了没有。Agent 也一样——不度量,就无法优化。

每一个行为、每一次决策、每一次资源消耗——都必须可度量。

你需要回答的问题:- Agent 平均每个任务花多少 Token?→ 成本可控- 工具调用的成功率是多少?→ 哪些工具不好用- 用户满意度如何?→ 效果好不好- 有没有触发安全拦截?→ 是否存在风险行为

“没有度量的 Agent,就是一个黑盒。你永远不知道它在变好还是变坏。”


⑥ 数据驱动进化

大白话:好的员工会从每次项目中学习——什么做得好,什么做得差,下次怎么改进。Harness 也要让 Agent 做到这一点。

具体怎么做?把 Agent 的每一次运行都当成一次"训练数据":

Agent 运行 → 记录全过程 → 标注好/坏 → 分析原因 → 更新策略 ↓ 下次遇到类似情况,表现更好

举个实际例子:

  • • Agent 连续 3 次在"解析表格"任务上失败
  • • Harness 检测到这个模式
  • • 自动调整策略:以后遇到表格类任务,换一个更擅长结构化数据的模型处理

系统越跑越聪明,而不是越跑越笨。

4.4 顶层架构:带边界控制的 REPL 闭环

好了,前面说了"为什么",现在说"长什么样"。

Harness 的本质,是包裹在 LLM 之外的一个REPL(Read-Eval-Print Loop)容器

什么是 REPL?你用过 Python 命令行吧?

>>> 1 + 1 # Read:读取你输入的内容2 # Eval:计算结果 → Print:打印结果>>> # Loop:等待下一次输入

Harness 做的事情一模一样,只不过对象换成了 Agent:

小编用一个"快递员送货"的场景帮你理解每个环节:


Read(感知管控)= 快递员查看今天的任务清单

快递员(Agent)不能随便出门乱跑,必须先看调度系统给他的任务清单。

在 Harness 里:上下文管理器把外部状态(新任务来了)、内部记忆(上次聊到哪了)、工具描述(你有哪些能力)——全部结构化注入给模型。

关键词:"该看什么"由 Harness 决定,不是模型自己选。


Eval(执行管控)= 快递员每次取件送件都要刷卡过闸

快递员说"我要进仓库取货"——但他不能直接进,必须刷门禁卡(权限校验),走指定通道(路由分发),全程有监控(异常监控)。

在 Harness 里:调用拦截器捕获模型的每一次"我想做 XX"的意图,先检查——

  • • 它有没有权限做这件事?
  • • 参数对不对?格式合法吗?
  • • 这个操作有风险吗?需不需要人工确认?

全部通过了,才真正去执行。


Print(反馈管控)= 快递员必须拍照上传签收结果

快递送到了要拍照证明;送失败了(地址错误、没人签收)也要记录原因。不能"送完就算了"。

在 Harness 里:执行结果(成功还是失败、返回了什么数据)被结构化封装,重新注入上下文。这样模型下一轮就能"看到"上一步的结果,决定接下来怎么做。


Loop(循环管控)= 快递员反复取件-送件直到今天的单全送完

一个任务完成了,看下一个。直到所有任务做完(任务完成),或者到了下班时间(触发终止条件),循环结束。


小编第一次理解这个架构时的感觉是——哦,原来 LangChain、AutoGPT、Claude Code 底层都是这个模式。

它们的区别不在于 REPL 的结构,而在于每一步的管控做得多细。管控越细,Agent 越靠谱。

4.5 核心机制:解决两大底层矛盾

Harness 最核心的价值,在于攻克 Agent 上生产的两个根本性卡点。小编用最通俗的方式讲清楚:


矛盾一:无限外部状态 vs 有限 Token 窗口

想象一下这个场景:

你是一个客服 Agent,要回答用户关于他订单的问题。你需要看的信息包括:

  • • 用户基本信息(500 字)
  • • 历史订单 50 条(每条 200 字 = 10000 字)
  • • 产品文档(3 万字)
  • • 公司退换货政策(5000 字)
  • • 之前的对话记录(2000 字)

加起来接近 5 万字。但你的上下文窗口就那么大——就算物理上放得下,模型的注意力也是有限的,塞太多它反而"选择性失明"。

怎么办?总不能"全塞进去听天由命"吧。

Harness 的解法:像一个高效的秘书,帮模型做信息筛选。

第一步:信息聚合 — 把所有可能相关的信息池子准备好第二步:相关性排序 — 用户问退货?那退换货政策排第一,产品文档排最后第三步:摘要压缩 — 50 条订单不用全放,只放最近 3 条 + "共有 50 条订单"第四步:预算分配 — 给策略文档 2000 Token,给订单 1000 Token,给对话 500 Token第五步:模板组装 — 按优先级拼成最终上下文,送给模型

一句话总结:不是什么都塞进去,而是"帮模型筛简历"——只把最相关的信息放在它眼前。


矛盾二:文本预测输出 vs 物理世界执行

这个矛盾更好理解。

模型输出的永远是文本。但工具执行需要精确的结构化数据

比如模型想调用一个发邮件的工具,它需要输出:

{ "tool": "send_email", "params": { "to": "zhangsan@company.com", "subject": "会议通知", "body": "明天下午 3 点开会" }}

但模型可能输出:

好的,我来帮你发邮件。{"tool": "send_email", "params": {"to": "zhangsan@company.com"...

看到了吗?前面多了一句废话,JSON 也没闭合。你代码里的json.loads()直接就报错了。

这不是偶尔发生——在生产环境里,工具调用的失败率可能有 5-15%。

Harness 的解法:为每一个可能失败的环节设计降级路径。

正常流程: Schema 定义 → 模型生成调用 → JSON 解析 → 执行工具 → 结果返回一旦失败: JSON 解析失败? → 尝试修复(去掉前后多余文本,用正则提取 JSON 片段) → 还是失败?重试一次(让模型重新生成) → 还是失败?回退到纯文本模式(直接提取关键信息) → 全都失败?告诉用户"我需要更明确的指示" 工具执行失败? → API 报错?记录错误 + 重试 → 参数错误?让模型反思 + 重新规划 → 权限不足?通知人类审批

类比:就像高速公路的应急车道——正常情况走主车道,出问题了不是原地停车,而是平滑切到应急车道继续走。

核心铁律:状态分离原则

必须将 LLM 视为无状态计算单元。所有跨轮次状态全部存储在 Harness 管控的外部引擎中,严禁依赖模型自己维护复杂状态。

这条铁律怎么理解?小编再打个比方:

你见过金鱼吗?传说金鱼只有 7 秒记忆(虽然这不科学,但用来比喻很好)。你不会让金鱼帮你记账对吧?你会把账记在本子上(外部存储),每次需要的时候翻给金鱼看。

LLM 也是这个道理。别指望它"记住"上一轮发生了什么——每一轮对它来说都是全新的。所以:

  • • 任务进度 → 存在外部数据库里
  • • 用户偏好 → 存在记忆系统里
  • • 之前犯的错 → 存在错误日志里

每次新的一轮开始,Harness 把需要的状态从外部读出来,注入上下文。模型是无状态的,Harness 是有状态的。

4.6 架构分层:控制平面 + 数据平面

当你的 Agent 系统规模变大——不只一个 Agent,而是同时跑几十甚至几百个 Agent 实例——你必须做管控分离

还是用类比来说:

想象一家快递公司。它有两层结构:

  • 总部(控制平面):决定今天哪个快递员跑哪条线路、每人配送上限多少件、哪些区域暂停配送、紧急件优先级怎么排
  • 一线快递员(数据平面):接到调度指令,取件、送件、签收、反馈

总部不直接送快递,快递员不做调度决策。各干各的,效率最高。

在 Harness 里:

层级职责核心能力大白话
控制平面决策与管控任务调度、资源配额、行为规划、策略规则、权限管控“指挥部”——决定谁做什么、能花多少
数据平面纯执行Agent 运行实例、状态存储、记忆管理、沙盒执行环境“执行部队”——埋头干活、存结果

这个分层是不是看着眼熟?——没错,和 Kubernetes 的 Control Plane / Data Plane 一个思路。也和微服务架构里的"网关 + 服务"类似。

为什么要分?因为:

  • • 控制平面可以单独升级策略,不影响正在跑的 Agent

  • • 数据平面可以水平扩展(多跑几个 Agent),不影响调度逻辑

  • • 出了安全问题,控制平面可以"一键熔断"所有执行中的 Agent

4.7 安全治理与度量体系

最后这一块,是 Harness 和前两层最大的区别——它关注系统的长期健康,而不只是单次对话的效果。

小编经常看到一些团队做 Agent Demo 时信心满满,一上生产就翻车。为什么?因为 Demo 里你可以盯着看,出错了手动修。但生产环境里,同时跑着几百个对话,你没有三头六臂去盯每一个。

这时候你需要的就是:自动化的安全治理 + 可量化的度量体系。


安全治理:给 Agent 划定"活动范围"

核心思路:隔离。Agent 干活的环境必须和你的真实系统隔开一层。

4 级沙盒隔离体系(由轻到重):

级别隔离方式适用场景大白话
Level 1进程级只做文本处理、不碰外部系统给他一间办公室
Level 2容器级(推荐)要读写文件、调 API给他一层楼,但出不了大门
Level 3轻量级虚拟机执行用户上传的代码给他一栋独立小楼
Level 4完整虚拟机涉及高敏感操作关进密室,全程监控

大部分场景用 Level 2(容器级)就够了。小编自己的项目就是这么做的——Agent 在 Docker 容器里跑,就算它"发疯"了也只能在容器里折腾,伤不到宿主机。

除了隔离,还有策略门控——在 Agent 的"决策"和"执行"之间插一道检查站:

Agent 说:"我要执行 rm -rf /data" ↓策略门控检查: ✓ 权限校验 → 当前 Agent 有没有删除权限? ✓ 敏感数据 → 这个路径下有没有用户隐私数据? ✓ 注入检测 → 这个指令是用户注入的还是模型自己规划的? ✓ 审计日志 → 不管允不允许,全部记录在案 ↓结果:❌ 拒绝执行,触发告警

资源管控:别让 Agent 烧光你的钱

这个很实际。小编见过一个案例:有人的 Agent 进入了死循环,疯狂调 GPT-4 API,一晚上烧了 2000 美金。

Harness 的资源管控就是防止这种事:

  • Token 预算:每个任务最多用 10000 Token,超了自动停
  • API 调用上限:单次任务最多调 20 次工具,超了熔断
  • 时间限制:5 分钟还没完成?强制终止 + 返回当前进度
  • 退避重试:API 报错了不要疯狂重试(1秒→2秒→4秒→放弃)

一句话:给 Agent 装个"电费表",不让它无限制烧钱。


度量体系:给 Agent 做"体检报告"

没有度量,你根本不知道:

  • • Agent 表现是在变好还是变差?
  • • 哪个环节最容易出错?
  • • 花了多少资源?值不值?

四大类核心指标:

类别核心指标回答的问题
任务效能成功率、指令遵循度、工具使用有效性Agent 干活靠不靠谱?
服务质量端到端延迟、首次响应、错误率用户体验好不好?
资源效率平均 Token 消耗、工具调用次数性价比高不高?
安全合规策略拒绝率、安全事件数有没有出事?

小编建议每个做 Agent 的团队,至少关注这四个"黄金指标":

    1. 任务成功率(最核心)——Agent 完成任务的比例
    1. 端到端延迟(用户体感)——从用户提问到拿到答案多久
    1. Token 消耗(成本)——每个任务平均烧多少钱
    1. 安全事件数(底线)——有没有越权、泄露、崩溃

“没有度量的 Agent 系统,就像没有仪表盘的飞机——你根本不知道它什么时候会坠机。”

4.8 一个完整的 Harness 实战场景

光讲概念可能还是抽象。小编用一个完整的场景,带你走一遍"有 Harness 的 Agent"是怎么工作的。


场景:用户让客服 Agent 帮他退一个过期订单。

用户:"帮我把上周买的那个蓝牙耳机退了。"

第一步:Read(感知管控)—— Harness 组装上下文

Harness 不会直接把用户这句话丢给模型。它会先干这些事:

1. 从用户画像系统拉取:用户 ID、VIP 等级、历史退款记录2. 从订单系统查询:最近一周的订单,匹配"蓝牙耳机"3. 从政策知识库检索:退换货政策(7天无理由、过期处理规则)4. 组装最终上下文: - System Prompt(客服角色 + 行为准则) - 用户消息 - 匹配到的订单信息(只放这一条,不放全部订单) - 退换货政策(精简版,只取"过期退货"相关段落)

注意:不是所有信息都塞进去,而是 Harness 帮模型筛选过的。


第二步:Eval(执行管控)—— Agent 做出决策,Harness 审查

模型看完上下文,输出决策:

{ "thought": "该订单已超过7天无理由退货期限,但用户是VIP,可以走特殊通道", "action": "initiate_refund", "params": {"order_id": "ORD20250512001", "reason": "VIP客户过期退货"}}

Harness 拿到这个决策后,不是直接执行,而是过一遍检查:

✓ 权限检查:当前 Agent 有退款权限吗?→ 有,通过✓ 金额检查:退款金额 299 元,在单笔上限(500)内 → 通过✓ 政策检查:VIP 客户过期退货是否合规?→ 合规,政策允许✓ 频次检查:该用户本月第几次退货?第 1 次 → 正常→ 全部通过,执行!

如果有一项不通过呢?比如退款金额超了上限?

✗ 金额超标 → 不执行 → 自动升级给人工客服→ 同时给模型注入反馈:"该笔退款需要主管审批,请告知用户"

第三步:Print(反馈管控)—— 执行结果回注上下文

退款 API 调用成功了,Harness 把结果结构化后回注:

{ "status": "success", "refund_id": "REF20250518001", "amount": 299, "estimated_arrival": "1-3个工作日"}

模型拿到这个结果,生成最终回复:

"您好!蓝牙耳机的退款已经帮您发起了,299 元预计 1-3 个工作日到账。如果有其他问题随时找我哦~"

第四步:Loop(循环管控)—— 判断是否结束

Harness 检查:

  • • 用户问题解决了吗?→ 解决了
  • • 还有待处理的子任务吗?→ 没有
  • • 用户有新消息吗?→ 没有

→ 本轮结束。同时记录这次完整交互的数据,供后续分析。


全程发生了什么?

用户只看到:问了一句话,3 秒后拿到退款结果。简单、顺畅。幕后 Harness 做了: ✓ 信息筛选(只给模型看需要的) ✓ 决策审查(退款前检查权限和政策) ✓ 执行管控(通过 API 网关调用退款接口) ✓ 结果封装(把 API 返回翻译成模型能理解的格式) ✓ 全程记录(审计日志、指标上报)

这就是 Harness 的价值——用户感知不到它的存在,但它让整个过程安全、可控、可追溯。



五、全景总结:三层工程到底是什么关系?

看到这里,你可能会问:这三层是"选择题"还是"必答题"?能不能跳过中间直接做 Harness?

答案是:不能。三层是递进包含关系。

  • • 你得先会写 Prompt(第一层),才能设计上下文(第二层)
  • • 你得先会管理上下文(第二层),才能构建完整的 Harness(第三层)
  • • 每一层都不会消失——Harness 不是取代 Prompt,而是把它包在一个更大的工程体系里

就像盖楼:地基(Prompt)→ 结构(Context)→ 装修 + 物业 + 消防(Harness)。你不能跳过地基直接装修。

小编把三大工程的关系画清楚:

三层是包含关系,不是替代关系。Prompt Engineering 仍然重要,但它只是 Context Engineering 的一个子集;Context Engineering 又被 Harness Engineering 包裹在更大的工程体系中。

用一张表格做最后的对照:

维度Prompt EngineeringContext EngineeringHarness Engineering
核心问题怎么写指令怎么组织信息怎么保障系统可靠运行
类比学会点菜当好信息建筑师当好系统运维总监
关注范围一次对话一个上下文窗口Agent 全生命周期
出错了怎么办改措辞,再试调整信息优先级自动降级 + 重试 + 兜底
门槛会写字就能上手需要理解 RAG、工具、记忆需要系统工程思维
目标模型"这一次"答对模型"经常"答对系统"持续稳定"地答对

好了,万字看到这里,你现在处于哪个阶段?

  • • 还在纯调 Prompt?→ 够用就行,但别止步
  • • 已经在做 RAG、管理上下文了?→ 你在第二层了
  • • 开始关注容错、度量、安全、持续学习?→ 恭喜,你正在进入第三层

说实话,小编自己也还在第二层到第三层之间摸索。这条路没有终点,但每进一步,你的 Agent 就更像一个靠谱的生产系统,而不是一个"碰运气的 Demo"。

“从 Demo 到生产,中间隔着一个 Harness。”

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/25 21:36:45

别再手动刷诊断了!用TSMaster自动诊断流程,5分钟搞定ECU批量测试

告别低效手动诊断:TSMaster自动化测试全流程实战指南深夜的办公室里,咖啡杯已经见了底,而电脑屏幕上还闪烁着数十个等待测试的ECU诊断窗口。这样的场景对于汽车电子测试工程师来说再熟悉不过——手动发送每条诊断请求、核对响应数据、记录测试…

作者头像 李华
网站建设 2026/5/25 21:28:01

几何操作与语义操作映射边界:自指认知几何学的形式化体系(世毫九实验室原创研究)

几何操作与语义操作映射边界:自指认知几何学的形式化体系(世毫九实验室原创研究) 方见华 世毫九实验室(Shardy Lab) 摘要 本文建立自指宇宙学中几何操作与语义操作的严格一一对应体系,彻底消除此前理论中存在的隐喻式类比。首先定义语义流形为认知系统的数学表征,证明其…

作者头像 李华
网站建设 2026/5/25 21:24:06

告别手写布局:Tkinter Designer如何革新Python GUI开发体验?

告别手写布局:Tkinter Designer如何革新Python GUI开发体验? 【免费下载链接】Tkinter-Designer An easy and fast way to create a Python GUI 🐍 项目地址: https://gitcode.com/gh_mirrors/tk/Tkinter-Designer 你是否曾因Tkinter繁…

作者头像 李华