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

📅 2026/7/9 23:18:53
1.0 正式接棒,.NET AI 进入 Agent-Native 时代
Semantic Kernel 诞生以来最大的一次架构重组。本文从技术趋势深度解读视角解析 MAF 1.0 的五层架构设计、核心理念演化、关键 API 差异、开放协议集成以及 BUILD 2026 最新动态为 .NET 开发者和 AI 技术从业者提供一份完整的迁移认知地图。封面从 Semantic Kernel 到 Microsoft Agent Framework 的演进一、一个时代的谢幕一个时代的开启2026 年 4 月 3 日微软正式发布了 Microsoft Agent Framework 1.0 General AvailabilityGA 版本 (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 发布关键里程碑二、MAF 1.0 的五层架构SK 不是被替代而是被重新定位理解 MAF 1.0 的最佳入口是其五层架构设计。这不是简单的新框架取代旧框架而是一次彻底的技术栈重组——Semantic Kernel 从万能的 AI SDK被重新定位为基础能力支撑层其上生长出全新的 Agent 抽象和 Workflow 编排引擎 (博客园) 。MAF 1.0 五层架构图层级 组件 核心职责L5 Orchestration Workflow Layer 图结构工作流引擎提供确定性、可检查点的多智能体编排 (Microsoft Developer Blogs)L4 Agent Layer (AIAgent) 厂商中立的统一智能体抽象管理指令、工具、会话状态和中间件管道 (Microsoft Learn)L3 Kernel Layer (Semantic Kernel) 基础能力支撑层提供插件、过滤器、提示词模板和向量存储集成 (digitalapplied.com)L2 Abstractions Interface (MEAI) 标准抽象层定义 IChatClient 和 IEmbeddingGenerator 等通用接口 (Microsoft Developer Blogs)L1 Service Connectors 原生服务连接器Azure OpenAI、OpenAI、Anthropic Claude、Amazon Bedrock、Google Gemini、Ollama、Microsoft Foundry (Flowtivity)关键洞察SK 的核心价值插件系统、提示词模板、向量存储在 MAF 架构中得到了完整保留但 SK 的 Agent 抽象ChatCompletionAgent、AgentGroupChat 等已被全新的 AIAgent 和 WorkflowBuilder 所取代 (Microsoft Learn) 。这种分层继承、上层重构的策略使得现有 SK 用户可以渐进式迁移而非一次性重写。三、核心理念跃迁从 “Kernel/Plugin” 到 “Agent/Workflow”3.1 传统 SK 的设计痛点在 Semantic Kernel 的体系中构建多智能体系统需要开发者编写大量繁琐的管道代码。以最常见的任务分配 → 审核 → 驳回/通过流程为例开发者必须手动实现 SelectionStrategy、TerminationStrategy并自行维护对话历史上下文的传递 (博客园) 。更深层的问题在于职责耦合在 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 只负责走。从 Kernel 到 Agent/Workflow 的理念演化四、API 映射与代码对比迁移究竟要改变什么4.1 核心抽象对比维度 Semantic Kernel Agents (旧) Microsoft Agent Framework 1.0 (新)基础抽象 强绑定的 ChatCompletionAgent、OpenAIAssistantAgent 等具体类 (Microsoft Learn) 厂商中立的统一 AIAgent由通用 IChatClient 转换而来 (devleader.ca)工具注册 KernelPlugin → Kernel → Agent 三级嵌套 (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智能体创建与工具关联// Before: Semantic Kernel using Microsoft.SemanticKernel;using Microsoft.SemanticKernel.Agents;// 1. 创建 Kernel 并添加连接器Kernel kernel Kernel.CreateBuilder().AddAzureOpenAIChatCompletion(deploymentName, endpoint, apiKey).Build();// 2. 将类注册为 KernelPluginkernel.Plugins.AddFromType();// 3. 实例化特定厂商的 AgentChatCompletionAgent agent new(){Name “SupportAssistant”,Instructions “You are a helpful support agent.”,Kernel kernel};// 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会话管理与流式调用// 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);}// 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 的代码更少、层级更扁平、职责更清晰。Kernel 和 KernelBuilder 的消失意味着更少的概念负担而 IChatClient 的引入则带来了真正的厂商解耦——切换模型提供方只需修改客户端配置Agent 代码完全不变 (devleader.ca) 。五、图编排与持久化WorkflowBuilder DurableTask5.1 Executor工作流的基本计算单元MAF 工作流引擎的核心是 ExecutorTInput, TOutput每个 Executor 都有严格的输入/输出类型约束并在编译期通过泛型进行类型安全校验 (Microsoft Developer Blogs) public class OrderLookup : ExecutorOrderRequest, OrderDetails{public OrderLookup() : base(“OrderLookup”) { }public override async ValueTaskOrderDetails 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 A2AMAF 1.0 在协议层面的设计体现了微软对 Agent 生态开放性的长期承诺。两大核心协议均作为一等公民内建6.1 MCPModel Context ProtocolMCP 是由 Anthropic 推出的开放标准用于标准化 LLM 与外部工具/数据源的连接方式。MAF 1.0 提供原生 MCP 客户端集成使智能体能够动态发现和调用外部工具 (Microsoft Learn) 。截至 2026 年MCP 已获得 OpenAI、Google DeepMind、Microsoft 等主要厂商的广泛采纳正在成为 AI-Agent 工具连接的事实标准 (arXiv.org) 。6.2 A2A 1.0Agent-to-Agent ProtocolA2A v1.0 于 2026 年 3 月发布稳定规范是首个生产就绪的跨运行时智能体通信标准。MAF 中的 A2A 支持设计精妙——interop comes for free (Microsoft Developer Blogs) using A2A;using Microsoft.Agents.AI;// 解析远程 Agent 的 AgentCard 并创建 AIAgentA2ACardResolver resolver new(new Uri(“https://a2a-agent.example.com”));AIAgent agent await resolver.GetAIAgentAsync();// 像使用本地 Agent 一样使用远程 AgentConsole.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.0Handoff 模式专为路由 → 专家 → 可能的回退/转接场景设计。开发者声明 Agent 和它们之间的有向边框架自动注入 handoff 工具 (Microsoft Developer Blogs) 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.AI、Microsoft.Agents.AI.WorkflowsMAF 与 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