在讲解具体设计前,先明确两个底层认知,建立清晰的概念边界:
三层标准架构:
| 层级 | 核心职能 | 典型产物 |
|---|---|---|
| 模型层 | 语义理解、推理决策、输出生成 | Claude 4.8、GPT-5.5 等大语言模型 |
| Harness 控制层 | 循环调度、提示词组装、工具执行、状态维护、安全管控 | Claude Code、Codex 的核心运行框架 |
| 工具 / 环境层 | 具体能力执行与环境交互 | 文件系统、终端、IDE、搜索引擎、外部 API |
Agent Harness 是管理智能体完整执行生命周期的运行时控制框架。它通过标准化的执行循环串联模型推理、工具调用、结果反馈、状态流转,将大模型的开放式语义决策能力,转化为可预测、可控制、可落地的真实操作。
通俗理解:如果大模型是 Agent 的大脑,Harness 就是躯干与神经系统 —— 负责接收大脑指令、调动手脚执行、回传感官信息、控制行为节奏、约束安全边界。
Harness 的核心逻辑是状态机 + 执行闭环:
本质是把模型的开放式生成,约束为工程化、可管控的流程,解决大模型随机性强、不可控、难落地的问题。
以 Claude Code 重构项目代码为例,完整执行链路:
整个过程中,模型只做推理决策,所有文件操作、权限校验、流程控制、状态留存都由 Harness 完成。
负责根据当前场景,分层、动态拼接完整的提示词体系,而非使用固定单段系统提示,是 Harness 中直接影响模型行为的核心模块。
采用分层拼接 + 分级缓存架构,不同层级的提示词生命周期、缓存策略不同:
以 Claude Code 为例,其系统提示词本质是一个分段数组,通过边界标记区分静态与动态部分,静态部分支持全局缓存,大幅降低 Token 消耗。
标准分层提示词结构:
[静态身份层]你是资深全栈工程师,擅长软件工程与代码重构,严格遵循工程最佳实践。[半动态工具层]你可以使用以下工具:1. read_file:读取文件,参数 file_path2. write_file:写入文件,参数 file_path, content3. run_command:执行终端命令,参数 command, cwd输出要求:工具调用必须包裹在<tool_call>标签中。[全动态环境层]工作目录:/project当前文件:src/app.jsGit状态:2个文件未提交历史执行结果:npm run build 执行失败,错误信息:xxx
Harness 的核心调度器,负责驱动 Agent 的多轮执行流程,控制状态流转、终止条件与异常处理。
基于扩展 ReAct 范式的状态机循环,标准执行流程:
同时内置三重保护机制:
Codex CLI 的执行循环伪代码:
max_steps = 20for step in range(max_steps):# 组装上下文,调用模型response = llm.responses.create(context)# 解析输出项for item in response.output_items:if item.type == "reasoning":context.add_reasoning(item.content)elif item.type == "tool_call":# 路由到工具执行器,校验权限result = tool_router.execute(item.tool, item.params)context.add_observation(result)elif item.type == "final_answer":return item.content
所有长周期、多步骤的 Agent 任务,如代码重构、问题排查、自动化调研等。
负责解析模型的工具调用指令,完成参数校验、权限判断、工具执行与结果格式化。
模型只输出语义化的调用指令,Harness 负责工程化落地,流程分为四步:
以 Codex 为例,其 ToolRouter 模块内置三级审批模式:自动模式(读写本地文件自动执行)、只读模式、全确认模式,适配不同安全等级场景。
模型输出:
<tool_call>{"name": "run_command", "params": {"command": "npm run build"}}</tool_call>
Harness 处理流程:
run_command,参数 npm run build<observation status="success">命令执行完成,输出:> build success, 120 modules compiled</observation>
负责维护 Agent 全生命周期的所有状态信息,动态管理上下文窗口,避免溢出并保障关键信息不丢失。
分类管理信息,采用差异化保留策略:
进阶方案:当上下文接近上限时,调用模型压缩接口生成加密的隐状态摘要,替代原始文本,既节省窗口又保留语义信息(如 Codex 的 /responses/compact 端点)。
跨文件重构、复杂问题排查、长周期调研等需要长上下文的任务。
负责所有外部操作的安全管控,隔离执行环境,从机制上规避风险。
采用「前置校验 + 环境隔离 + 事后审计」三层防护:
OpenAI 在 Codex 中进一步分为两层质量控制:
Claude Code 的安全机制:
面向终端与编辑器的代码智能体,主打深度工程化操作与稳定可控的执行体验。
分层提示词架构
循环执行引擎
分级工具体系
多端共享的代码智能体核心框架,支撑 CLI、Web、VS Code、桌面端等所有产品形态,一次开发多端生效。
统一共享 Harness
高效的上下文与缓存设计
双层质量护栏
误区一:Harness 就是写一段高质量的 System Prompt
纠正:提示词组装只是 Harness 五大核心模块之一,占工程复杂度不到 20%。执行循环、工具调度、状态管理、安全沙箱才是 Harness 的核心,决定了 Agent 的稳定性、安全性与可用性。很多 Agent 效果不好,问题不在提示词,而在执行与状态管理的缺失。
误区二:系统提示词越长、规则越细,效果越好
纠正:新一代强模型的趋势恰恰相反。Claude Code 新版已将系统提示词精简 80%,冗余的规则和示例反而会限制模型能力、引入噪声。提示词的核心是清晰的边界与格式约束,而非事无巨细的规定。
误区三:模型自带工具调用,不需要 Harness
纠正:模型原生的 Function Calling 只是输出结构化调用指令,没有执行循环、没有参数校验、没有异常处理、没有安全控制、没有状态管理。没有 Harness 的封装,工具调用只能完成单次简单操作,无法支撑复杂多轮的 Agent 任务。
误区四:一套 Harness 可以适配所有 Agent 场景
纠正:不同领域的 Harness 设计差异极大。代码 Agent 的 Harness 侧重文件管理、沙箱执行;客服 Agent 侧重知识库对接、工单系统集成;数据 Agent 侧重数据库查询、图表生成。核心模块的逻辑、工具体系、安全规则完全不同,无法通用。
virtualbox下怎么实现ubuntu20.04开机自动挂载共享文件夹?
ubuntu20.04怎么开启护眼模式? ubuntu夜间模式的设置方法
如何在Ubuntu 20.04上安装Microsoft Edge浏览器
Ubuntu20.10优麒麟触摸手势有哪些? 优麒麟系统新增手势汇总
优麒麟20.04.1发布 更新内容汇总(附下载)
Mermaid Visual Editor 如何同步可视化操作与 Mermaid 源码?