一、核心定义与两层概念区分

在 OpenClaw / UpClaw 体系内,Harness 存在两个层面定义,必须区分清楚

  1. 广义:Harness Engineering(驾驭层工程,架构思想)
    Harness 是包裹大模型的完整受控运行外骨骼。LLM 仅负责认知、思考;Harness 承载所有工程约束、状态管理、安全边界、执行循环、观测、资源管控
    通俗类比:

    LLM = 大脑;Harness = 神经系统+骨骼+免疫系统+执行操作系统。
    Prompt Engineering:教会模型怎么理解指令;
    Context Engineering:控制模型“看见什么信息”;
    Harness Engineering:搭建一套可靠、可控、可观测的运行环境,约束模型能干什么、如何执行、如何兜底。

  2. 狭义代码层:Agent Harness(运行时抽象接口,技术契约)
    AgentHarness 是标准化底层执行器接口,负责驱动单轮Agent Turn(一轮推理循环)

    • 普通标准LLM接口(HTTP/WebSocket)使用 Model Provider 插件
    • 拥有原生独立会话循环、内置上下文管理、自有ReAct机制的专属模型/智能体(Codex、Claude-CLI、自研本地编码Agent服务),实现自定义 AgentHarness

    边界铁则:不要为普通REST LLM API开发Harness,应当实现Provider;只有具备独立原生Runtime的智能体才需要Harness插件

Harness 核心设计哲学

  • 策略在上,执行在下:Gateway、全局安全规则、会话策略、权限、观测由OpenClaw内核统一管控;Harness只负责“执行本轮Agent循环”,不能擅自修改顶层安全策略;
  • 内外边界清晰:OpenClaw内核准备好完整RuntimePlan(工具策略、上下文预算、沙箱策略、权限快照),再交付Harness执行;
  • 可插拔、可替换:同一套上层网关、渠道、技能、安全体系,可以无缝切换内置OpenClaw Harness / Codex Harness / 第三方自定义Harness;
  • 状态双向受控:会话转录、记忆、工作区所有权归OpenClaw内核,Harness仅持有只读/受控操作句柄,禁止绕过内核直接篡改会话持久态。

二、Harness整体分层架构(三层标准抽象)

OpenClaw完整链路分层自上而下:

渠道层(Channel Adapter)
        ↓
Gateway 网关控制平面(消息路由、会话管理、Per-Request上下文、SessionLock、事件总线Hook)
        ↓
【内核准备阶段】构建RuntimePlan、加载六层提示词、权限校验、工具策略、预算约束
        ↓
Agent Harness(本轮Turn执行运行时)
        ↓
模型Provider / 原生智能体后端

Harness内部自身又划分为三层抽象边界:

Layer1:契约层(Harness Interface 标准接口)

所有Harness必须实现统一契约,内核调用不受底层模型实现影响:

interface AgentHarness {
  // 启动一轮Agent执行循环
  runTurn(attempt: PreparedAttempt): Promise<TurnResult>;
  // 中断正在执行的Turn(超时、用户取消)
  abortTurn(turnId: string): void;
  // 获取运行时能力声明:是否支持流式、原生思考、内置工具循环、内置上下文压缩
  getCapabilities(): HarnessCapability;
}

入参 PreparedAttempt(内核预先组装好的执行包)包含:

  • 标准化会话转录 transcript
  • RuntimePlan:全局统一策略包(工具白名单、推理预算、最大工具轮次、沙箱策略、观测标签)
  • 任务指令、子任务上下文快照
  • 流式回调句柄、观测Span句柄

Layer2:适配层(Harness Adapter)

负责打通 OpenClaw 标准抽象与底层模型私有协议:

  1. 将标准化transcript、六层Prompt组装结构翻译成模型原生消息格式;
  2. 监听模型原生事件(原生thinking事件、原生tool_call、原生tool_result流);
  3. 将底层模型私有事件统一转换为OpenClaw标准生命周期事件,向外触发全局Hook;
  4. 协调资源:上下文视图、工具调用转发、结果回流;

典型实现:

  • builtin-openclaw-harness:默认内置标准ReAct循环实现;
  • codex-harness:适配OpenAI Codex原生编码智能体运行时;
  • claude-cli-harness:对接Anthropic官方本地CLI智能体;

Layer3:原生执行层(Native Runtime)

模型/智能体自身的内部循环:原生思考管理、内置工具解析、自研上下文管理。

关键隔离约束:
如果底层Runtime自带Context Compaction、工具循环,必须服从上层RuntimePlan预算约束,不能无视全局配置自行无限扩张上下文、无限调用工具。

三、Harness 完整生命周期(一轮Turn标准时序)

