技术 · 熟练

压缩之后,它把做完的又做了一遍

丢的常常不是规矩,是进度
上一页讲的是压缩会静默吃掉「约束」,这一页讲它吃掉的另一样东西:进度。官方在 2026-10-08 的版本里修掉了一个很典型的 bug —— agent 会把「上下文压缩之前就已经做完的工作」误判成没做完,于是一遍遍重做;同批还修了另一头:定时任务与提醒在会话被压缩之后恢复时静默不回来(该做的没做,也没有报错)。两者是同一件事的两个方向:压缩之后,谁也说不清哪些已完成、哪些还没开始。这一页把「进度状态」加进压缩的必须存活清单,并给一条硬判据 —— 「做没做完」只认外部可核的产物,不认摘要里的自述。
方法 · 一图看懂
1
先认下这个失效模式 — 压缩后进度会两头失真:做完的当成没做(重做)· 没做的当成已做(漏收)
2
给压缩加第 4 类存活项 — 在安全约束 / 生效审批 / 未完成承诺之外,补上「任务进度表」
3
进度要外部化 — 已完成的判据是产物 / 日志 / 任务表,⛔ 不是摘要里那句「已完成」
4
恢复后先对账再动手 — 恢复会话的第一件事是核对进度表,不是接着往下跑
5
给定时与循环单独留一条命 — 周期性任务要在外部有一份登记,⛔ 不依赖会话自己记得
原理 · 为什么有效
压缩的目标函数是「在有限窗口里保留最相关的内容」,而进度状态恰好是相关性最低的那一类 —— 它不参与当前话题,只在「下一步做什么」的时候才起作用。于是一条「第 3 步已做完」的记号,在压缩时几乎不会跟眼前这句「继续」产生语义相关,安静地掉出窗口。掉出去之后有两个相反的结果:重做(以为没做,白白再跑一遍,还可能把已经改好的东西又改回去)与漏收(以为做完了,收尾动作整段消失)。更麻烦的是两种都不报错 —— 你看到的是一次成功的执行,唯一不对劲的地方是账单与耗时对不上,或者某个本该有的产物没生成。所以这条不能靠「让摘要更聪明」,只能靠把进度从「参与排序的候选」里摘出来,并给它一个会话之外的家。
适用场景
适用:一旦会话长到会触发自动压缩就适用 —— 长任务分多次跑 · 跨会话接力 · 有定时任务或循环在跑 · 多步流程(部署 / 迁移 / 批量处理)做到一半被压缩的人。
⛔ 不适用:一次性问答(没有压缩步)· 单轮就结束的小任务(进度本来就在你脑子里)。
⚠️ 前提:你手上得有一处能写下「已完成 / 进行中 / 未开始」的地方 —— 一个文件、一张表、一条 issue 都行,关键是它在会话之外。
自测 · 5 问
我最近一次长任务,能不能说清它现在停在第几步?说不清就是没有进度表。
「这一步做完了」这个判断,我是看某个产物得出的,还是因为 AI 说它做完了?
我有没有遇到过「同一件事被做了两遍」或者「最后一步没做、但任务显示成功」?
我跑的定时任务或循环,除了会话自己,还有第二处登记吗?
会话恢复之后,我的第一动作是接着往下跑,还是先对一遍进度?
怎么上手 · 验证步骤
第一次只做一件事:给当前正在跑的那条长任务建一张进度表,写在会话之外(一个 markdown 文件、一张表、或一条 issue 都行),三列就够 —— 步骤 / 状态(已完成 · 进行中 / 未开始)/ 可核证据(哪份产物、哪条日志、哪个计数)。第二条:把这张表写进你的压缩设置里,作为「必须原样保留」的一项(做法与安全约束那三类一样,写进压缩步骤每次都会读到的那段文本)。第三条:下一次会话恢复时,先跑一次对账 —— 拿进度表逐行去核产物还在不在,再决定从哪一步接着做。三条做完再观察一周,重点看两件事:有没有再出现「同一件事做两遍」,以及恢复后有没有漏掉收尾步。
自检动作:挑一次最近的长任务,把它的进度表补出来,然后只看产物、不看自述逐行判一次「这一步真的做完了吗」。凡是你答不上「凭什么说它做完了」的那一行,就是压缩之后最可能出问题的那一行。
[C级]Claude Code 官方 changelog(2026-10-05 与 10-06 条目:定时任务在会话压缩 / 恢复 / 重生 / fork 后的行为修复;含循环与提醒在恢复时静默不回来) [C级]quidproquo.cc AI Agent GitHub Digest(2026-10-08 · 记 v2.1.293 修了一个 bug:agent 会把「上下文压缩之前就已经做完的工作」误判成已完成、于是反复重做) [C级]ClaudeUpdates v2.1.292 版本页(92 项变更 · 云会话与后台任务可靠性 16 项 · 含「已批准的长会话重启后不再重复弹权限」等一串同族修复) 同类:压缩一次,就少一条规矩 · 压缩完那一段摘要,你得回头查三样东西 · 上下文爆掉,压缩不是第一步
继续往下读
同级:压缩完那一段摘要,你得回头查三样东西 下一级:上下文不是越摘越短,是越养越准 随机一篇