加载中

上下文管理

第 10 课6 分钟
加载中

上下文管理

您发送给Claude的每一个请求都有一个上下文窗口。一百万个令牌听起来很多,但一旦您开始构建真正的智能体,它消耗的速度会比您想象的更快。这就是上下文管理发挥作用的地方:它能帮助您在不超出窗口限制的同时,不丢失重要内容。

什么算作上下文

上下文是Claude在某一轮对话中所看到的一切:

  • 系统提示
  • 消息历史
  • 工具定义和工具结果
  • 附加的文件和技能
  • 思考块

上下文五个组成部分的示意图:系统提示、消息历史、工具、文件和技能,以及思考块

它是每一次API调用的输入。您在输入时为它付费,在输出时也为它付费。而一旦窗口被填满,请求就会失败。

所以目标不是把所有东西都塞进去,而是把正确的东西放进去。

Anthropic发布了四种模式,用于管理长时间运行的智能体中的上下文。其中三种是一流的API功能,一种是设计模式。

管理上下文的四种模式示意图:即时上下文、压缩、缓存和记忆

模式一:即时上下文

不要预先加载所有内容。只加载智能体现在需要的内容,并让它在需要时通过工具拉取更多内容。

想象一个合规审查智能体。它不会把整本建筑规范手册塞进系统提示中——而是在需要特定章节时调用lookup_building_code工具。这是四种模式中的设计模式:API中没有任何特殊之处,只是对加载内容和时机做出的刻意选择。

模式二:服务器端压缩

当对话变得很长时,Anthropic的服务器端压缩会将旧的对话轮次总结为一个单独的块。您可以通过在请求中添加一个context_management键来启用此功能,该键包含一个带有类型的编辑:

python
response = client.beta.messages.create(
    betas=["compact-2026-01-12"],
    model="claude-opus-5",
    max_tokens=1024,
    context_management={
        "edits": [
            {"type": "compact_20260112"}
        ]
    },
    messages=messages,
)

当输入超过触发阈值时,API会自动进行总结。您不必自己跟踪对话长度。

模式三:提示缓存

提示缓存让您可以标记请求中稳定不变的部分——系统提示、工具定义、一份长文档——并在多次调用中以极低的成本重复使用它们。

这笔账比看起来更重要。如果您的系统提示有4,000个令牌,而您每小时调用100次,缓存将决定账单是否可控,还是会招来财务部门的电话。

模式四:记忆工具

有些上下文需要跨会话保留:用户偏好、智能体的持续记录、上周做出的决定。推荐用于此目的的基本组件是记忆工具。

它的工作方式如下:

  • Claude通过工具调用读写一个记忆目录。
  • 您在客户端实现存储后端——可以是文件系统、数据库、加密存储,任何您想要的方式。
  • Anthropic会自动注入一条系统指令,告诉Claude在开始工作前检查记忆目录。

在浏览器中查看的记忆目录,包含incidents和saas-pricing文件夹,以及上一次会话保存的事件记录

叠加使用这些模式

在生产应用中,您通常会同时叠加使用全部四种模式。合规审查智能体会缓存其系统提示和工具定义,并通过lookup_building_code即时拉取建筑规范章节。

每种模式处理不同的失败模式:成本、窗口大小、无状态性。选择与您所遇到的问题相匹配的模式。

回顾

  • 上下文是Claude在某一轮对话中所看到的一切——它既不是免费的,也不是无限的。一旦窗口被填满,请求就会失败。
  • 即时上下文:加载当前所需的内容,让工具拉取其余部分。这是四种模式中的设计模式。
  • 服务器端压缩:添加一个context_management键,当输入超过触发阈值时,API会自动总结旧的对话轮次。
  • 提示缓存:标记请求中稳定的部分,并在多次调用中以极低的成本重复使用它们。
  • 记忆工具:Claude通过工具调用读写记忆目录;您拥有存储后端,因此上下文可以跨会话保留。
  • 四种模式,一个目标。您可以手动搭建它们,也可以使用Claude托管的智能体,它们默认就内置了缓存和压缩功能。