乐于分享
好东西不私藏

Codex CLI 和 OpenClaw,两种context管理思路区别在哪?

Codex CLI 和 OpenClaw,两种context管理思路区别在哪?

OpenClaw 是怎么管理上下文的?从下一轮提问发出去之前开始拆解
Codex CLI 是怎么管理上下文的?从开发一个登录功能案例开始拆
默认腾讯云风格粘贴版:蓝色小标题、灰导读、15px/1.6em、浅灰行内代码。浏览器打开后复制下方白色正文到公众号编辑器。
通读校验用本页。配图完成后替换占位段落。

粟风导读

《Agent 工程拆解》第 4 篇。前两篇分别拆了 Codex 分层和 OpenClaw Context Engine;合上笔记常会问「自研到底抄谁」。这篇对齐四件事再对照:规则怎么进系统、谁决定这轮塞进上下文窗口、窗口满了谁压、子代理边界写在哪——学权衡维度,不站队。

开篇

前两篇分别拆过 Codex 和 OpenClaw。合上笔记,很多人会卡在同一句:

自研到底抄 Codex,还是上 OpenClaw 那种 Context Engine?

我不会给「抄谁」的答案。仓库里改代码的代理,和要可换策略、挂了还得能回用户的系统,约束本来就不一样——抄错对象,比不抄更贵。

一、先对齐:比什么、不比什么

别拿功能清单对轰。真正值得比的,就这么几件事:

1. 规则怎么进系统

2. 谁决定这轮塞进上下文窗口

3. 窗口满了谁负责压

4. 子代理边界写在哪

检索找得到和放不放进窗口,最好也分得开;模型谁强、插件谁多、某一版精确 token 数,这篇都不比。

二、规则进系统:配置分层 vs 进系统不等于塞进窗口

Codex 这边,稳定规则主要靠 AGENTS.md 链:全局 → 仓库根 → 当前目录层层收,越靠近 cwd(当前工作目录)的越靠后。Skills(技能包)是另一路:progressive disclosure(渐进式披露),索引常驻,正文按需加载。规则当项目资产管,能进 Git、能评审。

OpenClaw 更醒目的是另一刀:ingest(先接住消息)接收入口,assemble(组装这轮上下文)才决定塞不塞进窗口。Memory(记忆)只负责找材料,另走一路;放不放行,仍归 Context Engine(上下文引擎)。

自研时这两刀常常都要。没有可版本化规则,聊天里改的规则下次就没了;没有放行边界,检索一多,上下文窗口很快被灌满,看不清重点。差的是你先补哪一刀。

三、谁组装上下文:任务线程里拼 vs Context Engine 独占入口

差别最大的,是谁组装这轮上下文。

Codex 用会话 / 任务线程当边界:上下文围着「这一次登录」长出来,靠分层、截断、长输出子任务外置挡噪声。你感受到的是工作流——需求在主线程,扫安全、跑测试这类长输出去子线程。

OpenClaw 把「谁决定这轮看见什么」抽成 Context Engine,挂在 plugins.slots.contextEngine:插件配置里同一时刻只启用一套;没配会用内置 legacy;换上的引擎挂了,还能降回保守默认。

一个用任务边界逼你分层,一个用独占组装入口把放行权写成接口。目标相近,落点不同。

四、压缩:handoff 换历史 vs 压缩责任要显式

context窗口总有顶上的时候。先别问摘要算法好不好,先问:腾地方这件事,算谁的责任?

Codex 的答法偏流程:触到自动压缩线,单独开一轮压缩——先把前面聊过的内容收成一段「后面还能接着干」的交接摘要(Codex 文档里把这份摘要叫 handoff),再和近期用户原话拼在一起,换掉大半历史;必要时再重挂 AGENTS 一类初始上下文。手动 /compact 和自动压缩做的是同一类事,主要差在谁触发。

OpenClaw 的答法偏归属:compact 挂在引擎生命周期上,再用 ownsCompaction(是否由引擎自己负责压缩)说清楚——压缩归引擎,还是交给 runtime(运行时)。责任方一含糊,手动压缩和溢出恢复最容易一起坏。

摘要保留什么、丢掉什么,可以另写。选型时先把责任方说清楚就够。

五、子代理:隔离回流 vs 生命周期钩子

Codex 用 agent thread(代理线程)干扫描安全、跑测试这类脏活;主线程握需求与验收,回流只要结构化结论,不把对方读过的全文灌回来。

OpenClaw 给了可选钩子:prepareSubagentSpawn(子代理启动前准备)、onSubagentEnded(结束时清理);模式可以是 isolated(隔离)或 fork(分叉);还可以走 lightContext(轻量上下文)瘦启动。边界写进生命周期,比写在注释里可靠。

回传怎么合回主任务,下一篇再拆。

子代理首先服务隔离,边界要有落点。

六、一张表看清取舍

维度
Codex CLI
OpenClaw
规则进系统
AGENTS.md

 分层 + Skills 渐进
