乐于分享
好东西不私藏

Claude Code vs OpenClaw:Harness 工程学的两种范式

Claude Code vs OpenClaw:Harness 工程学的两种范式

为什么大佬们开始关注”工程方法”?

AI 领域的大牛罗福莉(Lofi)竟然对 Agent 工程上的”奇技淫巧”产生了浓厚兴趣——一位顶级 AI 研究者,关注的焦点从模型架构转向了 Agent 框架的工程细节。

这说明了什么?

说明在 2026 年的今天,让智能体变聪明的关键,已经不在模型里了。

起点:Agent = Model + Harness

“Harness”(笼头、缰绳)这个概念,最早出现在 2025 年 11 月 Anthropic 工程师 Justin Young 的文章《Effective Harnesses for Long-Running Agents》。到 2026 年,OpenAI 发表《Harness Engineering: Leveraging Codex in an Agent-First World》,首次将其命名为独立学科。LangChain 的 Vivek Trivedy 进一步提炼出简洁公式:

Agent = Model + Harness

Claude Code 用 Claude 模型,OpenClaw 可以接入 Claude、GPT、Gemini 等多家模型。模型层面它们没有自研能力,却做出了令人印象深刻的智能体表现——一个能在大型代码库里自主完成复杂的多步骤编程任务,另一个能 24 小时不间断地处理跨平台的日常事务。

这些表现的来源,全在 harness 里。

一、整体架构:纵深 vs 横向

Claude Code 是一个十层堆叠的纵深架构

  • 每一层都可替换:换模型、换权限模式、加新 Skill、接新 MCP 服务器,不需要改动其他层
  • 围绕单一核心场景:一个程序员坐在终端前,与 AI 协作完成编程任务

OpenClaw 是一个四层管道式的横向架构

  • 围绕完全不同的核心场景:多个用户通过多个聊天平台,与一个 24/7 在线的 AI 助手交互

核心差异:Claude Code 是纵深型——一个用户、一个终端、一条深度对话链,工程让这条链更长、更可靠。OpenClaw 是横向型——多个用户、多个通道、多条并行对话,工程让这些对话被正确路由、隔离和记忆。

二、驱动循环:深度聚焦 vs 事件驱动

Claude Code:深度聚焦的 ReAct 循环

  • 单线程、深度聚焦:一个”API 从 REST 迁移到 GraphQL”的任务,可能持续几百轮工具调用
  • 工程要点:上下文的可持续性——几百轮调用后仍记得最初目标、中间决策、失败方案
  • 实现:自动压缩、关键内容重注入、延迟加载

OpenClaw:事件驱动的响应循环

  • 事件驱动、多线程:消息从任何通道在任何时间到来——Telegram 语音、Slack 提及、邮件回复、Cron 任务
  • 工程要点:消息的正确路由——用户 A 在 Telegram 的话不能混进用户 B 在 Slack 的会话;并发消息排队处理(默认最大 10 并发),避免上下文竞争
  • Claude Code 没有的特性:主动触发。通过 Cron 和 Heartbeat,Agent 可以无人时自己干活——凌晨爬取竞品数据、早上生成日报、每小时检查库存

三、工具与能力:精细化内置 vs 面向场景

Claude Code:30+ 精细化内置工具

  • 围绕编程工作流设计,分五类:文件、Git、代码、Web、系统
  • 设计原则:最小化但完备——Read 只读文件(不读目录),Edit 只做字符串替换(整文件重写用 Write)
  • 权限控制精确:允许读任何文件但禁止修改特定目录
  • Schema 延迟加载:MCP 扩展工具的 schema 通过 ToolSearch 按需加载

OpenClaw:面向生活场景的 Skill 生态

  • 不叫”工具”,叫”技能”,围绕日常生活和工作场景设计
  • Claude Code 的工具是给程序员用的,OpenClaw 的技能是给所有人用的
  • 通道层概念:支持 20+ 消息平台接入,用户在自己每天用的聊天 App 里就能指挥 AI

四、指令与配置:空间逻辑 vs 身份逻辑

Claude Code:空间导向的四级层级

  • 指令按文件路径和目录层级组织:全局 → 项目 → 目录 → 子目录
  • 适配场景:大型代码库——前端、后端、基础设施团队各有各的约定
  • .claude/rules/ 用 YAML frontmatter 设置路径匹配规则,特定约定只在访问特定文件时才注入

OpenClaw:身份导向的 Agent 配置

  • 指令按 Agent 角色和通道组织
  • 一个 OpenClaw 实例可运行多个 Agent,每个 Agent 有自己的 System Prompt 和 Skill 集合
  • 更像公司有多个员工,每个员工有自己的岗位职责和性格特质

核心差异:Claude Code 绑定到”你在看哪个文件”,OpenClaw 绑定到”你在跟哪个 Agent 说话”。

五、上下文管理:单线程抗压 vs 多线程隔离

Claude Code:单线程深度对话的抗压

  • 上下文窗口约 200K token,编程任务消耗极快
  • 应对策略:自动压缩 + 重注入

– 接近极限时自动压缩 – 先清理旧的工具输出,再摘要历史对话(压缩到约 12%) – 压缩后从磁盘重新注入 CLAUDE.md、Auto Memory 索引、技能内容

  • 延迟加载策略:MCP 工具 schema 按需检索、路径匹配规则按需触发、Skill 内容调用时才加载

OpenClaw:多线程并发的隔离

  • 面对”太多条对话同时进行”的问题
  • 核心:会话隔离,由 sandbox.scope 控制

– agent:同一个 Agent 的所有对话共享上下文(用户 A 的对话可能影响对用户 B 的回复) – session:严格按会话隔离(更安全,但 Agent 无法跨会话关联信息)

  • session.dmScope 决定跨通道行为:

