很多人第一次使用 Codex 或 Claude Code,都是从一个很自然的状态开始的:
打开一个 session,把需求丢进去,让它读代码、改代码、跑测试、修报错。
下一步继续问。
报错了继续贴。
需求变了继续补。
直到它把事情做完,或者 session 越来越长,模型开始变得不稳定。
这不是错误。
对简单任务来说,这就是最直接、最高效的用法。
真正的问题是,当你开始处理更复杂的项目时,这种“一个 session 一直聊下去”的方式,会逐渐撞到一个核心机制:
上下文窗口和上下文压缩。
理解这个机制,是从入门使用 Codex / Claude,进阶到稳定使用它们做复杂工作的第一步。
一、Session 不是聊天框,而是工作记忆
在 Codex / Claude 里,session 不是普通聊天记录。
它更像 AI 当前这次工作的临时记忆。
这里面不只有你输入过的话,还包括模型回复、读过的文件、命令输出、项目规则、CLAUDE.md / AGENTS.md、MCP 工具信息、skills、auto memory 等内容。
所以,session 不是“越长越懂你”。
它是一个有限容量的工作区。
你让它看过的东西越多,它当前工作区里混入的信息也越多。
这就是很多人用到后面会感觉模型开始“不稳”的原因。
问题未必是模型突然变差了,而是当前 session 背负的上下文越来越重。
二、上下文压缩不是存档,而是摘要
当 session 变长,系统会通过 compact / auto compact,把前面的对话和工作过程压缩成摘要,让 session 继续跑下去。
这个机制很有用。
但它不是无损存档。
它更像会议纪要:
结论可能保留,细节可能丢失。
主线可能保留,失败路径可能被简化。
明确写过的约束可能保留,隐含的判断依据可能消失。
所以,一个长 session 到后面经常会出现一种奇怪状态:
它好像还记得前面发生了什么。
但它记得的是一个被压缩过、重写过、选择性保留过的版本。
这时你看到的不是模型突然“降智”,而是上下文开始变脏。
三、入门用法:一个 session 一直做下去
先说最简单的情况。
如果你只是:
修一个小 bug;
解释一段代码;
改一个局部逻辑;
补一个简单测试;
做一个小范围重构。
那就没必要上复杂流程。
一个 session 一直做下去,甚至触发一次压缩,通常也没问题。
因为这类任务的上下文是收敛的。
前面读过的文件、跑过的测试、讨论过的判断,确实能帮助模型继续完成后面的工作。
这时候过早切 session,反而会损失上下文。
你还要重新解释背景,重新让它读文件,重新传递当前状态。
对小任务来说,这些成本不值得。
所以入门阶段真正该学的不是“每个任务都新开 session”。
而是:
同一个清晰问题,可以留在同一个 session 里。
四、第一层进阶:知道什么时候该停
进阶的第一步,是能判断一个 session 什么时候不该继续用了。
几个信号很明显。
1. 任务目标变了
一开始是修 bug,后来变成重构,再后来又开始讨论架构。
这已经不是同一个问题。
继续放在同一个 session 里,旧上下文会干扰新任务。
2. 失败路径太多
如果 AI 已经沿着几个错误方向走过,又被你多次拉回来,session 里就会留下大量错误尝试。
继续聊下去,它经常会在旧路径里反复打转。
3. 它开始引用过期假设
你已经否定了一个方案,它还继续沿用。
你已经改了需求,它还按旧目标写代码。
这说明上下文里的旧信息已经开始压过新指令。
4. 文件和日志噪音太多
复杂项目里,AI 经常会读大量文件、配置、日志、测试输出。
它确实获得了很多信息。
但不是所有信息都该长期留在工作区里。
这时候正确做法不是继续硬聊,也不是直接裸开一个新 session。
更好的做法是:让旧 session 先生成一段交接提示词。
也就是让当前 session 把它已经掌握的关键信息,整理成新 session 的第一条 prompt。
这段交接提示词应该包括:
当前任务目标是什么;
已经确认了哪些结论;
哪些方案已经被否定,不要再走;
涉及哪些关键文件;
已经改过哪些文件;
测试命令和测试结果是什么;
当前还卡在哪里;
下一步希望新 session 只做什么。
然后你把这段交接提示词复制到新 session 里继续。
这样做的好处是:
旧 session 负责总结历史状态;
新 session 负责在干净上下文里继续执行。
这比人凭记忆重新解释要稳定,也比让一个已经脏掉的 session 继续往下走更安全。
开新 session 不是为了丢掉所有上下文。
而是为了丢掉噪音,只保留真正需要交接的信息。
五、Plan mode:有用,但不要神化
Plan mode 可以理解成一种上下文校准工具。
它的价值不是“让 AI 多想一会儿”,而是让 AI 在动手前,先读代码、理解边界、给出计划。
复杂任务里最容易出错的地方,不是 AI 不会写某一段代码,而是它还没理解清楚系统,就开始执行了。
一旦它执行错了,后面就会出现大量返工:
读更多文件;
改更多代码;
跑更多测试;
产生更多错误日志;
你再不断纠正它。
这些都会占上下文。
所以 plan mode 的作用,是提前花一点上下文,把方向校准,避免后面更贵的上下文浪费。
但它不是所有任务都要用。
能一句话描述 diff 的任务,不需要 plan mode。
比如改文案、加日志、重命名变量、修一个很明确的小 bug,直接做就行。
需要先理解系统边界的任务,才适合先 plan。
比如跨模块重构、架构调整、复杂 bug 定位、兼容历史逻辑的改动。
Plan mode 只是工具,不是仪式。
真正重要的不是有没有开 plan mode,而是你有没有在 AI 修改代码前,确认它理解了问题边界。
六、第二层进阶:谨慎占用长期上下文
复杂项目里,还有一个很反直觉的点:
项目越复杂,越不能乱塞长期规则。
很多人一遇到 AI 犯错,就想把规则都写进 CLAUDE.md / AGENTS.md / skills。
这当然有用。
但它不是免费的。
这些内容经常会被加载进上下文。
也就是说,它们不是“免费记忆”。
它们每次都可能进入模型工作区。
所以越是复杂项目,越要克制。
CLAUDE.md / AGENTS.md 里应该放:
项目结构;
构建和测试命令;
重要工程约定;
必须遵守的禁止事项;
完成定义;
反复犯错后总结出的规则。
不应该放:
大段背景故事;
空泛价值观;
每个任务都不需要的历史解释;
已经过期的项目判断;
为了“看起来专业”写进去的废话。
skills 也是同一个逻辑。
关键词触发的 skill,本质上也是一种上下文注入机制。
它可以让 AI 在特定任务里获得更明确的操作流程,但也会增加上下文负担。
所以 skills 适合解决边界明确、高频重复、流程稳定的问题。
不要把 skills 当成项目知识库。
更不要把它当成万能规则补丁。
真正好的长期上下文,不是多,而是能减少 AI 反复犯错。
七、第三层进阶:复杂项目才需要完整 session 治理
到复杂商业项目,使用逻辑会再次变化。
这时问题不再是“一个 session 能不能做完一个小任务”。
而是任务本身经常超过单个 session 的稳定处理上限。
这时候才需要更完整的 session 治理:
一个任务,一个 session;
必要时一个任务,一个 worktree;
任务开始前先明确目标和验收标准;
复杂任务可以先 plan;
计划通过后再执行;
执行过程中尽量用测试闭环;
完成后看 diff、跑检查、提交 PR;
session 完成使命后废弃,不继续承载下一个任务。
注意,这不是所有人、所有项目的默认流程。
它只适合复杂项目,尤其是你有能力同时维护多个 session、多个 worktree、多个任务状态的时候。
如果你没有任务拆分能力,没有验收标准,没有 diff review 能力,多开 session 只会把一个混乱问题拆成多个混乱问题。
复杂流程不是为了显得专业。
它是为了把 AI 的工作控制在可验收边界内。
八、真正的分层用法
更正确的使用方式,其实可以分成三层。
第一层:简单任务,保持一个 session
只要任务目标清晰、上下文没有明显污染,就不要频繁切。
让模型沿着同一条推理轨迹继续工作。
第二层:中等任务,适时 plan、compact、重开
如果任务需要先理解系统边界,可以先 plan。
如果仍是同一个问题,但上下文太长,可以 compact,并明确告诉它保留什么:
修改文件;
关键决策;
测试结果;
未完成事项。
如果上下文已经脏了,就让旧 session 先生成交接提示词,再重开 session。
第三层:复杂项目,使用工程化 session 治理
任务封闭;
worktree 隔离;
测试验收;
diff review;
PR 合并;
session 废弃。
这不是为了仪式感,而是为了让每个 AI session 都处在可控的上下文边界里。
结语:先管理好单 session,再谈 agent team
很多人一遇到上下文限制,就会想到 agent team、agent 蜂群、多 AI 协作。
这个方向当然重要。
但今天的 Codex / Claude,核心工作逻辑仍然是 CLI、单 session、局部 subagent、worktree 隔离和人工验收。
多 agent 不是消灭复杂度,而是把复杂度转移到治理层:
任务怎么拆,边界怎么定,结果怎么验收,冲突怎么合并,错误怎么回滚。
这些问题没有解决,多 agent 只会放大混乱。
所以,更正确地使用 Codex / Claude,不是背更多命令,也不是盲目多开 agent。
而是理解:
session 是有限工作记忆;
compact 是摘要,不是无损存档;
plan mode 只是上下文校准工具;
CLAUDE.md / AGENTS.md / skills 都会带来上下文成本;
简单任务可以一路做下去;
中等任务要适时 plan、compact、重开;
复杂项目才需要 session、worktree、测试、PR 的完整治理。
入门状态下,你让 AI 在一个对话里一直干活。
这没问题。
进阶状态下,你开始管理它的工作边界。
真正的进阶,不是让 AI 记住更多。
而是让它在每一次工作里,只背负刚好需要的上下文。
夜雨聆风