所有页面
本页内容

上下文窗口

上下文窗口是模型一次能读取的文本量。它容纳系统提示词、工具定义、所有记忆文件,以及对话到目前为止的每条消息、每个工具结果和每条回复。在长对话中它会逐渐填满,窗口越满,每一轮就越慢、越贵,直到历史被缩短为止;参见压缩对话。

OAR 在两个地方显示窗口有多满:一条沿输入区上边缘的细线,你随时都能看到;以及 🧠 上下文对话框,它会把这个数字拆开显示。

输入区上方的细线 #

这条线沿输入区的上边缘延伸。它让你一眼看出对话用掉了窗口的多少。它有两种显示模式,在 config.json 中用 contextIndicatorMode 设置(参见 config.json):

模式 你会看到什么
default 一条横跨整个宽度的线。窗口为空时为绿色,窗口满时为红色,颜色随之渐变。
bar 同样的线,从左侧开始增长,长度对应窗口已用的比例。

当 OAR 没有该对话的数字时,这条线是中性的灰色。第一轮之前就是这样,不报告任何数据的提供商也是如此(参见按提供商)。

这条线在以下时刻更新:

  • 你打开一个对话时;
  • 你正在查看的对话中收到消息后不久;
  • 一轮结束时。

在 Claude、DeepSeek、Claude Cloud、Cursor 和 Grok 上,这个数字在一轮结束时记录,因此这条线每轮变化一次。

🧠 上下文对话框 #

点击对话标题栏中的 🧠,它的提示文字为 Check current context(查看当前上下文)。对话框的标题是 Context usage(上下文用量)。它的副标题类似 Claude session 1a2b3c4d:提供商加上会话 id 的前八个字符(OpenAI 对话显示 Copilot,因为它们由 Copilot 智能体运行)。会话存在之前,副标题显示 Conversation 和对话 id 的前八个字符。没有打开的对话时,对话框显示 Open a conversation to see its context usage.(打开一个对话以查看其上下文用量。)

对话框从上到下显示:

  • 模型,以及一行包含总量和窗口的标题。在 Claude 和 DeepSeek 上,标题类似 60.9k used · compaction window 100.0k · model limit 1M;模型上限在已知时显示。在其他提供商上,它类似 221.3k / 1.0M tokens (22%)。
  • 一个进度条,每个类别一段颜色。
  • 一个表格,列为 Category(类别)、Tokens 和 Usage(用量)(占窗口的比例)。
  • 进度条下方的说明:As of the last completed turn(截至上一轮完成时),后跟时间和模型,告诉你这些数字是何时采集的。其他说明会指出哪个数字是估算值(参见按提供商)。
  • 在 Claude 上,还有自动压缩窗口滑块、思考控件和 Commit attribution(提交署名)一行。参见 Claude。从文件夹启动的 Claude Cloud 对话也显示署名一行。0.9.17 新增 DeepSeek 对话只显示滑块:DeepSeek 始终会思考,它的提交署名在它的设置子选项卡中设置。参见 DeepSeek。
  • 0.9.16 新增 对于智能体启动的会话,无论哪个提供商,都有开关 Agents in this conversation may start sessions(允许此对话中的智能体启动会话)。参见让已启动的会话启动会话。
  • 一个折叠的 Raw details(原始详情)区块,其中是运行时自己的文本(如果有的话)。

右上角的 Refresh(刷新)会重新读取这些数字。在 Claude、DeepSeek、Claude Cloud、Cursor 和 Grok 上,数字只在一轮结束时变化,因此它主要在对话框打开期间有一轮结束之后才有用。

类别 #

表格的行取决于提供商。在 Claude 和 DeepSeek 上(两者都由 Claude Code 运行),这些行就是 Claude Code 自己报告的类别,沿用它给出的名称,例如 System prompt(系统提示词)、System tools(系统工具)、Skills(技能)和 Messages(消息),会话中有的话还有 MCP tools(MCP 工具)、Memory files(记忆文件)和 Custom agents(自定义智能体)。另有两行描述窗口的其余部分:

行 含义
Free space(剩余空间) 窗口中尚未使用、对话还可以填充的部分。
Auto-compact reserve(自动压缩预留) 窗口中位于自动压缩阈值以上的部分。对话会在到达那里之前压缩,因此这部分永远不会被填满。只在自动压缩开启且阈值已知时显示。

Claude Code 列出但尚未加载的工具标记为 (deferred)(已延后)。它会显示在表格中,但不计入总量,并有一条说明指出这一点。因此各行加起来可能超过标题中的数字。

自动压缩窗口滑块 #

在 Claude 和 DeepSeek 上,对话框中有 Auto-compact window(自动压缩窗口)滑块。它设置对话在 Claude Code 压缩它之前最多可以积累多少 token 的上下文。这个设置属于对话,而不属于中继。其他提供商没有这样的控件。

滑块有七档:Auto(自动)、100k、150k、200k、300k、500k 和 1M。Auto 是默认值,把选择交给 Claude Code,由它挑选适合该模型的窗口。100k 是下限:Claude Code 会忽略任何更小的值。0.9.17 新增 在 DeepSeek 对话中,Auto 表示 400k token:除非你选择另一档,否则中继会把这个窗口交给 Claude Code,这样长的 DeepSeek 对话会在其 1M 窗口填满之前很早就压缩。压缩本身以及每一档的含义,见压缩对话。

