外观
AutoGen
一、它是什么,以及 2026 年你必须先知道的现状
AutoGen 是微软研究院(Microsoft Research)开源的多 agent 框架,2023 年 8 月挂出论文(arXiv:2308.08155)并开源,是「对话式多 agent」这个流派的开山之作:让多个各有角色的 agent 通过自然语言对话互相协作完成任务,而不是靠预定义的状态图驱动。它的核心抽象影响了后来几乎所有多 agent 框架,「两个 agent 互相聊出一个结果」的范式就是从它开始流行起来的。
但在 2026 年 8 月谈 AutoGen,必须先摆一个压倒性的事实:
AutoGen 已进入维护模式(Maintenance Mode)
2025 年 10 月,微软宣布 AutoGen 与 Semantic Kernel 合并为统一的 Microsoft Agent Framework(MAF);MAF 已于 2026 年 4 月发布 1.0 正式版。AutoGen 官方仓库 README 现在明确写着:不再接收新功能,转为社区维护,新项目应直接使用 MAF,老项目建议按官方迁移指南迁走。
这不意味着本页没有读的价值,理由有三:
- 存量代码和教程极多。 2023-2025 年间的多 agent 教程、论文复现、面试题里大量出现 AutoGen API,你迟早要读得懂。
- 概念仍是通用的。 Team、termination condition、speaker selection 这些概念被 MAF 和其他框架原样继承,学 AutoGen 等于学这个流派的思想源头。
- 面试常考。 多 agent 编排是 Agent 岗位 JD 里的高频考点,「AutoGen 的 GroupChat 和 LangGraph 的图编排有什么区别」是经典问题。
一句话定位:把它当作多 agent 架构的「活化石 + 思想库」来学,而不是当作 2026 年新项目的生产框架来选。
二、版本沿革:从 0.2 到 0.4 的推倒重来
AutoGen 的历史可以干脆地切成两段:
0.2 时代:经典对话 API(2023-2024)
老版 API 以 ConversableAgent 为基类,典型代码长这样:
python
# 0.2 老 API(已废弃,仅用于识别旧教程)
from autogen import AssistantAgent, UserProxyAgent
assistant = AssistantAgent("assistant", llm_config={...})
user_proxy = UserProxyAgent("user_proxy", code_execution_config={...})
user_proxy.initiate_chat(assistant, message="帮我画一张股价图")AssistantAgent 负责出主意,UserProxyAgent 代表人类/执行代码,initiate_chat 一脚油门让两个 agent 开始对话;多人场景用 GroupChat + GroupChatManager。这套 API 极其好懂,直接带火了多 agent 概念,但工程上问题成堆:同步阻塞、类型混乱、隐藏的全局状态、调试困难、无法精细控制消息流。
如何一眼识别教程的新旧
看到 from autogen import ... 或 initiate_chat(...),就是 0.2 老 API,2025 年起已弃用;新 API 全部从 autogen_agentchat、autogen_core、autogen_ext 这三个包导入。网上存量教程大半是老的,照搬必踩坑。
0.4 时代:全面重构(2025 年 1 月发布)
2025 年 1 月微软发布 AutoGen 0.4,官方说法是「从头重写」,核心变化:
| 维度 | 0.2 | 0.4+ |
|---|---|---|
| 执行模型 | 同步、阻塞式对话循环 | 全异步、事件驱动(async/await) |
| 包结构 | 单包 pyautogen | 拆分为 autogen-core / autogen-agentchat / autogen-ext |
| 架构 | 扁平,agent 直接互调 | 分层:Core 运行时 → AgentChat 高层 API → Extensions 扩展 |
| 可观测性 | 基本没有 | 内置 tracing、消息流式输出、OpenTelemetry |
| 跨语言 | 仅 Python | Core 层预留 .NET/Python 跨语言运行时 |
| 类型系统 | 弱 | 全面类型注解 |
分层架构可以这样理解:
┌────────────────────────────────────────────────────┐
│ 应用层 AutoGen Studio(无代码 GUI)· Magentic-One │
├────────────────────────────────────────────────────┤
│ AgentChat AssistantAgent · Team · 终止条件 │ ← 大多数人只用这层
├────────────────────────────────────────────────────┤
│ Core 事件驱动 actor 运行时 · 消息传递 · 分布式 │ ← 要精细控制才下沉到这层
└────────────────────────────────────────────────────┘
Extensions 横切各层:模型客户端 / 代码执行 / MCP 工具- Core:actor 模型的事件驱动运行时,agent 之间只通过异步消息通信,支持本地和分布式部署。灵活但啰嗦,适合框架级定制。
- AgentChat:在 Core 之上的「有主见」高层 API, preset agent + preset team,快速原型首选,用法上和 0.2 的心智模型最接近。
- Extensions:模型客户端(OpenAI、Azure OpenAI 等)、Docker 代码执行器、MCP workbench 等可插拔实现。
0.4 之后又持续迭代,进入维护模式前的最后一个稳定大版本线是 0.7.x(autogen-agentchat 0.7.5,2025 年 9 月发布),要求 Python ≥ 3.10。此后再无功能性大版本。
三、核心概念:Agent、Team 与 Termination
0.4+ 的 AgentChat 层只有三块核心概念,抓住它们就抓住了整个框架。
AssistantAgent 与内置 agent
AssistantAgent 是主力:包装一个 LLM,可挂 tools、system message、记忆。内置的还有 UserProxyAgent(人在回路,每轮等人类输入)、CodeExecutorAgent(执行代码并回传结果)、MultimodalWebSurfer(浏览器操作)等。工具就是普通 Python 函数,靠类型注解和 docstring 自动生成 schema,也可以直接挂 MCP server(详见 工具与 MCP)。
Team:四种预设编排模式
Team 是一组 agent + 一套「谁下一个发言 + 什么时候停」的规则。AgentChat 内置四种:
| Team | 发言者选择机制 | 适用场景 |
|---|---|---|
RoundRobinGroupChat | 固定顺序轮流发言 | 两 agent 反思(writer + critic)等确定性流程 |
SelectorGroupChat | 每轮由 LLM 选出下一个发言者 | 角色多、流程不固定的自由讨论 |
MagenticOneGroupChat | Orchestrator 按 ledger 动态分工 | 开放式网页/文件/代码任务(见下节) |
Swarm | agent 通过 HandoffMessage 主动移交 | 客服式「转接」流程 |
RoundRobinGroupChat 便宜且可预测,是默认起点;SelectorGroupChat 灵活但每轮多一次 LLM 调用来选发言者,轮数一多成本和延迟都明显上升。
先单 agent,后 team
AutoGen 官方文档自己都在劝:team 需要更多 steering 脚手架,先把单 agent 的工具和指令优化到位,证明单 agent 不够用了再上 team。这条建议和 多 Agent 架构 一页的结论一致——多数任务里多 agent 是过度设计,writer-critic 双人组已经能覆盖大部分真实收益。
Termination condition:防止对话烧穿预算的闸门
对话式编排最大的工程风险是「聊个不停」——agent 互相客气、互相纠正,token 账单指数上涨。AutoGen 把终止条件做成一等公民,可以位运算组合:
python
from autogen_agentchat.conditions import MaxMessageTermination, TextMentionTermination
# 批评家说 APPROVE 就停;但无论如何 20 条消息后强制停(兜底)
termination = TextMentionTermination("APPROVE") | MaxMessageTermination(20)常用的还有 TimeoutTermination(按时间)、TokenUsageTermination(按 token 用量)、ExternalTermination(外部信号主动叫停)。工程实践里的铁律:语义终止(如关键词)+ 硬上限(消息数/token)永远成对出现。 这也是 成本与预算控制 在多 agent 场景下最基础的防线。
四、Magentic-One:通用多 agent 系统的样板
2024 年 11 月,微软研究院 AI Frontiers 实验室发布了基于 AutoGen 构建的 Magentic-One(论文 arXiv:2411.04468),定位是「通才型」多 agent 系统:不针对特定任务调 prompt,而是靠一个带队的 Orchestrator 协调四个专职 agent 完成开放式的网页、文件和代码任务。
┌─────────────────┐
│ Orchestrator │ 外循环:Task Ledger(已知事实 + 任务计划)
│ (带队 agent) │ 内循环:Progress Ledger(进度 + 下一步分工)
└────────┬────────┘
┌──────────────┼──────────────┬───────────────┐
▼ ▼ ▼ ▼
WebSurfer FileSurfer Coder ComputerTerminal
浏览器导航 本地文件读写 编写/调试代码 执行命令与代码Magentic-One 真正值得学的是 Orchestrator 的双账本(dual ledger)机制:
- Task Ledger(外循环):接到任务时写下已知事实、假设和分步计划;当内循环卡住(进度停滞)时,回到外循环重写计划而不是硬撑。
- Progress Ledger(内循环):每一步之后评估「任务是否完成 / 是否在前进 / 下一个该谁发言」,据此点名下一个 agent。
这个「显式维护计划与进度、卡住就 replan」的结构,本质上是把 规划(Planning) 从 prompt 技巧变成了可检查的数据结构,后来大量 agent 系统(包括各家 deep research 产品)都能看到它的影子。在 GAIA、AssistantBench、WebArena 等通用 agent benchmark 上,Magentic-One 取得了与当时 SOTA 可比的成绩,是 2024 年末「通用 agent 团队」路线的代表性成果。
在 AutoGen 0.4+ 中,它以 MagenticOneGroupChat 的形式成为 AgentChat 的内置 team preset,几行代码就能起一个同款团队——用来学习和做原型依然顺手。
五、AutoGen Studio 与 .NET 支持
AutoGen Studio:原型工具,别当产品
AutoGen Studio 是配套的无代码 GUI:pip install -U autogenstudio,然后 autogenstudio ui --port 8080 就能在浏览器里拖组件、组 team、跑任务、看消息轨迹。适合两件事:给非工程同事演示多 agent 概念;快速验证一个 team 配置是否靠谱。
但注意两条官方红线与一条现实信号:
- 官方明确声明它不是 production-ready 应用,没有认证、安全等部署必需能力;
- 配套的 AutoGen Bench 是跑 benchmark 的评测套件,同样面向研究;
- 维护模式的直接后果已经显现:截至 2026 年初,Studio 的最新版本仍依赖
autogen-agentchat<0.6,和核心库 0.7.x 不兼容(GitHub issue #7173 悬而未决)。依赖错位本身就是项目进入维护模式最典型的症状。
.NET:架构预留了,但现实答案在 MAF
0.4 的 Core 层在设计上支持 .NET/Python 跨语言运行时,agent 可以跨语言互发消息。但 .NET 端 SDK 始终处于 preview、功能覆盖远不如 Python 端。2026 年的今天,微软给 .NET 开发者的正式答案已经是 MAF——它对 .NET 和 Python 提供一等支持(另有 Go 版本)。.NET 团队不必在 AutoGen 上浪费评估时间。
六、代码示例:0.4+ 语法实战
以下代码基于 autogen-agentchat 0.7.x(安装:pip install -U "autogen-agentchat" "autogen-ext[openai]"),全部 API 均对照官方文档与仓库 README 核实。
单 agent + 工具
python
import asyncio
from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
def search_docs(keyword: str) -> str:
"""在文档库中搜索关键词,返回摘要。"""
return f"关于 {keyword} 的搜索结果……"
async def main() -> None:
model_client = OpenAIChatCompletionClient(model="gpt-4.1")
agent = AssistantAgent(
"assistant",
model_client=model_client,
tools=[search_docs], # 普通函数即工具
max_tool_iterations=10, # 单 agent 最多连续调用工具 10 轮
)
print(await agent.run(task="查一下 termination condition 的用法"))
await model_client.close()
asyncio.run(main())注意 0.6.2 起 AssistantAgent 自带 max_tool_iterations 的工具调用循环,单 agent 场景不再需要套一层 team。
writer + critic 反思团队(RoundRobin)
python
import asyncio
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.conditions import MaxMessageTermination, TextMentionTermination
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_agentchat.ui import Console
from autogen_ext.models.openai import OpenAIChatCompletionClient
async def main() -> None:
model_client = OpenAIChatCompletionClient(model="gpt-4.1")
writer = AssistantAgent(
"writer",
model_client=model_client,
system_message="你是文案撰写者,根据批评意见逐轮修改稿件。",
)
critic = AssistantAgent(
"critic",
model_client=model_client,
system_message="你是苛刻的审稿人,提出具体修改意见;稿件合格时回复 APPROVE。",
)
# 语义终止 + 硬上限兜底,两个条件用 | 组合
termination = TextMentionTermination("APPROVE") | MaxMessageTermination(12)
team = RoundRobinGroupChat([writer, critic], termination_condition=termination)
# Console 将消息流实时打印到终端,含 token 用量统计
await Console(team.run_stream(task="为一款代码审查工具写一句 slogan"))
await model_client.close()
asyncio.run(main())SelectorGroupChat:让模型决定谁发言
python
from autogen_agentchat.teams import SelectorGroupChat
# 三人团队:每轮结束后由 LLM 根据各 agent 的 description 选出下一个发言者
team = SelectorGroupChat(
[planner, coder, reviewer],
model_client=model_client, # 选人本身也要一次 LLM 调用
termination_condition=termination,
)要点:每个 agent 必须写好 description,选人模型靠它做路由;人数超过 4-5 个时选择质量会明显下降,这是对话式编排的固有上限。
七、与 Semantic Kernel 的关系:从双框架到 Microsoft Agent Framework
长期以来微软同时养着两个 agent 框架,分工是「研究院探索 vs 工程化落地」:
- AutoGen(微软研究院):多 agent 对话编排的试验田,迭代快、API 激进;
- Semantic Kernel(工程团队):面向企业应用的编排 SDK,.NET/Python/Java,强调插件、遥测、稳定性。
2024 年 11 月微软官方博客的说法还是「双框架并行,AutoGen 做研究、SK 做生产,未来提供迁移路径」。但双框架造成的选型困惑和重复建设越来越严重,最终在 2025 年 10 月官宣合并:两者合并为 Microsoft Agent Framework(MAF),公开预览版随 .NET 生态发布,2026 年 2 月进入 RC,2026 年 4 月发布 1.0 GA。MAF 的自我定位是两者的「直接继任者」:吸收 AutoGen 的简洁 agent 抽象 + Semantic Kernel 的企业级能力(会话状态管理、类型安全、中间件、telemetry),并新增 graph 式 workflow 用于显式多 agent 编排。
对开发者的实际含义:
- 新项目:直接用 MAF(
pip install agent-framework),不要再起 AutoGen 项目; - 存量 AutoGen 项目:框架仍可运行,bug fix 和安全补丁由社区维护,官方提供 AutoGen → MAF 迁移指南;核心抽象(agent、team、termination)在 MAF 里有对应物,迁移不是重写;
- 概念学习:本页讲的 Team 编排、termination、ledger 思想在 MAF 及其他框架里全部存活,学了不亏。更全面的框架横向对比见 框架选型总览,以及与 LangGraph、CrewAI 的对照。
八、优缺点与适用场景
优点
- 对话式范式的源头,概念模型简单直白:agent 聊天解决问题,学习曲线在多 agent 框架里最平缓;
- 0.4 重构后的分层设计干净,AgentChat 快速原型、Core 精细控制,各取所需;
- termination condition 的组合式设计是同类框架里把「防失控」做得最显式的,值得所有多 agent 系统借鉴;
- Magentic-One 的双 ledger 机制是 规划 与 多 agent 协作 的优质教学样本;
- 生态遗产丰富:海量教程、论文复现和 AutoGPT 时代 延续下来的社区讨论。
缺点
- 已进入维护模式:没有新功能、社区维护响应有限,这是最硬的否决项;
- 对话式编排的成本结构性偏高:每轮广播全量上下文,Selector 每轮还要额外一次选人调用,长任务 token 消耗远超单 agent 循环(参见 Agent Loop 的成本分析);
- 涌现式对话可控性弱:没有显式状态图,agent 聊偏了只能靠 termination 兜底,复杂流程的可调试性不如图编排框架,可观测性 建设也要自己补齐;
- Studio 与核心库版本错位,周边工具链已开始锈蚀。
适用场景判断
| 场景 | 建议 |
|---|---|
| 学习多 agent 概念、准备面试、读论文复现 | 值得一学,概念至今通用 |
| 快速原型验证一个 writer-critic 双人组 | 可以用,AgentChat 上手最快 |
| 2026 年的新生产项目(Python) | 选 MAF、LangGraph 或单 agent + tools |
| 2026 年的新生产项目(.NET) | 直接 MAF,AutoGen .NET 从未成熟 |
| 维护中的 AutoGen 存量系统 | 继续跑没问题,排期迁往 MAF |
底线结论:AutoGen 值得花时间读懂,不值得再投入新项目。 它的历史地位——把多 agent 对话从论文变成每个工程师都能跑起来的框架——已经由 MAF 继承。
参考资料
- microsoft/autogen GitHub 仓库 —— 官方 README,含维护模式声明、分层架构说明与 0.4+ 快速上手代码。
- AutoGen 更新公告:与 Semantic Kernel 合并(Discussion #7066) —— 2025 年 10 月官宣合并为 Microsoft Agent Framework 的原文。
- Microsoft Agent Framework 官方文档 —— MAF 概览,明确其为 AutoGen 与 Semantic Kernel 的直接继任者。
- AutoGen AgentChat Teams 官方教程 —— 四种 Team preset 与 termination condition 的权威用法。
- AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation(arXiv:2308.08155) —— 2023 年框架原始论文。
- Magentic-One: A Generalist Multi-Agent System for Solving Complex Tasks(arXiv:2411.04468) —— Magentic-One 论文,双 ledger 机制细节。
- Magentic-One — Azure AI Foundry Labs —— 微软对 Magentic-One 的官方项目介绍。
- Microsoft's Agentic Frameworks: AutoGen and Semantic Kernel —— 2024 年 11 月微软阐述双框架策略的官方博客,可与合并后的现状对照阅读。