arrow_back 返回
AI Android 8 分钟阅读

Harness Engineering工程化方法总结

Stephen
Stephen
Android / AI 应用开发者 · 发布于 2026年6月30日
Harness Engineering工程化方法总结

Harness Engineering工程化方法总结

从22年的GPT,及之后生成式人工智能爆发至今,大语言模型的底层能力已经完成了一次次跨越式的蜕变。然而在产业落地、尤其是智能体开发的前沿演进中,越来越多的人发现:决定 AI 应用最终成败的,往往不仅是那个博古通今的“模型大脑”,更是围绕它搭建的系统工程。

如果把大模型比作一匹拥有无穷神力的“旷野烈马”,那么我们要在现实世界中驾驭它走向既定终点,就必须演进出三套截然不同、却互为犄角的底层工程学科:

  • 提示词工程(Prompt Engineering): 研究如何用最精准、最具逻辑的指令,唤醒 AI 的深度思考能力;
  • 上下文工程(Context Engineering): 动态调整的“视野与记忆”,研究如何跨越海量信息与高昂成本的物理限制,在万级 Token 中动态提炼出最关键的业务背景与知识输入;
  • 脚手架工程(Harness Engineering): 它是确保绝对安全的“缰绳与防具”,研究如何在大模型非确定性的提议下,构建一个隔离沙箱与自动化反馈的闭环系统,确保 AI 的行动绝对可靠。

从探索 AI 能理解什么(Prompt),到管理 AI 需要知道什么(Context),再到约束 AI 被允许做什么(Harness),这三大热门技术正在构建起 AI Agent 时代的全新技术版图。本文将带你逐一拆解这三个核心概念,探寻大模型走向工业级生产力的真正秘密。

Harness Engineering

过去两年,很多人认为 AI 能不能完成任务,取决于 Prompt 写得够不够好。后来大家发现,仅靠 Prompt 已经远远不够。于是又出现了 Context Engineering——如何给 AI 提供正确的上下文。而到了 2026 年,OpenAI 在介绍 Codex 内部研发方式时,首次提出了一个新的概念:

Harness Engineering

它代表着 AI Agent 时代的软件开发方式,开始发生根本性的变化。

什么是 Harness?

Harness 这个词原本来自英文。最初的意思是马具、缰绳、安全带。它最大的作用不是提供动力,而是表示一种约束、控制、引导。一匹马本身拥有动力,但是如果没有缰绳来控制,它就无法完成运输任务。

同样的,LLM拥有很强的推理能力。但是没有 Harness,它也只是一个会回答问题,和人对话的大模型。所以很多人现在开始使用下面这个公式:

AI Agent = LLM + Harness

其中:

LLM 提供的是:

  • 推理能力(Reasoning)
  • 编码能力(Coding)
  • 理解能力(Understanding)

Harness 提供的是:

  • 工具
  • 权限
  • 环境
  • 上下文
  • 验证
  • 反馈
  • 记忆
  • 工作流

真正让 Agent 能工作的,不只是模型,而是整个运行系统。

Context Engineering 和 Prompt Engineering 的局限性

假设现在有一个典型的大型 Android 项目:

app/
feature-home/
feature-login/
feature-profile/
feature-order/
common/
network/
storage/
ui/
compose/
...

总代码:

250万 LOC

Module:120+

开发人员:60+

CI:GitHub Actions

测试:
Unit Test
Instrumentation Test
Compose Test

你的需求只有一句:

修复首页点击商品偶尔闪退的问题。

对于 AI 来说,它需要完成找到 Crash,分析原因,找到代码,修改,运行测试,验证,提交 PR

但是不同阶段,AI 的能力完全不同。Prompt Engineering 的核心思想就是 把需求写清楚。

例如:

你是一位资深 Android 工程师。

请帮我修复首页商品点击闪退的问题。

请遵循 Kotlin 官方编码规范。

不要修改无关代码。

或者再高级一点:

请采用 MVVM 架构。

不要影响其他 Feature。

修改完成以后给我 Diff。

Prompt 已经写得很好,但是问题来了,AI 根本不知道:

首页代码在哪里?

哪个 Module?

哪个 Activity?

哪个 ViewModel?

