LangChain曾排在TerminalBench 30名开外。换掉LLM外面的基础设施层——模型不变、权重不变——直接跳到第五名。另一个研究项目让LLM自己优化基础设施,达到76.4%的通过率,超越手工设计的系统。

这就是Harness:围绕LLM的完整软件基础设施。

标准公式

Vivek Trivedi的标准定义:「如果你不是模型,你就是Harness。」

Beren Millidge在2023年给出了精确类比:原始LLM是CPU,没有RAM、没有磁盘、没有I/O。Context window是RAM(快但有限)。外部数据库是磁盘(大但慢)。工具集成是设备驱动。Harness是操作系统。「我们重新发明了冯诺依曼架构」,因为这是任何计算系统的自然抽象。

三层工程

Prompt engineering制作模型收到的指令。Context engineering管理模型看到什么、何时看到。Harness engineering涵盖以上两者加上整个应用基础设施:工具编排、状态持久化、错误恢复、验证循环、安全执行、生命周期管理。

Harness不是prompt外面的包装,是使自主Agent行为成为可能的完整系统。

十二个核心组件

综合Anthropic、OpenAI、LangChain和整个行业实践:

1. 编排循环。实现Thought-Action-Observation(TAO)循环,即ReAct loop。Anthropic称其runtime为「dumb loop」——所有智能在模型,Harness只管理turns。

2. 工具层。Schema定义(name、description、parameter types)注入模型上下文。处理注册、schema验证、参数提取、sandbox执行、结果捕获和格式化。Claude Code提供六类工具:文件操作、搜索、执行、网页访问、代码智能、子agent生成。OpenAI的Agents SDK支持function tools、hosted tools(WebSearch、CodeInterpreter、FileSearch)和MCP server tools。

3. 多时间尺度记忆。短程记忆是单session内的对话历史。长程记忆跨session持久化——Anthropic用项目文件+CLAUDE.md。Claude Code实现三层架构:轻量索引(每条目约150字符,总加载)、按需加载的详细主题文件、以及只通过搜索访问的原始记录。关键设计原则:Agent把自己的记忆当「提示」,行动前验证实际状态。

4. 上下文管理。这是大多数Agent无声失败的地方。Context rot:关键内容落在窗口中间位置时性能下降30%+。生产策略包括compaction(用摘要替换对话历史)、observation masking(隐藏旧工具输出但保留工具调用)、JIT retrieval(维护轻量标识符动态加载数据)、Sub-agent delegation(每个子agent探索后只返回1000-2000 token摘要)。

5. 验证循环。计算验证(测试、linter)提供确定性真值。LLM-as-judge捕获语义问题但增加延迟。Martin Fowler的Thoughtworks团队将此定义为guides(feedforward,行动前引导)和sensors(feedback,观察后反馈)。

6. 权限与安全架构。Permissive(快但风险高,自动批准大多数动作)和restrictive(安全但慢,每步审批)之间的选择。

7-12. 生命周期管理、错误处理、状态持久化、多Agent协作、系统提示词管理、工具作用域设计。

各公司架构对比

Anthropic Claude Agent SDK:单一query()函数,runtime是「dumb loop」,所有智能在模型。Claude Code使用Gather-Act-Verify cycle。

OpenAI Agents SDK:Runner类(async/sync/streamed),code-first,工作流逻辑用原生Python而非graph DSL。Codex三层架构:Codex Core(agent代码+runtime)、App Server(双向JSON-RPC API)、client surfaces(CLI、VS Code、web app)。

LangGraph:显式状态图,两个节点(llm_call和tool_node)加条件边。

CrewAI:role-based multi-agent架构——Agent(harness+role+goal+backstory+tools)、Task(工作单元)、Crew(agent集合)。

AutoGen:conversation-driven orchestration,五种编排模式:sequential、fan-out/fan-in、group chat、handoff、magnetic(manager维护动态任务账本协调专家)。

七大设计选择

1. Single-agent vs multi-agent。 Anthropic和OpenAI都说:优先最大化单agent。多agent系统增加开销(路由的额外LLM调用、handoff时的上下文损失)。只在工具重叠超过10个或明确分离任务域时才拆分。

2. ReAct vs plan-and-execute。 ReAct每步交织推理和动作(灵活但单步成本高)。Plan-and-execute分离规划和执行。LLMCompiler报告比sequential ReAct快3.6倍。

3. Context window管理策略。 五种生产方案:时间清空、对话摘要、observation masking、结构化笔记、子agent delegation。ACON研究显示,通过优先推理trace而非原始工具输出,可减少26-54% token同时保持95%+准确率。

4. 工具作用域。 更多工具通常意味着更差性能。Vercel从v0移除80%的工具后效果更好。Claude Code通过lazy loading实现95% context reduction。原则:暴露最小工具集

5. Harness厚度。 Anthropic押注thin harness+模型改进。Graph框架押注显式控制。Anthropic定期从Claude Code的harness中删除planning步骤,因为新模型已经内化了这个能力。

共演化原则

模型现在是和特定harness一起后训练的。Claude Code的模型学会了使用它被训练时的特定harness。改变工具实现可能因这种紧耦合而降低性能。

Harness设计的「未来验证测试」:性能是否随着更强大模型而提升,而不需要增加harness复杂性?如果是,设计合理。