第1期:.NET 9.0 + WPF 打造AI桌面工作台 — zonggeAgent 项目全景详解
第1期:.NET 9.0 + WPF 打造AI桌面工作台 — zonggeAgent 项目全景详解
.NET 9.0 + WPF 打造AI桌面工作台:zonggeAgent 项目全景详解
🔗 源码仓库: github.com/zongge0812/zonggeAgent
技术等级: ⭐ 入门
标签: #.NET 9 #WPF #AI智能体 #Semantic Kernel #桌面应用 #开源项目
系列: zonggeAgent · AI智能体实战教程(第1/8期)
────────────────────────────────────────────────────────────
📖 前言:一个程序聚合所有主流大模型
如果你是一个 .NET 开发者,你的电脑上大概率同时装着这些:ChatGPT 桌面版、Claude 客户端、浏览器挂着 DeepSeek 标签页、手机上还有通义千问……写代码时要在三个窗口之间反复切换,上下文接不上,想对比不同模型的回答?手动复制粘贴。
这不是个例,这是大部分 AI 开发者的真实状态。
zonggeAgent 就是为了解决这个问题而生的——它是一个基于 .NET 9.0 + WPF + Semantic Kernel 的通用型 AI 智能体桌面工作台,一个程序聚合 OpenAI、DeepSeek、Claude、Ollama、通义千问 5 大模型。
本文将带你从零了解这个项目:它是什么、技术栈怎么选、如何快速跑起来。
────────────────────────────────────────────────────────────
一、zonggeAgent 是什么?
zonggeAgent(全称:zonggeAgent · AI智能体锻造之路)不是一个简单的"AI聊天聚合器",而是一个可编程、可扩展、支持多智能体协作的完整桌面工作台。
1.1 核心能力一览
能力 说明 技术亮点
🧠 多模型聚合 同时接入 OpenAI / DeepSeek / Claude / Ollama / 通义千问 适配器模式统一接口
💬 智能对话 单聊 / 群聊 / 多智能体协作 Semantic Kernel Agents
🧩 插件系统 代码分析 / 文件操作 / 热加载 反射 + SK KernelFunction
📂 本地持久化 SQLite 存储,100对话加载仅 5ms Repository 模式
👥 SubAgent 创建专属智能体分工协作 作业调度编排
📊 性能监控 延迟 / Token / 报错实时追踪 Serilog + 统计面板
1.2 技术栈总览
以下是项目的核心技术栈,每个选择都有充分的选型理由:
层级 技术选型 版本 选型理由
🎨 UI层 WPF + MaterialDesignThemes 5.3.0 桌面端最成熟,生态丰富
🏗 MVVM CommunityToolkit.Mvvm 8.3.2 微软官方,零额外依赖
🤖 AI框架 Semantic Kernel 1.45.0 .NET原生,插件机制完善
🗄 数据库 SQLite (Microsoft.Data.Sqlite) 9.0.0 零配置,性能卓越
📝 日志 Serilog 4.1.0 结构化日志,按天滚动
🔧 DI Microsoft.Extensions.DependencyInjection 9.0.0 官方容器,12个服务注册
📦 序列化 Newtonsoft.Json + System.Text.Json 13.0/10.0 双剑合璧
────────────────────────────────────────────────────────────
二、快速上手:环境搭建与运行
这是 CSDN 读者最关心的部分——怎么把项目跑起来?
2.1 环境要求
项目 要求
操作系统 Windows 10/11(64位)
SDK .NET 9.0 SDK(下载地址)
IDE Visual Studio 2022(v17.12+)或 JetBrains Rider
Git 任意版本
2.2 克隆与运行
克隆仓库
git clone https://github.com/zongge0812/zonggeAgent.git
进入项目目录
cd zonggeAgent
还原依赖
dotnet restore
构建项目
dotnet build
运行
dotnet run --project src/zonggeAgent.App
💡 提示: 如果使用 VS2022,直接打开
zonggeAgent.sln,按F5即可运行。
2.3 配置文件说明
项目根目录下的appsettings.json是核心配置文件:
{
"AIProviders": {
"OpenAI": {
"ApiKey": "sk-xxx",
"Model": "gpt-4o"
},
"DeepSeek": {
"ApiKey": "sk-xxx",
"Model": "deepseek-chat"
},
"Ollama": {
"BaseUrl": "http://localhost:11434",
"Model": "llama3"
}
},
"Database": {
"ConnectionString": "Data Source=zonggeAgent.db"
},
"Logging": {
"LogPath": "logs",
"RetentionDays": 7
}
}
⚠️ 注意: 首次运行前,至少配置一个 AI 提供商的 ApiKey。Ollama 支持本地离线运行,无需配置密钥。
────────────────────────────────────────────────────────────
三、项目结构导读
zonggeAgent 的解决方案包含 30+ 个文件夹、100+ 个文件,这里先给出一张"导航地图":
zonggeAgent/
├── src/
│ ├── zonggeAgent.App/ # 主工程(启动入口)
│ ├── zonggeAgent.Core/ # 核心业务逻辑
│ │ ├── Services/ # 12个服务接口+实现
│ │ ├── Models/ # 数据实体
│ │ └── Interfaces/ # 抽象接口定义
│ ├── zonggeAgent.Infrastructure/ # 基础设施
│ │ ├── Data/ # SQLite + Repository
│ │ └── AIProviders/ # 5大AI连接器
│ ├── zonggeAgent.Plugins/ # 插件抽象基库
│ ├── zonggeAgent.Plugins.FileTools/ # 文件操作插件
│ ├── zonggeAgent.Plugins.CodeAnalysis/ # 代码分析插件
│ └── zonggeAgent.Plugins.ArchitectureRecognition/ # 架构识别插件
├── tests/
│ └── zonggeAgent.Tests/ # 单元测试
└── docs/ # 文档
📌 为什么这么分? 5层分层架构(View → ViewModel → Service → Repository → Model/AI),每层只做一件事。后续文章会逐层详解。
────────────────────────────────────────────────────────────
四、核心技术亮点
4.1 多模型聚合:适配器模式实战
zonggeAgent 通过适配器模式统一了5个 AI 提供商的调用方式:
// 核心接口定义
public interface IAIProvider
{
string ProviderName { get; }
Task<IAsyncEnumerable<string>> ChatAsync(
string message,
ChatHistory? history = null,
CancellationToken ct = default);
}
// OpenAI 实现
public class OpenAIProvider : IAIProvider
{
public string ProviderName => "OpenAI";
public async Task<IAsyncEnumerable<string>> ChatAsync(
string message, ChatHistory? history, CancellationToken ct)
{
// 通过 Semantic Kernel 原生连接器实现
}
}
// DeepSeek 实现(API兼容但略有差异)
public class DeepSeekProvider : IAIProvider
{
public string ProviderName => "DeepSeek";
// 自定义 HTTP 客户端实现
}
设计优势: 加一个新 AI 提供商,只需新建一个类实现 IAIProvider,不改任何现有代码。
4.2 插件系统:热加载机制
插件通过反射动态加载,运行时扫描目录:
public class PluginLoaderService : IPluginLoaderService
{
public void LoadPlugins(string pluginsDirectory)
{
foreach (var dll in Directory.GetFiles(pluginsDirectory, "*.dll"))
{
var assembly = Assembly.LoadFrom(dll);
var pluginTypes = assembly.GetTypes()
.Where(t => typeof(ITools).IsAssignableFrom(t) && !t.IsInterface);
foreach (var type in pluginTypes)
{
var plugin = Activator.CreateInstance(type) as ITools;
RegisterPlugin(plugin); // 注册到SK
}
}
}
}
────────────────────────────────────────────────────────────
五、与其他方案的对比
5.1 为什么不直接用网页版?
对比项 网页版AI zonggeAgent(桌面端)
模型切换 需切换标签页/重新登录 一键切换,对话保持
数据隐私 所有数据经过云端 支持Ollama本地模型
文件处理 上传大小限制 直接读写本地文件系统
快捷键 有限 Ctrl+N/Ctrl+Enter/Ctrl+W
离线使用 不可用 Ollama本地离线运行
插件扩展 无 插件热加载,能力无限
5.2 为什么不选 Electron?
对比项 Electron方案 WPF方案(本项目)
内存占用 ~300MB+ ~80-120MB
启动速度 2-3秒 <1秒
原生体验 Web套壳,卡顿感 原生桌面流畅度
.NET集成 需额外Bridge 原生C#,零开销
────────────────────────────────────────────────────────────
六、适合谁阅读
人群 收获
.NET 开发者 完整的AI桌面应用架构参考
AI 应用开发者 桌面端AI架构设计思路
技术管理者 技术选型决策的权衡分析
学生/转行者 一个项目覆盖架构+WPF+AI集成
────────────────────────────────────────────────────────────
七、系列导航与下期预告
本文是 zonggeAgent · AI智能体实战教程 系列的第 1 期。完整系列目录:
期数 标题 状态
📍 第1期(本期) .NET 9 + WPF 打造AI桌面工作台 — 项目详解 ✅ 本文
🔜 第2期 技术栈全景:.NET 9 + SK + WPF 为什么是最佳组合 📅 即将发布
第3期 架构设计揭秘:为什么选择插件化+分层架构? 📅 即将发布
第4期 项目结构深度解析:从sln到每个文件夹 📅 即将发布
下一篇预告:
《技术栈全景:.NET 9 + Semantic Kernel + WPF 为什么是最佳组合》
为什么选 .NET 9 而不是 .NET 8?SK vs LangChain 怎么选?
WPF vs MAUI vs WinUI 3 实测对比数据,下期见。
────────────────────────────────────────────────────────────
🔗 源码仓库: github.com/zongge0812/zonggeAgent欢迎 Star ⭐ 支持开源项目,第一时间收到更新通知。
更多推荐




所有评论(0)