哪个 Repository?

哪个接口?

哪个 Crash?

Prompt 写的再漂亮,AI 还是不知道去哪找。Prompt Engineering最大的问题就是:

它只能告诉 AI “应该做什么”,不能告诉 AI “在哪里做”。

Android 大项目里:

app/
feature-home/
feature-home-new/
feature-home-v2/
feature-feed/
feature-discover/
feature-video/

Prompt 不可能告诉 AI:

首页其实在:
feature-feed
而不是:
feature-home

更不可能告诉 AI:

真正 Crash 的代码
是在 common-image 库。

在实际项目应用中,Prompt 最大的问题是没有工程信息。只能由使用人先自己理解一遍,再将疑难点通过Prompt优化后,提供给AI,获取解决方案,自行导入。

第二阶段:Context Engineering

大家发现光有 Prompt 不够时,于是开始想办法提供 Context。

例如:

README

Architecture.md

Coding Style

API 文档

最近修改记录

相关源码

Git Diff

Issue

Crash 日志

现在 Prompt 变成 Prompt + Context ,例如:

下面是:
HomeViewModel
ProductRepository
Crash 日志
请修复。

AI 的能力立刻提升很多。可以阅读、分析、修改。这就是 Context Engineering。

问题又来了。大型 Android 项目不是几个文件。而可能是250万的代码,AI 不可能一次读取全部代码到上下文。对于小点的项目,即使可以一次对话获取全部信息,也会产生巨大的噪声信息,让AI模型抓不到重点。还会出现新的问题:Context Window 不够。例如:

HomeFragment

调用
HomeViewModel

调用
Repository

调用
Network

调用
Cache

调用
Room

调用
Common Library

真正 Bug 可能在Common Library中,但是Context 里没有。AI 根本不知道,AI 只能猜。

还有一个问题:

Context 是静态的。给 AI 10 个源码文件,AI 修改以后。下一步怎么办?

不知道。

因为 Context 不会自动更新。AI 也不会自己继续获取。

所以Context Engineering 最大的问题就是:

Context 是一次性提供的。

AI不会继续找代码,也不会继续搜索,继续阅读,继续验证

第三阶段:Harness Engineering

Harness 的思想完全不同,它的信息传递的理念是

不要一次把 Context 全给 AI。

而是让 AI 自己获取。

例如:

AI 收到:

修复首页 Crash。

第一步:

AI 自己执行:

grep
rg
find
git
ls

搜索:

Home
Product
Crash

然后发现报错在 feature-feed 这个模组,则会继续打开源码,进一步发现在ProductViewModel这个类的loadProduct() 方法,然后打开 Repository,查看网络请求。直到找到真正 Crash。

这里最大的变化就是:

Context 不再是”喂给 AI”,而是 AI 主动去获取。

其实真正的大变化其实在后面。AI 修改代码以后:

它不会说:

Done.

而是继续:

./gradlew test

发现:

Build Failed

继续:

读取错误日志

修改。

继续:

./gradlew assembleDebug

发现:

Lint Error

继续:

修改

然后:

运行 Unit Test

最后:

运行 Compose Test

最后:

全部通过。

这整个循环:

写代码

编译

测试

修复

重新测试

提交

就是 Harness。

把 AI 看成一位刚加入团队的新 Android 工程师:

Prompt Engineering:你只告诉他:“修一下首页闪退。” Context Engineering:你再把设计文档、Crash 日志、相关源码打印出来交给他。 Harness Engineering:你不仅告诉他目标,还给了他 IDE、Git 权限、终端、Gradle、ADB、模拟器、CI、日志平台以及代码搜索工具,并允许他自主查阅文档、运行测试、反复验证直到修复完成。

前两者更像是在回答问题(Question Answering);Harness Engineering 则是把 AI 放进一个真实的软件工程环境,让它像一名工程师一样,通过”观察 → 分析 → 执行 → 验证 → 反馈”的闭环完成整个开发任务。这也是它与 Prompt Engineering、Context Engineering 最本质的区别。

Harness 到底包含哪些东西?

