處理大型專案
在 Bob Shell 中管理大型程式碼庫。了解上下文視窗最佳化、檔案處理,以及企業規模專案的最佳實踐。
大型專案中的上下文限制
Bob 使用具有有限上下文視窗的大型語言模型。這是 Bob 一次可以處理的最大文字量(以 token 計算)。如果上下文太大,Bob 可能無法理解你的請求或產生準確的回應。
上下文視窗包含:
- 系統提示(Bob 的指令)
- 對話歷史記錄
- 你在聊天提示中包含的任何檔案的內容
- Bob 使用的任何指令或工具的輸出
管理上下文的策略
- 具體明確:在引用檔案或程式碼時,使用具體的檔案路徑和函式名稱。避免像「主要檔案」這樣的模糊引用。
- 精確引用檔案:在聊天提示中使用路徑包含特定檔案(例如
src/components/MyComponent.tsx),或引用 commit hash 將 Bob 指向特定的 Git 狀態。 - 分解任務:將大型任務分成較小、更易管理的子任務。這有助於保持上下文的專注性。
- 在需要時摘要化:如果你需要引用大量程式碼,考慮在提示中摘要化相關部分,而不是包含整個程式碼。
- 優先考慮近期歷史:Bob 會自動壓縮對話歷史中的舊訊息以保持在上下文視窗內。請留意這一點,並在需要時重新包含重要的上下文。
- 管理 MCP 工具使用:你可以停用和啟用 MCP 服務中的特定工具,只使用你需要的工具,減少未使用工具定義的上下文消耗。
- 使用子代理或子任務進行隔離工作:對於大型、獨立的工作,考慮使用子代理或子任務。兩者都在各自獨立的上下文視窗中執行,讓主要終端機工作階段保持精簡。詳情請參閱工具中的
spawn_subagent和start_subtask。
範例:重構大型檔案
如果你需要重構一個大型 TypeScript 檔案(src/components/MyComponent.tsx),以下是一個有效的方法:
- 取得初步概覽:
列出 src/components/MyComponent.tsx 中的函式和類別 - 針對特定函式:
將 src/components/MyComponent.tsx 中的 `processData` 函式從 Promises 重構為使用 async/await。 - 進行迭代式更改:進行小幅、漸進式的更改,審查並核准每個步驟。
透過分解任務並提供具體的上下文,你可以在上下文視窗限制內有效地處理大型檔案。
這個主題如何?