1. 渠道消息抵达Gateway,创建Per-Request上下文
2. Gateway抢占SessionLock(同一会话串行保护)
3. 内核执行前置全量准备:
   a. 加载三层配置分层视图(global/agent/tenant)
   b. 组装六层提示词体系
   c. ContextEngine执行前置预裁剪(Stage1压缩)
   d. 构建RuntimePlan:合并安全规则、工具策略、推理预算、沙箱策略
   e. 创建顶层Trace、初始化ContextEngineSpan
4. 内核根据agentRuntime.id路由,选择匹配的AgentHarness
5. 构造 PreparedAttempt 执行包,交付 harness.runTurn()
===== Harness内部执行阶段 =====
6. Harness Adapter:标准化消息 → 模型私有格式
7. 发起推理/原生Agent循环;
   - 支持流式分片,持续回调on_stream_chunk(Observability Per-Request Hook自动透传快照上下文)
8. 解析模型输出:识别思考内容、工具调用指令
9. Harness将工具调用请求**回传给OpenClaw内核统一分发执行**
    ⚠️【重要安全边界】Harness**禁止直接调用工具**,所有工具请求必须上交内核,由三层Tool治理、沙箱双层防护统一校验执行。
10. 工具执行结果回流Harness,继续下一轮内部ReAct循环(受RuntimePlan最大轮次限制)
11. 任务收敛,生成最终回答
===== 返回内核阶段 =====
12. TurnResult标准化封装返回Gateway
13. Gateway推送回复至对应Channel
14. 触发after_agent_turn全局Hook:
    异步记忆写入、上下文视图更新、Langfuse Span关闭
15. 释放SessionLock,允许下一条会话消息执行

一条核心安全红线

Harness只拥有执行权,不拥有策略制定权
工具黑白名单、最大工具调用次数、上下文token上限、是否允许子代理、沙箱权限全部由内核RuntimePlan锁定;Harness不能绕过规则直接发起工具、突破预算。

四、Harness 与全体系模块联动(UpClaw整套能力交汇点)

1. 联动 六层提示词工程

内核在交付Harness之前完成六层MD拼装;Harness接收组装完成的完整System上下文;
自定义Harness可以选择是否分层透传提示边界标签,用于原生Runtime区分规则层/技能层/动态上下文层。

2. 联动 Context Compaction(4阶段压缩+反抖动+CJK)

两种模式兼容:

  1. 内核托管压缩(默认):所有压缩由OpenClaw ContextEngine执行,传递干净视图给Harness;适合绝大多数通用LLM;
  2. Harness原生压缩(特殊智能体):Codex等自带上下文管理的Harness,内核仅传递预算上限,压缩交由原生Runtime,但必须遵守softTrimRatio/hardClearRatio阈值约束。

3. 联动 深度推理自适应

内核onReasoningStart完成复杂度打分,计算thinking预算,写入RuntimePlan
Harness读取预算,透传给底层模型原生思考参数;
Harness执行结束,把实际思考token消耗回传给内核,用于自适应闭环校准。

4. 联动 三层Tool治理 + 代码沙箱双层防护

Harness解析出tool_call后,不直接执行,向上转发至ToolAdapter插槽;
依次经过:rules静态拦截 → 沙箱正则Preamble权限管控 → 资源限额;
执行完成tool_result原路回流Harness。

杜绝风险:即使模型Harness存在漏洞,也无法绕过全局工具安全防线。

5. 联动 SubAgent 三层安全约束(黑白名单/防递归/防污染)

当Harness解析出spawn_subagent委派指令:

  1. 请求上交内核;
  2. 内核执行递归深度检测、子代理权限收缩、创建独立子Session、独立子RequestContext;
  3. 子代理拥有独立Harness执行环境;
  4. 仅结构化摘要回流父会话,遵循防污染隔离规则。

6. 联动 并发安全(Per-Request + SessionLock + CronContextHolder)

  • 用户对话流量:Harness绑定Per-Request上下文;
  • Cron定时心跳任务触发的Agent循环:Harness绑定CronContextHolder;
  • 所有Harness内部产生的观测事件,自动复用当前活跃上下文载体,配合Observability Per-Request Hook,杜绝Trace串扰。

7. 联动 四层Langfuse观测体系

Harness内部所有事件(推理启动、流式分片、工具请求、原生思考事件)通过Per-Request Hook生成子Span:
GenerationSpanToolRunSpan全部挂载在顶层Trace下;
自定义Harness必须透传链路标识,保证父子链路完整。

8. 联动 三层配置分层 + ${VAR:default}

Harness自身参数(是否启用原生思考、是否接管上下文、最大内部循环轮次)通过agentRuntime.id绑定配置,遵循三层配置优先级:
内置默认 < global.yaml < agent.yaml < tenant.yaml < env变量。
同时支持ConditionalOnProperty条件开关动态启用/禁用特定Harness实现。

