Harness vs 原生 ReAct Agent 对比
原生 ReAct:最基础的 Agent 范式;Harness 是工程化 Agent 运行框架,在 ReAct 基础之上做了完整封装、管控、扩展,用于生产落地。
1. 整体架构
原生 ReAct Agent
- 极简结构:
Prompt + LLM + Tools + 循环 - 流程:Thought → Action → Observation,循环,达到最大轮次就结束
- 全部规则写死在单个 System Prompt里;记忆一般只有对话上下文
- 没有分层,没有钩子,没有权限管控,适合 Demo、原型验证
Harness Agent
- 在 ReAct 循环内核之上,增加多层外围管控层
- 分层提示文件:
CLAUDE.md / AGENTS.md / MEMORY.md / Skill,规则模块化,不堆在一个 prompt - 增加:Hook 钩子系统、Memory 持久层、权限控制、Trace 日志、多 Agent 调度、Runtime 动态约束
- 面向线上工程落地,解决原生 ReAct 上生产遇到的各类问题
2. 提示词管理
原生 ReAct
- 全部角色、规则、工具描述全部塞在同一个 System Prompt 字符串
- 修改规则要改代码里的 prompt 字符串;规则多了 prompt 爆炸,容易互相干扰
- 没有专门记忆、Agent 行为的独立约束片段
Harness
- 提示词文件化、分层管理,不同职责放在不同 md 文件
- CLAUDE.md:项目业务红线;AGENTS.md:Agent 循环行为;MEMORY.md:记忆读写规则;各个 Skill 独立提示
- 运行时框架自动拼接,按需加载 skill 提示,不会一次性把全部内容塞上下文
- 运行时动态追加 System‑Reminder(剩余步数、已执行动作、防循环提醒),每轮动态更新约束
3. Memory 记忆能力
原生 ReAct
- 大多只有会话上下文短期记忆;长期记忆需要自己手写实现
- 没有约束:模型想写什么就写什么,很容易把幻觉写入记忆
- 没有记忆摘要、记忆过滤,长任务上下文极易溢出
Harness
- 内置完整记忆组件:短期会话记忆 + 长期持久记忆
- 通过
MEMORY.md提示词约束哪些可以存、哪些禁止写入记忆 - 框架层提供记忆摘要、检索过滤,防止错误幻觉落地到长期记忆
4. 循环与防无限循环
原生 ReAct
- 仅靠一个最大迭代轮次数字做硬截断;没有业务层面循环检测
- 防循环逻辑靠 prompt 文字提醒,模型经常无视提示,重复同样 Action
- 终止逻辑完全交给大模型判断,什么时候退出全靠模型自己
Harness
- 底层:最大迭代步数硬限制;框架层检测历史 Action,识别重复动作,直接强制终止(代码层拦截,不只靠提示词)
- AGENTS.md 提示词定义终止策略:什么时候停止、什么时候请求人工确认
- Runtime 每轮注入提醒:当前已经做过哪些动作,禁止重复操作
- 支持 Reflection 反思钩子,停滞时主动校验任务进展
5. 工具 / Skill 能力
原生 ReAct
- Function Calling 列表写死代码;所有工具一次性全部暴露给模型
- 调用前无校验,模型想调用哪个就调用哪个,高危操作没有拦截
- 工具调用前后没有统一钩子,日志 Trace 需要自己开发
Harness
- Skill 模块化,工具附带独立提示词,按需加载,不是全部一次性暴露
- Hook 钩子机制:工具调用前、调用后可以做校验,可以拒绝越权调用
- 可以叠加权限策略(OPA),提示词做软约束 + 代码做硬拦截,双重防护
6. 可观测性 Trace 日志
原生 ReAct
- 需要自己开发埋点;Thought、Action、Observation 日志需要手动打印,没有标准 Trace
- 调试困难,出问题很难定位是 prompt 问题、模型问题还是工具问题
Harness
- 框架原生内置 Trace,完整记录每一轮:输入、thought、action、observation、记忆读写、prompt 拼接快照
- 便于线上排查 Agent 故障
7. Multi‑Agent 多智能体
原生 ReAct
- 原生不支持多 Agent,多 Agent 通信、调度全部需要手写代码实现
Harness
- 原生支持多 Agent 调度,Agent 之间消息通信有封装好的能力
8. 适用场景
✅ 原生 ReAct 适合
- POC 原型、Demo、学习理解 Agent 原理;简单实验场景
- 任务简单,不需要严格管控,不在乎稳定性
✅ Harness 适合
- 生产环境落地 Agent;业务有红线、权限要求;长任务、多技能、多 Agent 场景
- 需要可观测、可管控、降低幻觉与越权风险
精简版
原生 ReAct 是基础循环范式,只有 LLM+prompt+tools 循环,规则全部写在单个 system prompt,缺少记忆管控、权限、trace,适合 Demo 原型。
Harness 基于 ReAct 内核,做工程增强:提示词分层文件化(CLAUDE.md/AGENTS.md/MEMORY.md),内置记忆层,Hook 钩子校验,代码层面防循环拦截,完整 Trace,Skill 模块化,原生支持多 Agent,用于线上生产环境。
关键区别:ReAct 更多是模型侧范式;Harness 是一套运行时框架,既有提示词软约束,又有代码层硬防护。