版本資訊
| 項目 | 值 |
|---|---|
| 框架 | Agno |
| 版本 | v3.1.11 |
| 前一版 | v3.1.10 |
| 發布日 | 2026-10-27 |
| Release Notes | v3.1.11 |
| GitHub | agno-agi/agno |
| Stars | 43k |
這個版本為什麼重要
多代理團隊一直有個缺口:Team 裡的成員都是用同一套 Agno 原語定義的 Agent,想塞一個 Claude Code 或 Codex 這種有自己完整工具鏈、沙箱、對話狀態的外部 coding agent 進來,只能自己接一層 adapter。這版直接把 ClaudeAgent/CodexAgent 當成 Harness Agent,變成 Team 的正式成員或 Workflow 裡的一個步驟,連 Parallel/Loop/Condition/Router 這些控制流都能用——團隊 leader 一樣用 delegate_task_to_member 委派任務,差別只在於這個成員跑的是整套獨立的 coding agent,有自己的 workspace 和沙箱,而且同一個 session 內會自己保留對話歷史。等於把「外部 coding agent」從一個要手動接線的黑盒子,變成多代理編排裡可以直接委派、可以組合的一等公民。
簡化示意:圖裡只畫委派關係,省略 Workflow 的 Parallel/Loop/Condition/Router 控制流。
重要變更
- Harness Agents 可當 Team 成員或 Workflow 步驟:
ClaudeAgent/CodexAgent可以是Team的成員,也可以是Workflow裡Parallel/Loop/Condition/Router的一個步驟;帶sandbox=的 harness agent 每輪都在自己的容器裡跑,AgentOS 的 team 頁面也會列出 harness 成員 → 不用再自己寫 adapter 把外部 coding agent 接進多代理編排,團隊 leader 用既有的delegate_task_to_member就能委派 - 進階 Session Search:新增
GET /sessions/filter-schema與POST /sessions/search,支援巢狀 AND/OR/NOT 條件過濾 session 名稱、session/user/component ID、session 類型與建立/更新時間,和既有 Traces API 的篩選邏輯一致;PostgreSQL/SQLite 在分頁計數前先套用條件,其他 adapter 走批次 fallback,同步與非同步 client 方法都有 → 大量 session 的部署可以直接用結構化條件查,不必自己撈全部 session 再在應用層過濾 - Company Task 全階段狀態管理:
POST /company/tasks可以直接帶status,Task 能建立在 Backlog、Ready 或 Cancelled;任意階段間都能互轉,Done/Cancelled 的 Task 能重開,標題與簡述在任何階段都能編輯;但 In Progress 仍只能由一次 run 啟動,該 run 還在執行或暫停時不能把 Task 移出 In Progress → Task 生命週期管理更完整,同時保留「執行中不能被繞過」這個安全邊界 - Company Routine 補齊操作 API:新增
POST /company/routines/{id}/cancel、/archive、/restore與僅限 admin 的DELETE /company/routines/{id};GET /company/routines支援sort_by/sort_order;對已暫停的 on-demand Routine 做 pause/resume 會回 409,排程執行不再更動updated_at→ Routine 的生命週期管理終於跟 Task 看齊
Breaking Changes
本版本無 breaking changes。多項修復調整了既有行為的邊界情況:
ReaderFactory.create_reader()改成每次回傳依呼叫參數設定的全新 reader,不再回傳快取的單例,chunk_size等覆寫參數會確實生效,不會跨Knowledge實例互相汙染StepOutput.to_dict()保留 int/float/bool/str 原本的型別,不再把0或False這類值字串化成"0"/"False",避免 HITL resume 或 session 重新載入後資料變形
遷移指南
直接升級即可,無需修改程式碼:
pip install --upgrade agno==3.1.11
# 把 Claude Code 或 Codex 接進 Team,當成一般成員委派任務
from agno.agent import ClaudeAgent, CodexAgent
from agno.team import Team
team = Team(members=[
ClaudeAgent(sandbox=my_sandbox),
CodexAgent(sandbox=my_sandbox),
# 其他一般 Agno Agent 成員
])
與其他框架的對比觀察
同一天(2026-10-27)Pydantic AI 在 v2.63.0 新增 IPythonCodeMode,走的是在框架自己的執行層裡多一套 code execution 環境;Agno 這版則是反過來,把 Claude Code/Codex 這類已經成熟的外部 coding agent 整個吸收進 Team/Workflow 編排層,讓它們以「正式成員」的身分參與委派。兩個框架同期都在處理「agent 框架和外部 coding agent 的邊界要畫在哪」,只是一個選擇自己做執行環境,一個選擇把外部工具鏈直接編排進來。
今日收穫
之前以為「把 Claude Code 接進多代理 Team」只能靠工具呼叫(讓某個 Agent 的 tool 去 shell out 呼叫 Claude Code CLI),看到 Agno 把它做成 Harness Agent 直接當 Team 成員、能被 leader 委派、能用 Parallel/Loop 這些控制流組合才意識到:外部 coding agent 和框架內建 Agent 的差異,其實可以只是「這個成員執行時用的是另一套完整的 agent runtime」,編排層的委派邏輯完全不需要知道差異在哪裡。