Harness 的本质,就是为大模型写一个微型操作系统(OS)。在这个 OS 里,大模型是 CPU,上下文窗口是极其珍贵的 RAM(内存),各种本地操作是外设(硬件)。Harness 不干涉 CPU 的计算,但它必须极其严苛地管理内存回收(上下文压缩)、调度硬件接口(极简工具集)、并随时准备触发系统中断(拦截高危操作与死循环)。
大模型(CPU)决定了智力(算力)的上限,而 Harness (OS)决定了这套智力在现实世界中能发挥出几成。
如何设计一个像 OS GC(垃圾回收)一样的阶梯掩码算法,在不丢失模型意图的前提下,榨干最后一点 Token 空间?
如何在底层构建一个安全的防线,让大模型在发疯执行
rm -rf时被精准拦截?如何为引擎建立科学的链路追踪(Tracing)和自动化度量(Benchmark)体系,用数据证明你的 Agent 真的变聪明了?
随着 Claude 3.5 Sonnet、GPT-4o 等前沿模型的问世,大模型本身已经进化成了一个拥有极强自主规划能力的 CPU。它不需要你用代码去规定“先执行 A,再执行 B”。它只需要你给它一个包含当前状态的上下文(Context),并告诉它“这里有几个工具”,它就能自主推导出下一步该干什么。基于这个前提,Harness(驾驭工程)应运而生。它不再是一个定义业务逻辑的图结构,而是一个极简的、动态的运行时环境(Runtime Environment)。
所有顶级的 Agent 引擎(无论是早期的 AutoGPT,还是如今最先进的 Claude Code、OpenClaw),它们表面上看起来像魔法一样能在你的本地项目里来回穿梭、修改代码、执行测试。但在代码的最底层,它们都在跑着一个极其朴素、但极其强健的无限循环。这个循环,在学术界通常被称为 ReAct (Reason + Act) 范式,而在工程界,我们通常称之为 Agent Loop 或 Main Loop。
在 OpenClaw 等现代底层引擎中,架构被极大地拉平了。它抛弃了 DAG,转而回归了计算机科学中最古老也最可靠的结构:一个无限循环(Main Loop)+ 一组事件驱动的拦截器(Interceptors/Middlewares)。
对比两张图,你可以清晰地看到 Harness 的三大革命性转变:
控制反转(IoC):业务流程的控制权从 “Go/Python 代码” 完全转移到了 “大模型的实时推理和规划” 中。代码只提供物理定律(如文件读写和编辑、沙箱执行等),不干涉任务走向。
防线前移:既然大模型是自由的,它就可能犯错或搞破坏。因此 Harness 的核心代码全部集中在了Middleware(防止搞破坏)和Compactor(防止内存被撑爆)上。
状态透明:循环只依赖一个单一的数据结构——也就是不断累加的Context消息列表。没有任何隐式的树节点或图节点变量。
在传统的软件开发中,程序的执行流是确定且线性的(如下图所示)。你写下 if-else,程序就严格按照路径执行。
但大模型(LLM)面对的是一个开放的、动态的、需要不断探索的环境。当它拿到一个宏大的任务(比如:“找出项目中计算错误的原因并修复”)时,它不可能像传统的纯问答(QA)机器人助手那样,在一次 API 调用中就吐出最终的完美代码。因为它缺少实时信息——它不知道当前目录下有什么文件,也不知道运行 go test 会报什么错。为了解决大模型“睁眼瞎”的问题,研究人员经历了几次重要的范式演进。
1. 纯推理(Reasoning Only)与纯行动(Acting Only)的局限性
在早期的尝试中,主要有两种流派:
2. ReAct:智能体的觉醒时刻