Skip to content

AutoGen

本页速览 微软研究院的对话式多 Agent 框架:0.4 重构后的 Core/AgentChat/Extensions 三层架构、Team 编排模式与 Magentic-One 系统解析,以及并入 Microsoft Agent Framework 后 2026 年的真实选型建议。

本页含时效性内容,数据截止于 2026-08;JD、价格、产品功能等信息可能已变化,引用前请核对原始出处。

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,老项目建议按官方迁移指南迁走。

这不意味着本页没有读的价值,理由有三:

  1. 存量代码和教程极多。 2023-2025 年间的多 agent 教程、论文复现、面试题里大量出现 AutoGen API,你迟早要读得懂。
  2. 概念仍是通用的。 Team、termination condition、speaker selection 这些概念被 MAF 和其他框架原样继承,学 AutoGen 等于学这个流派的思想源头。
  3. 面试常考。 多 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.20.4+
执行模型同步、阻塞式对话循环全异步、事件驱动(async/await)
包结构单包 pyautogen拆分为 autogen-core / autogen-agentchat / autogen-ext
架构扁平,agent 直接互调分层:Core 运行时 → AgentChat 高层 API → Extensions 扩展
可观测性基本没有内置 tracing、消息流式输出、OpenTelemetry
跨语言仅 PythonCore 层预留 .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 选出下一个发言者角色多、流程不固定的自由讨论
MagenticOneGroupChatOrchestrator 按 ledger 动态分工开放式网页/文件/代码任务(见下节)
Swarmagent 通过 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 继承。

参考资料 ​