Harness
把裸模型变成生产可用 Agent 的那整套周边基础设施——循环控制、上下文工程、工具接入、护栏、人类在环、编排与评测。
模型只会"接着说",
Harness 让它"会干活"。
模型本身只会 predict the next token。一旦要稳定调用工具、保持记忆、可被观测、可与人协作,就需要在模型外面套上一层 harness:循环控制、上下文编排、安全护栏、状态持久、评测反馈。
模型
只负责"接着说"——预测下一个 token
Harness
循环、记忆、工具、护栏、人机协作
Agent
能稳定完成真实任务的系统
Harness = Agent − Model
"If you're not the model, you're the harness."
智能与落地分离
模型负责推理与决策,harness 负责把智能落地成真实动作。
修复方向反转
Agent 不靠谱时,真正的修复几乎总在 harness 里,而非换更大的模型。
解释模型趋同
原始能力逐渐收敛,harness 越来越成为决定系统表现的那一半。
一个把这句话砸实的数据点
仅仅改了 edit-tool 的输出格式,模型权重一个字节没动。
"早期进展比预期慢,不是因为 Codex 不行,而是因为环境(environment)描述得不够充分。"
裸模型的局限,逐条对应 Harness 的方案
Anthropic 的共识:能用简单链路解决的事,别上来就用 agent。
从模型向外看,Harness 的七层
循环控制权在 Harness,不在模型
模型读上下文,决定下一步
输出结构化动作 tool_use
Harness 执行并把结果塞回上下文
模型只输出动作,真正"跑循环"的是 harness。LangGraph 把循环建模成图上的边,天然支持条件跳转、并行、循环。
让模型能"动手"
工具定义
用 JSON Schema / Function Calling 描述工具的名字、参数、用途。
工具执行
Harness 拿到 tool_use 调用真实 API / 数据库 / 沙箱,并把结果 observe 回去。
MCP
Anthropic 推出的开放标准,把"能不能接外部系统"变成统一协议。
护栏贯穿全链路,危险动作要审批
- 输入护栏 — PII 检测、越狱拦截、意图分类
- 工具调用护栏 — 沙箱执行、参数校验、权限白名单
- 输出护栏 — 格式校验、事实性接地、内容审核
- 上下文护栏 — 防止记忆跨会话泄露敏感数据
- 中断 — 危险动作前暂停,等人确认
- 审批流 — LangGraph interrupt / Pydantic AI 钩子
- 回退与纠正 — 人可以接管、改方向、补充信息
从单 Agent 到可恢复、可评测的系统
持久化执行
状态 checkpoint · 可恢复执行 · 时间旅行(time travel)
评测与可观测性
任务完成率 · 安全合规 · 上下文效率 · 延迟与成本 · LLM-as-Judge
2024 起,一次"Harness 转向"
制约 agent 可靠性的瓶颈不再是模型质量,而是基础设施质量。Harness 从"一堆孤立模块"升级为一个完整的研究对象——harness 不是被动的执行管道,而是 agent 能力的共同决定者。
Prompt Engineering
问什么
Context Engineering
该让模型看到什么
Harness Engineering
整套周边基础设施
从"想要的行为"反推 Harness 该提供什么
"Harnesses today are largely delivery mechanisms for good context engineering."
8 条设计原则
把"会说话"变成"会干活"
循环控制权在 harness,不在模型
Context Engineering > Prompt Engineering
工具接入标准化(MCP)
护栏要铺满整条管道
人要在环,可审批可纠正
可评测、可观测
从简开始,按需加复杂度
把模型这一项减掉,
剩下的差距,就是 harness 工程的全部战场。
当你在评估、调试、或对比两个 agent 时——Harness = Agent − Model 不只是一个定义,它是一个诊断工具。