# Fowler/Thoughtworks: Harness Engineering

> 原文链接：https://martinfowler.com/articles/exploring-gen-ai/harness-engineering.html
> 作者/来源：Thoughtworks (Birgitta Böckeler, Martin Fowler 网站)
> 阅读日期：2026-04-02

## 一句话总结
Birgitta Böckeler 从 Thoughtworks 的视角分析了 OpenAI 的 harness engineering 实践，将其分解为三大核心组件（context engineering、架构约束、"垃圾回收"），并提出了四个关于 harness 未来发展的前瞻性假设。

## 核心论点
文章以 OpenAI 团队用 AI agent 维护100万+行代码的实践为分析对象，从咨询公司的独立视角进行了解读和延伸。作者将 OpenAI 的 harness 结构梳理为三个核心类别：

第一是 **Context Engineering**：在代码库中持续增强的知识库，加上 agent 对动态 context 的访问能力（如可观测性数据和浏览器导航）。第二是**架构约束（Architectural Constraints）**：由 LLM agent 和确定性工具（自定义 linter、结构化测试）共同监控的约束系统。第三是**"垃圾回收"（Garbage Collection）**：定期运行的 agent 识别文档不一致和架构约束违规，对抗系统的熵增。

作者还提出了一个重要的批判性观点：OpenAI 的方法**缺乏对实际功能和行为测试的验证**，其关注点更多在内部质量和可维护性上，而非外部行为正确性。这是一个值得关注的盲区。

## 关键概念
- **Harness 三组件模型**：Context engineering（知识）+ Architectural constraints（约束）+ Garbage collection（清理）。这个分类比 OpenAI 原文更清晰简洁。
- **Harness as Service Template（harness 作为服务模板）**：技术栈有限的组织可能将 harness 作为新服务的起点，类似于 golden-path template。这预见了 harness 的标准化和复用趋势。
- **Runtime Constraints Enable Autonomy（运行时约束使自主性成为可能）**：一个看似矛盾但深刻的洞察——通过特定模式、强制边界和标准化结构来约束解空间，实际上是在用灵活性换取可维护性和可靠性，从而使 agent 获得更大的自主权。
- **Tech Stack Convergence（技术栈趋同）**：随着编码变得更多是"引导"而非手动编写，更少的技术栈将占主导地位。"AI 友好性"和可用的 harness 将取代开发者偏好成为技术选型的驱动因素。
- **Pre-AI vs Post-AI Maintenance（AI 前后的维护分水岭）**：为遗留代码库加装 harness 可能不值得投入，这将在"为 harness 设计的应用"和"旧系统"之间造成分化。

## 实践建议
1. **审计现有的"隐性 harness"**：检查团队已有的 pre-commit hooks、自定义 linter、架构约束和结构化测试框架（如 ArchUnit），这些都是 harness 的雏形。
2. **关注行为测试，而非仅关注内部质量**：OpenAI 方法的一个盲区是缺乏功能验证，团队应补充端到端的行为测试。
3. **将 harness 视为实质性的工程投资**：OpenAI 五个月的投入表明这是真正的工程工作，而非简单的配置。
4. **考虑 harness 的可复用性**：在设计 harness 时考虑其作为 service template 的潜力，可能在组织内推广。
5. **以"约束即自由"的思维设计系统**：更多的运行时约束不是限制了 agent，而是使其能更可靠地自主工作。

## 独到观点
这篇文章最独特的贡献在于**从外部咨询视角提供了四个前瞻性假设**，将 harness engineering 从具体实践提升到了行业趋势层面。尤其是"技术栈趋同"和"pre-AI vs post-AI 分水岭"两个假设极具洞察力——它们暗示 harness engineering 不仅是一种技术实践，更可能重塑整个软件行业的技术选型逻辑和系统架构策略。此外，对 OpenAI 方法缺乏行为测试的批评也是其他文章没有指出的。

## 与其他文章的关联
- 直接分析和扩展了 [OpenAI: Harness Engineering](01-openai-harness-engineering.md) 的内容，提供了独立的批判性视角。
- "约束即自由"的理念与 [Inngest: Harness Not Framework](08-inngest-harness-not-framework.md) 中 harness 提供结构化运行环境的观点一致。
- "垃圾回收" agent 对应 [OpenAI](01-openai-harness-engineering.md) 中的"重构 agent"概念。
- 行为测试的缺失与 [Anthropic: Effective Harnesses](02-anthropic-effective-harnesses.md) 和 [Anthropic: Harness Design](03-anthropic-harness-design-long-running.md) 中强调的端到端测试形成对比。
- Tech stack convergence 假设与 OpenAI 的 "boring tech" 原则相呼应。
- 与 [Fowler: Context Engineering for Coding](11-fowler-context-engineering-coding.md) 是同一作者/网站的系列文章。
