所有頁面
本頁內容

上下文視窗

上下文視窗是模型一次能讀取的文字量。它包含系統提示、工具定義、任何記憶檔案,以及對話到目前為止的每一則訊息、工具結果和回覆。在很長的對話中,它會逐漸填滿,而視窗越滿,回合就越慢、越昂貴,直到歷史記錄被縮短為止;見壓縮對話。

OAR 在兩個地方顯示視窗有多滿:沿著輸入區頂端邊緣的一條細線,你隨時都看得到;以及 🧠 上下文對話框,它會把數字拆解開來。

輸入區上方的線 #

這條線沿著輸入區的頂端邊緣延伸。它讓你一眼就看出對話用掉了多少視窗。它有兩種顯示模式,在 config.json 中以 contextIndicatorMode 設定(見 config.json):

模式 你會看到什麼
default 一條橫跨整個寬度的線。它的顏色從視窗空著時的綠色,漸變到視窗滿時的紅色。
bar 同一條線,從左邊增長到視窗中使用中的比例。

OAR 沒有該對話的數字時,這條線是中性的灰色。第一個回合之前就是這樣,不回報任何資料的供應商也是如此(見依供應商)。

這條線會在以下時機更新:

  • 你開啟對話時;
  • 你正在查看的對話中有訊息送達後不久;
  • 回合結束時。

在 Claude、DeepSeek、Claude Cloud、Cursor 和 Grok 上,數字是在回合結束時記錄的,所以這條線每個回合只會移動一次。

🧠 上下文對話框 #

點選對話標題列中的 🧠,它的工具提示是 Check current context(檢查目前上下文)。對話框的標題是 Context usage(上下文用量)。它的副標題類似 Claude session 1a2b3c4d:供應商,以及 session id 的前八個字元(OpenAI 對話會顯示 Copilot,因為是由 Copilot agent 執行它們)。session 存在之前,它會顯示 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 新增 對於由 agent 啟動的 session,不論供應商為何,都會有 Agents in this conversation may start sessions(允許此對話中的 agent 啟動 session)開關。見讓已啟動的 session 啟動 session。
  • 一個摺疊起來的 Raw details(原始詳細資料)區塊,裡面是 runtime 自己的文字(如果有的話)。

右上角的 Refresh(重新整理)會重新讀取數字。在 Claude、DeepSeek、Claude Cloud、Cursor 和 Grok 上,數字只會在回合結束時改變,所以它主要在對話框開著期間有回合結束時才有用。

類別 #

表格的列取決於供應商。在 Claude 和 DeepSeek 上(兩者都由 Claude Code 執行),列就是 Claude Code 自己回報的類別,並使用它給的名稱,例如 System prompt(系統提示)、System tools(系統工具)、Skills(技能)和 Messages(訊息),而 session 有的話,還有 MCP tools(MCP 工具)、Memory files(記憶檔案)和 Custom agents(自訂 agent)。另外兩列說明視窗的其餘部分:

列 意義
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(來自用戶端資料),其中 from settings 指的是你的滑桿。第一個回合之前,它會顯示 — (known after the first turn)(第一個回合後可知)。這個環境變數在環境變數中說明。
  • 當 Claude Code 回報自動壓縮已關閉時,會出現 Auto-compact is disabled for this session.(此 session 已關閉自動壓縮。)
  • 一則註記會說明新設定何時生效:Applies after the current turn.(在目前的回合之後生效。)、Applies when background work has finished.(背景工作結束後生效。)或 Applies on the next message (the session restarts once).(從下一則訊息起生效,session 會重新啟動一次。)
  • 當你選擇的視窗小於對話已使用的量時,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 只在啟動時讀取視窗,所以 session 會在你的下一則訊息之前重新啟動一次以套用它;見壓縮對話。

視窗的大小 #

視窗大小取決於模型。有些模型提供第二個更大的視窗,例如 1M;你在傳送之前,用輸入區的 Context window(上下文視窗)選擇器選擇它。見上下文大小。

