今天在 GitHub Trending 上看到一个很有意思的项目:Harness Engineering,它提出了一个极具洞察力的观点——与其不断微调或更换大模型,不如系统性地塑造 AI Agent 的运行环境,让模型"天资"充分释放。这是一个正在获得越来越多关注的 AI 工程化方向。
一、项目概述
Harness Engineering 是由 Ryan Lopopolo 提出的 AI 工程方法论,主张在保持模型和编码 Agent 作为"黑盒"不变的前提下,通过改善两个外部杠杆来提升 Agent 输出质量:
- 上下文(Context):为 Agent 提供组织级的知识、决策背景和约束条件
- 工具(Tools):为 Agent 构建可操作的接口和验证手段
核心理念一句话概括:“代码是 Agent 操作计算机的方式”。当环境足够丰富时,Agent 可以无需人工介入即可产生符合组织标准的输出。
二、核心原理
2.1 非功能性需求的可恢复化
传统软件工程中,非功能性需求(NFR)——可靠性、安全性、可维护性、性能等——通常散落在文档、Slack 消息或资深工程师的脑子里。Harness Engineering 的核心洞察是:将这些 NFR 编码为可被 Agent 检索和执行的上下文。
具体做法是为仓库构建一个 AGENTS.md 路由文件,Agent 在执行任务时先读取它,由它指引 Agent 去往相关的论证、案例和证明材料:
<!-- AGENTS.md -->
# Agent Task Router
- 代码风格与架构约束 → `docs/architecture/`
- 安全实践 → `playbooks/security/`
- 性能基准 → `benchmarks/`
- 发布流程 → `playbooks/release/`
2.2 “过程数据冰山"模型
项目提出了一个形象的比喻:通用大模型的权重只包含了组织"过程数据冰山"的水面之上部分。水面之下是:
- 当前运营状态
- 本地化的本体论(ontology)
- 质量门槛和决策规则
- 异常处理历史
- 权限关系
Harness Engineering 要做的是将水面之下的所有内容——尤其是那些隐性的组织知识——变成 Agent 可获取的上下文和工具。
2.3 迭代博弈中的知识积累
由于软件开发本质上是一场"迭代博弈”,每一次成功的代码变更、每一次失败的经验、每一次用户反馈,都可以成为下一轮 Agent 运行的上下文素材。这种反馈循环让组织的判断力逐渐"累积":
失败案例 → 上下文 → Agent 边界约束
成功案例 → 上下文 → Agent 示例引导
用户反馈 → 上下文 → Agent 质量校准
三、架构设计
3.1 目录结构
Harness Engineering 仓库采用以下目录组织:
harness-engineering/
├── AGENTS.md # Agent 任务路由入口
├── docs/ # 论文与论证文档
│ ├── domain-modeling/ # 领域建模
│ ├── durable-systems/ # 持久化系统设计
│ └── last-mile-deployment/ # 最后一公里部署
├── playbooks/ # 实践手册(可直接应用)
├── sources/ # 参考文献与来源
└── scripts/ # 辅助脚本
3.2 与传统 RAG 的区别
Harness Engineering 不是简单的 RAG(检索增强生成)。关键区别在于:
| 维度 | 传统 RAG | Harness Engineering |
|---|---|---|
| 数据来源 | 通用知识库 | 组织私有过程数据 |
| 更新频率 | 相对静态 | 随每次迭代持续更新 |
| 验证机制 | 无内置 | 含可执行约束和证明 |
| 目标 | 回答问题 | 引导行动并验证结果 |
四、快速开始
4.1 环境要求
- 支持 AI 编码 Agent(Claude Code、Copilot、Cursor 等)
- 目标代码仓库已配置好 Harness Engineering 环境
4.2 使用方法
Step 1: 将 Harness Engineering 仓库克隆到本地
git clone https://github.com/lopopolo/harness-engineering.git
Step 2: 在你的项目中使用
将 Harness Engineering 的 AGENTS.md 和相关 playbooks/ 目录复制到目标项目:
cp -r harness-engineering/AGENTS.md /your-project/
cp -r harness-engineering/playbooks/ /your-project/
Step 3: 让 Agent 读取 Harness 配置
在任务描述中包含:
“请同时阅读本仓库的
AGENTS.md并遵循其中的规范进行代码审查。”
Step 4: 利用工具进行验证
项目提供了一些可执行约束脚本,可由 Agent 在提交前自动运行以验证质量标准是否满足。
五、实践案例:Last-Mile Deployment
last-mile-deployment 是 Harness Engineering 最具实操性的模块之一,聚焦于如何将 Agent 生成的代码安全地部署到生产环境。它包含了:
- 上下文供给:组织当前的部署流程、审批链和通知渠道
- 能力边界:哪些操作需要人工审批,哪些可以自动执行
- 证明机制:部署前后的检查清单和自动化验证
这解决了一个关键问题:Agent 生成的代码即使通过了静态检查,也不代表可以直接部署到生产环境——它需要组织的上下文来理解发布流程和风险边界。
六、常见问题
Q1: 与 Model Context Protocol (MCP) 有什么区别?
MCP 是协议层面的标准化,定义了 Agent 与工具之间的通信格式。Harness Engineering 是方法论层面的实践,关注的是"给 Agent 什么样的上下文和工具",而 MCP 解决的是"Agent 和工具如何通信"——两者是正交且互补的。
Q2: 维护 Harness 配置本身需要大量人工投入吗?
项目的设计目标是让维护尽可能低摩擦:每个 Sprint 结束时的复盘、代码审查中的决策、post-mortem 报告,都可以成为 Harness 的上下文素材——而非需要专门腾出时间做文档工作。
Q3: 适用于哪些类型的 Agent?
目前社区实践主要集中在编码 Agent(代码生成、审查、测试),但该方法论同样适用于数据分析、运维、客服等 Agent,核心要求是任务具有明确的组织标准可供编码。
Q4: 与 Test-Driven Development(TDD)是否冲突?
不冲突。Harness Engineering 可以将 TDD 的测试规范纳入 Agent 的可执行约束中,让 Agent 在生成代码的同时也能理解"通过哪些测试才算合格"。
七、总结
Harness Engineering 代表了一种 AI 工程化的成熟思路:从"如何训练更好的模型"转向"如何给现有模型更好的工作环境"。它的核心价值在于:
- 释放模型潜力:同样的模型,在好的 Harness 下输出质量可以提升数倍
- 沉淀组织知识:将散落在工程师脑海里的隐性知识变成可被复用的上下文
- 迭代改进:让每一次成功和失败都成为未来 Agent 运行的资产
在 AI Agent 日益普及的当下,Harness Engineering 提供了一条不依赖模型迭代、专注于工程实践的提升路径,值得每个在生产环境中使用 AI 编码工具的团队认真研究。
项目来源:lopopolo/harness-engineering 相关阅读:OpenAI - Harness Engineering