11Harness 概念边界

L3P0五步章 · 概念章
Why · 为什么要学
Framework / Runtime / Harness / Platform 是 agent 工程的四个抽象层,代表完全不同的所有权和工作深度。术语混用会让技术沟通失焦——把"基于 LangChain 的 multi-agent"叫做 harness,把 Bedrock 这类 platform 当成 framework,讨论的就不是同一件事。这一节给出这四层的精确定义,是和其他工程师讨论 agent 架构时的共识基础。
1 ·核心要点

四个术语,按"所有权"维度区分:

类别 Own 什么 交付给谁 典型产品
Framework组件(chain、agent、tool 类)库 → 开发者LangChain, AutoGen
Runtime执行图、状态机、持久化平台 → 开发者LangGraph, Temporal
Harness主循环、permission、UI、context产品 → 终端用户Claude Code, Cursor
Platform模型托管 + infra云 → 开发者Bedrock, Vertex AI

Framework = 工具箱。LangChain 给你 LLMChain、AgentExecutor、Tool 这些类,你写 Python 拼装。Framework 本身没有"运行"的概念,它是个 lib。

Runtime = 执行容器。LangGraph 让 agent 写成有向图自动管 checkpoint;Temporal 把每个 agent 步骤变成 durable workflow,挂了能恢复。Runtime 解决"agent 怎么稳定跑",但 agent 是什么样、loop 怎么转,还是开发者写代码定义。

Harness = 跑着 agent 的产品本体。Claude Code 不是一个 lib,是 CLI 工具,装上就有完整 agent 跑着。Harness 工程师 own 的是 loop 控制(死循环检测、最大步数)、permission 决策(哪些 tool 自动跑、哪些要确认)、context 管理(满了 reset 还是 compact)、tool registry(哪些 tool 暴露给模型)、UI bridge(streaming 怎么渲染、用户怎么中断)——这些都是产品决策,不是用户能配置的。

Platform = 模型基础设施。AWS Bedrock 给你 API endpoint 调用各种模型,处理认证、计费、合规。不关心 agent 怎么写。

为什么这个区分关键:做 harness 工程,要的是"造产品本身"的能力。如果你说"我用 X framework 搭了 agent",在懂行的人听来等于"我是 framework user,不是造 harness 的人"。差一个抽象层级,工程深度天差地别——这直接决定你能解决的问题边界。

2 ·真实系统拆解(替代代码示例)
概念章无代码——用真实公司的产品分层做案例,比 toy code 更具体

案例:Cursor 的分层

Cursor 的产品架构(基于 VS Code fork)分层如下:

┌─────────────────────────────────────────┐
│ VS Code 内核(UI runtime,不是 harness) │
├─────────────────────────────────────────┤
│ Cursor Composer / Agent 模式            │ ← Harness 本体
│  · own agent loop                       │   (Cursor 团队的差异化资产)
│  · own permission(Apply / Reject UX)   │
│  · own diff UI、streaming 渲染          │
│  · own tool registry                    │
├─────────────────────────────────────────┤
│ OpenAI / Anthropic API(Platform)       │
└─────────────────────────────────────────┘

Cursor 对接 LangChain 吗?没有——他们自己实现 agent loop,因为要 own loop 控制 + UI 集成。Framework 给不了这种 vertical integration。

这个例子里,harness 层就是 Cursor 的核心差异化资产。如果他们用 LangChain,产品体验会变成"AI 集成插件",而不是"AI-native 编辑器"。

3 ·工程权衡

什么场景要造 harness(而不是用 framework)

  1. 终端用户直接交互的产品(coding agent、客服 agent、操作 agent)
  2. 需要 own 用户体验细节(streaming、permission UX、撤销 / 重试 UI)
  3. 要 vertical integration——loop 控制要配合 UI 和 permission 一起设计
2026-08 更新 · Harness Engineering 已是正式学科与职位名

2026 年上半年的三个标志性事件:(1) OpenAI 发布官方文章《Harness engineering: leveraging Codex in an agent-first world》,把这个词确立为学科;(2) Cursor 公开招聘「Software Engineer, Agent Harness」;(3) DeepSeek 2026-05 组建 harness 团队。核心论点已成共识:普通模型 + 好 harness > 顶级模型 + 差 harness。

可演化性(evolvability)成为 2026 年 harness 设计的第一原则(Anthropic):harness 每个组件编码的是「模型还做不到什么」的假设,模型升级后要持续剥离不再承重的部分。配套方法论是「棘轮原则」——每次 agent 失误固化为一条规则或 eval case,系统单向变好。mini-swe-agent(约 100 行、纯 bash 工具)是这个原则的实证:前沿模型裸跑也能解大量 SWE-bench,harness 的价值分配随模型变强而流动。

三家哲学分歧(面试必考):Codex 赌「垂直整合专用模型 + token 效率 + 云端 best-of-N」(Rust core、OS 级沙箱、token 消耗约 Claude Code 的 1/2-1/3);Cursor 赌「GUI 编排 + 速度型自研模型 Composer + embedding 索引」(git worktree 并行、Turbopuffer 向量库);Claude Code 赌「模型通用能力 + 终端可组合性 + SDK 生态」(grep-first 不建索引、hooks/plugins 换可塑性)。三家在标准件上已收敛(AGENTS.md、MCP、sandbox+approval 分层、并行 agent、auto-compaction、subagents、skills),分歧在赌注。