今天在 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(检索增强生成)。关键区别在于:

维度传统 RAGHarness 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 工程化的成熟思路:从"如何训练更好的模型"转向"如何给现有模型更好的工作环境"。它的核心价值在于:

  1. 释放模型潜力:同样的模型,在好的 Harness 下输出质量可以提升数倍
  2. 沉淀组织知识:将散落在工程师脑海里的隐性知识变成可被复用的上下文
  3. 迭代改进:让每一次成功和失败都成为未来 Agent 运行的资产

在 AI Agent 日益普及的当下,Harness Engineering 提供了一条不依赖模型迭代、专注于工程实践的提升路径,值得每个在生产环境中使用 AI 编码工具的团队认真研究。

项目来源:lopopolo/harness-engineering 相关阅读:OpenAI - Harness Engineering