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 自主提炼
- 第一层:JSONL 日志(事实层)
– 每次交互逐行记录为 JSONL 审计日志 – 特性:不可变(append-only)、全量保留、可追溯、跨通道统一 – 不直接参与上下文注入,作为”原始事实源”
- 第二层:MEMORY.md(提炼层)
– AI 主动从日志层中提炼,非人工编写 – 当信息跨多次对话反复出现,或用户明确表达偏好,就提炼为长期记忆 – 形式自由,无强制分类模板
- 语义检索层
– 纯文件之上叠加混合语义搜索 – 按语义相关性从日志层检索最相关历史片段
渐进式人格学习:
- 第 1 周:按通用套路写文案
- 第 2 周:从日志中发现用户三次修改开头都改成反问句
- 第 1 个月:积累 30 条交互后,发现用户从不修改带数据的文案但常改纯观点类
- 第 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
- MCP 协议:连接外部服务(GitHub、Linear、Slack……)
- Skill 系统:封装多步骤工作流为 /slash-command
- 自定义子 Agent:在 .claude/agents/ 下定义专用 Agent
– 设计原则:按需加载
OpenClaw:通道 + 技能 + Provider
- 通道扩展:接入新的消息平台(已支持 20+)
- 技能扩展:添加新的执行能力(浏览器、邮件、API……)
- Provider 扩展:切换底层模型提供商
核心差异:OpenClaw 扩展重心在前端(更多通道触达更多用户),Claude Code 在后端(更多工具和协议接入更多开发资源)。
九、会话持久化:用完即止 vs 24/7 在线
Claude Code:本地 JSONL + 分叉恢复
- 每次对话保存为本地 JSONL 文件
- 分叉设计:在同一个问题上尝试两种方案——分叉出一个试方案 A,原会话试方案 B,然后比较结果
- 但会话是用完即止的:关掉终端,Agent 就停了
OpenClaw:持久在线 + 跨通道连续性
- 没有”关掉”的概念——24/7 运行的服务
- 跨通道连续性:Telegram 上说”关注 A 股票”,两天后在 Slack 问”那个股票怎么样了?”,Agent 知道是同一件事
- Cron 和 Heartbeat:让 Agent 记忆积累不局限于”用户主动说话的时候”
共同的工程智慧
尽管设计哲学不同,两个框架分享底层洞察:
- 纯文件方案优于数据库方案:都选择 Markdown + JSONL,人类可读、可 Git 版本控制、不依赖外部服务
- 索引与内容分离:启动时只加载轻量摘要,详细内容按需加载
- 约束带来可靠性:给 Agent 更严格的边界反而让它表现更好
- 记忆会腐败:Claude Code 用”引用前验证”,OpenClaw 用”持续提炼覆盖”——永远不要盲目信任记忆
结论:模型是引擎,Harness 是整车

Claude Code 和 OpenClaw 给出了两种截然不同但同样有效的答案。一个证明了,在正确的工程框架下,AI 可以在大型代码库中自主完成复杂的多步骤编程任务。另一个证明了,在正确的工程框架下,不会编程的普通人也能拥有一个 24 小时在线、越用越懂你的数字员工。
两者用的都是别人家的模型。区别全在模型之外的那些”奇技淫巧”里。
Agentic Loop、工具架构、上下文管理、权限沙箱、记忆系统、技能封装、事件钩子、通道路由、会话隔离——这些听起来都不像前沿研究,更像传统软件工程的老手艺。
但正是这些老手艺,决定了 AI Agent 到底是一个”能聊天的模型”,还是一个”能干活的同事”。
模型是引擎,harness 是整辆车。引擎再强,没有方向盘、刹车和导航,你哪儿也去不了。
夜雨聆风