不是?不,你必须是。
那你知不知道,它的短期记忆是怎么实现的?
我花了三天时间,翻了一遍 Claude Code 的源码和官方文档,还从零到一用 Python 实现了一个 Claude Code,名叫PaiCLI,已经开源在 GitHub 上了,所以我有信心帮你讲清楚这三层:
- 短期记忆的本质是什么?
- 上下文窗口是有限的,用完了怎么办?
- 自动压缩丢了关键信息怎么办?
哈喽大家好,我是二哥呀。今天用 3 分钟,给你讲清楚 Claude Code 的短期记忆是怎么实现的。
系好安全带,我们粗粗粗出发了~
先说第一层,短期记忆到底是什么。
很多人以为大模型是记忆的。
其实没有。
Claude Code 的短期记忆,本质就是一个数组。你,也就是用户,发了一句提示词;Claude Code,也就是你正在用的这个终端 Agent,就往这个数组里追加一条 user 消息;
Agent 调用了大模型,比如 Fable 5,或者 DeepSeek V4,返回了响应,就往数组里追加一条 assistant 消息;
Agent 调用了工具,就往数组里追加一条 tool 消息。
所谓的记忆,就是 Claude Code 在每次调用大模型的时候,把这个塞满了上下文信息的 Messages 数组重新发送了一遍而已。
那聪明的你肯定想到了。数组会一直变大变大变大,但上下文窗口是有上限的,比如说DeepSeek V4 的上下文窗口是 1 兆 Tokens。塞满了怎么办?
靠自动压缩。
Claude Code 有一个 autoCompact,它会实时估算当前消息的 token 总量。一旦接近上下文窗口的上限,就会自动触发压缩。
那聪明的你肯定又要问了:压缩是怎么实现的?
Claude Code 会起一个子 Agent,把历史消息发给大模型,让它按 9 个维度生成一份结构化摘要。
这份摘要包括:用户的核心诉求、关键技术概念、读过的文件和代码、遇到的错误和修复方案、解决问题的思路、用户消息要点、待办任务、当前进展、下一步计划等等。
相当于做了一份“笔记”。
那聪明的你肯定又想到了:假如你之前让 Claude Code 读了一篇一万字的文章,压缩后摘要里只留下了一句“母猪会上树”,具体内容没了。下一轮对话,模型又要用这篇内容,难道再读一遍?
不,Claude Code 没那么蠢。
它会把最近读过的 5 个文件、当前加载的 Skill 定义、所有工具的 schema,重新注入到上下文里,这些关键信息是不会丢的。
压缩只是把旧的,不需要的冗余信息扔了。
完成之后,Claude Code 还会在消息数组里插入一个边界标记,名叫 Boundary Marker。
从这一刻起,每次调大模型,只发送边界标记之后的消息。标记之前的全部丢弃,以释放上下文窗口。
“记忆”变成了:一份摘要,加上必要的文件,再加上最近几轮的原始对话。
当然了,压缩之后,Claude Code 是有可能忘记某个细节的,这不是 bug——是没办法的事。原因很简单,那个细节在压缩时丢了。
就像下雨时你打了伞,但身上可能还是会淋几滴雨,不过不要紧,不影响你的帅气或美貌。
最后简单总结下。
短期记忆其实是一个 Message 数组,在触发了上下文窗口上限时,Claude Code 会帮你做一次摘要压缩。当然了,压缩会丢弃一些细枝末节,所以,尽量在一个上下文窗口内处理完一件事。真处理不完,可以手动压缩让模型记住你的核心诉求。
这个知识点你学废了吗?想解锁更多 AI 硬核知识,点赞关注,我是二哥,咱们下期见!

