Microsoft Agent Framework 1.0 正式接棒,.NET AI 进入 Agent-Native 时代

TL;DR :2026 年 4 月 3 日,Microsoft Agent Framework(MAF)1.0 正式 GA。随着 Semantic Kernel 1.77.0 版本合并 PR #13852 全面完成向 MAF 的迁移,微软 .NET AI 技术栈迎来了自 Semantic Kernel 诞生以来最大的一次架构重组。本文从技术趋势深度解读视角,解析 MAF 1.0 的五层架构设计、核心理念演化、关键 API 差异、开放协议集成以及 BUILD 2026 最新动态,为 .NET 开发者和 AI 技术从业者提供一份完整的迁移认知地图。


一、一个时代的谢幕,一个时代的开启

2026 年 4 月 3 日 ,微软正式发布了 Microsoft Agent Framework 1.0 General Availability(GA) 版本 (Microsoft Developer Blogs) 。这不是一次普通的 SDK 更新,而是微软在 AI Agent 领域三年布局的集大成之作------它宣告了 AutoGen 和 Semantic Kernel 这两个累计收获 75,000+ GitHub Stars 的项目正式完成历史使命,将其精华融合为一个统一、生产就绪、跨语言(.NET + Python)的企业级 Agent 开发平台 (digitalapplied.com)

紧随其后,Semantic Kernel 1.77.0 版本合并了由开发者 @rogerbarreto 提交的 PR #13852------.NET: Semantic Kernel -> Agent Framework - Migration/Samples Update ,完成了底层代码和示例向 MAF 1.0 规范的全面对齐 (Github) 。这一动作标志着 SK 作为独立 Agent 开发框架的时代正式落幕,其 Agent 与编排相关的能力已完整迁移至 MAF 生态。

核心信号 :AutoGen 和 Semantic Kernel 已于 2025 年 10 月同步进入维护模式 (maintenance mode)------微软将继续修复关键漏洞和安全问题,但不再增加重大新功能 (cloudsummit.eu) 。对于企业开发者而言,这意味着所有新功能、新协议支持和新编排能力都将在 MAF 上迭代,继续投资 SK 的 Agent 相关代码将产生技术债务。


二、MAF 1.0 的五层架构:SK 不是被替代,而是被重新定位

理解 MAF 1.0 的最佳入口是其五层架构设计 。这不是简单的"新框架取代旧框架",而是一次彻底的技术栈重组------Semantic Kernel 从"万能的 AI SDK"被重新定位为基础能力支撑层,其上生长出全新的 Agent 抽象和 Workflow 编排引擎 (博客园)

层级 组件 核心职责
L5 Orchestration & Workflow Layer 图结构工作流引擎,提供确定性、可检查点的多智能体编排 (Microsoft Developer Blogs)
L4 Agent Layer (AIAgent) 厂商中立的统一智能体抽象,管理指令、工具、会话状态和中间件管道 (Microsoft Learn)
L3 Kernel Layer (Semantic Kernel) 基础能力支撑层,提供插件、过滤器、提示词模板和向量存储集成 (digitalapplied.com)
L2 Abstractions Interface (MEAI) 标准抽象层,定义 IChatClientIEmbeddingGenerator 等通用接口 (Microsoft Developer Blogs)
L1 Service Connectors 原生服务连接器:Azure OpenAI、OpenAI、Anthropic Claude、Amazon Bedrock、Google Gemini、Ollama、Microsoft Foundry (Flowtivity)

关键洞察 :SK 的核心价值(插件系统、提示词模板、向量存储)在 MAF 架构中得到了完整保留,但 SK 的 Agent 抽象(ChatCompletionAgentAgentGroupChat 等)已被全新的 AIAgentWorkflowBuilder 所取代 (Microsoft Learn) 。这种"分层继承、上层重构"的策略,使得现有 SK 用户可以渐进式迁移,而非一次性重写。