OpenAI 实际上做的事情,不是让 Codex 更聪明。而是不断完善 Codex 周围的”基础设施”。可以把 Harness 看成下面这张结构图:

                 Human



             High Level Goal



          +-------------------+
          |   Harness Layer   |
          +-------------------+

      Prompt
      Context
      Memory
      Tool Calling
      Permissions
      File System
      Git
      Terminal
      Browser
      Logs
      Metrics
      CI
      Test
      Review
      Retry
      Verification



                  LLM



               Generated Code

可以发现真正复杂的已经不是 Prompt,而是 Harness的架构。

Harness Engineering 的核心思想

一句话概括:

不要教 AI 怎么写代码,而是让 AI 能够自己完成整个开发流程。

OpenAI 在内部几乎不再人工写代码,而是让 Codex:

读取需求

阅读代码

分析影响范围

修改代码

生成测试

运行测试

查看日志

修复 Bug

重新测试

提交 PR

AI Review

继续修改

直到全部通过

整个过程形成闭环。人类负责只制定目标。Agent 负责执行目标。

工程师的角色正在变化

这是 OpenAI 提出的一个非常重要的观点。以前的软件工程师:

需求

自己写代码

测试

上线

未来的软件工程师:

需求

设计 Harness

定义规则

设计反馈

Agent 自动开发

工程师不再是:

Code Producer(代码生产者)

而更像:

System Designer(系统设计者)

也就是让 AI 能够稳定工作的工程师。

Harness 的几个核心组成

1. Context System(上下文系统)

AI 最大的问题不是不会写,而是不知道:

哪些代码最重要?

因此需要:

代码索引

知识库

Architecture Docs

AGENTS.md

Coding Rules

Dependency Graph

OpenAI 提到,他们没有把所有内容塞进一个巨大的 AGENTS.md 文件,而是尽量让知识分层、按需提供,让 Agent 获得的是”地图”,而不是一本几百页的说明书。

2. Tool System(工具系统)

Agent 不应该只能聊天。

它应该拥有:

Git

Shell

IDE

Browser

Debugger

Docker

CI

GitHub

Jira

Slack

这些工具全部开放给 AI。

AI 自己调用。

而不是人复制粘贴。

3. Feedback System(反馈系统)

AI 最大的问题:

不知道自己错了。

Harness 就负责告诉它:

编译失败



测试失败



日志异常



页面打不开



性能下降



重新修改

整个系统形成:

Observe



Analyze



Fix



Verify



Repeat

OpenAI 甚至让 Agent 能够读取日志、指标和 Trace,并利用浏览器自动操作 UI 来复现问题、验证修复效果,而不是只依赖静态代码分析。

4. Verification(验证系统)

很多 AI Coding 最大的问题:

它说:

Done.

实际上:

不能运行。

Harness 会定义:

必须:

Build Success

+

Unit Test Pass

+

E2E Pass

+

Lint Pass

+

Security Pass

否则:

不能结束任务。

5. Observability(可观测性)

这是 OpenAI 花了大量篇幅介绍的一部分。他们让 Agent 可以查看:

Log
Metric
Trace
Chrome
DOM
Screenshot
Performance

于是AI 不只是会写。还能自己 Debug。自己定位问题。自己验证修复。

总结

对于Prompt Engineering 和 Context Engineering,Harness 并没有取代前两者,而是把它们全部包含进去。

模型之间的能力差距正在不断缩小。GPT、Claude、Gemini、Qwen 等模型,在很多编码任务上的基础能力已经越来越接近。

真正决定 Agent 是否可靠的,往往不是模型本身,而是模型所处的运行环境:上下文如何组织、工具如何接入、权限如何控制、失败后如何恢复、结果如何验证。社区越来越多的实践也在强调:“更好的 Harness 往往比更换模型带来的收益更大。所以 Harness Engineering 并不是一种新的 AI 模型,也不是一种新的 Prompt 技巧。它是一种面向 AI Agent 的软件工程方法论,其核心目标是为智能体构建一个可观察、可验证、可反馈、可控制的运行环境。

未来的软件开发,竞争的重点将不再只是”谁拥有更强的大模型”,而是谁能够设计出更优秀的 Harness。在 Agent 时代,工程师创造价值的方式,也将从”亲自编写代码”逐渐转向”设计能够持续放大 AI 能力的系统”。