Codex 工作流:相关任务优先压缩上下文,跨 Agent 再使用 handoff
一套 Codex 连续任务实践认为,相关工作通常可以留在同一会话中,通过自动压缩或手动执行 /compact 继续推进;不相关的任务则更适合新开 Session。跨 Claude Code 与 Codex 等不同 Agent 时,handoff 仍然适合用于传递任务状态和后续计划。
这套方法的核心是减少无效上下文,而不是机械地为每个后续步骤创建新会话。任务完成后,可以要求 Agent 生成一份面向后续开发的 handoff,再把它作为新 Session 的首条消息。对于同一问题的连续调试或同一项变更,继续原会话并执行 /compact,往往能保留更多工作脉络;对于明显无关的需求,直接新开会话则更有利于保持上下文聚焦。
实践中,handoff 的价值在跨 Agent 协作时更明显,例如先由 Claude Code 编写并反复审阅技术方案,再交给 Codex 按目标和验收标准执行。报告还强调,应明确可验证的完成条件,尤其是涉及 UI 迁移时的像素级对比、测试结果或截图证据。不过,压缩并非无损操作,旧日志和细节可能被省略,因此关键约束、验收标准和当前状态仍应显式写入 handoff。
来源证据
Never lose your work between Claude Code sessions - Artem Zhutovartemxtech.substack.com · supportingRunning a retrospective before closing the session. 12 corrections - “this is AI slop” - each one becomes a permanent skill update. Now the agent generates a handoff file. It schedules this auto-continue. I’m not touching anything right now. The agent just types in the next prompt and starts a new session. It tells the other agent - okay, here’s a handoff, follow the instructions, this is continuation from a previous session. This is what was done, this is the current state, and here are the next steps. So now we are in a fresh context window. We started everything clean and we can continue our work this way. [...] The standard way is to do compaction. There is this compact command that frees up context by summarizing the conversation so far. This command is great and it solves this issue, but I have a few problems with that command. One of the problems is I can’t capture learnings right now with that command. How do I transfer the context to another agent? I wan
Codex-上下文优化-腾讯云开发者社区-腾讯云developer.cloud.tencent.com · supporting类比:一张办公桌。 桌面就那么大。你把当前任务需要的三份文件摊开,干活顺手。要是把整个文件柜的几百份文档全倒桌上,你反而找不到要用的那份了。Codex 的上下文窗口就是这张桌子,喂得越精准,它越专注;糊一整个库上去,它反而被无关信息带偏。 管好它,记住三招: 第一招,用 `@` 精准喂文件,别让它自己满库瞎找。 你心里清楚改的是哪几个文件,就直接 `@` 点出来。它不用花上下文去到处 grep 摸索,又快又准。我那次下午折腾的根因之一,就是我没指文件,它读了七八个不相关的模块才找到该改的地方——那些读进去的内容全占着桌面。 第二招,会话长了就 `/compact`。 一个会话聊久了,前面的内容会堆很多。`/compact` 让 Codex 把早期上下文总结压缩成精简版,腾出空间继续干。官方也说了,Codex 会在必要时自动压缩,但你手动 `/compact` 能在它变笨之前主动清场。 第三招,也是官方反复强调的——一个任务一个会话,别一个会话从早开到晚。 官方「常见错误」里专门点名:用「一个项目一个会话」而不是「一个任务一个会话」,会让上下文越堆越臃肿,结果越来越差。 我现在有条铁律:这个需求做完了,下个不相关的需求,我直接新开会话。 CLI 里相关的几个命令很顺手: `/compact 把当前会话的早期上下文压缩成摘要,腾空间/status 看当前会话状态,包括上下文还剩多少/fork 基于当前会话另开一条线,保留原始记录/resume 恢复之前存过的某个会话` 一条判断原则:上下文该「准」不该「多」。同一个问题就待在同一个会话里,保住推理链条;活儿真分叉了,才 `/fork` 或新开。 判断标准很简单:还是同一个问题的延续,就留在原会话;换了个不相关的活,就新开一个。 别舍不得那点「历史记录」,臃肿的上下文换来的是更差的结果,不划算。 [...] ### 小结 这一篇把「提速」从「换更快的模型」这个误区里拽了出来,落到六件真正省时间的事上: 心法:少返工 > 盲目求快,一次做对才是最省时间的快。 说清需求:目标 + 上下文 + 约束 + 验收标准,省下的字 Codex 都得替你猜。 管上下文:`@` 精准喂文件、`/compact` 压缩、一个任务一个会话。 按任务降档:简单活 `gpt-5.4-mini` + `low`,旗舰顶配留
Codex 上下文压缩机制:先限流工具输出,再用本地或远端 compaction 接续任务_TangGeeA-AtomGit开源社区gitcode.csdn.net · supporting压缩 checkpoint 的核心是: ``` message: 本地压缩时通常是明文 handoff summary。 远端压缩时可以为空,因为关键信息在 compacted response items / encrypted item 里。 replacement_history: 压缩后真正用于恢复 active history 的消息列表。 ``` resume 时 Codex 不需要从最早一条消息开始重放给模型。它可以从最近 checkpoint 的 replacement history 起步,再接上 checkpoint 之后的新事件。 ### 场景九:为什么压缩仍然可能丢细节 Codex 会提醒长线程和多次压缩会降低准确性。这个提醒是合理的。 压缩不是无损归档。可能损失的地方包括: ``` 1. 工具输出限流时,中间日志已经被截断。 2. 本地 summary 没写进去的旧细节,后续模型就很难恢复。 3. 远端 encrypted compaction item 用户不可读,人工调试不如明文 summary 直观。 4. 多次压缩会形成“摘要的摘要”,细节密度逐步下降。 5. 如果任务跨度很大,一个 summary 很难同时保留所有分支上下文。 ``` 因此“Codex 不丢记忆”的准确说法应该是: ``` Codex 尽量保留继续当前任务所需的信息。 它不保证把整个 session 的每个 token 无损保留在模型上下文中。 ``` ### 场景十:什么时候该相信压缩,什么时候该开新会话 适合继续压缩的任务: ``` 同一个 bug 还没修完。 同一个 PR 还在跑测试。 用户目标稳定,文件范围稳定。 最近上下文比早期闲聊更重要。 ``` 更适合开新会话的任务: [...] 更多推荐 · 昇腾0day支持Kimi K3的训练适配及推理部署,解锁万亿MoE大模型高效训推新范式 · 开源鸿蒙跨平台直播| 快手KRN鸿蒙适配与性能优化 · 深耕开源鸿蒙 PC 生态|开源鸿蒙 PC 高校师资培训圆满落幕 cover 昇腾0day支持Kimi K3的训练适配及推理部署,解锁万亿MoE大模型高效训推新范式 [avatar AtomGit开源社区]( cover 开源鸿蒙跨平台直播| 快手KRN鸿蒙适配
claude-codex-handoff/PROTOCOL.md at main · OpenMOSS/claude-codex-handoff · GitHubgithub.com · supporting`from_session`:发送方 session 的稳定短标识,例如 `codex-thread-019e4408`、`claude-main`、`claude-cron-a`。 `to_session`:目标 session;缺省表示发给对方阵营的广播消息,任一同侧 session 都可按协议处理。 session 标识只允许 ASCII 字母、数字、`_`、`-`、`.`、`:`,长度 1--64;不要包含空格、斜杠、中文或路径字符。 `from_session` / `to_session` 是向后兼容字段;历史消息缺省视为广播。 每个实际运行的 session 必须使用不同 `MY_SESSION`。如果只有一个同侧 session,可用默认 `-default`;如果同时打开多个,必须显式设置,例如 `claude-main`、`claude-reviewer`。 当前 session 标识来源优先级:命令行 `--session`;环境变量 `HANDOFF_SESSION_ID`;环境变量 `_SESSION_ID`(如 `CLAUDE_SESSION_ID` / `CODEX_SESSION_ID`);`.handoff-runtime/.-session`;最后退回 `-default`。 使用 helper 且带 `--reply-to` 时,若被回复消息含 `from_session`,helper 自动写入 `to_session`;需要广播回复时可加 `--broadcast`。 手写 fallback 必须手动保持同样语义:回复某个具体 session 的消息时,`to_session` 指向原消息的 `from_session`。 ## 4. 消息类型 [...] 对每条 `seq > my_cursor` 的入站消息,按 seq 升序: 定向给别的 session(`to_session` 存在且 ≠ 当前 `MY_SESSION`):不属于我,跳过并推进我自己的 cursor,继续下一条。不要停、不要 claim。因为 cursor 是每-session 的,目标 session 用它自己的 cursor,不会漏读。 广播或定向给我(无 `to_session`,或 `to_session == MY_SE
横向拆解Claude Code、Codex等六大Agent上下文压缩策略后 - 腾讯新闻view.inews.qq.com · supporting头像 作者:mervynyang 横向拆解六大 Agent 的上下文压缩策略,提炼通用配方,并面向云端多用户的 Agent 场景落地一套四级水位线方案。 ### 1. 同一个问题,六种做法 Agent 要做上下文压缩,如今几乎成为所有 agent 必做的一环。有意思的是怎么做——我花了不少时间把主流方案扒了一遍,发现大家的分歧大得离谱。 | 产品 | 核心策略 | 一句话概括 | --- | Claude Code | 五段流水线,按成本递增排列 | 便宜的本地操作先上,LLM 摘要兜底 | | Codex CLI | 保留近期用户消息原文,其余全部替换为 handoff 摘要 | 用户说的话最准确,模型说的可以重写 | | OpenCode | 时间戳标记隐藏 + 结构化摘要 + 回放最后一条用户消息 | 不真删,理论上可恢复 | | Cline | `/smol` (`/compact`)生成摘要后在同一任务内接续 | 自动 + 手动双模式 | | Cursor | 自动摘要 + 提示开新对话 + 历史可搜索 | 压缩后仍能回溯原始历史 | | Amp | 不做递归压缩,用 `/handoff` 开新线程携带要点 | 长对话本身就是问题,换线程比压缩好 | | MemGPT / Letta | 上下文 = RAM,历史 = 磁盘,Agent 自主换入换出 | 操作系统级的内存调度 | `/smol` `/compact` `/handoff` 六家产品,六种哲学。说明这件事没有显而易见的最优解,每一种选择背后都是取舍。 后面的内容分三块展开。先横向看看各家的具体做法和设计考量;然后从中提炼几条已经接近共识的原则;最后介绍我们在 MUR AI 上最终落地的方案——四级水位线 + 增量摘要,以及云端多用户场景下额外需要的几层设计。 [...] 过去一年,几个主流 Agent 不约而同走向"分层 + 渐进",但味道各不相同。我逐个拆解一下。 Claude Code(Anthropic):五段流水线 + 结构化摘要 Claude Code 把上下文管理做成了一条严格按成本递增排列的流水线: 前四步都是纯本地操作,零 API 调用。只有第五步才会请求 LLM。摘要本身是结构化的,固定包含九个章节:用户意图、主要请求、技术概念、文件与代码段、错误与
让 Codex 连续干几天,靠的不是一条超长 Promptzicode.com · supporting在统一授权演练中,Codex 可以生成迁移、准备配置、创建 PR、部署测试环境并运行端到端 demo;生产私钥写入、数据库生产迁移、正式启用 OAuth、合并发布仍要保留人工审批。代码能通过测试,不代表它已经获得改变生产身份边界的授权。 ## 什么时候继续,什么时候停 Codex 适合继续推进的信号: 完成条件明确,并且能用工具验证。 当前失败是可诊断、可重试的工程问题。 下一步不会产生不可逆外部影响。 仓库状态和已有用户修改能够被准确识别。 即使上下文压缩,也能从外部记录恢复进度。 应该停下来找人的信号: 两种产品方向都合理,需要业务判断。 数据删除、生产发布或费用支出缺少授权。 连续三次遇到同一外部阻塞,环境没有变化。 验收标准互相冲突。 继续尝试只会扩大改动面,不能增加新证据。 “能继续调用工具”不等于“继续调用工具有价值”。一个成熟的长任务 Agent,既要会推进,也要会识别决策边界。 ## 我现在使用的长任务模板 下面这份模板比堆叠背景资料更有用: [...] 一个弱目标是: > 实现统一 OAuth 登录,并让 CLI 能够授权。 更可用的写法是: > 实现一套默认不影响旧认证链路的统一授权系统。Web 与本地 CLI 使用 Authorization Code + PKCE,远程 CLI 使用 Device Authorization,后台任务使用受限工作负载身份;资源 API 必须校验 issuer、audience、expiry 和 scope;生产环境缺少稳定签名私钥时 fail fast;数据库迁移、单元测试、测试环境接口验证和真实 CLI 回调全部通过后才算完成。 两者都说了“做什么”,后者还定义了“如何知道做完了”。 我现在更习惯把长任务目标写成四段: ``` 目标:最终用户能看到什么结果。 目标:最终用户能看到什么结果。 约束:哪些内容、接口、数据和权限不能改变。 约束:哪些内容、接口、数据和权限不能改变。 证据:用哪些测试、截图、状态码、查询结果证明完成。 证据:用哪些测试、截图、状态码、查询结果证明完成。 完成条件:哪些检查全部通过后,任务才能关闭。 完成条件:哪些检查全部通过后,任务才能关闭。 ``` 这四段里,“证据”最容易漏。很多 Agent 任务停在“代码已经改了”,没有