Harness Engineering 技术知识指南
文档版本:1.1 | 更新日期:2026-04-12 | 基于最新行业实践整理
文档目的:提供 Harness Engineering 的核心技术知识、实践案例和最佳实践
适用对象:技术架构师、工程负责人、AI应用开发者、DevOps工程师
📖 目录
概念定义与起源
什么是 Harness Engineering?
Harness Engineering 是一门工程实践,旨在通过设计和优化 AI Agent 的运行环境、工具配置、反馈机制和上下文管理系统,来提升 Agent 输出的可靠性和质量。
核心公式
Agent = Model + Harness
- Model: AI 模型本身(GPT、Claude、Gemini 等)
- Harness: 除了模型之外的一切——环境、工具、约束、反馈循环
概念起源
| 时间线 | 关键事件 | 贡献者 |
|---|---|---|
| 2025年底 | 术语首次提出 | Viv (@Vtrivedy10) |
| 2026-02-11 | OpenAI 发布 Harness Engineering 文章 | OpenAI Codex 团队 |
| 2026-02-12 | Can Bölük 发表 The Harness Problem | Can Bölük |
| 2026-03-12 | HumanLayer 发表 Skill Issue | HumanLayer |
| 2026-04-02 | Martin Fowler 发表权威分类框架 | Martin Fowler |
为什么现在重要?
核心洞察:优化 AI 的工作环境比等待更强的模型更划算、更有效。
数据支撑: - OpenAI Codex 团队:5个月编写100万行代码,零手写代码 - 编辑工具优化:使弱模型性能提升高达64.6个百分点 - 成本效益:环境优化的 ROI 远高于模型升级
核心理论框架
1. 前馈控制 vs 反馈控制
前馈控制 (Guides)
在 Agent 行动前的引导机制:
- 目标:提高首次输出质量
- 示例:AGENTS.md、编码规范、架构约束、红线规则
- 作用:告诉 AI "该怎么做"
反馈控制 (Sensors)
在 Agent 行动后的检查机制: - 目标:发现并纠正错误 - 示例:Linter、Type Checker、自动化测试、AI代码审查 - 作用:检查 AI "做得怎么样"
协同原则:仅有前馈会导致重复犯错;仅有反馈会导致不知道规则。
2. 计算型 vs 推理型任务
| 维度 | 计算型任务 | 推理型任务 |
|---|---|---|
| 确定性 | 高 | 低 |
| 执行速度 | 快 | 慢 |
| 硬件需求 | CPU | GPU/NPU |
| 成本 | 低 | 高 |
| 示例 | 语法检查、格式化 | 架构设计、复杂代码审查 |
| 执行频率 | 每次变更 | 关键变更时 |
优化策略:计算型任务每次都做(便宜可靠),推理型任务只在必要时做。
3. 三维调节框架 (Martin Fowler)
3.1 可维护性 Harness
调节代码内部质量: - 重复代码检测 - 圈复杂度分析 - 测试覆盖率 - 架构漂移检测 - 代码风格检查
3.2 架构适配性 Harness
调节应用架构特性: - 性能要求 + 性能测试 - 可观测性标准 + 日志质量检查 - 安全约束 + 安全扫描
3.3 行为 Harness
调节功能行为(最具挑战性): - 前馈:功能规格说明 - 反馈:AI生成的测试套件 + 覆盖率 + 变异测试
关键组件详解
1. AGENTS.md:上下文地图
设计原则
- 简洁性:100行以内,作为地图而非百科全书
- 渐进式披露:指向更深层信息来源
- 人类撰写:AI生成版本性能下降20%+
- 定期验证:Linter检查更新状况
失败模式
- 上下文稀缺资源被挤占
- 过多指导反而无效
- 立即腐化为陈旧规则坟场
- 难以机械验证
分层结构最佳实践
AGENTS.md (100行,项目级地图)
├── module-a/AGENTS.md (模块A专用)
├── module-b/AGENTS.md (模块B专用)
└── tools/ (按需加载)
2. Skills:指令模块
渐进式披露机制
Agent启动 → 加载核心AGENTS.md
↓
遇到特定任务 → 激活相关Skill
↓
SKILL.md加载到上下文
↓
任务完成 → 清理Skill上下文
安全考虑
- Skills注册表存在恶意代码风险
- 应像对待
npm install random-package一样谨慎
3. MCP Servers:工具扩展
问题与优化
- 问题:每个MCP工具描述都注入系统提示,导致上下文膨胀
- 解决方案:
- CLI优先(功能已通过CLI在训练数据中表示)
- 渐进式加载
- 自定义精简CLI
实践示例
将Linear MCP Server替换为自定义CLI:
linear get-issue ENG-XXXX # 获取Issue
linear list-issues # 列出Issue
linear add-comment -i ENG-XXXX "comment" # 添加评论
效果:节省数千Token的工具描述。
4. Hooks:生命周期控制
触发点
- Agent开始/停止时
- 工具调用前/后
- 特定事件发生时
常见用途
| 用途 | 示例 |
|---|---|
| 通知 | 发送Slack消息、播放声音 |
| 审批 | 自动批准/拒绝危险操作 |
| 集成 | 创建GitHub PR、设置预览环境 |
| 验证 | 类型检查、格式化、测试 |
Hooks示例
#!/bin/bash
# Agent停止时运行类型检查
cd "$CLAUDE_PROJECT_DIR"
OUTPUT=$(bun run typecheck 2>&1)
if [ $? -ne 0 ]; then
echo "$OUTPUT" >&2
exit 2 # 告诉Harness重新激活Agent
fi
5. Sub-agents:上下文防火墙
解决Context Rot问题
- 问题:随着上下文增长,模型性能下降
- 解决方案:Sub-agents封装独立任务,只返回压缩结果
成本优化架构
父Agent (Opus - 昂贵)
├── Sub-agent (Sonnet - 中等) → 代码库搜索
├── Sub-agent (Sonnet - 中等) → 功能实现
└── Sub-agent (Haiku - 便宜) → 简单修复
使用场景
- 代码库搜索和定位
- 模式分析
- 跨服务追踪
- 文档/Web研究
行业实践案例
案例1:OpenAI Codex团队 - 零手写代码实验
关键数据
| 指标 | 数值 |
|---|---|
| 时间跨度 | 5个月(2025-08至2026-02) |
| 代码量 | ~1,000,000行 |
| Pull Requests | ~1,500个 |
| 团队规模 | 3人→7人 |
| 人工编写代码 | 0行 |
| 人均吞吐量 | 3.5 PRs/天 |
核心方法
- 知识库架构:100行AGENTS.md作为地图
- 分层架构约束:Types→Config→Repo→Service→Runtime→UI
- 渐进式披露:从小切入点开始,逐步指导
- "垃圾回收"机制:定期扫描偏差,自动发起重构PR
案例2:Can Bölük基准测试 - 编辑工具的力量
测试设置
- 任务:修复React代码库bug
- 规模:180任务 × 3次运行 × 16模型 × 3编辑格式
- 变量:Patch、Replace、Hashline格式
关键发现
| 模型 | Patch | Replace | Hashline | 提升 |
|---|---|---|---|---|
| Grok Code Fast 1 | 6.7% | 66.7% | 71.3% | +64.6pp |
| MiniMax M2.1 | 23.3% | 55.0% | 65.0% | +41.7pp |
| GLM-4.7 | 51.7% | 66.7% | 75.0% | +23.3pp |
核心结论: 1. 编辑格式影响 > 模型升级 2. 弱模型获益最大 3. 零训练成本(仅~$300测试费)
Hashline技术原理
11:a3|function hello() {
22:f1| return "world";
33:0e|}
- 模型引用标签(如
2:f1)而非复现内容 - 文件更改则哈希不匹配,编辑被拒绝
- 消除"完美复现内容"要求
案例3:HumanLayer实践 - Skill Issue
Harness配置点优先级
- CLAUDE.md / AGENTS.md - 最先配置,影响最大
- Sub-agents - 上下文控制关键
- Skills - 渐进式披露
- Hooks - 自动化控制流
- MCP Servers - 扩展能力(需控制数量)
最佳实践与反模式
最佳实践清单
1. 上下文效率原则
- ✅ 成功静默:测试/构建成功时不输出
- ✅ 失败详细:只有失败才产生详细输出
- ✅ 渐进披露:按需加载,非一次性注入
- ✅ 地图优于说明书:提供导航,非百科全书
2. 失败驱动改进
"每次Agent失败时,花时间设计一个解决方案,使其不再以这种方式失败。"
— Mitchell Hashimoto
流程: 1. 观察失败模式 2. 分析根因(Guide缺失还是Sensor不足?) 3. 实施针对性改进 4. 验证改进效果 5. 沉淀为可复用配置
3. 渐进式实施路线
Phase 1: 基础AGENTS.md + 核心Linter
Phase 2: 添加关键Skills + Hooks
Phase 3: 引入Sub-agents + MCP
Phase 4: 构建自定义反馈循环
Phase 5: 自动化"垃圾回收"
常见反模式
反模式1:过度配置
- 表现:安装几十个Skills"以防万一"
- 后果:上下文窗口膨胀,Agent进入"愚蠢区"
- 解决方案:从简单开始,失败时再加
反模式2:完美主义陷阱
- 表现:预先设计"完美"Harness
- 后果:优化时间超过实际编码时间
- 解决方案:优化迭代速度,而非首次成功率
反模式3:忽视上下文管理
- 表现:每次都运行完整测试套件
- 后果:测试输出淹没上下文,Agent开始幻觉
- 解决方案:成功静默,上下文隔离
反模式4:过度依赖模型
- 表现:"等GPT-6就好了"
- 后果:错失当前可用的10x提升
- 解决方案:最大化当前模型能力
实施路线图
Phase 1:基础建设(1-2周)
├── 优化AGENTS.md为100行地图
├── 添加核心Linter Hook(cargo clippy)
├── 建立基础文件结构
└── 文档化现有Harness配置
Phase 2:核心能力(2-4周)
├── 实现AGENTS.md分层结构
├── 添加类型检查Hook(cargo check)
├── 增强Skills模块化设计
├── 建立基础反馈循环
└── 集成关键MCP工具
Phase 3:高级功能(4-8周)
├── 引入Sub-agent上下文隔离
├── 构建自动化测试反馈
├── 实现"垃圾回收"机制
├── 建立性能监控
└── 创建自定义Linter
Phase 4:生产就绪(8-12周)
├── 完善安全扫描
├── 建立可观测性仪表板
├── 优化成本控制机制
├── 创建团队培训材料
└── 制定维护和更新流程
成本优化策略
1. 模型使用分层
| 任务类型 | 推荐模型 | 成本 | 使用场景 |
|---|---|---|---|
| 规划编排 | Opus | 高 | 复杂架构设计、关键决策 |
| 常规实现 | Sonnet | 中 | 日常功能开发、代码生成 |
| 简单任务 | Haiku | 低 | 搜索、简单修复、格式化 |
2. 计算型/推理型分离
- 计算型:每次变更都运行(低成本)
- 推理型:关键变更时运行(高成本)
3. 上下文管理优化
- 使用Sub-agents隔离复杂任务
- 清理中间输出和冗余信息
- 采用Hashline等高效编辑格式
4. 工具选择策略
- CLI优先于MCP Server
- 自定义精简工具代替通用工具
- 本地工具优先于远程API
未来发展趋势
技术趋势
- 标准化框架:行业标准的Harness配置格式
- 自动化优化:AI自动优化自身Harness配置
- 实时监控:Harness性能的实时监控和调整
- 跨平台兼容:支持多云、多环境部署
角色演变
- 传统角色:软件工程师、测试工程师、DevOps
- 新兴角色:Harness工程师、AI环境设计师、反馈循环架构师
工具生态
- 专门的Harness配置管理工具
- Harness性能基准测试套件
- 社区驱动的Harness模板库
参考文献与资源
核心文献
-
Martin Fowler (2026-04-02). Harness engineering for coding agent users
https://martinfowler.com/articles/harness-engineering.html -
OpenAI (2026-02-11). Harness engineering: leveraging Codex in an agent-first world
https://openai.com/index/harness-engineering/ -
Can Bölük (2026-02-12). The Harness Problem
https://blog.can.ac/2026/02/12/the-harness-problem/ -
HumanLayer (2026-03-12). Skill Issue: Harness Engineering for Coding Agents
https://www.humanlayer.dev/blog/skill-issue-harness-engineering-for-coding-agents
开源项目
- oh-my-openagent - 开源Harness工具集
- oh-my-pi - Hashline技术实现
- Claude Code SDK - 官方开发工具包
研究论文
- ETH Zurich - Agentfile Study (arXiv:2602.11988)
- Chroma - Context Rot Research
- Anthropic - Tool Use Optimization
实用工具
- 静态分析:ESLint、Pylint、cargo-clippy
- 测试框架:Jest、pytest、cargo-test
- 监控工具:Prometheus、Grafana、OpenTelemetry
- 部署工具:Docker、Kubernetes、Terraform
📝 文档维护
版本记录
- v1.0 (2026-04-10):初始版本,基于调查报告
- v1.1 (2026-04-12):更新行业案例,添加实施路线图
贡献指南
- 提交新的行业实践案例
- 更新最佳实践建议
- 补充工具和资源推荐
- 修正技术细节错误
反馈渠道
- 文档问题反馈:[填写反馈表单]
- 技术讨论:[加入社区]
- 紧急支持:[联系维护团队]
核心观点总结:Harness Engineering 代表了从"使用AI"到"设计AI工作环境"的思维转变。通过系统化的环境设计、反馈循环构建和成本优化,可以释放现有AI模型的10倍潜力,而非被动等待更强的模型。这不仅是技术优化,更是工程范式的根本转变。
最后更新:2026-04-12 | 文档状态:✅ 生产就绪