Thoughtworks Distinguished Engineer Birgitta Böckeler reflects on an OpenAI article about using AI agents to build a massive codebase without typing manual code. Böckeler adopts the term “harness”—the tooling and practices used to guide and constrain AI agents—and outlines how it relies on a mix of deterministic and LLM-based approaches.

She breaks down the OpenAI team’s harness into three main categories:

  1. Context Engineering: Providing agents with knowledge bases, dynamic observability data, and browser access.
  2. Architectural Constraints: Enforcing structure through custom linters, structural tests, and agent monitoring.
  3. “Garbage Collection”: Using periodic agents to detect and fix entropy, decay, and documentation inconsistencies.

Böckeler proposes several hypotheses about the future of software engineering based on this concept:

  • Harnesses as the New Service Templates: Instead of starting from scratch, teams might begin projects with pre-built harnesses (complete with linters, tests, and context providers) tailored for common application topologies.
  • Constraining the Runtime: Despite the hype around AI’s unlimited flexibility, building reliable, AI-generated code at scale requires rigid constraints, boundaries, and standardized structures.
  • Fewer Tech Stacks: Developers may converge on a few “AI-friendly” frameworks and codebase topologies that are easier to harness and maintain via AI, reducing the focus on minor developer preferences.
  • Pre-AI vs. Post-AI Apps: While new applications can be built with a harness in mind, retrofitting older, chaotic codebases with strict harnesses might be too resource-intensive.

Ultimately, Böckeler appreciates that effective harness engineering shifts the focus from hoping “better models” will magically fix software maintainability to a concrete, rigorous discipline of designing environments, feedback loops, and control systems for AI agents.