功能

Subagents

了解 Bob 如何使用 subagents 在隔離的上下文中處理集中、自包含的任務,而不會污染主要對話。

什麼是 subagents?

subagent 是 Bob 可以 spawn 的獨立代理,用於處理集中、自包含的任務。它在自己的隔離 context window 中運行,執行分配的工作,並將結果摘要返回給主要對話。

subagents 適用於那些否則會在進行中的對話中添加大量無關內容的工作——例如,在 Bob 繼續主要任務之前,深入探索程式碼庫的某個部分以收集特定資訊。

subagents 如何運作

當 Bob spawn 一個 subagent 時:

  1. 建立一個具有自己 context window 的新獨立代理。
  2. Bob 向其傳遞需要執行的集中任務的描述。
  3. 在開始之前會提示你批准該 spawn。Bob 等待直到你確認。
  4. subagent 使用其可用的 tools 執行任務。
  5. subagent 將其發現的摘要返回給 Bob。
  6. Bob 使用該摘要繼續主要對話。

subagent 與主要對話分開運行。它不與 Bob 共享狀態、檔案或 tool 結果,除非 Bob 在描述中明確傳遞了這些內容。

Subagent 類型

有兩種 subagent 類型,各自適合不同的任務:

類型描述最適合
explore唯讀程式碼庫探索,在更輕量的模型上運行搜尋和總結程式碼,尋找相關檔案,理解結構
general完整的 tool 存取權限,在預設模型上運行任何需要讀取、寫入或命令的自包含任務

上下文與對話歷史

預設情況下,subagent 看不到父對話歷史。這使其上下文保持精簡,專注於當前任務。

當 subagent 需要理解對話中早些時候表達的先前決定、約束或偏好時,Bob 可以設定 fork_context: true 將對話歷史傳遞給 subagent。

模式限制

你正在使用的模式控制 Bob 被允許 spawn 的 subagent 類型。某些模式允許所有 subagent 類型;其他模式將 spawn 限制為特定類型或完全禁止。如果活動模式不允許 subagent spawn,Bob 將直接完成工作而不進行 spawn。

Bob 何時使用 subagents

Bob 謹慎使用 subagents。預設情況下始終直接完成工作而不 spawn subagent。只有在以下所有條件都成立時才會考慮 subagent:

  • 任務明確是自包含的,只需要返回摘要。
  • 它會向主要上下文添加大量無關內容。
  • 無法透過一兩次直接的 tool 呼叫完成。

Bob 將 subagents 用於:

  • 簡單的檔案讀取或快速搜尋。
  • 單一 tool 操作。

並行 subagents 面板

當多個 subagents 同時運行時——例如,在並行產生多個專門代理的工作流程中——它們會被分組到聊天中的單一可摺疊面板中。

面板標題顯示所有運行中 subagents 的彙總統計資訊:

  • 已完成的 subagents 數量/總數
  • 所有 subagents 使用的工具總數
  • 組合的 token 使用量、成本和經過時間
  • 任何失敗的工具呼叫計數

展開面板可單獨檢視每個 subagent。每個單獨的條目可以進一步展開以檢查其工具呼叫。如果 subagent 遇到工具錯誤,失敗計數會同時顯示在彙總標題和單獨條目中。

  • 相關上下文已經可用的任務。

Subagents 與 subtasks 比較

Subagents 和 subtasks 是相關但不同的概念:

SubagentSubtask
可見性在背景靜默運行在 UI 中顯示,帶有自己的麵包屑和對話
互動非互動式——只返回摘要完全互動式——可以追蹤進度並繼續對話
目的在不污染主要上下文的情況下收集資訊或完成隔離工作處理足夠複雜、需要專用追蹤和獨立執行緒的工作
輸出返回給 Bob 的摘要獨立對話執行緒

將 subagents 用於背景資訊收集。將 subtasks 用於受益於可見性和專用對話的複雜工作。

設定 subagent 行為

你可以透過在 .bob/agents/ 中建立 agent persona 檔案來控制 subagent 的關注內容、輸出格式以及可使用的 tool。Persona 檔案為 subagent 提供定義好的角色和限制條件,例如,產生按嚴重程度排序的發現結果表,並明確指示不提供修復建議的程式碼審查員。

有關設定說明和範例,請參閱 agent persona

這個主題如何?