三、核心理念跃迁:从 "Kernel/Plugin" 到 "Agent/Workflow"

3.1 传统 SK 的设计痛点

在 Semantic Kernel 的体系中,构建多智能体系统需要开发者编写大量繁琐的管道代码。以最常见的"任务分配 → 审核 → 驳回/通过"流程为例,开发者必须手动实现 SelectionStrategyTerminationStrategy,并自行维护对话历史上下文的传递 (博客园)

更深层的问题在于职责耦合 :在 SK 中,智能体的"推理能力"和"执行策略"被混在同一个 Kernel 对象中。开发者被迫在提示词工程中编写路由逻辑,导致业务逻辑极易失控------提示词中的指令与代码中的控制流相互交织,既难以测试,也无法复用 (博客园)

3.2 MAF 的职责分离设计

MAF 1.0 引入了彻底的职责分离(Separation of Responsibilities) 理念,这是整个框架最具革命性的设计决策 (Microsoft Developer Blogs)

维度 职责定位 实现方式
Agent(智能体) 推理与理解(Reasoning & Interpretation) 利用 LLM 解释输入,自主决定调用哪些工具,返回结果 (Microsoft Developer Blogs)
Workflow(工作流) 执行策略与控制流(Execution Policy & Control Flow) 通过 C# 代码级有向图定义执行边界、顺序、重试和超时 (Microsoft Developer Blogs)

这一转变使得多智能体编排变得极其直观。在旧版 SK 中需要数百行 繁琐编排代码的"序列协作模式",在 MAF 中仅需通过 AgentWorkflowBuilder.BuildSequential()三行代码 即可声明完成 (博客园)

本质变化:SK 时代,Agent 的"智能"和"流程"混在一起;MAF 时代,Agent 只负责"想",Workflow 只负责"走"。


四、API 映射与代码对比:迁移究竟要改变什么

4.1 核心抽象对比

维度 Semantic Kernel Agents (旧) Microsoft Agent Framework 1.0 (新)
基础抽象 强绑定的 ChatCompletionAgentOpenAIAssistantAgent 等具体类 (Microsoft Learn) 厂商中立的统一 AIAgent,由通用 IChatClient 转换而来 (devleader.ca)
工具注册 KernelPluginKernelAgent 三级嵌套 (Microsoft Learn) AIFunctionFactory.Create() 直接注册,零嵌套 (Microsoft Learn)
会话状态 隐式线程状态,手动管理服务端线程 ID (devleader.ca) 显式 AgentSession 对象,自动持久化 (devleader.ca)
调用方法 .InvokeAsync() 返回 ChatMessageContent(devleader.ca) .RunAsync() 返回 AgentResponse.RunStreamingAsync() 返回 AgentResponseUpdate (devleader.ca)
编排引擎 InProcessRuntime 或自定义复杂管道 (博客园) 声明式 WorkflowBuilder + 预置多智能体构建器 (Microsoft Developer Blogs)

4.2 迁移前后代码对比

场景 A:智能体创建与工具关联

csharp 复制代码
// ========== Before: Semantic Kernel ==========
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Agents;

// 1. 创建 Kernel 并添加连接器
Kernel kernel = Kernel.CreateBuilder()
    .AddAzureOpenAIChatCompletion(deploymentName, endpoint, apiKey)
    .Build();

// 2. 将类注册为 KernelPlugin
kernel.Plugins.AddFromType<SupportTools>();

// 3. 实例化特定厂商的 Agent
ChatCompletionAgent agent = new()
{
    Name = "SupportAssistant",
    Instructions = "You are a helpful support agent.",
    Kernel = kernel
};
csharp 复制代码
// ========== After: Microsoft Agent Framework 1.0 ==========
using Microsoft.Extensions.AI;
using Microsoft.Agents.AI;

// 1. 获取 IChatClient 抽象
IChatClient chatClient = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential())
    .GetChatClient(deploymentName)
    .AsIChatClient();