对话框在滑块周围告诉你的信息:

  • 滑块下方的一行以 Effective:(生效值:)开头,给出当前生效的阈值,例如 compacts at 967.0k of 1.0M tokens · auto (model-tuned)。最后一部分说明它的来源:auto (model-tuned)(自动,按模型调整)、model default(模型默认值)、from settings(来自设置)(你的滑块)、from CLAUDE_CODE_AUTO_COMPACT_WINDOW(来自 CLAUDE_CODE_AUTO_COMPACT_WINDOW)或 from client data(来自客户端数据)。第一轮之前它显示 — (known after the first turn)(首轮之后可知)。该环境变量在环境变量中说明。
  • 当 Claude Code 报告自动压缩已关闭时,会显示 Auto-compact is disabled for this session.(此会话已关闭自动压缩。)
  • 一条说明指出新设置何时生效:Applies after the current turn.(在当前这一轮之后生效。)、Applies when background work has finished.(后台工作结束后生效。)或 Applies on the next message (the session restarts once).(从下一条消息起生效,会话会重启一次。)
  • 当你选择的窗口小于对话已用的量时,The conversation will be compacted on the next message.(下一条消息时将压缩对话。)会提醒你。

移动滑块只会改变标签和说明。设置在你关闭对话框时保存(用 ×、Escape 或点击对话框外部),并有一条简短的提示确认,例如 Auto-compact window set to 200k tokens.(自动压缩窗口已设为 200k token。)选择 Auto 时,提示为 Auto-compact window back to the model default.(自动压缩窗口已恢复为模型默认值。)Claude Code 只在启动时读取窗口,因此会话会在你的下一条消息之前重启一次以应用它;参见压缩对话。

窗口的大小 #

窗口大小取决于模型。有些模型提供第二个更大的窗口,例如 1M;你在发送之前用输入区的 Context window(上下文窗口)选择器选择它。参见上下文大小。

在 Claude 和 DeepSeek 上,标题显示两个数字:compaction window(压缩窗口),即对话将被压缩的位置;以及 model limit(模型上限),即模型最多能容纳的量。压缩窗口不能大于模型上限。在其他提供商上,标题显示模型的窗口。当提供商没有告诉 OAR 窗口大小时,OAR 使用内置的已知模型表,其中 DeepSeek 的模型为 1M;两处都没有的模型没有窗口数字。对于 Cursor 和 Grok,对话框此时只显示一个包含 token 计数的纯文本区块,没有进度条、表格或百分比。

按提供商 #

数字从何而来 对话框显示什么
GitHub Copilot 和 OpenAI,SDK 引擎与扩展引擎 Copilot 运行时保存的会话记录。实测值。 较粗的划分:System/Tools(系统/工具)和 Messages,然后是 Free space,以及在运行时报告时的 Auto-compact reserve。
Claude Claude Code 在每轮之后报告明细。实测值。 精确的类别、窗口标题和滑块。
DeepSeek 与 Claude 相同:Claude Code 在每轮之后报告明细。实测值。 与 Claude 相同,但没有思考控件和署名一行。
Claude Cloud 云端会话在每轮之后报告已用和最大 token 数。 总量、窗口和百分比,没有类别。
Cursor 根据上一轮的 token 计数计算。 总量和占窗口的百分比,没有类别。
Grok 根据上一轮的 token 计数计算。 与 Cursor 相同:总量,以及在窗口已知时的百分比。
OpenAI Image 无。 没有上下文数据。

一些细节:

  • Copilot。 如果运行时不再报告完整明细,OAR 只显示一个下限,取自模型到目前为止已写出的 token,标注为 Estimated lower bound — this runtime does not report a full breakdown.(估算的下限 — 此运行时不报告完整明细。)其中缺少提示词、系统、工具和缓存部分。
  • Cursor。 一轮中的每次模型调用都会重新发送上下文,而 Cursor 报告的是总和。OAR 把提示词一侧除以调用次数,再加上输出。当一轮进行了不止一次调用时,对话框会说明这个数字是根据该轮的 token 用量总和估算的。
  • Grok。 总量是上一轮的输入、缓存 token 和输出之和,不标记为估算值。只有在模型的窗口已知时才显示百分比。
  • Claude Cloud。 数字在一轮结束后从会话中读取。如果会话没有报告用量,对话框就没有内容可显示。

在 Claude、DeepSeek、Claude Cloud、Cursor 或 Grok 对话的第一轮之前,对话框没有数字。它显示一个纯文本区块,其中模型为 unavailable(不可用),并有一行 Note(备注):No context data captured yet for this session; it is recorded when a turn completes.(此会话尚未采集到上下文数据;每轮完成时记录。)

窗口快满时 #

提供商 会发生什么
Claude Claude Code 在自动压缩阈值处压缩对话,默认接近模型的上限。
DeepSeek Claude Code 在自动压缩阈值处压缩对话:除非你选择另一个窗口,否则在 1M 窗口中的 400k token 处。
Copilot 和 OpenAI,SDK 引擎 运行时在窗口的 80% 时在后台压缩,在 95% 时阻塞以等待压缩。
Copilot 和 OpenAI,扩展引擎 OAR 不做设置,也不显示任何内容。
Claude Cloud OAR 不做设置;当会话报告一次压缩时,对话记录中会显示一行。
Cursor、Grok OAR 不做设置,也不显示任何内容。

在每个提供商上,你都可以用 /compact 开始一个带有摘要的新对话。这些内容都在压缩对话中说明。