ingest 接消息;系统提示增量走组装侧
上下文组装
任务线程边界内治理
Context Engine 独占组装入口;可降级 legacy
压缩
自动/手动 compact + 交接摘要换历史
引擎 compact + ownsCompaction
子代理
线程隔离,摘要回流
钩子 + isolated / fork / light
记忆·检索
按需读代码与技能
Memory 找材料,Engine 放行
更贴哪类约束
仓库内编码代理;规则要进 Git
策略要可换;失败要能降级;组装放行与降级要显式

Codex 把「好上下文」嵌进编码工作流;OpenClaw 把「谁决定看见什么」抽成可挂载能力。

七、自研 Agent,怎么选

不必去复刻 Codex 的 /compact 一类命令,也不必先照搬 OpenClaw 那套插件配置写法。要迁的是职责怎么切开:规则放哪、谁组装进上下文、压缩归谁、子任务怎么隔离——叫什么名字不重要。

可以借鉴的思路,我会先看这几条:

1. 规则可版本化——学 Codex 的配置分层,别把规则只写在聊天里

2. 规则进系统和塞进窗口分开,组装入口唯一——学 OpenClaw 把放行权收拢

3. 压缩、子任务隔离都有明确落点——两边都要,别散落在业务 if 里

4. 检索供给和放行分家——找得到,不等于自动塞进窗口

可以落到自己 Agent 系统工程里的,更直接的是先问这几个问题,再谈抄谁:

1. 规则要不要进仓库评审?要 → 先做配置分层

2. 策略会不会换、挂了能不能回到保守默认?会 → 组装入口要显式,甚至预留可插拔

3. 现在说不说得清「这轮模型看见了什么」?说不清 → 先做回放,再谈引擎

4. 子任务有没有输入输出契约?没有 → 先别上多智能体热闹

短会话 Demo、策略短期内不会换:分层加上单一组装入口,往往就够。真要「不改核心就换策略」,或策略一挂必须降级,再抽可替换引擎也不迟。

八、面试怎么讲

对方问的通常是你会不会做权衡、能不能讲清取舍。常见就这几问:

面试官:Codex 和 OpenClaw 的上下文管理,本质差别是什么?

答:都是在管「这轮模型看见什么」。Codex 更像把规则、任务线程、子任务隔离嵌进编码工作流——规则进 AGENTS.md,扫安全、跑测试这类长输出丢子线程,主线程留结论。OpenClaw 更像把放行权抽成可挂载的 Context Engine:组装独占,还能失败降回保守默认。差在落点:一个偏工作流,一个偏组装放行与降级。

面试官:那到底谁更好?

答:没有绝对更好,看约束。规则要进 Git、场景主要是仓库里改代码,分层思路很贴。策略会换、要可观测、挂了还得能回用户,显式组装入口和降级更贴。面试里可以说清「我选哪套约束」,比硬说「某某更先进」值钱。

面试官:自研最小要有什么?

答:四样就够起步:可版本化的规则、单一组装入口、能回放「这轮看见了什么」、子任务有输入输出契约。这几样不稳,上自动压缩和可插拔引擎,多半是在给糊涂账打补丁。稳了再谈压缩策略和可替换。

面试官:Memory 和组装入口为什么要分开讲?

答:找得到是供给,放不放进窗口、放多少是放行。混在一起,出了问题分不清是检索差还是组装胡来

面试官:什么时候才值得做成可替换引擎?

答:已经出现这几类信号再抽:要不改核心就得换策略;策略失败必须能降级;或者已经说不清这轮模型看见了什么。更早抽,接口和兼容成本往往先砸在你头上,属于过度设计。

九、收束

先问规则要不要进 Git、说不说得清这轮看见了什么,再谈抄谁。

仓库里改代码,优先把规则分层和任务边界做稳;策略要换、挂了还得回用户,优先把组装入口收拢。对不上自己的约束,功能清单再长也白搭。

你现在的 Agent,更缺「规则分层」,还是更缺「组装放行」?欢迎留言。

参考文档

机制细节见系列第2、3篇:

《Codex CLI 是怎么管理上下文的?从开发一个登录功能说起》

《OpenClaw 是怎么管理上下文的?从下一轮提问发出去之前开始拆》

参考:

1. Codex 总览

https://developers.openai.com/codex/

2. AGENTS.md

https://developers.openai.com/codex/guides/agents-md

3. Subagents

https://developers.openai.com/codex/subagents

4. OpenClaw Context engine

https://docs2.openclaw.ai/concepts/context-engine

5. OpenClaw 概念页(仓库)

https://github.com/openclaw/openclaw/blob/main/docs/concepts/context-engine.md

我是粟风,5年 Java 开发,3年 AI 应用架构开发。本公众号不做泛 AI 工具推荐,也不贩卖转型焦虑。主要记录和分享后端工程师和团队在 AI 应用落地中真正会遇到的问题,围绕 RAG、企业知识库、智能客服和企业级 Agent 架构,拆解 AI 应用落地中的真实工程问题。