處理大型專案

在 Bob Shell 中管理大型程式碼庫。了解上下文視窗最佳化、檔案處理,以及企業規模專案的最佳實踐。

大型專案中的上下文限制

Bob 使用具有有限上下文視窗的大型語言模型。這是 Bob 一次可以處理的最大文字量(以 token 計算)。如果上下文太大,Bob 可能無法理解你的請求或產生準確的回應。

上下文視窗包含:

  • 系統提示(Bob 的指令)
  • 對話歷史記錄
  • 你在聊天提示中包含的任何檔案的內容
  • Bob 使用的任何指令或工具的輸出

管理上下文的策略

  1. 具體明確:在引用檔案或程式碼時,使用具體的檔案路徑和函式名稱。避免像「主要檔案」這樣的模糊引用。
  2. 精確引用檔案:在聊天提示中使用路徑包含特定檔案(例如 src/components/MyComponent.tsx),或引用 commit hash 將 Bob 指向特定的 Git 狀態。
  3. 分解任務:將大型任務分成較小、更易管理的子任務。這有助於保持上下文的專注性。
  4. 在需要時摘要化:如果你需要引用大量程式碼,考慮在提示中摘要化相關部分,而不是包含整個程式碼。
  5. 優先考慮近期歷史:Bob 會自動壓縮對話歷史中的舊訊息以保持在上下文視窗內。請留意這一點,並在需要時重新包含重要的上下文。
  6. 管理 MCP 工具使用:你可以停用和啟用 MCP 服務中的特定工具,只使用你需要的工具,減少未使用工具定義的上下文消耗。
  7. 使用子代理或子任務進行隔離工作:對於大型、獨立的工作,考慮使用子代理或子任務。兩者都在各自獨立的上下文視窗中執行,讓主要終端機工作階段保持精簡。詳情請參閱工具中的 spawn_subagentstart_subtask

範例:重構大型檔案

如果你需要重構一個大型 TypeScript 檔案(src/components/MyComponent.tsx),以下是一個有效的方法:

  1. 取得初步概覽
    列出 src/components/MyComponent.tsx 中的函式和類別
  2. 針對特定函式
    將 src/components/MyComponent.tsx 中的 `processData` 函式從 Promises 重構為使用 async/await。
  3. 進行迭代式更改:進行小幅、漸進式的更改,審查並核准每個步驟。

透過分解任務並提供具體的上下文,你可以在上下文視窗限制內有效地處理大型檔案。

這個主題如何?