Skip to content

6.1 Harness 工程要解决的问题

前情回顾

前五章分别解决了 Agent 的各个子问题:

章节解决的问题核心方案
第 2 章LLM 怎么接入会话管理、流式输出
第 3 章上下文从哪来记忆、检索、规范
第 4 章Agent 怎么守规矩Skill(操作流程)、Rule(编码约束)
第 5 章Agent 怎么使用工具Tool 系统、多 Agent 编排

每个子系统独立工作都没问题。但当它们合在一起时,新的问题出现了。

问题 1:组件是散的,缺少"胶水"

记忆系统知道用户偏好,但 Skill 不知道。Rule 约束了代码风格,但 Agent 调用工具时不受 Rule 约束。上下文提供者链自动注入信息,但没人管这些信息是否冲突。

每个组件都在做自己的事,但没有一个"总指挥"把它们组织起来。

问题 2:LLM 的输出不可控

LLM 是概率模型,输出有不确定性:

  • 结构性问题:缺少章节、字段格式错误、JSON 损坏
  • 行为性问题:忘记调用工具、调用了错误的工具
  • 语义性问题:内容偏离需求、包含幻觉
  • 安全性问题:输出了敏感信息

你无法保证 LLM 每次都输出正确的结果。

问题 3:出了问题不知道出在哪

Agent 执行了一连串操作——加载记忆 → 注入 Skill → 调用 LLM → 执行工具 → 返回结果。中间任何一步出问题,最终结果都可能不对。但没有统一的追踪机制,排查问题全靠猜。

Agent 架构三阶段演化:提示词工程→上下文工程→Harness 工程

三阶段演化模型

在讲具体架构之前,先退后一步看全局。

Agent 架构的演化,经历了三个阶段:

阶段核心问题解决方案对应章节
提示词工程模型听不懂设计精确指令第 2 章
上下文工程模型记不住管理对话历史 + 知识注入第 3-4 章
Harness 工程模型管不住约束行为边界 + 评估校验本章

三个阶段不是替代关系,是叠加关系——后面的阶段建立在前面的基础之上。

  • 提示词工程解决了"怎么跟 LLM 说话"
  • 上下文工程解决了"怎么给 LLM 信息"
  • Harness 工程解决的是最后一个问题:怎么让 LLM 可控地发挥能力

LLM 的五个固有缺陷

Harness 的设计出发点,是 LLM 的五个固有缺陷:

缺陷表现Harness 对策
有自己的偏好喜欢深层嵌套、吞异常、过度兼容Rule:用工程约束覆盖训练数据默认值
没有边界会改不该改的文件、碰不该碰的模块AGENTS.md + Rule:定义行为边界
会迎合用户你说什么它都说对EvalCheck:输出后自动校验
会一根筋陷入死循环、重复尝试同一方案Monitor:超时检测 + 自动中断
会偷懒跳过步骤、输出不完整Skill:标准化操作流程

Harness 不是一个"新东西"——它是把前面五章的组件按这五个缺陷组织起来,形成一套完整的治理体系。

本章导读

接下来几节的结构:

  1. 6.2 标准 Harness 工程的设计清单——一个完整的 Harness 需要哪些组件,每个组件做什么
  2. 6.3~6.5 产品实战——我的工作流 Agent 系统是怎么设计的,从整体架构到单个 Agent 到 Agent 间协作
  3. 6.6 如何学习 Harness 工程——怎么用 AI 读框架源码,学习别人的实现