
揭秘 Claude Code 上下文压缩终极机制/compact 如何精简对话历史而不丢失关键信息【免费下载链接】claude-codeClaude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining complex code, and handling git workflows - all through natural language commands.项目地址: https://gitcode.com/gh_mirrors/claudecode5/claude-codeClaude Code 是运行在终端中的 AI 编程助手随着对话越来越长它内置的上下文压缩机制/compact命令与自动压缩就成了保住工作记忆的关键。本文带你读懂/compact背后的完整流程如何把冗长对话压缩成一份结构化摘要、如何在压缩后自动找回最近读过的文件与计划、以及自动压缩的触发阈值帮助你在长会话中不丢关键信息、不浪费上下文窗口。一、为什么需要上下文压缩大语言模型有**上下文窗口Context Window**上限——可以理解为模型一次能记住的总容量以 Token 计。一次编程会话里文件读取、命令输出、报错信息会不断累积很快就把窗口塞满。Claude Code 的解法不是简单删掉旧消息而是一套分层的对话历史压缩策略机制触发方式做什么手动/compact用户输入命令把全部对话总结成摘要替换原历史自动压缩 Auto-Compact上下文接近阈值时静默执行同样的压缩流程微压缩 Microcompact每轮请求前清理过期工具输出不动对话本身会话记忆压缩压缩时优先尝试复用已提取的会话记忆成本更低 简单理解微压缩是随手扔垃圾/compact是搬家前写一份交接文档。二、/compact 命令全景从输入到压缩完成/compact命令定义在 src/commands/compact/index.ts它的描述是Clear conversation history but keep a summary in context清空对话历史但保留一份摘要。输入/compact 重点保留测试输出还可以附上自定义摘要指令指挥模型在总结时偏重什么内容。整个流程在 src/commands/compact/compact.ts 中串联起来/compact [自定义指令] │ ├─ 1. 优先尝试会话记忆压缩更省 Token ├─ 2. 执行微压缩先清理可回收内容 └─ 3. 调用核心压缩 compactConversation()2.1 第一步先做减法再请模型总结在把对话丢给模型总结之前系统会先做几轮减负避免摘要请求本身超出窗口剥离图片与文档stripImagesFromMessages()会把用户消息里的图片、文档替换成[image]、[document]占位符——反正摘要也不需要真正的像素见 compact.ts微压缩Microcompact只针对 Read、Bash、Grep、Glob、WebSearch、WebFetch、Edit、Write 这些吃 Token 大户的工具输出做清理对话内容原封不动见 microCompact.ts。如果摘要请求自己还是太长了还有一张保底牌按 API 轮次丢弃最旧的对话组并重试最多 3 次宁可少总结一点也不让你卡死无法继续truncateHeadForPTLRetry()。2.2 第二步9 段式结构化摘要核心机制这是不丢关键信息的关键。Claude Code 不是让模型随便总结一下而是在 prompt.ts 里给了一份严格的 9 段式模板主要请求与意图用户明确提出的所有需求关键技术概念涉及的框架、技术点文件与代码片段改过/读过的文件及原因错误与修复踩过的坑、怎么解决的、用户反馈问题排查已解决与进行中的问题所有用户消息逐条保留防止误解用户意图待办任务明确被要求但还没做完的事当前工作压缩前一刻正在做什么可选的下一步带原文引用防止任务理解漂移更巧妙的一个设计是模型会先输出一段analysis草稿区梳理思路再输出summary正式摘要——草稿在写完后会被直接丢弃只把精华摘要放回上下文formatCompactSummary()。2.3 第三步压缩后的信息找回清单摘要替代历史后Claude Code 会立刻做一轮状态恢复让模型无缝接上恢复最近读过的 5 个文件每个最多 5000 Token总预算 5 万 Token模型不用重新 Read 一遍保留计划文件如果你在 Plan 模式/plan里计划内容和模式说明会被重新注入压缩后不会失忆出模式恢复已调用的技能Skills、正在后台运行的 Agent 任务状态附上完整对话存档路径摘要末尾会告诉模型如需精确的代码片段或报错原文可读完整 transcript等于留了一条回溯通道。这些逻辑集中在 src/services/compact/compact.ts 与createPostCompactFileAttachments()中。三、不只是手动自动压缩的阈值机制/compact之外Claude Code 每轮对话都会检查是否需要自动压缩。阈值计算写在 autoCompact.ts 中规则很直观自动压缩阈值 上下文窗口 − 输出预留(约2万Token) − 1.3万Token缓冲也就是上下文用到大约 85%~90% 时就会在后台静默触发压缩你甚至不用动手。另外两个细节值得知道熔断保护连续 3 次压缩失败后自动停止尝试避免在怎么压都超限的死局里反复烧 API 调用可配置设置中的autoCompactEnabled可关掉自动压缩环境变量DISABLE_COMPACT可把手动/compact一并禁用。压缩前后的 Token 数会记录在会话事件里配合/context命令随时查看当前上下文占用。四、进阶技巧用好 /compact 的 3 个场景✅压缩时机切换大型任务、或看到上下文剩余不足警告时主动/compact比等到自动触发更可控✅带上指令/compact 重点保留 API 设计决策和未完成的 TODO自定义指令会拼进摘要提示词让总结更有针对性✅局部压缩通过消息选择器可对指定消息做部分压缩partialCompactConversation()只总结一段对话、保留其余原文适合只忘了开头那部分的场景见 compact.ts。五、小结Claude Code 的上下文压缩不是删除历史而是总结 恢复 兜底三件套用 9 段式模板保住意图与进度用附件机制找回文件、计划与技能用完整 transcript 留下回溯入口。理解这套机制后你可以在长会话中放心让 Claude Code 继续干活——关键信息自会留在它看得见的地方。 延伸阅读命令总表见 docs/commands.md子系统中Compact — 对话上下文压缩的介绍见 docs/subsystems.md。【免费下载链接】claude-codeClaude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining complex code, and handling git workflows - all through natural language commands.项目地址: https://gitcode.com/gh_mirrors/claudecode5/claude-code创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考