一个新的 .NET AI 库 - AgileAI

张开发
2026/4/8 11:58:19 15 分钟阅读

分享文章

一个新的 .NET AI 库 - AgileAI
如果把 .NET 生态里的 AI 组件放在一起看大家最熟悉的通常还是Semantic Kernel去年开始微软也在持续推进Microsoft Agent FrameworkMAF。但在我自己的实践里这条路线虽然值得关注却并不总是足够顺手MAF 长期带着比较明显的 preview / prerelease 色彩而真正拿它去快速拼一个能跑、能扩展、还能继续往产品层走的东西体验也没有我期待得那么轻。于是我开始想在 .NET 世界里除了 SK 和 MAF 之外能不能有另一种更轻量、更直接、更适合快速做 AI 应用和 Agent 的组件化方案这就是AgileAI的起点。 对我来说AgileAI 也是一次 AI 编程实验。整个项目从头到尾全部由 AI 完成我本人没有手写一行代码。而它给出的答案是可以而且已经接近能持续演进的程度。AgileAI 是什么一句话说AgileAI 是一个面向 .NET 的 AI SDK / Agent 组件同时仓库里还自带一个本地优先的 AI 工作台 AgileAI.Studio。它大致分成两层第一层底层 SDK / Runtime这一层主要用来快速接入不同 LLM管理对话和流式输出支持 Tool Calling管理 Session 持久化支持 Skill提供 Agent Runtime第二层上层产品 AgileAI.Studio这一层主要负责可视化管理模型连接创建 Agent发起和保存对话审批本地工具执行展示工具/技能使用情况作为一个真正的本地 AI 工作台运行换句话说它既可以被当成一个.NET AI 开发组件也可以被当成一个完整可运行的本地 AI 产品原型。AgileAI 能做什么如果只看结果AgileAI 主要做了两件事1快速对接 LLMAgileAI 当前支持的 Provider 包括OpenAI Chat CompletionsOpenAI-compatible Chat CompletionsAzure OpenAIOpenAI Responses APIGeminiClaude如果你在 .NET 里做 AI 应用不想每换一个模型供应商就改一套代码AgileAI 提供了一层统一抽象让你可以用相对一致的方式发起请求、处理响应、接流式输出和工具调用。它底层的核心接口围绕这些概念组织IChatClientIChatModelProviderIChatSessionIAgentRuntime这套抽象的意义不只是“写得优雅”而是实实在在地降低了切 Provider、切模型和做统一封装的成本。2快速打造 Agent除了“调用模型”AgileAI 更想解决的是“怎么快速搭一个 Agent”。所以它在核心层里内建了这些东西多轮对话ChatSession流式响应Tool CallingSession 持久化Skill 选择和延续Middleware 风格的执行拦截本地工具注册与调用它不是只解决“问模型一句话”而是解决“让 Agent 真正运行起来”的那一层。一个最简单的使用示例如果你想快速感受 AgileAI 的风格可以看一个非常典型的用法先注册 Provider然后创建ChatSession最后直接发请求。下面这个例子来自文件系统工具 sample挺能代表它的思路using AgileAI.Abstractions; using AgileAI.Core; using AgileAI.DependencyInjection; using AgileAI.Extensions.FileSystem; using AgileAI.Providers.OpenAICompatible.DependencyInjection; using Microsoft.Extensions.DependencyInjection; var services new ServiceCollection(); services.AddAgileAI(); services.AddOpenAICompatibleProvider(options { options.ProviderName openapi; options.ApiKey Environment.GetEnvironmentVariable(OPENAI_COMPATIBLE_API_KEY)!; options.BaseUrl Environment.GetEnvironmentVariable(OPENAI_COMPATIBLE_BASE_URL)!; options.RelativePath chat/completions; }); var serviceProvider services.BuildServiceProvider(); var chatClient serviceProvider.GetRequiredServiceIChatClient(); var toolRegistry new InMemoryToolRegistry() .RegisterFileSystemTools(options { options.RootPath D:\workspace\MyProject; options.MaxReadCharacters 12000; }); var session new ChatSessionBuilder(chatClient, openapi:gpt-5.4) .WithToolRegistry(toolRegistry) .Build(); var response await session.SendAsync( Use search_files to find mentions of AgileAI.Studio, then use read_files_batch to inspect the best matching files and summarize them.); Console.WriteLine(response.Message?.TextContent);这个例子很能说明 AgileAI 的定位先接上模型再注册工具然后直接进入 Agent 式调用中间没有太重的 ceremony也没有一大堆必须先理解完才能开始用的框架概念。它的目标很明确尽快跑起来。内置 Tool不仅能调用还考虑了安全边界AgileAI 里很值得单独拿出来说的一块是它的tool 系统。文件系统工具仓库里已经实现了一组本地文件系统工具包括list_directorysearch_filesread_fileread_files_batchwrite_file除此之外源码里其实还实现了更多文件操作工具比如create_directorymove_filepatch_filedelete_filedelete_directory它不只是一个“让模型看文件”的小插件而是已经开始具备比较完整的本地工作区操作能力。run_local_command这是 Studio 里最关键的一个工具之一。它允许 Agent 请求执行本地命令比如 shell / bash / pwsh 命令。但这里最重要的不是“它能执行命令”而是它不是直接执行而是走审批流程。也就是模型提出命令执行请求系统暂停当前工具流程用户看到待执行命令用户手动批准或拒绝批准后再继续后续执行这个设计很关键。因为 AI Tool Calling 真正落地时最大的风险之一就是本地执行能力。AgileAI 没有回避这件事而是把它做成了显式审批流程。web_fetchStudio 里还内置了一个web_fetch工具可以让 Agent 拉取网页内容。这类工具看起来简单但很有用。只要进入 Agent 场景你很快就会遇到“需要主动获取外部信息”的问题。与其让调用端自己绕很多逻辑不如把它收敛成统一的 tool 能力。Skill 支持让 Agent 有“角色能力包”AgileAI 的另一个亮点是它支持Skill。这里的 Skill不是那种非常重的插件生态而更像是一组基于本地文件、带有元信息和提示约束的能力包。仓库里 Skill 的实现包括本地 Skill 文件加载Skill Manifest 解析Skill RegistrySkill PlannerSkill Continuation PolicyPrompt-based Skill ExecutionAgileAI.Studio全功能演示项目如果说前面的 AgileAI 更像“底层能力”那AgileAI.Studio就是它的产品化形态。Studio 的技术栈很直接后端ASP.NET Core EF Core SQLite前端Vue 3 Vite Pinia Naive UI通信方式REST SSE 流式响应测试Playwright它目前已经能完成这些事情配置 Provider Connection添加和测试模型创建 Agent管理会话流式聊天显示 Tool 使用记录显示 Skill 使用状态对run_local_command进行审批用web_fetch拉网页内容也就是说Studio 已经不是一个“摆拍式 Demo UI”而是一个有真实工作流的本地 AI Workspace 雏形。几张 Studio 截图仓库里已经带了几张 Playwright 生成的截图正好能对应它现在的几个主要页面。Models 页面这里可以管理模型连接和模型配置。如果你要做一个真正能切换不同 Provider 的 AI 工作台这一页其实是基础中的基础。AgileAI Studio ModelsAgents 页面这一页是 Agent 的核心配置区。你可以在这里定义Agent 名称Prompt温度最大 Token可用 tools可用 skillsAgileAI Studio AgentsChat 页面这是 Studio 最像“产品”的部分。不仅能聊天还能看到流式回复Agent 当前使用的 skill用过哪些 tools工具审批状态历史会话列表AgileAI Studio Chat结语如果你最近正打算使用 .NET 来开发 Agent 或许可以试试这个新的框架 AgileAI 。有什么意见或者建议都可以给我提 Issue。https://github.com/kklldog/AgileAI

更多文章