96SEO 2026-06-09 18:48 4
嘿,今天咱们来聊个技术硬核的话题,就是 Claude Code 那套记忆和上下文压缩机制。你是不是也好奇,它到底是怎么Zuo到在不爆 token 的情况下还Neng记住你说了啥、干了啥的?
说实话,我一开始也觉得这玩意儿挺神秘的,但kan完源码之后害,真香!

咱就是说这东西设计得真不赖。它没有用什么高大上的数据库,而是用Zui朴素的方式——文件系统。你懂的,就是那种“大道至简”的路子。
那它是怎么玩转记忆的呢?
三层记忆架构它把记忆分成了三层:短期、中期、长期。就像咱们人脑一样,短期记忆先存着,重要的再往中期、长期里搬。
短期记忆就是你当前对话的上下文,比如你刚说了啥,它会先记在内存里。中期记忆呢,就是系统帮你Zuo的一次压缩处理,把对话内容精简一下存到一个地方。长期记忆呢,就是你让它记住的那些关键信息,比如你让它记住一个 bug 的修复过程,它就会存成一个文件,然后在 MEMORY.md 里留个索引。
你可Neng会问,为啥不用向量数据库?
害,我也这么想过。但你猜怎么着?它压根就没用向量数据库,而是用本地文件系统。为啥?因为这样geng轻量、geng可控,而且成本低。你懂的,不是所有问题dou得上数据库,有时候文件系统才是王道。
那它怎么防止上下文爆炸的?
它有个压缩机制,叫“微压缩”,就是把一些没用的工具结果给截断了。比如你调用了hen多工具,它会保留Zui近的几个结果,老的直接扔掉。比如超过 10 分钟的,只保留两个。是不是hen暴力?但hen有效!
你kankan这个类:
public class MicroCompact implements Compressor {
private static final int MAX_TOOL_RESULTS = 6;
private static final long TIME_THRESHOLD = 10 * 60 * 1000; // 10分钟
// ...
}
这不就是“断舍离”嘛,哈哈!
图片和文档的处理你有没有发现,它在处理图片和文档的时候,直接把图片和文档替换成占位符了?比如 、。这样既节省了 token,又保留了上下文的连贯性。你想想,Ru果用户发了一张图,你总不Neng每次dou把图重新发一遍吧?那得多贵啊!
所以它就用这么一段代码来处理:
const newContent = content.flatMap(block => {
if {
return ' }];
}
if {
return ' }];
}
return ;
});
是不是hen聪明?
记忆保存机制它还有一套“两步走”的记忆保存机制。第一步是把详细内容写到一个文件里第二步是把索引写到 MEMORY.md 里。你懂的,这就像写日记一样,先记在本子上,再在目录里Zuo个标记。
比如这样:
export function buildMemoryLines {
const howToSave = ;
}
这不就是“分而治之”嘛,哈哈!
压缩机制的触发你想想,Ru果用户一次性塞入了太多内容,比如大文件、长对话,那系统怎么办?
它会先Zuo一次“大瘦身”,把图片、文档这些占位符给压缩了。Ru果连压缩请求本身dou超了怎么办?
它就直接扔掉Zui老的上下文,防止对话卡死。你懂的,这叫“PTL 重试逃生舱”。
比如这段代码:
export function truncateHeadForPTLRetry(
messages: Message,
ptlResponse: AssistantMessage,
): Message | null {
// ...
const groups = groupMessagesByApiRound
if return null
const tokenGap = getPromptTooLongTokenGap
let dropCount: number
if {
// Ru果 API 明确告诉了超出的 Token 数量,精准计算要丢弃几轮
let acc = 0
dropCount = 0
for {
acc += roughTokenCountEstimationForMessages
drop0Count++
if break
}
} else {
// 当连压缩请求dou超载,且不知道超出多少时默认抛弃Zui老的 50% 历史记录
dropCount = Math.max)
}
// 直接丢弃头部消息,保留Zui新内容
const sliced = groups.slice.flat
return sliced
}
这叫啥?这叫“Zui后的逃生舱”,虽然有损,但Neng防止对话彻底卡死。是不是hen硬核?
MEMORY.md 的限制你再kankan MEMORY.md 这个文件,它就像一本书的目录,每次对话dou会带上它。但Ru果它写得太长,系统就会直接从末尾一刀切,然后贴上大字报警告!
比如这样:
export const MAX_ENTRYPOINT_LINES = 200
export const MAX_ENTRYPOINT_BYTES = 25_000
export function truncateEntrypointContent: EntrypointTruncation {
// ...
const reason = wasByteTruncated && !wasLineTruncated
? `${formatFileSize} }) — index entries are too long`
: wasLineTruncated && !wasByteTruncated
? `${lineCount} lines `
: `${lineCount} lines and ${formatFileSize}`
return {
content: truncated + `
> WARNING: ${ENTRYPOINT_NAME} is ${reason}. Only part of it was loaded. Keep index entries to one line under ~ chars...`,
// ...
}
}
这设计太精妙了大模型下次读到这句警告,自己就会吓得去精简索引文件了。你懂的,这叫“用 Prompt 反向控制 AI 行为”,这不比搞个复杂的数据库强?
为什么百度不收录你可Neng会问,为啥百度不收录?
害,这你得问百度,它可Neng觉得这内容太技术了或者geng新太频繁了或者……你懂的,百度的算法咱也搞不懂。不过咱这内容可是实打实的技术干货,不怕它不收录,就怕它收录了咱还没写完呢!
只要你掌握了这套“记忆 + 压缩”的机制,你完全Ke以自己写一个不会爆 token 的“外置海马体”出来。到时候你就Neng让大模型自己管理记忆,再也不怕它七秒记忆了!
好了今天就聊到这。你要是kan懂了记得点个赞,咱下期继续聊点硬核的!
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback