AI 编码助手用久了都有这种体感:一个会话从早聊到晚,前面半小时利落干脆,下午开始变慢、变啰嗦,同一个问题要问两遍才答对,刚定好的方案又拿出来重新讨论。这种变钝并非模型降级,多半是上下文膨胀在拖累它——历史越攒越满,模型的注意力被大量过时信息摊薄。Claude Code 给了两个应对旋钮:/compact 压缩历史续命,/clear 清空重开新场。两个命令都能治钝,代价与适用场景完全不同,选错会丢关键细节或白扔上下文。这篇按对比文的惯例给一套选择框架,压缩的底层机制与遗忘表现,Codex 侧的同类拆解见上下文压缩与遗忘一篇,原理相通。
变钝的机制:上下文膨胀的两类代价
膨胀的第一类代价是质量:上下文里的每一轮对话都在参与影响输出,早期试错的报错、被否掉的方案、跑偏的讨论全都躺在里面,模型被这些噪声拖着,回答开始摇摆。这与上下文污染的通用机制同源,污染的原理见上下文污染一篇。第二类代价是速度与额度:上下文越满,每轮请求携带的内容越多,响应变慢,token 消耗悄然上涨,额度烧得比直觉快——用量怎么看,/usage 与滚动窗口一篇有专门说明。两个信号提示该动手了:一是它开始忘记会话早期的决定,二是响应速度与 token 消耗同步明显上涨。动手之前,先判断任务还能不能分段,这决定选哪条路。
/compact:同一任务的压缩续命
/compact 把已有对话历史摘要化,腾出上下文空间,会话继续、人不用换场。它适合的场景很具体:任务没干完还要接着干,但历史已经很长。比如一个跨天的重构,前面几十轮定下的接口约定后面还要用,压缩保住主干决策,细节让位。一个常被忽视的用法是压缩时带保留指令:/compact 后面可以附一句说明,告诉它压缩时重点保什么——把接口约定、文件路径、还没完成的事项点名保住,摘要质量立刻不一样。压缩的时机也有讲究:主动做优于被动等,自己挑任务间歇点压缩,丢什么还来得及补记;等上下文快满被动触发,细节丢得猝不及防。代价要说透:压缩即摘要替换,被摘要掉的原细节回不来。
/clear:换任务的清场重开
/clear 是另一条路:上下文整个清零,从空白开始。它适合的场景同样明确。一是换题:上一个任务的讨论、报错、试错对下一个任务是纯噪声,压缩会把噪声也摘要进去,清零才干净。二是纠偏:会话早期方向就走偏,中间改过几轮,历史里正误混在一起,压缩很可能把错误方向也固化进摘要——得到一个干净的上下文,装的却是错的决定。三是大改之后:刚合并完一个大分支,项目结构变了,旧上下文里的文件认知全部过时,留着只会误导。/clear 的代价是全丢:清零之后它对这个任务一无所知,所以清场之前要有交接动作,下一节给具体做法。
| 对比维度 | /compact | /clear |
|---|---|---|
| 做什么 | 把已有对话历史摘要化,腾出上下文空间 | 上下文整个清零,从空白开始 |
| 什么时候用 | 任务没干完还要接着干,历史已经很长 | 换题、方向已偏、刚合并完大分支 |
| 代价 | 被摘要掉的原细节回不来 | 清零后它对这个任务一无所知 |
| 动手前的动作 | 附保留指令,点名保住接口约定与未完成事项 | 做三句话交接:状态、决策、下一步 |
选择框架:三问定压缩还是清零
按对比文惯例给三问。第一问任务换没换:还是同一个任务,压缩;换了任务或方向已偏,清零。第二问历史里有没有要引用的决策:接口约定、关键路径这些后面还要用,且任务连续,压缩带保留指令;历史只剩噪声,清零。第三问压缩救不救得动:钝的根子是噪声多,压缩有效;钝的根子是方向本身错了,压缩只是把错的方向打包得更整齐,果断清零。三问的本质是区分「空间问题」与「方向问题」:/compact 治空间,/clear 治方向。会话命令的整体分工,Codex 侧的三命令对照见长会话管理命令一篇,框架相通。
清场之前:三句话交接法
决定 /clear 或新开会话,别直接关窗口,先做三句话交接。第一句写状态:当前做到哪一步,哪些已完成、哪些进行中。第二句写决策:定下的关键约定——用了什么方案、哪些文件不能动、验收标准是什么。第三句写下一步:接下来要做什么,先从哪个文件入手。这三句话可以直接说在对话里让它整理,也可以自己记进项目文档,新会话开场先贴给它,上下文从第一轮就是浓缩的精华。日常固化这套动作很简单:让 DeepSeek 按你的项目类型起草一份三句话交接模板,再让豆包模拟新会话检验模板缺不缺信息,两轮打磨后就是团队的固定资产。
会话取舍速查
- 变钝根子是上下文膨胀:质量摇摆、速度变慢、额度多烧
- /compact 压缩续命,可带保留指令点名保住关键决策
- /clear 清零换场,换题、纠偏、大改之后果断用
- 三问定取舍:任务换没换、有无要引用的决策、压缩救不救得动
- 清场前做三句话交接:状态、决策、下一步
会话取舍快问快答
- /compact 之后上下文真的干净了吗?空间腾出来了,但内容被摘要替换,早期细节可能丢失;重要决策先写进交接记录再压缩,才稳。
- /clear 会丢掉之前的代码改动吗?不会。改动落在文件与 git 里,/clear 清的是对话上下文,不是工作区;会话记录也可以回看。
- 压缩可以自己做吗,还是等系统自动触发?建议主动做。挑任务间歇点压缩并附保留指令,丢什么心里有数;被动触发常发生在关键节点,细节丢得没商量。


