Harness
为一个项目做的、把当作工作者的。用图和例子讲清它是什么、怎么运作、怎么用,以及要注意什么。
一句话概括
发给或的所有普通提示都使用,即使不就直接回复。提示是触发执行的输入,不等于整个执行系统。的广义定义也把系统提示列为Harness的组成部分。
- 可以这样想
- 想象一家厨房:一份小订单也使用厨房的工作环境。
- 例子
- 向Codex问好。输入 → → 回复,已经经过Harness的代理循环。
- 常见错误
- 使用Harness不要求调用工具或反复尝试。用户提示与处理它的Harness承担不同角色。
三个来源中的Harness
1. Codex:提示启动Harness的代理循环
the Codex harness, which provides the core agent loop and execution logic that underlies all Codex experiences
OpenAI — Unrolling the Codex agent loop
说明,Codex Harness提供支撑所有Codex使用环境的核心代理循环和执行。简单输入也会启动循环。图中USER INPUT(用户输入)进入MODEL INFERENCE(模型推理),然后以 RESPONSE(代理回复)结束,或进入(工具调用)并根据结果再次推理。直接回复也经过这个循环。因此每个普通Codex提示都在使用Harness;提示是触发执行的输入。
一个词“hello”也要经过 harness
在 Codex 里只输入 hello 这一个词。模型不用任何工具,简单问候一句就结束了。所以很容易以为“这次没用到 harness”。但跟着下面四步走一遍就会发现,这段简短的对话已经把智能体循环走了一圈。
-
输入 hello 你
-
组装提示词 Harness
-
模型推理 模型
-
显示回复,结束 Harness
有工具调用就运行并加上结果,回到第 3 步 —— hello 一圈就结束
-
输入 hello你
你在里输入 hello。这只是用户输入,还没有运行任何东西。
-
组装提示词Harness
Harness 不会只把 hello 发出去。它会加上系统指令、(如果有)、模型可以调用的工具列表和之前的对话,组成一个发给模型。
-
模型推理模型
模型读完提示词,判断“问候不需要工具”,于是只写一句回复,比如“你好!有什么可以帮你?”。没有工具调用。
-
显示回复,结束Harness
Harness 检查模型输出里有没有工具调用。没有,所以把回复显示在屏幕上,结束这一轮(turn)。如果有工具调用,harness 会运行工具,把结果加进提示词,再回到第 3 步。
2. Claude Code:Harness提供行动所需的能力
The tools, context management, and execution environment that turn a language model into a capable coding agent. Claude Code is the harness; Claude is the model inside it. The harness supplies file access, shell execution, permission gating, memory loading, and the loop that chains actions together.
Claude Code — Glossary: Agentic harness
把使成为编程代理的工具、和执行环境定义为Harness。Claude Code是Harness,是其中的模型。文件访问、执行、检查、记忆加载和连接各项行动的循环都由Harness提供。简短请求也能按需使用这些能力,所以简单提示也在使用Harness。
3. LangChain:模型之外的整个系统
If you're not the model, you're the harness.
A harness is every piece of code, configuration, and execution logic that isn't the model itself. A raw model is not an agent. But it becomes one when a harness gives it things like state, tool execution, feedback loops, and enforceable constraints.
LangChain — The Anatomy of an Agent Harness
按照这篇文章的广义定义,代理系统中除模型本身外的、配置和执行逻辑都属于Harness。周围系统提供状态、工具执行、反馈和可强制执行的约束,让模型成为代理。文章列出了:
- 系统提示。
- 工具、、及其说明。
- 、和等基础设施。
- 子代理创建、和模型路由逻辑。
- 用于、继续执行和代码规范检查的与。
这个观点强调围绕模型智能设计系统。系统提示是设计的一部分,用户提示则是系统处理的输入。
模型和Harness一起成长
模型与Harness设计共同发展。LangChain解释,Codex和Claude Code等产品同时使用模型与Harness,改进文件操作、bash执行、规划和子代理工作。有用的能力被加入Harness,再用于下一代模型训练。模型在这个环境中变得更强,但改变工具逻辑也可能降低性能。
Harness的三种面貌
编程代理内置的Harness、项目自己搭建的Harness,以及打造好Harness的工作——在各自的标签页里逐一查看。
也可以在AI课程中学习
它是什么
内置 harness 是 、 这类里包在 外面的。模型只会读写文字; 给它工具,比如读文件、改、运行 命令,再加上 AGENTS.md、CLAUDE.md 这样的指令,征求并运行循环。每一步里,模型要么回答你,要么请求工具。如果是调用工具,harness 就运行工具,把输出加进,再问模型一次,直到模型给出最终消息。harness 还管理,比如把很长的对话压缩成较短的总结。
说得简单点 一个独自做菜、尝味道、然后说“好吃”的厨师。
它怎么工作
-
你发出请求
-
模型请求一个工具
-
harness 运行工具并返回输出
-
重复,直到最终回答
怎么使用
-
AGENTS.md和CLAUDE.mdharness 会替你把这些项目指令放进提示词。Codex 读取
AGENTS.md;Claude Code 读取CLAUDE.md,也能读取AGENTS.md。 -
/compact对话太长时,harness 会把它总结一下,让工作继续下去。
-
权限和沙箱 — 在 Claude Code 里,
Shift+Tab切换 不用问就能做的事;在 Codex 里,由沙箱决定它的 shell 工具能碰什么。 -
Esc在 Claude Code 里,随时停下循环,把引向别的方向。
注意
做工作的和判断工作已完成的是同一个程序,所以要自己检查:读一读 git diff,再跑一遍测试。在 Codex 里,沙箱只管 Codex 自己的 shell 工具; 的工具必须自己做好防护。不要把它和项目 harness 搞混,项目 harness 是项目自己写的、用来调用智能体的外层运行程序。
例子
-
codex启动后提出请求 —— Codex 自己写、自己测 -
~/.codex/sessions/Codex 留下的会话日志
相关术语
原文和官方文档
本页用简单的话解释这个术语。以原文为准:如果两者不同,请按原文。
它是什么
项目 是某个项目自己写的小运行,比如 脚本或 脚本。不是由人在聊天里打字,而是由这个运行程序用 codex exec 或 claude -p 以非交互模式 或 ,交给它一个任务。像雇来的工人一样干活并返回答案,然后运行程序用项目自己的测试检查结果并记日志。所以干活的是智能体,但判断工作是否合格的是项目,而不是智能体。在每次工人调用里,智能体的 照常运行。
说得简单点 把厨师端出的每一道菜都尝一尝、称一称、记下来的检查员。
它怎么工作
-
运行程序选下一个任务
-
调用 或 claude -p
-
项目测试检查结果
-
保存日志,然后重复
怎么使用
-
codex exec "<task>"进度输出到 stderr,只有最终消息输出到 stdout,所以运行程序很容易保存它;加
--json可以得到 格式的事件流。 -
codex exec --sandbox workspace-writecodex exec默认在里运行;这个选项让工人能改工作区里的文件。 -
claude -p "<task>" --output-format json以 返回结果、会话 和费用,成功时以 0 退出,失败时以非零退出;加
--bare会跳过那台机器的钩子、技能和 CLAUDE.md,让每处运行都一样。 -
harness/build-log.mdCookbook 的例子在
harness/build/下每个阶段放一个计划文件,并把每个阶段的检查记录在这份构建日志里。
注意
运行程序把真实的权力交给智能体,所以只给它需要的,danger-full-access 只在的或 里用。claude -p 运行不显示信任对话框,在 Manual 模式下需要批准的调用会被拒绝,除非有东西批准它,所以用 --allowedTools 列出它可以用的工具。项目 harness 不能代替内置 harness;它是从外面把内置 harness 包起来。
例子
-
bash harness.sh "<request>"把任何请求交给运行器 -
codex exec --json --sandbox read-only运行器调用的工作者 -
bash harness.sh verify再次检查证据和结果
相关术语
原文和官方文档
本页用简单的话解释这个术语。以原文为准:如果两者不同,请按原文。
- 在原文中查看这个术语Codex Docs — Non-interactive mode OpenAI · 确认于 2026-10-20
- OpenAI — Codex non-interactive mode — Basic usage(在新窗口中打开)
- Anthropic — Claude Code docs: Run Claude Code programmatically — Get structured output(在新窗口中打开)
- OpenAI — Iterating development workflows with Codex — Create harness and build phase files(在新窗口中打开)
- OpenAI — Harness engineering: leveraging Codex in an agent-first world(在新窗口中打开)
- Anthropic — Claude Code non-interactive mode (claude -p)(在新窗口中打开)
它是什么
工程是 在一篇讲用 打造产品的文章里,给一种新的工程工作起的名字。五个月里,一个小团队交付了一个内部测试版,手写为零行:大约一百万行代码、约 1,500 个合并的 ,起初只有三名工程师。他们的规则是“Humans steer. execute.”(人来掌舵,智能体执行)。工程师的工作从写代码变成了设计环境、说明意图、搭建,让 Codex 智能体能可靠地干活。智能体卡住时,他们不是让它更努力,而是问缺了什么能力,以及怎么让这种能力对智能体来说看得懂、能强制执行。
说得简单点 不再自己下厨,而是设计厨房、菜谱和检查方法。
它怎么工作
-
给智能体一张简短的地图
-
所有知识都放在里
-
用 和测试强制规则
-
持续清理偏移
怎么使用
-
AGENTS.md保持简短,大约 100 行,作为指向结构化的
docs/文件夹,而不是一本 1,000 页的手册。 -
自定义 linter 和结构测试 — 强制执行架构规则,比如固定的分层和依赖方向,lint 会告诉智能体怎么修。
-
看得懂的应用 — 每个 都能启动自己的一份应用,Codex 通过 以及日志和指标读取界面,所以能 、检查修复。
-
黄金原则和清理任务 — 后台的 Codex 任务扫描偏移,开一些小的重构 pull request,像垃圾回收一样一点点偿还技术债。
注意
OpenAI 说,这种表现很大程度上取决于那一个仓库的结构和工具,没有类似的投入,不应假设在别处也行得通。他们还说,在完全由智能体生成的系统里,架构的一致性多年后能否保持,他们还不知道。文章自己也提到,他们这种几乎没有阻断关卡的快速合并,放在产出低的团队里是不负责任的。
例子
-
AGENTS.md指向各文档的简短地图 -
docs/放在仓库里的设计、计划和质量说明
相关术语
原文和官方文档
本页用简单的话解释这个术语。以原文为准:如果两者不同,请按原文。