在 Claude 和 DeepSeek 上,總覽行會顯示兩個數字:compaction window(壓縮視窗),即對話將被壓縮的位置;以及 model limit(模型上限),即模型最多能容納的量。壓縮視窗不能大於模型上限。在其他供應商上,總覽行顯示的是模型的視窗。當供應商沒有告訴 OAR 視窗大小時,OAR 會使用內建的已知模型表,其中 DeepSeek 的模型為 1M;兩者都沒有的模型就沒有視窗數字。對於 Cursor 和 Grok,對話框此時只會顯示一個列出 token 數的純文字區塊,沒有長條、表格或百分比。

依供應商 #

數字從哪裡來 對話框顯示什麼
GitHub Copilot 和 OpenAI,SDK 和擴充功能引擎 Copilot runtime 保存的 session 紀錄。實際測量。 較粗略的拆分:System/Tools(系統/工具)和 Messages,接著是 Free space,以及 runtime 有回報時的 Auto-compact reserve。
Claude Claude Code 在每個回合後回報明細。實際測量。 精確的類別、視窗總覽行、滑桿。
DeepSeek 和 Claude 一樣:Claude Code 在每個回合後回報明細。實際測量。 和 Claude 相同,但沒有思考控制項和署名列。
Claude Cloud 雲端 session 在每個回合後回報已使用和最大的 token 數。 總量、視窗和百分比,沒有類別。
Cursor 由上一個回合的 token 數計算而來。 總量和占視窗的百分比,沒有類別。
Grok 由上一個回合的 token 數計算而來。 和 Cursor 相同:總量,以及已知視窗時的百分比。
OpenAI Image 沒有。 沒有上下文資料。

一些細節:

  • Copilot。 如果 runtime 不再回報完整的明細,OAR 只會根據模型到目前為止寫出的 token 顯示一個下限,並標示為 Estimated lower bound — this runtime does not report a full breakdown.(估算的下限 — 此執行環境不回報完整明細。)其中缺少提示、系統、工具和快取的部分。
  • Cursor。 一個回合中的每次模型呼叫都會重新傳送上下文,而 Cursor 回報的是總和。OAR 會把提示部分除以呼叫次數,再加上輸出。當一個回合發出了不只一次呼叫時,對話框會說明這個數字是根據該回合的總 token 用量估算的。
  • Grok。 總量是上一個回合的輸入、已快取 token 和輸出的總和,而且不會標示為估算值。只有在已知模型的視窗時才會顯示百分比。
  • Claude Cloud。 數字是在回合結束後從 session 讀取的。如果 session 沒有回報任何用量,對話框就沒有東西可顯示。

在 Claude、DeepSeek、Claude Cloud、Cursor 或 Grok 對話的第一個回合之前,對話框沒有任何數字。它會顯示一個純文字區塊,其中模型為 unavailable(無法使用),並有一行 Note(註記):No context data captured yet for this session; it is recorded when a turn completes.(此 session 尚未擷取到上下文資料;回合完成時才會記錄。)

視窗快滿時 #

供應商 會發生什麼
Claude Claude Code 會在自動壓縮門檻時壓縮對話,門檻預設接近模型的上限。
DeepSeek Claude Code 會在自動壓縮門檻時壓縮對話:除非你選擇其他視窗,否則是 1M 視窗中的 400k token。
Copilot 和 OpenAI,SDK 引擎 runtime 會在視窗達到 80% 時於背景壓縮,達到 95% 時則以阻擋式壓縮進行。
Copilot 和 OpenAI,擴充功能引擎 OAR 不設定也不顯示任何東西。
Claude Cloud OAR 不設定任何東西;session 回報壓縮時,對話紀錄會顯示一條線。
Cursor、Grok OAR 不設定也不顯示任何東西。

在每個供應商上,你都可以用 /compact 開始一個帶有摘要的新對話。這一切都在壓縮對話中說明。