模型 / 数据集
microsoft/semantic-kernel avatar
microsoft/semantic-kernel

Semantic Kernel 与 Microsoft Agent Framework:迁移前的架构判断

语义内核将应用程序代码与语言模型、提示、工具、内存和代理工作流程连接起来。

28,562 个 Star4,769 个 ForkC#MIT

秒懂

它是什么?
Semantic Kernel 是微软出品的模型无关 AI 编排 SDK,但官方已宣布其继任者为 Microsoft Agent Framework。本文基于仓库现状,分析其核心机制、适用场景与迁移代价。
适合谁用?
如果你正在构建新的企业级多智能体系统,且没有历史包袱,应直接采用 Microsoft Agent Framework 1.0,其稳定 API 与长期支持承诺更适合生产环境。若你已用 Semantic Kernel 开发了相当规模的插件或流程,不要急于重写,先阅读官方迁移指南,评估 Kernel 对象模型与 Agent 线程 API 的差异。
能商用吗?
可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 5 天前。
用什么语言写的?
主要是 C#(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

一个已经宣告后继者的框架

Semantic Kernel 的 README 第一行就给出了明确信号:它已经被 Microsoft Agent Framework(MAF)取代。这不是猜测,而是仓库自述。MAF 目前是 1.0 版本,官方承诺稳定 API 与长期支持。Semantic Kernel 本身仍然活跃,最近一次推送在 2026 年 8 月,dotnet 版本号到了 1.80.0。但活跃维护与战略重心是两回事。任何评估这个项目的工程师,首先必须接受一个事实:你看到的可能是一个处于维护模式、而非创新模式的项目。

它解决的问题:连接 LLM 与应用代码

Semantic Kernel 的核心定位是模型无关的编排 SDK。它解决的具体问题,是让应用代码与语言模型、提示词、工具、记忆和智能体工作流之间建立连接。目标用户是需要在应用内集成 AI 能力的开发者,而不是研究模型本身的人。它支持 OpenAI、Azure OpenAI、Hugging Face、NVIDIA,也支持通过 Ollama、LMStudio 或 ONNX 做本地部署。这意味着你可以写一套业务逻辑,然后切换不同的模型提供商。这种抽象层在 2024 年很有价值,但到了 2026 年,模型提供商之间的 API 差异已经缩小,这个卖点不再那么突出。

核心机制:Kernel、插件与智能体

从代码示例可以看出,Semantic Kernel 的架构围绕三个概念展开。Kernel 是核心容器,通过 builder 模式创建,负责持有模型连接和插件。插件通过 kernel_function 装饰器或 KernelPluginFactory 注册,可以是原生代码函数,也可以是提示词模板。智能体则是对 Kernel 的封装,ChatCompletionAgent 接收 instructions 和 service,然后通过 get_response 方法处理用户消息。多智能体系统通过创建多个 ChatCompletionAgent 实例,配合 ChatHistoryAgentThread 来管理对话历史。这个模型清晰,但有一个隐含的成本:你写的所有插件和智能体逻辑,都绑定在 Semantic Kernel 的对象模型上,迁移到 MAF 时不是简单的换包名。

安装与运行:三行命令与一个环境变量

安装过程相当直接。Python 用户执行 pip install semantic-kernel,.NET 用户执行 dotnet add package Microsoft.SemanticKernel 和 Microsoft.SemanticKernel.Agents.Core。Java 用户需要参考单独的构建文档。运行前要设置环境变量,Azure OpenAI 用 AZURE_OPENAI_API_KEY,OpenAI 直连用 OPENAI_API_KEY。快速开始示例中,创建一个基本智能体只需要实例化 ChatCompletionAgent,传入 service 和 instructions,然后调用 get_response。这个入门体验在同类框架中算得上平顺,但注意示例代码有截断,实际运行时可能需要额外的配置参数,比如 deployment 名称和 endpoint。

一个真实的限制:示例不完整,文档有缺口

README 中的代码示例多处被截断。Python 的 haiku 输出只显示了一半,MenuPlugin 类没有完整定义,.NET 的智能体创建代码在 aw 处中断,多智能体示例只展示了两个 agent 的 instructions。这不是小问题。对于想快速验证的开发者,这意味着你必须去官方文档或 GitHub 源码里补全代码。更麻烦的是,README 没有说明如何配置 OpenAI 直连的 service 实例,只给了 Azure 的示例。如果你用的是 OpenAI 而不是 Azure,需要自己摸索 OpenAIChatCompletion 的参数。这种文档质量对于一个宣称企业就绪的框架来说,是明显的短板。

替代方案:Microsoft Agent Framework 的差异

替代方案不是别的产品,而是它自己的后继者 Microsoft Agent Framework。两者的差异在 README 中已经点明:MAF 提供企业级多智能体编排、多提供商模型支持,以及通过 A2A 和 MCP 实现的跨运行时互操作性。A2A 是智能体之间的通信协议,MCP 是模型上下文协议,这两者让 MAF 的智能体可以跨语言、跨平台协作。Semantic Kernel 虽然也支持 MCP 插件,但它的多智能体编排是库内实现,没有标准化协议。如果你需要异构系统之间的智能体协作,MAF 是更合适的选择。如果你只需要在单个应用内串联几个模型调用,Semantic Kernel 的轻量级模型可能更直接。

维护成本与许可证

许可证是 MIT,这对商业使用没有限制,但要注意微软的商标和品牌使用政策,这不属于 MIT 的范畴。维护成本方面,Semantic Kernel 的发布节奏仍然稳定,dotnet 1.80.0 和 python 1.44.1 都是 2026 年 8 月的版本。但战略上它已经让位于 MAF,这意味着新功能可能不再优先加入 Semantic Kernel。如果你选择使用它,需要自己承担未来的迁移风险。官方提供了迁移指南,但迁移不是免费的,你的插件、智能体定义和 Kernel 配置都需要重新映射到 MAF 的 API。在投入生产之前,建议先列出你使用的所有 Semantic Kernel 特性,逐一对照 MAF 的文档确认是否存在对应实现。

编辑结论

如果你正在构建新的企业级多智能体系统,且没有历史包袱,应直接采用 Microsoft Agent Framework 1.0,其稳定 API 与长期支持承诺更适合生产环境。若你已用 Semantic Kernel 开发了相当规模的插件或流程,不要急于重写,先阅读官方迁移指南,评估 Kernel 对象模型与 Agent 线程 API 的差异。需要验证的第一件事是:你依赖的 OpenAI 连接器与向量数据库集成在 MAF 中是否有对应实现,以及 .NET 10 或 Python 3.10 的运行时要求是否与你的部署环境冲突。Semantic Kernel 不会立即消失,但它的演进方向已经明确,继续在新项目上押注旧框架是风险大于收益的选择。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社区笔记

社区笔记