AI TOOLS

EP05. "答案从哪来:参数记忆、上下文窗口与成本"

首页 › AI 工具 › Claude · AI Concepts · EP05
约 9 分钟· #EP05#Claude#AI Concepts
🔒 登录后可标记已读
  • 同一个问题,在一个已经聊了很久的长对话里问,跟开一个新对话问,烧掉的 token 量可能完全不一样——这篇解释为什么
  • 官方标注 20 分钟,把"AI 的答案到底从哪来"拆成三个来源:训练时学到的知识(parametric memory)、当前对话里给的内容、AI 自己主动去查到的内容(agentic context)
  • 前置知识:建议先看过 EP02《AI 能力与局限》里的 Knowledge 和 Working Memory 两节——那两节讲的是"这两种局限长什么样",这篇讲的是背后的机制、怎么算成本,不重复讲截止日期或知识失败的四种类型
  • 关键数字:目前 Claude 旗舰模型的上下文窗口最高到 100 万 token,大概是 3 本《白鲸记》(Moby-Dick)的字数,但很多人根本没写多少字就撞上限了——因为吃掉 token 的大头不是你打的字,是 system prompt、搜索结果、对话记录
  • 学完能看懂为什么长对话聊到后面反而比开新对话贵,以及 Claude Code 的 CLAUDE.md 记忆机制背后是什么原理

重点内容


答案的三个来源

AI 聊天模型回答问题时,内容其实来自三个不同来源:

  1. 训练时学到的知识(parametric memory)——烧进模型权重里
  2. 当前对话里提供的内容——你在这轮对话里给的上下文
  3. AI 自己主动检索到的内容(agentic context)——它自己去查回来的

Parametric Memory 从哪来

模型内建的知识叫 parametric memory,官方原话:「这些知识是烧进模型的权重(weights/parameters)里的」——它是模型学"预测下一个词"这件事的副产品,不是有人刻意去编一本百科全书塞进去的。这一点跟 EP02《AI 能力与局限》讲的 Knowledge 特性是同一件事,那篇已经细讲过截止日期和四种知识失败类型,这里不重复。


加 context 的边界:context window 有多大

问题超出训练知识范围时,额外给上下文(俗称 "context stuffing")通常有效,但有容量上限。目前旗舰模型的上下文窗口最高支持约 100 万 token,相当于 3 本《白鲸记》的字数。可是很多用户根本没写多少字就撞上限了——说明吃掉容量的另有其人。


谁在吃掉你的 token:一个真实拆解例子

教程举了一个实际例子:一个用户问题只有 28 个 token,但配套的 system prompt 就吃掉 345 个 token,加上一次搜索结果又吃掉 184 个 token。也就是说,典型对话里 token 主要被 system prompt、搜索结果、历史对话记录吃掉,不是被你打的字吃掉。


Compaction:对话太长了怎么办

当上下文窗口快到上限时,Claude 会把整段对话摘要成一份总结,用总结取代原始对话内容。流程分三步:

  1. App 侦测到快撞上限,先暂缓处理你下一轮的输入
  2. Claude 收到一个"总结这段对话记录"的 prompt
  3. 摘要取代掉原本的对话内容,对话得以继续下去

📌 早期版本的 compaction「明显会丢信息」(noticeably lossy),有时候关键指引会在总结过程中不见,后续版本已经有改善,但这个机制本质上还是有损的。


Written Memory:让"记忆"看起来无限

「写下来的记忆」(written memory)跟 parametric memory 不是同一回事:Claude 在一次对话里把重要信息写成笔记,这些笔记会在之后的对话开头被重新插入,制造出一种"记忆好像无限"的效果。

不同 Claude 产品实现方式不一样,但底层流程相同:

产品Memory 存在哪
Claude Code读取 CLAUDE.md 文件(就是本项目一直在用的这套机制)
claude.ai存在 memory 设置(settings)里

"一周的记忆"例子:连续几天下来,Claude 会选择性记住重要信息(项目、偏好、合作关系),而把临时性的细节(比如某次活动的 RSVP 人数)当成"以后需要时再查"的东西,不会主动一直记着。


Prepended Context:为什么长对话后面几轮更贵

在处理你的第一个 token 之前,系统已经先塞进大量看不见的内容(system prompt 等),这叫 prepended context。关键一点:你发的每一条消息,都会把到目前为止的整段对话历史(含 prepended context)重新提交一次。这解释了为什么在一个已经很长的对话里问一个问题,比在新对话里问一模一样的问题要贵——旧对话的历史每次都要跟着重新算一遍。


Agentic Context 与 effort 设置

Agentic context 指 Claude 在回答前自己主动去多查一些资料。要不要查、查多少,部分取决于 effort(投入程度)设置:effort 调高,Claude 更倾向多查证,答案通常更好,但会吃掉更多 context window;effort 调低,更倾向直接凭已有内容回答。


学完你会

  • ✅ 分清 parametric memory(模型权重里的知识)跟 context window 里的当次对话内容,两者不是一回事
  • ✅ 知道 context window 有容量上限,而且吃掉容量的主要是 system prompt、搜索结果、历史记录,不只是你打的字
  • ✅ 明白每一轮对话都会把整个窗口重新提交一次,所以新开对话有时候反而更省
  • ✅ 能解释 compaction(自动摘要)怎么做出"看起来无限"的上下文,但知道它本质有损
  • ✅ 知道 written memory(比如 CLAUDE.md)怎么跨对话把重要信息带下去
  • ✅ 能对着 Claude 的某次回答,猜出是哪部分 context 在起作用

常见错误

  • ❌ 以为自己打字打得少,就不可能撞上下文上限——真正吃掉容量的往往是 system prompt、搜索结果和累积的对话记录,不是你的输入
  • ❌ 一个对话聊得越来越长还继续问同样的问题,没意识到这样比开一个新对话更贵——因为每一轮都要把之前的全部历史重新提交一次
  • ❌ 把 compaction(自动摘要)当成"完全不会丢信息的无限记忆"来依赖——它本质是有损压缩,重要指引有可能在摘要过程中被漏掉

Sources

官方文档:

  1. How Context Affects Claude's Performance and Cost — https://academy.claude.com/tutorials/parametric-memory-and-context