Claude Code突然“失忆”?不是bug,是compact在救你
源自55位全网作者
12:00
精选参考来源
1
蚂蚁面试官:claude code的/compact到底做了啥? 我说“自动总结“,他说我理解的太肤浅了
2
蚂蚁面试:compact命令到底做了啥。前两天有个粉丝私信我,说他面蚂蚁的时候被问了一道题:你知道Claude Code的/compact功能是怎么工作的吗?他当时挺自信的,说这不就是自动总结对话嘛,把长对话压缩一下省token。面试官听完笑了笑,问他:那压缩之后,模型是怎么知道之前改过哪些文件的?
他愣了一下,说应该也总结进去了吧。面试官又问:那如果文件内容在压缩之后变了呢?摘要里写的是旧的,模型怎么拿到新的?他挠挠头,说不太清楚,这个细节他从来没想过。面试官没追问,只是说你理解的有点浅了,回去研究研究。
后来我仔细研究了一下,发现/compact根本不是自动总结那么简单。它的工作流程是这样的:先把原始对话最后拼接一条伪装的user消息,用CRITICAL级别的大写开头,强制让模型按照固定模板去处理。然后要求模型把完整对话历史压缩成一个9个章节的结构化摘要,包括任务目标、整体架构、文件变更、决策、已解决问题、全部用户指令、约束、当前状态、下一步。
更关键的是模型内部有个两层皮设计。模型会先生成一个analysis标签,里面是它的思考过程,然后再生成summary标签,里面才是真正的摘要。但是Claude Code客户端会把analysis全部丢弃,只保留summary。也就是说,模型花token打的草稿,最后根本不会被用到。
压缩效果大概是:原始对话99条消息、10万token,压缩后只剩4条消息、1万token。压缩率确实很高,但这种高度压缩是抹掉过程细节的,留下的只有结构化的最终结论。
而且压缩之后剩下的不只是那4条消息,还有5个文件自动附录、hook context、planAttachment等等。也就是说,/compact并不是优雅的上下文压缩机制,更像是工程上的补丁。只靠摘要模型无法恢复可继续执行的工作状态,客户端还得额外做很多事情来保证上下文准确性。
这个设计的核心矛盾在于:要压缩得足够小以省token,但压缩过程中位置信息必然丢失。所以客户端必须用多层机制来弥补,摘要加文件重读加重新附计划和技能文档等等,来拼凑出一个够用的上下文。下次面试再被问到/compact,可别说只是自动总结了。#大模型 #算法
全部
来源
来源
内容由AI生成
0
0
0评论
当前文章无评论,是时候发表评论了
提示信息
取消
确认
评论举报
已收藏
去我的收藏夹