什么是 Harness Engineering?它与 Prompt、Context、Agent Runtime 有什么关系?¶
- ID:Q052
- 难度:进阶 / 系统设计
- 标签:Harness Engineering、Agent Runtime、Context Engineering、Guardrails、Evaluation
- 时效性:术语仍在快速演化,回答日期为 2026-08-01
同义问法¶
- 什么是 Agent Harness?
- 为什么生产级 Agent 不能只靠 Prompt?
- “模型负责冲,Harness 负责控”是什么意思?
- Harness、Runtime、Scaffolding 和 Guardrails 有什么区别?
- Coding Agent 的工作环境应该如何设计?
来源¶
原始题目线索¶
- 用户提供的二手题库:
11.1—11.11 Harness Engineering - 用户提供的二手题库:
12.3 四个 Engineering 有何区别 - 原文将 Harness 固定拆成 Agent、Evaluation、Guardrails 三层。这是一种可用的整理方法,但不是统一行业标准。
技术依据¶
- OpenAI, Harness engineering: leveraging Codex in an agent-first world:强调为 Agent 设计可理解的仓库、工具、约束、反馈循环和持续治理。 查看原文
- Anthropic, Effective harnesses for long-running agents:讨论跨上下文窗口的状态衔接、环境初始化和增量进展。 查看原文
- Anthropic, Harness design for long-running application development:讨论通过 Harness 设计提升长时间自主软件开发效果。 查看原文
- LangChain, Frameworks, runtimes, and harnesses:区分 Framework、Runtime 与 Harness 的价值层次。 查看原文
可视化图解¶
flowchart TD
U[用户目标] --> H[Agent Harness]
H --> C[Context Builder]
H --> T[Tool Registry]
H --> S[Sandbox / Workspace]
H --> P[Policy / Approval]
H --> O[Trace / Evaluation]
C --> M[Model]
M --> H
T --> E[外部系统]
S --> E
核心结论¶
Harness 是包围模型的工作环境和控制系统,使模型能够在明确边界内持续行动、获得真实反馈并证明任务完成。Harness Engineering 就是系统性设计这套环境。
可以用一句话表达:
模型负责提出下一步和生成候选结果;Harness 负责提供可理解的环境、执行动作、反馈结果、限制风险并验证完成。
它不是单独一个库,也不只是 Prompt、沙箱或 Agent Loop,而是这些能力围绕任务形成的整体工程系统。
为什么需要 Harness¶
裸模型擅长生成和推理,但缺少以下保证:
- 不知道真实仓库和系统如何工作;
- 不能自行确认工具是否执行成功;
- 容易在长任务中丢失状态;
- 不天然遵守权限、事务和资源限制;
- 无法仅凭语言判断代码或业务结果是否正确;
- 失败后可能重复动作或编造完成;
- 人类难以追踪它为什么这么做。
Harness 的作用不是让模型“更聪明”,而是让模型的能力能够落在可控、可验收的工程闭环里。
Harness 通常包含什么¶
1. 可理解的任务环境¶
Agent 能接触到的信息必须:
- 可发现;
- 有结构;
- 保持最新;
- 能与真实代码和系统对应。
Coding Agent 常见内容:
AGENTS.md / CLAUDE.md # 入口与导航,不是百科全书
ARCHITECTURE.md # 系统边界和依赖关系
docs/ # 设计、规范和运行手册
schemas/ # 数据契约
scripts/ # 可执行的标准操作
skills/ # 按需加载的领域 SOP
重点是“给地图,而不是把一千页手册全部塞进上下文”。知识需要版本化、可导航,并通过 CI 检查陈旧和断链。
2. Context 构建与状态管理¶
Harness 决定每轮模型看到:
- 当前目标;
- 相关文件和文档;
- 已确认事实;
- 已完成步骤;
- 工具结果摘要;
- 剩余预算和风险。
长任务还需要:
- Checkpoint;
- 进度文件或执行计划;
- 决策日志;
- 跨会话恢复;
- 上下文压缩与按需检索。
Context Engineering 解决“当前给模型看什么”;Harness 还负责“这些信息如何生成、维护、验证和反馈”。
3. 工具与执行环境¶
包括:
- 文件、Git、Shell、浏览器、数据库和内部 API;
- Tool schema 与路由;
- 命令白名单;
- 沙箱和网络隔离;
- 资源、时间和并发限制;
- Tool Result 的结构化、裁剪和引用。
模型通常只负责提议动作,真正执行由 Harness 中的 Tool Executor 完成。
4. 硬约束和 Guardrails¶
Prompt 中的规则不是权限边界。Harness 需要用确定性机制实现:
- 最小权限;
- 高风险操作审批;
- 文件和网络访问范围;
- 参数校验;
- Secret 脱敏;
- 幂等、事务和补偿;
- 最大步数、成本和超时;
- Prompt Injection 与供应链风险防护。
5. 反馈与验证 Oracle¶
Agent 必须看到真实反馈:
- 编译结果;
- 单元测试和集成测试;
- 类型检查和 Linter;
- 静态安全扫描;
- 浏览器自动化;
- 性能指标;
- 业务断言;
- 人工 Review。
Oracle 是判断结果是否正确的外部标准。没有 Oracle 的“自我反思”很可能只是模型再次评价自己。
6. Orchestration 与 Runtime¶
Runtime 通常负责:
- Agent Loop;
- 节点和状态流转;
- 并发调度;
- 暂停、恢复和取消;
- 错误分类、重试和降级;
- Human-in-the-Loop;
- 长任务生命周期。
Runtime 是 Harness 的重要组成部分,但 Harness 范围更宽,还包括仓库设计、知识组织、测试反馈、权限和运维治理。
7. Observability 与 Evaluation¶
至少记录:
- 模型输入输出;
- 状态变化;
- 工具调用、参数和结果;
- Token、延迟和成本;
- 重试、循环和失败原因;
- 最终验证证据;
- 人工审批和修改。
Evaluation 不只是上线前打分,还要从线上失败中判断问题属于:
- 模型能力;
- Context 构建;
- Tool 设计;
- Harness 策略;
- Runtime 故障;
- 任务本身不可验证。
8. 持续治理和“垃圾回收”¶
Agent 会复制仓库中已有模式,坏模式也会被快速放大。Harness 因此需要持续治理:
- 架构规则机械化;
- 文档陈旧检测;
- 重复代码和坏模式扫描;
- 定期回归评测;
- 失败经验转成规则、测试或 Skill;
- 废弃过期指令和工具。
这不是一次性搭建,而是持续演化的工程系统。
与相关概念的边界¶
Harness vs Prompt Engineering¶
- Prompt Engineering:优化模型这一轮如何理解和输出;
- Harness Engineering:优化模型在多步环境中如何行动、反馈、恢复和验收。
Prompt 是 Harness 的一个组件,但不能替代执行和验证机制。
Harness vs Context Engineering¶
- Context Engineering:决定模型当前看见哪些信息;
- Harness:还负责信息的来源、工具执行、状态更新、安全、反馈和完成验证。
Harness vs Agent Runtime¶
- Runtime:运行循环、状态机、调度、Checkpoint 和恢复;
- Harness:包含 Runtime,并扩展到知识、工具、沙箱、测试、评估和仓库治理。
Harness vs Framework¶
- Framework 提供通用抽象和集成;
- Harness 是针对具体任务和环境形成的完整工作系统。
使用同一个框架的两个团队,Harness 质量可能完全不同。
Harness vs Scaffolding¶
Scaffolding 通常指项目结构和基础脚手架;Harness 关注整个执行与反馈闭环。脚手架可以是 Harness 的一部分,但没有工具、验证、状态和治理时还不够。
“三层 Harness”是不是标准答案¶
可以按执行、评估、防护三层帮助表达:
对应流程使用 Mermaid 图解展示。
但面试时应说明:这是便于分析的分类,不是唯一或统一行业标准。实际能力还包括知识组织、Context、可观测性和持续治理,并且三层之间有重叠。
一个 Coding Agent Harness 示例¶
如何判断 Harness 是否有效¶
不要只看 Agent 输出是否“像样”,要做消融实验:
- 去掉某个 Skill,任务成功率是否下降;
- 去掉测试反馈,假完成是否增加;
- 更换模型后,Harness 是否仍能稳定约束行为;
- 相同模型在不同仓库结构下表现差多少;
- 失败来自模型、上下文还是执行环境;
- 增加一条规则是否真的改善回归集,而非只修一个样例。
常见指标:
- 任务完成率;
- 可验证成功率;
- 无效工具调用率;
- 平均修复轮数;
- 人工介入率;
- 回滚率;
- 成本和端到端延迟;
- 安全违规和越权尝试。
常见低质量回答¶
低质量回答一¶
Harness 就是 Agent 的操作系统或笼子。
问题:比喻可以帮助理解,但没有说明具体构成、边界和验证机制。
低质量回答二¶
除了模型权重以外的全部东西都是 Harness。
问题:范围过大,失去工程分析价值。应围绕 Agent 完成任务所需的环境、执行、反馈和治理系统来定义。
低质量回答三¶
Prompt 不可靠,所以所有行为都写成 Workflow。
问题:Harness 的目标不是消灭模型自主性,而是在关键边界用确定性机制控制,在局部保留模型的探索和泛化能力。
低质量回答四¶
加一个 Reviewer Agent 就是 Evaluation Harness。
问题:Reviewer 仍可能共享模型偏差。可靠评估需要测试、业务断言、证据和人工标准。
可直接口述的回答¶
Harness Engineering 是围绕模型设计一套可执行、可反馈、可约束和可验收的工作环境。模型负责理解任务和提出动作,Harness 负责构造上下文、暴露工具、维护状态、在沙箱中执行、反馈真实结果、限制权限,并通过测试或业务 Oracle 判断是否完成。
Prompt、Context 和 Runtime 都是 Harness 的组成部分,但范围不同。Prompt 影响模型行为,Context 决定模型看见什么,Runtime 负责循环、状态和恢复;Harness 还包括仓库知识结构、工具契约、Guardrails、可观测、评估和持续治理。它不是某个固定框架,也没有唯一三层标准。生产级 Agent 的关键不是让模型多想,而是让环境对 Agent 可理解、规则可执行、结果可证明。
结合个人项目回答¶
我们内部的 Coding/CI/CD Agent,Harness 不只是 Claude Code 外面套一层服务。它应该包括会话和 Workspace 生命周期、OpenSandbox 隔离、Git/Jenkins/K8s 工具、按需加载的故障分析 Skill、日志裁剪、Checkpoint、权限审批、测试与部署验证、Trace 和成本统计。模型负责选择分析路径,但生产写操作、超时、幂等和验收必须由平台控制。长期来看,失败案例应优先沉淀成测试、脚本和结构化规则,而不是继续把提示词写长。
继续追问¶
- Harness 与 Agent Platform 的边界是什么?
- 如何通过消融实验判断某条 Harness 规则是否有效?
- 长任务跨上下文窗口时,哪些状态必须持久化?
- 为什么仓库“可被 Agent 理解”比单纯扩大 Context 更重要?
- 如何防止 Harness 自身不断膨胀和过时?