五、两种运行模式:内置标准Harness vs 第三方自定义Harness

模式A:builtin-openclaw-harness(默认标准)

适用场景:GPT-4o、Claude通用API、Ollama通用开源模型
特征:

  1. ReAct循环完全在内核侧实现;
  2. Context Compaction、提示词组装、工具调度全部由OpenClaw内核管控;
  3. 模型仅负责生成文本/结构化工具调用;
  4. 迁移成本最低,安全策略统一,企业生产首选。

模式B:自定义插件Harness(codex-harness / claude-cli-harness)

适用场景:自带独立会话管理、原生工具循环、内置上下文管理的专用智能体
约束清单(生产强制):

  1. 不能绕过RuntimePlan突破全局安全预算;
  2. 所有工具调用请求必须回传给OpenClaw内核校验执行;
  3. 会话持久态(transcript、memory)所有权属于OpenClaw,Harness仅持有只读快照;
  4. 流式事件、生命周期事件必须转换为标准Hook事件,保证观测链路完整;
  5. 子代理委派指令上交内核,不允许Harness私自创建子会话。

六、Harness常见误区澄清

❌ 误区1:Harness = LLM模型适配器
✅ 纠正:普通模型API适配器是Provider;Harness是完整Agent Turn运行时,包含推理+工具循环调度;只有具备独立Agent循环的智能体才需要Harness。

❌ 误区2:自定义Harness可以自行执行工具调用
✅ 纠正:所有工具调用必须上交内核统一校验;一旦允许Harness直调工具,三层Tool治理、沙箱安全防线会出现逃逸缺口。

❌ 误区3:Harness可以自主修改会话历史、绕过上下文压缩策略
✅ 纠正:会话原始转录由内核管理;Harness只能操作本轮交付的只读视图;如需修改上下文,必须调用内核ContextEngine标准接口。

❌ 误区4:Harness和Channel Adapter是同一层级
✅ 纠正:Channel Adapter是外部接入层(南北向,对接IM/Web客户端);Harness是Agent执行层(东西向,对接模型智能体);Gateway位于两者中间。

七、Harness抽象优缺点

优势

  1. 模型层彻底解耦
    上层网关、渠道、安全、观测、技能体系完全不用关心底层是通用LLM还是Codex这类原生智能体;切换Harness无需改造业务层代码。
  2. 安全策略全局统一收敛
    无论使用哪种底层智能体,工具权限、子代理约束、Token预算、沙箱防护全部在内核统一校验,不会出现不同模型运行时安全标准不一致。
  3. 观测、并发模型一套标准
    所有Harness输出统一标准化生命周期事件,Per-Request Hook、四层Langfuse追踪无需针对每种智能体单独开发埋点。
  4. 渐进式兼容
    通用LLM使用标准内置Harness;专用智能体开发自定义Harness,两套模式无缝共存于同一网关实例。

短板

  1. 额外一层适配转换开销,自定义Harness需要适配消息格式双向转换;
  2. 原生智能体独有的高级特性(专属事件、原生调试接口)需要额外开发适配器映射;
  3. 边界契约复杂,自定义Harness开发门槛高于普通Provider插件。

八、横向对比

原生AgentScope

无标准化Harness抽象;推理循环硬编码绑定模型;无法无缝替换运行时;缺少内核与执行层安全边界隔离。

OpenAI Codex独立服务

Codex自带内置Harness,但不存在上层统一网关、全局安全策略层;单独运行时缺少多租户管控、集中观测、统一沙箱防线。

Claude Code

本地单会话内置循环,没有标准化Harness插件契约,无法作为可插拔组件接入多租户网关架构。

OpenClaw Harness抽象

内核策略平面与Agent执行平面强制隔离的标准化插件契约,兼顾通用大模型与原生专用智能体,是支撑UpClaw多租户、多模型混合部署的核心底层抽象。

九、典型落地场景

场景1:混合架构网关

同一网关同时承载两类业务:

  1. 通用客服对话:使用内置openclaw-harness对接Claude API;
  2. 代码研发任务:启用codex-harness对接Codex原生智能体;
    两套业务共享同一套Channel(Web/飞书)、统一rules安全基线、同一套Langfuse观测。

场景2:私有化本地开源模型

使用标准内置Harness对接Ollama,全部ReAct循环、上下文压缩、工具治理由OpenClaw内核管控,无需开发自定义运行时。

场景3:自研垂直行业智能体

自研智能体拥有原生规划循环、内置状态管理;开发自定义AgentHarness插件,遵循契约接入网关,复用整套企业安全、并发、观测底座。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