上下文視窗管理

了解 Bob 的 270,000 token 上下文視窗如何運作、每個類別如何影響 token 使用量,以及讓工作階段保持專注和節省成本的最佳實踐。

上下文視窗概述

Bob Shell 中的每個工作階段都有一個上下文視窗——該對話的 token 預算。上限為 270,000 個 token。Bob 載入的所有內容都會計入其中。

填滿視窗的內容

類別包含內容
系統提示Bob 工作階段的核心指令
工具定義內建工具結構描述和已連線的 MCP 工具定義
MCP 工具已連線的 MCP 伺服器提供的工具的指令和描述
規則來自專案和模式規則檔案的自訂指令(例如 AGENTS.md.bob/rules-*
技能Bob 為對話載入的技能指令
訊息你的提示、Bob 的回應,以及對話中的工具活動。這是以 token 計算的逐字記錄

指令輸出和工具結果計入訊息。檔案內容不會獨立列計。

token 報告包含兩個摘要欄位:

  • 保留給模型回應:為 Bob 的下一個回應保留的 token(通常為 20.0k)。
  • 可用空間:剩餘的空閒 token。

基準開銷

即使在你開始使用 Bob 之前,固定類別就已使用上下文。即使是簡單的「快速問候」也總共需要約 8.5k token。其中大部分是工具定義5.1k)、系統提示1.5k)、規則830)和技能454)。只有 590訊息中。

Bob 在每次提示時重新發送完整的開銷堆疊。更多的 MCP 伺服器或載入的技能會在你輸入之前增加 MCP 工具工具定義技能

監控你的 token 使用量

Bob Shell 在每次交流結束時報告 token 使用量。下表顯示影響每個類別的因素:

類別使其增長的因素
系統提示工作階段啟動時載入。正常工作期間保持不變。
工具定義內建工具結構描述。工作階段啟動時設定。正常工作期間保持不變。
MCP 工具已連線的 MCP 伺服器和啟用的工具。當你新增伺服器或工具時增長,而非在你發送提示時。
規則專案和模式規則檔案(例如 AGENTS.md)。工作階段開啟時設定。
技能Bob 為工作階段載入的技能。如果 Bob 在對話中途啟用技能,可能會增加。
訊息你的提示、Bob 的回應、檔案讀取、工具輸出和指令輸出。每次輪次和儲存庫探索都會增長。

在短暫的交流中,固定類別往往佔總量的大部分。當你要求 Bob 讀取檔案或執行工具時,訊息通常成為最大的類別。請留意這種轉變。

可用空間隨著任何類別增長而縮小。保留給模型回應是為 Bob 的下一個回應保留的。它不是上方已使用總量的一部分。

Token 限制

每個工作階段的硬性上限為 270,000 個 token。Bob 在你達到上限之前就開始壓縮。壓縮通常在總使用量約 190,000 個 token 時開始。

自動上下文壓縮

在壓縮閾值時,Bob 會:

  1. 保留最新和最相關的上下文。
  2. 摘要化或移除較舊的對話片段。
  3. 維護關鍵的系統指令、工具定義、規則和技能。
  4. 繼續使用壓縮後的上下文。

壓縮是有損耗的。訊息早期的細節可能無法存活。當你更換主題或訊息已足夠大而影響品質時,請開始新的工作階段。

對 Bobcoins 的影響

Bobcoins 追蹤 token 使用量。輸入和輸出 token 都計算在內。

  • 每則訊息再次發送完整的活躍上下文,包括固定開銷。
  • Bob 在每次發送時重新處理已載入的內容。
  • 具有大量訊息的長工作階段在後期提示中成本更高。

最佳實踐

注意:

上下文視窗不是儲存空間。它是工作記憶體——Bob 在每個步驟中可以使用的內容。控制放入的內容。當工作階段充滿過時的輸出時重置。用測試而非 Bob 的回應來確認結果。

界定工作階段和對話範圍

每個工作目標使用一個工作階段,並以窄提示開始。在要求 Bob 探索儲存庫之前,陳述目標、預期結果和限制條件。明確指定檔案和函式名稱。避免像「讀取整個儲存庫」或「檢查後端」這樣的模糊請求。當主題改變時開始新的工作階段——訊息中不相關的內容會增加成本並可能混淆 Bob。

保持常備上下文精簡

固定類別在你輸入任何內容之前就消耗 token。為了降低該開銷:

  • 保持自訂規則AGENTS.md 簡短——只放設定、測試和樣式指令(例如 pnpm testmvn verify)。
  • 只連線當前工作所需的 MCP 伺服器、工具和技能。斷開不使用的連線,並優先使用專案範圍的 MCP 設定而非全域設定。
  • 訊息保留給此工作階段特定的情境證據——錯誤、記錄和相關檔案。不要在每次提示中重複常備規則。

在需要時加入上下文

讓 Bob 搜尋和讀取目標檔案,而不是將大量內容貼入聊天提示。在提示中引用特定的檔案路徑和行範圍,並避免廣泛的目錄引用:

✓ 修復 src/utils/validation.ts 第 45-67 行的電子郵件驗證邏輯
✗ 審查 src/、tests/ 和 docs/ 中的所有內容並提出改進建議

分階段工作——找到可能的檔案、檢查相關的檔案、計劃、更改和驗證。對於廣泛的儲存庫讀取,使用子代理,這樣工作階段接收的是壓縮結果,而不是每個 read_file 呼叫落入訊息。當來源衝突時,信任執行中的程式碼和測試,而非過時的注解或舊的 README 說明。

有關大型儲存庫的更多策略,請參閱處理大型專案

當訊息填滿時重置

在長時間的工作階段中,訊息會積累重複的檔案內容、廢棄的計劃和過時的工具輸出。當工作目標改變或對話已足夠大而影響品質時,請開始新的工作階段。保留限制條件、證據和未解決的問題——其餘的可以移除。

Bob 也可以自動壓縮舊的片段,但壓縮是有損耗的,訊息早期的細節可能無法存活。相比一次大型自主執行,更應優先進行小型、已核准的更改,以使差異保持可審查且 Bob 保持在正軌上。

這個主題如何?