惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Heimdal Security Blog
P
Privacy International News Feed
S
Schneier on Security
P
Proofpoint News Feed
L
Lohrmann on Cybersecurity
Spread Privacy
Spread Privacy
P
Privacy & Cybersecurity Law Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Scott Helme
Scott Helme
K
Kaspersky official blog
大猫的无限游戏
大猫的无限游戏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
aimingoo的专栏
aimingoo的专栏
Simon Willison's Weblog
Simon Willison's Weblog
S
Securelist
Help Net Security
Help Net Security
B
Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Security Archives - TechRepublic
Security Archives - TechRepublic
云风的 BLOG
云风的 BLOG
The GitHub Blog
The GitHub Blog
N
News and Events Feed by Topic
Hacker News: Ask HN
Hacker News: Ask HN
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
M
MIT News - Artificial intelligence
雷峰网
雷峰网
博客园 - 司徒正美
V
V2EX
AWS News Blog
AWS News Blog
Know Your Adversary
Know Your Adversary
N
News | PayPal Newsroom
T
Tor Project blog
Cisco Talos Blog
Cisco Talos Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
PCI Perspectives
PCI Perspectives
Google DeepMind News
Google DeepMind News
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
U
Unit 42
C
Cybersecurity and Infrastructure Security Agency CISA
P
Palo Alto Networks Blog
G
Google Developers Blog
T
Threat Research - Cisco Blogs
博客园 - Franky
I
InfoQ
D
DataBreaches.Net
爱范儿
爱范儿
Y
Y Combinator Blog
博客园 - 叶小钗
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

博客园_首页

