Agent 路由
請求抵達 agent 的途徑:自動分派、subagents 工具與外部 agent。
兩種方式決定由哪個 agent 處理任務:
1. 自動 — dispatcher LLM 分析輸入,並透過 ResolveAgent() 挑選最合適的 provider。v1.1.0 起 pass tier 模型不會被選中、也不作為 fallback;綁定該模型的 session 仍照用。
啟動順序:exec.Prepare(TUI 專屬排除、/skill-name 匹配)→ exec.Start(具名 skill 解析、agent 解析、載入 session)→ Execute。具名 skill 被排除或找不到時,該次執行直接失敗。
:self-id 一次性覆寫前綴已移除;要交給具名 session 請用 subagents(self_id=...),或以 /session 切換 session。
2. subagents 工具 — agent 於執行期間 in-process(無 HTTP)呼叫另一個 agent,從 parent ctx 繼承 AllowAll 與 WorkDir。v1.1.0 起 mode=invoke 必須帶 model —— 空白 model 改由 dispatcher 補選的 fallback 已移除;傳 model: "auto"(v1.1.0 後的 hotfix)則交由 dispatcher 依任務挑選 —— 且母 agent 在 reasoning_guide(topics=[subagent_dispatch]) 取用的 tier 清單比自身工作低一級(S → A、A → B、B → C)。self_id 指向綁定自有模型的 session 時仍跑該模型;設為 auto 的 session 則跑傳入的 model。
Subagent 在只收集(collection-only)憲章下執行——負責蒐集與回報,不巢狀、不寫入。排除集由三部分組成:
| 來源 | 排除項目 |
|---|---|
| 憲章基礎 | subagents、edit_file、generate*(萬用字元) |
| TUI 專屬 tool / skill | configs/jsons/tui_tools.json 所列項目,例如 extension-upload、extension-install |
呼叫端的 exclude_tools |
母 agent 傳入的任何項目 |
ask_user 不被排除——subagent 可透過共用的 pending registry 向使用者提問。Subagent 的待決提問也會發布到所屬的母 session,leg 會等待該次續行並回傳已回答後的結果。同時最多 3 條 subagent 並行執行(maxConcurrentSubagents);第 4 條在等待空位時,自身的 MaxSubagentTimeoutMin(30 分鐘)timeout 已在倒數,因此大量 fan-out 應以 3 為單位分批派送。每筆結果帶有用量標頭,並匯總進母 session 的總計;自 v1.0.22 起報告本身存入 ~/.config/agenvoy/download/temp-<report_name>.md,只回傳其路徑。