// 2. 一键生成 AIAgent,直接注入 standalone 工具
AIAgent agent = chatClient.AsAIAgent(
    name: "SupportAssistant",
    instructions: "You are a helpful support agent.",
    tools: [
        AIFunctionFactory.Create(SupportTools.SearchKnowledgeBase),
        AIFunctionFactory.Create(SupportTools.CreateTicket)
    ]
);

场景 B:会话管理与流式调用

csharp 复制代码
// ========== Before: Semantic Kernel ==========
var chat = new AgentGroupChat(agent);
chat.AddChatMessage(new ChatMessageContent(AuthorRole.User, userInput));

await foreach (ChatMessageContent message in chat.InvokeAsync())
{
    Console.WriteLine(message.Content);
}
csharp 复制代码
// ========== After: Microsoft Agent Framework 1.0 ==========
// 1. 显式创建支持持久化的会话
AgentSession session = await agent.CreateSessionAsync();

// 2. 执行流式运行,接收丰富元数据
await foreach (AgentResponseUpdate update in agent.RunStreamingAsync(userInput, session))
{
    if (update.Text is not null)
    {
        Console.Write(update.Text);
    }
}

// 3. 提取持久化 ConversationId 用于服务重启恢复
string savedConversationId = session.ConversationId;

关键体会 :MAF 的代码更少、层级更扁平、职责更清晰。KernelKernelBuilder 的消失意味着更少的概念负担,而 IChatClient 的引入则带来了真正的厂商解耦 ------切换模型提供方只需修改客户端配置,Agent 代码完全不变 (devleader.ca)


五、图编排与持久化:WorkflowBuilder + DurableTask

5.1 Executor:工作流的基本计算单元

MAF 工作流引擎的核心是 Executor<TInput, TOutput> ,每个 Executor 都有严格的输入/输出类型约束,并在编译期通过泛型进行类型安全校验 (Microsoft Developer Blogs)

csharp 复制代码
public class OrderLookup : Executor<OrderRequest, OrderDetails>
{
    public OrderLookup() : base("OrderLookup") { }

    public override async ValueTask<OrderDetails> HandleAsync(
        OrderRequest message,
        IWorkflowContext context,
        CancellationToken cancellationToken = default)
    {
        return await FetchOrderDetailsAsync(message.OrderId);
    }
}

5.2 WorkflowBuilder:声明式图编排

利用 WorkflowBuilder,开发者可以像搭积木一样构建复杂的工作流拓扑 (Microsoft Developer Blogs)

  • AddFanOutEdge:将上游输出并发广播给多个下游 Executor(并行执行)
  • AddFanInBarrierEdge:创建栅栏(Barrier),挂起后续流直到所有并行分支完成
  • AsAIAgent():将底层 AIAgent 无缝包装为图中的 Executor

5.3 DurableTask:长运行流程的持久化保障

生产环境的多智能体流程往往需要跨越数小时甚至数天(如等待人工审批)。MAF 通过 Microsoft.Agents.AI.DurableTask 包,使工作流无需修改任何图拓扑代码,即可直接升级为分布式、抗进程崩溃的持久化工作流 (Microsoft Developer Blogs)

特性 说明
自动检查点(Checkpointing) 每执行完一个 Executor,状态和流转数据自动快照持久化 (Ravikanth Chaganti)
水合恢复(Hydration) 主机崩溃或重启后,引擎自动恢复至上一步安全状态 (Microsoft Developer Blogs)
Durable Task Scheduler (DTS) 负责状态调度与历史轨迹管理,支持本地 Docker 模拟器 (Microsoft Developer Blogs)

六、开放协议原生集成:MCP + A2A

MAF 1.0 在协议层面的设计体现了微软对 Agent 生态开放性的长期承诺。两大核心协议均作为一等公民内建:

6.1 MCP(Model Context Protocol)