Linux实操--组管理、权限管理和定时任务 Java + EasyExcel 实现单个接口导出多个Excel Mem0 源码解析系列(二):提示词工程的深度剖析 Openclaw TaskFlow究竟是什么?和普通Skill技能有什么区别 博文阅读密码验证 - 博客园 嘉立创开源:应该是全网MicroPython教程最多的开发板 Hermes Agent 集成实践:从协议到生产 2026年AI编程工具横评:Cursor、Codex、Claude Code、Zed、Windsurf Java程序员必看的RAG入门教程 2026 AI效率神器:Superpowers + Claude Code 保姆级教程 本地大模型部署全攻略:从 0 到 1 玩转 Ollama 【从0到1构建一个ClaudeAgent】内存管理-上下文压缩 .NET 高级开发 | 设计、实现一个事件总线框架 电子小白入门之NE555 3. WorkBuddy:隐藏玩法,一键召唤专家,让 AI 以"专家身份"给你干活 和AI一起搞事情#3:Claude Teammate 游戏开发翻车实录 【OpenClaw】通过 Nanobot 源码学习架构---(7)Memory C# .NET 周刊|2026年3月3期 我在 Debian 11 上把 K8s 单机搭起来了,过程没你想的那么顺(/opt 目录版) 深度学习进阶(七)Data-efficient Image Transformer CLI+Skill搭建浏览器AI自动化框架,告别一切重复枯燥任务 告别Token账单无底洞:OpenClaw本地部署,重塑企业数据主权的唯一解 FastAPI+Vue:文件分片上传+秒传+断点续传,这坑我帮你踩平了! SBTI 爆火后,我做了个程序员版的 CBTI。。已开源 + 附开发过程 多模态检索开始进入工程期:用 Sentence Transformers 搭建可落地的 Multimodal RAG 100多行代码实现一个最简单的Agent(用ReAct) Claude Code 通关手册(八):推荐 5 个 Hooks,代码质量提升 3 倍 老板:“有人截图了!”。安全部门:“收到,马上查暗水印!” - why技术 技术之外,皆是人间 C#/.NET/.NET Core技术前沿周刊 | 第 69 期(2026年4.01-4.12) Snack JSONPath 项目架构分析 Claude Code Buddy 小析:一个非核心功能,如何体现产品的细节完成度 AI新时代下的图床管理方案-Cloudflare图床+MCP+Skills方案指南 化繁为简:顺丰速运App如何通过 HarmonyOS SDK实现专业级空间测量 从零实现富文本编辑器#13-React非编辑节点的内容渲染 AI开发-python-langchain框架(3-23-OpenAI Functions风格Tool Calling智能助手) .NET + AI 进阶实战:基于类的技能开发 - 打造可治理的 Agent 能力模块 【从0到1构建一个ClaudeAgent】规划与协调-技能 上周热点回顾(4.6-4.12) 电子小白的工具三件套:面包板、杜邦线、万能板 单表五亿数据的查询优化 | Mysql、StarRocks 2. WorkBuddy:从“我是谁”到“帮我干活” C# 如何减少代码运行时间:7 个实战技巧 基于HelixToolkit.SharpDX 渲染3D模型 - 笺上知微 从零开始的双臂具身VLA起源及现阶段发展综述 - SkyXZ 记对 xonsh shell 的使用, 脚本编写, 迁移及调优 - pluvium27 受够了Vibe Coding的失控?换个起点,让AI事半功倍 从开始配置漏洞环境到漏洞复现流程 - 難しい 关于10年工作经验的程序员对OpenClaw的实战经验分享以及看法 - 虚无境 Any metadata 的内存布局 C# .NET 周刊|2026年3月2期 - InCerry 我帮你测过了,测试圈排名第二的 Skill 依然很牛逼 Skill Discovery | 无监督技能发现的经典工作总结 - MoonOut PbootCMS 网站内容数量多导致访问慢?这些实用优化方案帮你提速! - 家兴网络技术工作室 上下文工程是什么?过时了么?一文讲明白! - 一枫说码 网站漏洞怎么发现并修复?一篇实用指南(附完整流程) - 家兴网络技术工作室 开了 TUN 模式还是直连?90% 的人都踩过这个坑 Github日报|2026年04月12日 - AI一族 AScript扩展多种脚本语言 - rockey627 AI 学习笔记:Agent 的记忆机制 你能被装进一个文件里吗?——7 万人把同事"蒸馏"成了 AI - 我没有三颗心脏 Claude Code 通关手册(七):给 AI 装上技能包——Skills 完全指南 - 暮色之狐 在浏览器中快速编辑代码:VSCode Web 集成实践 - Newbe36524 蒸馏自己 skill?基于 Deepseek 的蒸馏器,丐版蒸馏方式,简单便捷 - To_Carpe_Diem Spring AI Aliababa和AgentScope,哪个更好? - 苏三说技术 Etsy 把 1000 个 MySQL 分片迁进 Vitess:425TB 数据背后的真正问题不是性能,而是运维规模 MicroPython LVGL基础知识和概念:底层渲染与性能优化 - FreakStudio 数据库草图算法 Python 潮流周刊#146:CPython 引入 Rust 的进展 - 豌豆花下猫 最小生成树 - mofei1116 红日靶场七:从外网入口、容器逃逸到 AD 接管的完整利用链复盘 - YouDiscovered1t 分享四款开源且实用的 Kafka 管理工具 - 追逐时光者 vLLM 权重加载机制全解析:从挑战到理想架构 LCT 学习笔记 - ACehomoxue Avalonia UI 12.0.0 正式发布:架构演进和性能飞跃 - 张善友 当 AI Agent 把调用链拉长,延迟开始成为一门生意 conhost.exe 无法显示 U+2717 - 145a 太秀了,我把自己蒸馏成了 Skill!已开源 - 程序员鱼皮 ASP.NET Core 内存缓存实战:一篇搞懂该怎么配、怎么避坑 基于 Ghostty 带有分割标签页和为 Claude 编程设计的通知终端 - BugShare AI 焊死入口:教育的“操作系统级”重塑 - 郝hai 初级Java开发工程师使用sql脚本编写代码的过程是简单而且不糊涂 - CoderOilStation Claude Code通关手册(六):MCP协议完全指南 - 暮色之狐 边框灯光环绕动画特效实现指南 - Newbe36524 开源:子木蒸馏版的 SEO 审计工具 seo-audit-skill v1.0 我所理解的Python元模型 【从0到1构建一个ClaudeAgent】规划与协调-TodoWrite - 程序员Seven Claude 和 Codex 在审计 Skill 上性能差异探究 - ACai_sec AScript如何实现中文脚本引擎 - rockey627 【渗透测试】HTB Season10 Garfield 全过程wp - dynasty_chenzi Android 开发者为什么必须掌握 AI 能力?端侧视角下的技术变革 树状数组正确性证明 - AC-wyr 你的 AI 焦虑,可能比 AI 本身更危险——ATM 机没有消灭银行柜员,但恐慌消灭了你的判断力 - 我没有三颗心脏 一个拉胯的分库分表方案有多绝望?整个部门都在救火! - 冰河团队 动态规划入门必学之走方格问题 - Ofnoname PostgREST 与 PostgreSQL 角色权限配置全解析(生产级实践) - SheepDog1998 使用 UEFI 图形输出协议 GOP 在屏幕上显示图像的方法 - 阿源- Claude Code通关手册(五):组建你的AI专家团队,子代理系统 - 暮色之狐 一个程序员到架构师的催婚路之感悟(整整10年后的催婚相亲感悟) - MisterLip 用 Agent Skill 自动生成工作周报 - 赵康
Microsoft Agent Framework 1.0 正式接棒,.NET AI 进入 Agent-Native 时代
张善友 · 2026-06-21 · via 博客园_首页

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 技术从业者提供一份完整的迁移认知地图。

封面:从 Semantic Kernel 到 Microsoft Agent Framework 的演进


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

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 发布关键里程碑


二、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) 标准抽象层,定义 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 只负责"走"。

从 Kernel 到 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:智能体创建与工具关联

// ========== 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
};
// ========== 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 的代码更少、层级更扁平、职责更清晰。KernelKernelBuilder 的消失意味着更少的概念负担,而 IChatClient 的引入则带来了真正的厂商解耦——切换模型提供方只需修改客户端配置,Agent 代码完全不变 (devleader.ca)


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

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

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

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)

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)

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 时代的真正开始。


参考资源