Harness Engineering:AI Agent 的工程化之道
Harness Engineering:AI Agent 的工程化之道
摘要
随着大语言模型(LLM)能力的快速提升,AI Agent 已从实验性工具演进为能够执行复杂任务的生产力系统。然而,Agent 的"有用性"与"可靠性"之间存在显著鸿沟——它们足够强大以至于可以被委以重任,却也足够不可预测以至于可能产生灾难性后果。Harness Engineering(约束工程) 正是在这一背景下应运而生的工程方法论,它标志着 AI 工程化从"如何与模型对话"向"如何构建可靠的 Agent 系统"的根本性转变。
本文将系统性地介绍 Harness Engineering 的概念内涵、核心原理、技术框架及实践方法,为构建可靠的 AI Agent 系统提供理论指导与实践参考。
1. 引言:从 Prompt 到 Harness 的演进
1.1 AI 工程能力的三次跃迁
AI 与人类协作的工程化实践经历了三个阶段的演进:
| 阶段 | 核心概念 | 解决的问题 | 局限性 |
|---|---|---|---|
| 第一阶段 | Prompt Engineering | 如何写出更好的指令,让模型一次性给出预期结果 | 依赖单次交互,缺乏上下文持续性 |
| 第二阶段 | Context Engineering | 如何管理上下文窗口,优化信息检索与组织 | 仍聚焦于"模型看到什么",而非"系统如何行为" |
| 第三阶段 | Harness Engineering | 如何构建可靠的 Agent 运行环境与约束机制 | — |
1.2 为什么需要 Harness Engineering?
Anthropic 在其长期运行 Agent 的研究中揭示了核心问题:Agent 需要跨会话工作,但模型本身没有持久记忆。解决方案是将记忆外部化为结构化产物——功能列表、进度日志、Git 提交、初始化脚本等。
OpenAI 的实践更具说服力:他们构建了一个约百万行代码的内部产品,零手动编写源代码。关键不在于模型本身,而在于围绕 Agent 构建的基础设施:
- 结构化的仓库文档作为真实信息源
AGENTS.md作为导航地图- 通过 Linter 和测试强制执行的分层架构
- 合并前的 Agent 间审查循环
- 后台清理 Agent 修复代码漂移
这不再是写提示词,而是基础设施设计。
2. 核心概念
2.1 定义
Harness(约束层) 是 AI Agent 中除模型本身之外的所有组成部分。
Agent = Model + Harness
在 Coding Agent 的上下文中,Harness 包含:
- 系统提示词(System Prompt)
- 代码检索机制
- 编排系统(Orchestration System)
- 用户自定义的外部约束层
2.2 与相关概念的区别
1 | ┌─────────────────────────────────────────────────────────┐ |
| 概念 | 关注点 | 典型问题 |
|---|---|---|
| Prompt Engineering | 单次交互质量 | “如何写出更好的指令?” |
| Context Engineering | 信息呈现优化 | “模型应该看到什么信息?何时检索?如何摘要?” |
| Harness Engineering | 系统行为约束 | “何时加载上下文?允许哪些工具?如何处理失败?什么才算完成?” |
Context Engineering 决定模型看到什么,Harness Engineering 决定系统如何行为。
3. 技术框架
3.1 前馈控制与反馈控制
Harness 通过两类机制约束 Agent 行为:
3.1.1 前馈控制(Guides)
定义:预判 Agent 行为并尝试在行动前进行引导。
目标:提高 Agent 首次生成正确结果的概率。
类型:
-
计算型(Computational):确定性、快速,由 CPU 执行
- 代码转换工具(Codemods)
- 结构化模板
- 静态分析规则
-
推理型(Inferential):语义分析,由 GPU/NPU 执行
AGENTS.md规则- Skills(技能模块)
- 项目引导说明
3.1.2 反馈控制(Sensors)
定义:在 Agent 行动后进行观察,帮助其自我修正。
目标:检测问题并触发修正循环。
类型:
-
计算型:
- Linter(ESLint、Semgrep)
- 类型检查器
- 测试覆盖率报告
- 依赖分析工具
-
推理型:
- AI 代码审查
- 架构审查
- “LLM as Judge” 质量评估
3.2 控制矩阵
| 控制类型 | 方向 | 执行方式 | 示例实现 |
|---|---|---|---|
| 编码规范 | 前馈 | 推理型 | AGENTS.md、Skills |
| 项目初始化指南 | 前馈 | 混合型 | Skill + 引导脚本 |
| 代码转换 | 前馈 | 计算型 | OpenRewrite 集成工具 |
| 结构测试 | 反馈 | 计算型 | ArchUnit 模块边界检查 |
| 审查指导 | 反馈 | 推理型 | Review Skills |
4. 调控类别
4.1 可维护性约束(Maintainability Harness)
目标:调控代码的内部质量和可维护性。
特点:
- 最成熟的约束类型
- 可复用大量现有工具生态
实现示例:
- 编码风格 Linter
- 代码复杂度分析
- 测试覆盖率阈值
- 依赖版本检查
4.2 架构适配约束(Architecture Fitness Harness)
目标:确保代码符合架构设计原则和模块边界。
实现方式:
- 模块依赖检查(如 ArchUnit)
- API 契约测试
- 分层架构验证
- 端口适配器模式检查
4.3 行为约束(Behaviour Harness)
目标:验证系统的外部可观察行为是否符合预期。
挑战:
- 需要运行时环境
- 测试成本较高
- 非确定性因素更多
实现方式:
- 端到端测试
- 集成测试
- 契约测试
- 运行时监控
5. 实践方法
5.1 质量左移(Keep Quality Left)
将检查尽可能前置到开发流程的早期阶段:
1 | ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ |
5.2 渐进式信息披露(Progressive Disclosure)
问题:将所有信息一次性注入上下文窗口会导致信息过载和上下文腐化。
解决方案:
- 前置简短导航地图
- 按需拉取深层信息源
- 避免将上下文窗口当作"垃圾填埋场"
5.3 驾驶循环(The Steering Loop)
人的角色从"编写每一行代码"转变为"通过迭代 Harness 来引导 Agent":
1 | ┌─────────────────────────────────────────────────────┐ |
当问题多次发生时,改进前馈和反馈控制,使其在未来更不可能发生。
6. 行业实践案例
6.1 LangChain:仅改 Harness 提升 25 名
在 Terminal Bench 2.0 基准测试中,LangChain 通过仅改变 Harness(不更换模型),将 Coding Agent 的排名从 30 名开外提升至前 5 名。
关键改进:
- 更好的工具编排
- 更严格的输出验证
- 更智能的上下文管理
6.2 Stripe:千级 PR 合并
据报道,Stripe 每周有超过 1000 个由 Agent 生成的 PR 被合并。
关键机制:
- 隔离的沙箱环境
- 硬性 CI 限制
- 明确的升级规则
- 人工介入触发条件
6.3 Datadog:生产遥测作为 Harness
Datadog 将生产环境遥测数据纳入 Harness 组成部分:
- 性能回归信号反馈到 Agent 循环
- 实时监控驱动自动修复建议
- 从"生成代码"到"生成-验证-修复"的闭环
7. 挑战与展望
7.1 当前挑战
| 挑战 | 描述 |
|---|---|
| 记忆断裂 | Agent 的记忆机制仍不可靠,跨会话状态管理困难 |
| 验证盲区 | 自动化验证无法覆盖所有场景 |
| 工具安全 | 工具调用带来安全风险 |
| Harness 债务 | Harness 本身成为需要维护的产品,存在 bug 和漂移 |
| 注意力稀缺 | Agent 输出速度远超人类审查能力 |
7.2 未来展望
程序员的角色转变:
- 更少时间手动编写每一行代码
- 更多时间设计 Agent 可以安全工作的"栖息地"
- 更多机器可读文档、评估系统、沙箱、权限边界、结构化测试
核心洞察:
提示词是最简单的部分,可靠性才是真正的工作。
8. 结论
Harness Engineering 标志着 AI 工程化的新阶段。它不是 Prompt Engineering 的时髦重命名,而是当我们停止演示智能、开始尝试交付智能时所必需的工程方法论。
核心要点:
- Agent = Model + Harness:模型是引擎,Harness 是汽车的其他所有部分。
- 前馈 + 反馈:两者结合才能构建可靠的自我修正系统。
- 质量左移:将检查尽可能前置,降低修复成本。
- 渐进披露:避免上下文过载,按需加载信息。
- 持续迭代:通过驾驶循环不断改进 Harness。
未来的 AI 系统将更多是"模型在精心设计的环境中运行",而非"一个天才模型做所有事情"。Harness Engineering 正是构建这些环境的关键方法论。
参考文献
- Böckeler, B. (2026). Harness engineering for coding agent users. Martin Fowler’s Blog.
- Bouchard, L. (2026). Harness Engineering: The Missing Layer Behind AI Agents.
- Anthropic. (2025). Building effective agents for long-running tasks.
- OpenAI. (2025). AI-assisted development at scale.
- Siemens. (2023). An exploration of wire harness engineering.
本文撰写于 2026 年 3 月,基于当时的技术发展状态整理。