MCP 是由 Anthropic 推出的开放标准,用于标准化 LLM 与外部工具/数据源的连接方式。MAF 1.0 提供原生 MCP 客户端集成,使智能体能够动态发现和调用外部工具 (Microsoft Learn)

截至 2026 年,MCP 已获得 OpenAI、Google DeepMind、Microsoft 等主要厂商的广泛采纳,正在成为 AI-Agent 工具连接的事实标准 (arXiv.org)

6.2 A2A 1.0(Agent-to-Agent Protocol)

A2A v1.0 于 2026 年 3 月发布稳定规范,是首个生产就绪的跨运行时智能体通信标准。MAF 中的 A2A 支持设计精妙------interop comes for free (Microsoft Developer Blogs)

csharp 复制代码
using A2A;
using Microsoft.Agents.AI;

// 解析远程 Agent 的 AgentCard 并创建 AIAgent
A2ACardResolver resolver = new(new Uri("https://a2a-agent.example.com"));
AIAgent agent = await resolver.GetAIAgentAsync();

// 像使用本地 Agent 一样使用远程 Agent
Console.WriteLine(await agent.RunAsync("What's the weather in Seattle?"));

远程 A2A Agent 在代码中就是普通的 AIAgent------同样的 RunAsync、同样的流式处理、同样的会话管理。你可以将本地 Azure OpenAI Agent 无缝替换为远程 A2A Agent,而无需修改调用代码 (Microsoft Developer Blogs)

截至 2026 年 4 月,A2A 协议已有 150+ 组织 参与,覆盖金融、供应链和 IT 运维等生产场景 (byteiota.com)


七、BUILD 2026:从框架到平台的跃迁

2026 年 6 月的 Microsoft BUILD 大会是 MAF 生态的又一重要里程碑。在 1.0 GA 的基础上,微软发布了四大平台级能力 (Microsoft Developer Blogs)

7.1 Agent Harness:生产模式内置

Agent Harness 是模型推理与真实执行之间的桥梁层,通过 chatClient.AsHarnessAgent() 一行代码 即可激活 (Microsoft Developer Blogs)

内置能力 功能描述
Automatic context compaction 监控 Token 使用,在长工具调用链中自动压缩历史,防止上下文溢出 (Microsoft Developer Blogs)
FileMemoryProvider 会话级持久化笔记,跨轮次保留学习结果 (Microsoft Developer Blogs)
TodoProvider 多步骤任务追踪(add/complete/remove/list) (Microsoft Developer Blogs)
AgentModeProvider 支持 "plan" vs "execute" 两种操作模式 (Microsoft Developer Blogs)
BackgroundAgentsProvider 并行子 Agent 的扇出编排 (Microsoft Developer Blogs)
ToolApprovalAgent 敏感工具调用的"不再询问"审批规则 (htek.dev)
OpenTelemetryAgent 自动 Semantic Conventions 链路追踪 (htek.dev)

7.2 CodeAct:更少的模型轮次,更低的延迟

CodeAct 是 BUILD 2026 最具技术突破性的发布。它改变了 Agent 调用工具的方式------不再一步步选择工具、等待、再选择 ,而是让模型编写一个简短的 Python 脚本,通过 call_tool(...) 一次性调用所有需要的工具,在 Hyperlight microVM 沙箱中执行并返回汇总结果 (Microsoft Developer Blogs)

在代表性多步骤工作负载(跨多个用户计算订单总计,涉及数十次工具调用)中,CodeAct 实现了:

指标 传统方式 CodeAct 提升
时间 27.81s 13.23s -52.4%
Token 消耗 6,890 2,489 -63.9%

7.3 Foundry Hosted Agents:从本地到生产

Hosted Agents 提供了一条从本地 MAF Agent 到生产部署的最短路径------scale-to-zero 计费、每会话 VM 隔离沙箱、持久化文件系统、内置 OpenTelemetry 追踪 (Microsoft Developer Blogs)