– main:用户在 Telegram 和 Slack 上的消息路由到同一会话 – per-channel-peer:每个通道独立(更隔离,但 Agent 无法跨通道理解上下文)

六、记忆系统:结构化可控 vs 双层自主

这是两个框架差异最显著的部分。

Claude Code:结构化记忆 + 人工可编辑

  • Auto Memory 保存在 ~/.claude/projects//memory/,由四种明确类型组成:

1. Facts(事实)  2. Preferences(偏好) 3. To-dos(待办) 4. Feedback(反馈)

  • 每条记忆是独立的 Markdown 文件,带 YAML frontmatter 标注名称、描述和类型
  • MEMORY.md 是索引文件,每条记忆只占一行,启动时加载前 200 行,详细文件按需读取
  • 核心哲学:记忆是透明的、可审计的、人类可控的

记忆约束

  • 写入前检查重复
  • 引用前验证存在
  • 人类随时可编辑文件

OpenClaw:双层架构 + AI 自主提炼

  1. 第一层:JSONL 日志(事实层)

– 每次交互逐行记录为 JSONL 审计日志 – 特性:不可变(append-only)、全量保留、可追溯、跨通道统一 – 不直接参与上下文注入,作为”原始事实源”

  1. 第二层:MEMORY.md(提炼层)

AI 主动从日志层中提炼,非人工编写 – 当信息跨多次对话反复出现,或用户明确表达偏好,就提炼为长期记忆 – 形式自由,无强制分类模板

  1. 语义检索层

– 纯文件之上叠加混合语义搜索 – 按语义相关性从日志层检索最相关历史片段

渐进式人格学习

  1. 第 1 周:按通用套路写文案
  2. 第 2 周:从日志中发现用户三次修改开头都改成反问句
  3. 第 1 个月:积累 30 条交互后,发现用户从不修改带数据的文案但常改纯观点类
  4. 第 3 个月:已内化用户写作风格——写出来的越来越像用户自己写的

七、安全与权限:多层精细 vs 通道身份

Claude Code:多层权限 + 精细粒度

  • 权限模式(Shift+Tab 切换):

– 只读(read-only) – 计划(plan-only) – 自动(auto)

  • 规则系统按 deny → ask → allow 优先级匹配
  • Hooks 系统:PreToolUse hook 在工具执行前拦截,可返回 exit 2 直接取消调用
  • 操作系统级沙箱隔离——独立于权限规则之外运行

OpenClaw:通道级权限 + 身份校验

  • 权限围绕消息通道和用户身份设计
  • 面临不同安全挑战:Claude Code 风险是”Agent 执行危险命令”,OpenClaw 风险是”未授权用户控制 Agent”
  • 当前局限:会话隔离在并发场景下存在风险,路由器使用”当前活动上下文”作为身份代理,可能导致跨会话数据泄漏

八、可扩展性:后端 vs 前端

Claude Code:MCP + Skill + 自定义 Agent

  1. MCP 协议:连接外部服务(GitHub、Linear、Slack……)
  2. Skill 系统:封装多步骤工作流为 /slash-command
  3. 自定义子 Agent:在 .claude/agents/ 下定义专用 Agent

– 设计原则:按需加载

OpenClaw:通道 + 技能 + Provider

  1. 通道扩展:接入新的消息平台(已支持 20+)
  2. 技能扩展:添加新的执行能力(浏览器、邮件、API……)
  3. Provider 扩展:切换底层模型提供商

核心差异:OpenClaw 扩展重心在前端(更多通道触达更多用户),Claude Code 在后端(更多工具和协议接入更多开发资源)。

九、会话持久化:用完即止 vs 24/7 在线

Claude Code:本地 JSONL + 分叉恢复

  • 每次对话保存为本地 JSONL 文件
  • 分叉设计:在同一个问题上尝试两种方案——分叉出一个试方案 A,原会话试方案 B,然后比较结果
  • 但会话是用完即止的:关掉终端,Agent 就停了

OpenClaw:持久在线 + 跨通道连续性

  • 没有”关掉”的概念——24/7 运行的服务
  • 跨通道连续性:Telegram 上说”关注 A 股票”,两天后在 Slack 问”那个股票怎么样了?”,Agent 知道是同一件事
  • Cron 和 Heartbeat:让 Agent 记忆积累不局限于”用户主动说话的时候”

共同的工程智慧

尽管设计哲学不同,两个框架分享底层洞察:

  1. 纯文件方案优于数据库方案:都选择 Markdown + JSONL,人类可读、可 Git 版本控制、不依赖外部服务
  1. 索引与内容分离:启动时只加载轻量摘要,详细内容按需加载
  1. 约束带来可靠性:给 Agent 更严格的边界反而让它表现更好
  1. 记忆会腐败:Claude Code 用”引用前验证”,OpenClaw 用”持续提炼覆盖”——永远不要盲目信任记忆

结论:模型是引擎,Harness 是整车

Claude Code 和 OpenClaw 给出了两种截然不同但同样有效的答案。一个证明了,在正确的工程框架下,AI 可以在大型代码库中自主完成复杂的多步骤编程任务。另一个证明了,在正确的工程框架下,不会编程的普通人也能拥有一个 24 小时在线、越用越懂你的数字员工。

两者用的都是别人家的模型。区别全在模型之外的那些”奇技淫巧”里。

Agentic Loop、工具架构、上下文管理、权限沙箱、记忆系统、技能封装、事件钩子、通道路由、会话隔离——这些听起来都不像前沿研究,更像传统软件工程的老手艺。

但正是这些老手艺,决定了 AI Agent 到底是一个”能聊天的模型”,还是一个”能干活的同事”。

模型是引擎,harness 是整辆车。引擎再强,没有方向盘、刹车和导航,你哪儿也去不了。