Hermes Agent 新增異步子代理功能,委託任務不再阻塞父聊天
Nous Research 為 Hermes Agent 推出了異步子代理功能。委託工具現在可以生成後台代理,不再阻塞父聊天。本文介紹了 async_delegation 工具集(issue #5586),包括如何生成、檢查、引導和收集任務,並討論了子代理隔離、同步與異步的權衡以及何時使用 ACP。
Nous Research 已為 Hermes Agent 發佈了一項更新,其委託工具現在可以異步運行子代理。根據公告,委託工作不再阻塞父聊天。
Hermes Agent 是 Nous Research 開發的開源個人代理。父代理可以生成子代理(稱為子代理)來分配工作。在此之前,這種委託需要等待子代理完成。
該更新由 Nous Research 和聯合創始人 Teknium 在 X 上宣佈。現有用户可以通過運行 hermes update 來啓用。
什麼是子代理?
委託工具是 delegate_task。它生成一個子代理,即一個隔離的子代理。每個子代理都有自己的對話、終端會話和工具集。只有最終摘要返回給父代理。父代理的上下文永遠不會看到子代理的中間工具調用或推理過程。這保持了父代理上下文窗口的小巧。
隔離是嚴格的。子代理以全新的對話開始,對父代理的歷史一無所知。父代理必須通過 goal 和 context 字段傳遞所有信息。子代理繼承父代理的 API 密鑰、提供者配置和憑據池。該憑據池支持在速率限制時進行密鑰輪換。你可以通過 config.yaml 將子代理路由到更便宜的模型。
之前的問題與現在的變化
在源代碼中,delegate_task 是同步的。父代理在工具調用內部阻塞,直到每個子代理完成。在此期間,你的聊天會凍結。
這種設計阻止了多種工作流程。你無法啓動一個長時間運行的任務並繼續工作,也無法中途檢查或引導一個運行中的任務。
Nous 在開放環境中構建了非阻塞路徑。Issue #5586 添加了 async_delegation 工具集。它生成一個後台代理並立即返回一個 task_id。公告確認異步子代理現已可用。
異步工具涵蓋完整生命週期:
- delegate_task_async — 生成後台代理,返回 task_id
- check_task — 非阻塞檢查狀態和最新輸出
- steer_task — 向運行中的任務注入消息
- collect_task — 阻塞直到完成,返回完整結果
- cancel_task — 停止運行中的任務
- list_tasks — 列出會話中的所有異步任務
後台代理作為進程內線程運行,重用與 delegate_task 相同的 AIAgent 機制、憑據和工具集。
同步與異步委託對比
| 維度 | 同步 delegate_task | 異步委託 (async_delegation, #5586) | |------|-------------------|-------------------------------------| | 父聊天 | 阻塞直到所有子任務完成 | 立即返回 task_id;聊天保持自由 | | 運行時控制 | 無——等待 | 每個任務可檢查狀態、引導、收集或取消 | | 執行方式 | 父代理在工具調用內部等待 | 後台進程內線程 | | 上下文成本 | 僅返回最終摘要 | 僅返回最終摘要 | | 隔離性 | 每個子任務獨立對話 | 每個子任務獨立對話 | | 最佳用途 | 快速並行任務,需要等待 | 長時間任務,可與聊天並行 | | 持久性 | 跨輪次不持久 | 單會話;ACP (#4949) 針對跨輪次 |
代碼示例:生成與引導
同步方式批量生成子任務並等待,併發數由 delegation.max_concurrent_children 限制,默認為 3。
# 同步:父代理等待所有子任務完成
delegate_task(tasks=[
{"goal": "研究主題A", "toolsets": ["web"]},
{"goal": "修復構建", "toolsets": ["terminal", "file"]},
])來自 issue #5586 的異步工具集立即返回控制權。
# 異步 (async_delegation 工具集, issue #5586)
t1 = delegate_task_async(goal="研究主題A")
t2 = delegate_task_async(goal="研究主題B")
check_task(t1["task_id"]) # 檢查狀態,不阻塞
steer_task(t2["task_id"], "僅使用2024年後的來源")
results = [collect_task(t["task_id"]) for t in (t1, t2)]使用場景示例
- 長時間研究與並行工作:啓動子代理進行市場掃描,同時在主聊天中繼續寫作。
- 並行方案評估:生成三個子代理分別測試三種搜索後端,每個隔離,避免交叉污染。
- 後台編碼任務:將多文件重構委託給子代理,自己同時審查其他文件。
- 監控運行:TUI 提供了 /agents 覆蓋層(別名 /tasks),顯示運行中和已完成的子代理的實時樹。
關鍵要點
Hermes Agent 現在支持異步子代理;委託工具不再阻塞父聊天。非阻塞委託通過 async_delegation 工具集實現,追蹤於 issue #5586。異步工具涵蓋完整生命週期:生成、檢查、引導、收集、取消和列出任務。子代理保持隔離,僅返回最終摘要,使父上下文保持小巧。該功能運行在進程內且為單會話;現有用户通過 hermes update 啓用。