7.4 多智能体 Handoff 编排 1.0

Handoff 模式专为"路由 → 专家 → 可能的回退/转接"场景设计。开发者声明 Agent 和它们之间的有向边,框架自动注入 handoff 工具 (Microsoft Developer Blogs)

csharp 复制代码
AIAgent triage = chatClient.AsAIAgent(
    instructions: "You receive a user request and route it to the right specialist.",
    name: "Triage");
AIAgent billing = chatClient.AsAIAgent(
    instructions: "You handle billing questions.", name: "Billing");
AIAgent tech = chatClient.AsAIAgent(
    instructions: "You handle technical support questions.", name: "Tech");

Workflow workflow = AgentWorkflowBuilder
    .CreateHandoffBuilderWith(triage)
    .WithHandoff(triage, billing)
    .WithHandoff(triage, tech)
    .Build();

八、迁移路线图:六步渐进式策略

对于已经在使用 Semantic Kernel 的 .NET 团队,微软官方推荐以下六步渐进式迁移路线 (Microsoft Learn)

步骤 行动 说明
1 并行包引入 安装 Microsoft.Agents.AIMicrosoft.Agents.AI.Workflows,MAF 与 SK SDK 可共存 (Microsoft Learn)
2 重用现有插件 保留所有 [KernelFunction][Description] 装饰的 C# 插件类,可直接作为共享工具资产 (Microsoft Learn)
3 构建厂商中立的 ChatClient 利用 Microsoft DI 注册底层的 IChatClient (devleader.ca)
4 Agent 实例化重构 ChatCompletionAgent 改写为通用 AIAgent,使用 AIFunctionFactory.Create() 注入工具 (Microsoft Learn)
5 升级会话状态层 AgentGroupChat 替换为 agent.CreateSessionAsync(),持久化场景记录 session.ConversationId (devleader.ca)
6 重构多智能体编排 移除手工编写的 SelectionStrategy,使用 WorkflowBuilder 声明图节点或采用标准编排模板 (Microsoft Developer Blogs)

关键建议 :MAF 设计为与原有 SK SDK 共存 ,无需一次性推翻重建。建议新项目直接采用 MAF,现有 SK 项目按上述六步策略渐进迁移 (Microsoft Learn)


九、总结:.NET AI 的 Agent-Native 未来

Microsoft Agent Framework 1.0 的 GA 标志着微软 .NET AI 技术栈完成了从"SDK 工具集"到"Agent 原生平台"的关键跃迁。这不仅仅是品牌重塑或 API 翻新,而是一次底层设计范式的根本转变

维度 Semantic Kernel 时代 MAF 1.0 时代
核心隐喻 Kernel(内核)+ Plugin(插件) Agent(智能体)+ Workflow(工作流)
抽象层级 厂商特定的 ChatCompletionAgent 厂商中立的 AIAgent via IChatClient
编排方式 隐式、提示词驱动的控制流 显式、声明式的图编排
状态管理 隐式线程,手动维护 显式 AgentSession,自动持久化
协议支持 后期适配 MCP/A2A 原生内置 MCP + A2A 1.0
持久化 无内置长运行支持 DurableTask 自动检查点与水合
企业就绪 实验性 Agent 功能 Agent Harness + Hosted Agents + LTS

对于 .NET 开发者而言,MAF 1.0 带来了三重确定性:稳定 API + 长期支持承诺 意味着可以放心地投入生产;双语言(.NET + Python)统一编程模型 意味着团队协作不再受语言边界束缚;MCP + A2A 原生集成意味着你的 Agent 可以与整个生态互联互通。

Semantic Kernel 完成了它的历史使命------它教会了 .NET 开发者如何与 LLM 对话。现在,Microsoft Agent Framework 将教会我们如何让 Agent 彼此对话、与工具对话、与企业系统对话。这才是 Agent-Native 时代的真正开始。


参考资源