尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

dotnet-skills:让AI助手掌握现代.NET开发最佳实践

dotnet-skills:让AI助手掌握现代.NET开发最佳实践 1. 项目概述如果你是一位 .NET 开发者并且正在使用像 Claude、GitHub Copilot、Gemini 或 Codex 这样的 AI 编程助手那么你很可能经历过这样的挫败感你满怀期待地输入“使用 Entity Framework Core 创建一个包含用户和订单的数据库上下文”结果 AI 给你生成了一段充斥着过时的DbContext构造函数和DbSet配置的代码看起来像是 EF6 时代的产物。或者你让它“为我的 Blazor Server 应用添加一个组件”它却给你返回了 Blazor WebAssembly 的启动配置。更别提那些还在为 Minimal API 项目生成Startup.cs的 AI 了。这种“代沟”的根本原因在于大多数 AI 模型的训练数据存在滞后性它们对 .NET 生态的认知可能还停留在几个版本之前。而 .NET 的发展日新月异从 ASP.NET Core 的架构演进到 Entity Framework Core 的性能优化再到 MAUI、Aspire、Orleans 等新框架的涌现开发者需要的是对最新、最现代实践的理解。dotnet-skills项目就是为了弥合这道鸿沟而生的。它不是一个普通的代码库而是一个面向 AI 的 .NET 技能目录。你可以把它理解为一套精心编写的“使用说明书”或“最佳实践指南”专门用来“教育”你的 AI 助手让它真正理解现代 .NET 的开发模式、工具链和框架特性。安装这些技能后你的 AI 助手就不再是一个只会背诵陈旧文档的“复读机”而是一个能跟上你技术栈的“资深 .NET 顾问”。1.1 核心价值从“解释”到“构建”在没有dotnet-skills之前我们的工作流是“开发 - 向 AI 解释上下文 - 修正 AI 的错误输出 - 开发”。这中间“解释”和“修正”的环节极大地消耗了我们的心流和效率。dotnet-skills的目标是将工作流转变为“安装技能 - 开发”。它通过以下几个核心特性来实现社区驱动与时俱进技能由 .NET 社区共同维护紧密跟踪微软官方文档和最佳实践。这意味着当 .NET 9 发布引入了新的[AsParameters]特性时对应的 ASP.NET Core 技能会很快更新确保 AI 生成的代码符合最新规范而不是沿用旧模式。跨平台 AI 支持一套技能多处使用。无论你日常使用的是 Claude Desktop、VS Code 里的 Copilot、Google 的 Gemini还是其他兼容的技能系统如 Codex、Juniedotnet-skills都提供了统一的安装路径。你再也不用为每个 AI 平台单独编写提示词了。结构化知识精准路由技能目录不是杂乱无章的文档堆砌。它按照.NET Foundations、.NET Quality、Web、Data、AI Agents等逻辑清晰的集合进行分类。更重要的是它引入了“编排代理”的概念。例如dotnet-router这个代理就像一个总调度员能根据你的问题“如何配置 Serilog”、“怎么用 Orleans 实现一个 Grains”自动将任务路由到最具体的技能如serilog技能或orleans-grains技能从而获得最精准的指导。简单来说dotnet-skills让 AI 助手真正融入了 .NET 开发现代化的进程将开发者从重复性的“教学”工作中解放出来把精力集中在真正的创造性编码上。1.2 适合谁使用全栈 .NET 开发者日常使用多种 .NET 技术栈如 ASP.NET Core, EF Core, Blazor, xUnit并希望 AI 助手能准确理解这些上下文。团队技术负责人/架构师希望为团队建立统一的 AI 辅助编码标准确保生成的代码符合项目规范和最新最佳实践。开源库维护者可以为你维护的流行 .NET 库贡献一个技能让全世界的 AI 用户都能更好地使用你的库。任何厌倦了向 AI 反复解释 .NET 细节的开发者如果你曾对 AI 说“不我们现在不用IHttpContextAccessor那种方式了”那么这个工具就是为你准备的。2. 核心架构与设计思路解析dotnet-skills不仅仅是一个 CLI 工具它背后是一套完整的、用于增强 AI 对特定领域认知的体系。理解其架构能帮助我们更好地使用和贡献它。2.1 技能与代理的双层模型这是dotnet-skills最核心的设计。它将知识分为两个层次技能这是最细粒度的知识单元对应一个具体的、可操作的任务或框架。例如entity-framework-core专门指导如何正确使用 EF Core 进行数据建模、迁移、查询。serilog指导如何配置 Serilog 结构化日志包括接收器、Enricher 和与 ASP.NET Core 的集成。minimal-apis阐述 Minimal API 的端点映射、参数绑定、过滤器等现代模式。 每个技能都位于catalog/类型/包名/skills/技能名/目录下其核心是一个SKILL.md文件里面包含了 AI 执行该任务所需的全部上下文、步骤、示例和禁忌。代理这是更高一层的抽象负责任务路由和决策。代理本身不直接解决具体问题而是像一个专家系统根据用户的模糊或宽泛的请求决定调用哪个或哪几个技能。通用路由代理如dotnet-router它能理解“做一个 Web API”、“处理数据库操作”、“写个单元测试”这样的高层意图并将其分发给aspnetcore-webapi、entity-framework-core、xunit等技能。领域专家代理如dotnet-orleans-specialist它专门处理分布式 Actor 模型框架 Orleans 相关的问题能理解“Grain”、“Silo”、“Stream”等概念并路由到更具体的orleans-grains、orleans-streams等技能。工作流代理如dotnet-aspire-orchestrator它专门指导基于 Aspire 的云原生应用编排涉及 AppHost、服务发现、配置管理等复合任务。这种设计的精妙之处在于关注点分离。技能作者只需专注于把某个具体技术点讲透而代理作者则专注于如何理解用户意图并组合技能。这极大地提升了系统的可维护性和扩展性。2.2 目录结构与元数据管理项目的目录结构经过精心设计以支持复杂的包、技能和代理关系。catalog/ └── Type/ # 类型如 Frameworks, Tools, Platform └── Package/ # 包/项目名如 Entity-Framework-Core, Aspire ├── manifest.json # 包级元数据标题、描述、图标、相关链接 ├── skills/ │ └── skill-name/ │ ├── SKILL.md # 技能核心内容 │ ├── manifest.json # 技能级元数据版本、触发词等 │ ├── scripts/ # 可选的辅助脚本 │ └── references/ # 可选的参考文档 └── agents/ └── agent-name/ ├── AGENT.md # 代理路由逻辑 └── manifest.json # 代理级元数据关键设计点解析manifest.json分层包、技能、代理各有自己的manifest.json。包级别的描述这个库是什么技能级别的描述这个技能做什么、由哪些 NuGet 包触发代理级别的描述其路由范围。这避免了将所有元数据塞进 Markdown 文件保持了SKILL.md和AGENT.md的内容纯净性。SKILL.md内容规范技能文件的核心是告诉 AI“何时用”和“怎么用”。它通常包含USE FOR明确的使用场景。这是最重要的部分决定了 AI 何时会激活这个技能。DO NOT USE FOR明确的禁忌场景防止误用。Workflow一步步的操作指南。Validation如何验证结果是否正确。References指向官方文档的链接。 它不应包含版本号、分类等元数据这些都在manifest.json里。外部源集成项目通过vendir工具和import_external_catalog_sources.py脚本可以自动导入并规范化上游社区的技能定义例如从其他开源 AI 技能仓库导入。这保证了生态的开放性dotnet-skills可以成为 .NET AI 技能的一个聚合中心。2.3 安装与发现机制CLI 工具的设计充分考虑了开发者的实际工作流基于项目的自动发现dotnet skills install --auto命令会扫描当前目录下的.csproj文件识别项目引用的 NuGet 包如Microsoft.EntityFrameworkCore.SqlServer和项目类型如Microsoft.NET.Sdk.Web然后自动安装所有匹配的技能。这是最省心的方式项目环境一变技能库也随之更新。推荐模式dotnet skills recommend命令更保守一些。它只做扫描和推荐并给出安装命令把最终决定权交给开发者。这适合在 CI/CD 流水线中做检查或者在不确定时先看看会安装什么。捆绑包安装对于常见的开发场景项目提供了预定义的“捆绑包”。例如运行dotnet skills install bundle quality会一次性安装所有与代码质量相关的技能如format,roslynator,code-analysis。这比一个个安装技能高效得多。多代理平台支持工具能自动检测系统中已安装的 AI 代理平台通过查找.claude/,.github/,.gemini/等目录并将技能安装到所有支持的平台。它也提供了一个后备的共享目录~/.agents/skills/供其他兼容工具使用。实操心得对于新项目我习惯在创建解决方案后直接运行dotnet skills install --auto。这能确保我的 AI 助手从一开始就“懂”这个项目。对于已有项目我则会先运行dotnet skills recommend看看推荐列表再决定是全部安装 (--auto) 还是选择性安装。3. 完整实操指南从安装到高效使用理论讲完了我们上手实操。以下步骤假设你是在一个典型的 .NET 开发环境中Windows/macOS/Linux已安装 .NET SDK。3.1 环境准备与工具安装首先你需要安装dotnet-skills这个全局工具。同时为了使用编排代理功能建议也安装对应的代理 CLI 工具。你可以二选一也可以都安装。# 1. 安装核心技能管理工具 dotnet tool install --global dotnet-skills # 2. 安装编排代理管理工具选择一种你喜欢的命令行风格 # 选项 A使用 dotnet agents 命令与 dotnet skills 风格统一 dotnet tool install --global dotnet-agents # 选项 B使用独立的 agents 命令更简洁 dotnet tool install --global agents安装完成后可以通过dotnet skills version和dotnet agents version(或agents version) 来验证安装是否成功并检查是否有新版本。3.2 技能安装的三种核心模式安装技能有三种主要方式适用于不同场景。模式一基于当前项目的自动安装推荐这是最常用、最智能的方式。进入你的 .NET 项目根目录包含.csproj或.sln文件然后执行dotnet skills install --auto这个命令会扫描当前目录下所有的.csproj文件。提取所有PackageReference和ProjectReference。识别项目 SDK 类型如Microsoft.NET.Sdk.Web。在技能目录中查找所有与之匹配的技能。将这些技能安装到你系统中已检测到的 AI 代理目录中如~/.claude/skills/。例如如果你的项目引用了Microsoft.EntityFrameworkCore.SqlServer和Serilog.AspNetCore并且是一个 Web 项目那么entity-framework-core、serilog和aspnetcore-webapi等技能很可能就会被自动安装。模式二安装预定义的技能捆绑包如果你正在搭建一个特定类型项目的开发环境或者想快速获得某一领域的全面支持可以使用捆绑包。# 安装所有代码质量相关的技能格式化、分析器、复杂度检查等 dotnet skills install bundle quality # 安装前端代码质量技能针对 Blazor/前端项目 dotnet skills install bundle frontend-quality # 安装 Orleans 分布式应用开发所需的技能集 dotnet skills install bundle orleans # 安装与微软云采用框架MCAF治理相关的技能 dotnet skills install bundle mcaf运行dotnet skills bundle list可以查看所有可用的捆绑包。模式三手动安装特定技能当你明确知道自己需要某个特定技能时可以直接安装。# 安装单个技能 dotnet skills install blazor # 一次性安装多个技能 dotnet skills install xunit moq fluentassertions # 为特定的 AI 代理安装技能例如只给 Claude 安装 dotnet skills install aspnetcore-webapi --agent claude3.3 使用交互式控制中心dotnet-skillsCLI 提供了一个强大的交互式控制中心这是探索和管理技能的绝佳方式。# 直接运行以下命令会启动一个基于终端的交互式界面 dotnet skills在控制中心里你可以按集合浏览像在网站上一样浏览.NET Foundations、Web、Data等分类下的所有技能。查看已安装的技能快速了解当前项目或全局环境下已经安装了哪些技能。进行分析工具可以分析你的项目结构给出技能使用建议和令牌数统计。预览安装在真正写入文件前预览将要安装或移除的技能列表。管理代理查看和安装可用的编排代理。对于不熟悉命令行的用户或者想直观了解技能生态全貌时控制中心是首选。3.4 技能与代理的日常管理安装后你需要知道如何查看、更新和移除它们。# 查看所有已安装的技能在当前目标目录下 dotnet skills list --local # 查看所有可用的技能完整的目录 dotnet skills list # 更新所有已安装的技能到目录的最新版本 dotnet skills update # 更新特定的技能 dotnet skills update entity-framework-core serilog # 移除一个技能 dotnet skills remove blazor # 移除一个捆绑包中的所有技能 dotnet skills remove bundle quality # 移除一个集合中的所有技能例如所有 Web 相关技能 dotnet skills remove collection web # 清除所有已安装的技能 dotnet skills remove --all代理的管理命令类似# 列出可用的编排代理 dotnet agents list # 安装代理例如安装总路由器代理 dotnet agents install router # 自动安装代理到所有检测到的平台 dotnet agents install router --auto # 移除代理 dotnet agents remove router3.5 在 AI 助手中验证效果安装完成后如何验证技能是否生效这取决于你使用的 AI 平台。Claude Desktop技能会安装在~/.claude/skills/全局或项目目录下的.claude/skills/。重启 Claude Desktop 应用在新的对话中当你提到相关技术时Claude 的回答应该会体现出更专业、更现代的 .NET 知识并且可能直接引用技能中的工作流。GitHub Copilot (Chat)技能会安装在~/.copilot/skills/或.github/skills/。在 VS Code 的 Copilot Chat 中你可以尝试问一些之前它可能回答不好的 .NET 8 特性问题观察其回答的准确性是否提升。Cursor由于 Cursor 底层也使用 Claude 等模型并且支持技能目录安装到 Claude 的技能路径通常也能被 Cursor 识别。可以在 Cursor 的 AI 聊天中测试。其他平台如 Gemini、Codex 等请参考其官方文档确认技能目录的加载机制。一个简单的测试方法是问一个具有版本特异性的问题例如“在 .NET 8 的 Minimal API 中如何优雅地进行参数验证” 一个未受训练的 AI 可能会给出基于 FluentValidation 或 DataAnnotations 的旧式答案而一个加载了minimal-apis和validation技能的 AI则更可能给出使用IEndpointFilter或新的[AsParameters]结合IValidatableObject的现代方案。4. 为你的 .NET 库贡献一个技能dotnet-skills的强大之处在于其社区驱动。如果你维护一个流行的 .NET 开源库或者对某个框架有深刻理解为其贡献一个技能能让成千上万的开发者受益。4.1 贡献前的准备工作Fork 仓库访问managedcode/dotnet-skills的 GitHub 仓库点击 Fork 按钮创建你自己的副本。克隆仓库到本地git clone https://github.com/你的用户名/dotnet-skills.git cd dotnet-skills熟悉目录结构花点时间浏览catalog/目录看看现有的技能是如何组织的。特别是找一个与你想贡献的库类似的技能作为参考。4.2 创建技能的核心步骤假设我们要为一个虚构的、用于处理缓存的库AwesomeCache创建一个技能。步骤一确定技能类型和包名首先需要确定技能放在哪个分类下。查看catalog/下的类型目录Frameworks/用于像 Entity Framework Core、Orleans 这样的应用框架。Libraries/用于像 Serilog、Polly 这样的通用库。Tools/用于像dotnet format、Roslynator这样的开发工具。Platform/用于像 .NET 运行时、C# 语言本身这样的平台级主题。AwesomeCache是一个库所以我们选择Libraries。包名我们定为AwesomeCache。步骤二创建技能目录和文件在项目根目录下执行或手动创建目录# 创建包目录和技能目录 mkdir -p catalog/Libraries/AwesomeCache/skills/awesome-cache cd catalog/Libraries/AwesomeCache/skills/awesome-cache现在创建必要的文件创建包级 manifest.json(catalog/Libraries/AwesomeCache/manifest.json){ id: AwesomeCache, title: AwesomeCache, description: A high-performance, distributed cache library for .NET., icon: icon.svg, // 可选可以放一个库的logo links: { repository: https://github.com/awesome-org/awesomecache, docs: https://awesomecache.net/docs, nuget: https://www.nuget.org/packages/AwesomeCache } }创建技能级 manifest.json(catalog/Libraries/AwesomeCache/skills/awesome-cache/manifest.json){ id: awesome-cache, title: AwesomeCache, description: Use the AwesomeCache library for high-performance caching scenarios in .NET applications., version: 1.0.0, category: Libraries, package: AwesomeCache, package_prefix: AwesomeCache, tags: [caching, distributed, performance, libraries], trigger: [ AwesomeCache, distributed cache, IDistributedCache alternative, high performance cache ] }trigger字段至关重要它定义了哪些用户提问会激活这个技能。要仔细思考用户可能用什么关键词来询问关于这个库的问题。创建核心技能文件 SKILL.md(catalog/Libraries/AwesomeCache/skills/awesome-cache/SKILL.md)# AwesomeCache Use the AwesomeCache library when a .NET application needs a high-performance, feature-rich distributed caching solution beyond the basic IDistributedCache interface. ## USE FOR * Implementing a fast in-memory cache with advanced eviction policies (LRU, LFU). * Setting up a distributed cache backend (Redis, SQL Server) with serialization and compression. * Needing cache regions, tags, or dependency invalidation. * Performing cache operations asynchronously with Polly resilience policies integrated. * Monitoring cache hit/miss ratios and performance metrics. ## DO NOT USE FOR * Simple IMemoryCache scenarios where a single-server, non-distributed cache is sufficient. * HTTP response caching (use Microsoft.AspNetCore.ResponseCaching instead). * Session state storage (use Microsoft.AspNetCore.Session). ## WORKFLOW 1. **Installation**: Add the AwesomeCache NuGet package to your project. xml PackageReference IncludeAwesomeCache Version2.5.0 / 2. **Service Registration**: In your Program.cs or Startup.cs, register AwesomeCache services. csharp // For in-memory cache builder.Services.AddAwesomeCacheInMemory(); // For distributed Redis cache builder.Services.AddAwesomeCacheRedis(localhost:6379); // Optional: Configure global settings like default expiration builder.Services.ConfigureAwesomeCacheOptions(options { options.DefaultAbsoluteExpiration TimeSpan.FromMinutes(30); }); 3. **Dependency Injection**: Inject IAwesomeCache into your classes. csharp public class MyService { private readonly IAwesomeCache _cache; public MyService(IAwesomeCache cache) _cache cache; } 4. **Basic Operations**: csharp // Set a value await _cache.SetAsync(user:123, userData, TimeSpan.FromMinutes(10)); // Get a value var data await _cache.GetAsyncUserData(user:123); if (data ! null) { /* cache hit */ } // Remove a value await _cache.RemoveAsync(user:123); // Get or create (thread-safe) var heavyData await _cache.GetOrCreateAsync(report:2024, async entry { entry.AbsoluteExpirationRelativeToNow TimeSpan.FromHours(1); return await GenerateExpensiveReportAsync(); }); 5. **Advanced Features**: * **Tags**: Group cache entries and invalidate by tag. * **Regions**: Isolate cache data for different tenants or modules. * **Events**: Subscribe to cache item removed/updated events. ## VALIDATION * Verify that IAwesomeCache is registered in the service provider. * Write a simple integration test that sets and retrieves a value. * Use the AwesomeCache.Diagnostics package to monitor cache performance in Application Insights or OpenTelemetry. ## REFERENCES * [Official Documentation](https://awesomecache.net/docs) * [GitHub Repository](https://github.com/awesome-org/awesomecache) * [NuGet Package](https://www.nuget.org/packages/AwesomeCache)写作要点USE FOR/DO NOT USE FOR要清晰、具体这是 AI 路由的黄金标准。WORKFLOW要提供可复制粘贴的代码示例从安装到基本使用。语言要简洁、准确面向的是 AI但最终服务于开发者。步骤三本地测试与生成在提交之前最好在本地预览一下你的技能在生成后的网站和目录中是什么样子。# 在项目根目录运行生成脚本 python3 scripts/generate_catalog.py python3 scripts/generate_pages.py这会在artifacts/github-pages/目录下生成静态网站你可以在浏览器中打开index.html查看。同时README.md中的目录表格也会更新你可以检查你的技能是否被正确列出。步骤四提交 Pull Request完成以上步骤后将你的更改提交到你的 Fork 仓库然后向原managedcode/dotnet-skills仓库发起 Pull Request。项目维护者会 review 你的贡献并可能提出修改建议。一旦合并你的技能就会出现在下一个发布的目录版本中惠及所有开发者。注意事项在编写SKILL.md时务必避免包含版本号、分类等元信息。这些信息应严格放在manifest.json文件中。保持关注点分离是维护大型技能目录的关键。5. 高级技巧与疑难排查在深度使用dotnet-skills的过程中我积累了一些能提升效率的技巧也遇到过一些典型问题。5.1 高效使用技巧组合使用--auto与--prune在长期项目中依赖项可能会变化。定期运行dotnet skills install --auto --prune可以智能地移除那些不再被项目需要的“陈旧”技能保持技能集的整洁。这对于在多个分支间切换或重构项目后特别有用。利用项目级技能覆盖全局技能技能可以安装在全局~/.claude/skills/或项目本地.claude/skills/。项目本地的技能优先级更高。你可以为某个特定项目安装一个定制版的技能例如修改了工作流而不会影响其他项目。这在处理遗留项目或具有特殊规范的项目时非常有效。关注“编排代理”不要只安装技能花点时间了解并安装像dotnet-router、dotnet-build这样的代理。它们能大幅提升 AI 处理复杂、模糊需求的能力。例如直接问“帮我优化这个项目的构建速度”dotnet-build代理可能会依次调用build-perf-baseline、build-perf-diagnostics、build-parallelism等多个技能给你一个综合性的解决方案。查看令牌数每个技能文件都有大小。如果你关心 AI 模型的上下文窗口限制可以使用dotnet skills catalog tokens --catalog-root .命令导出 JSON查看每个技能的令牌数。这有助于你决定是安装完整的技能集还是只安装核心技能。5.2 常见问题与解决方案问题现象可能原因解决方案运行dotnet skills后无响应或报错1. 网络问题无法从 GitHub Releases 获取最新目录。2. Python 脚本执行环境问题本地预览时。3. 工具版本过旧。1. 检查网络或设置环境变量DOTNET_SKILLS_SKIP_UPDATE_CHECK1跳过更新检查。2. 确保本地安装了 Python 3并安装了所需依赖如rich。3. 运行dotnet tool update --global dotnet-skills更新工具。技能已安装但 AI 助手似乎没反应1. 技能未安装到正确的 AI 代理目录。2. AI 客户端未重启或未重新加载技能。3. 技能的trigger关键词与你的问题不匹配。1. 使用dotnet skills where查看技能安装路径确认是否在你期望的 AI 目录下。2. 重启你的 AI 桌面应用或 IDE。3. 查看技能的manifest.json了解其触发条件调整你的提问方式。dotnet skills install --auto未安装预期的技能1. 项目.csproj中引用的 NuGet 包名称与技能定义的package_prefix不匹配。2. 该技能尚未被收录在目录中。1. 使用dotnet skills list查看所有可用技能确认是否存在对应包名的技能。你也可以运行dotnet skills recommend查看工具的建议。2. 考虑为你需要的库贡献一个技能安装代理时提示“No native agent directory found”dotnet agents install --auto只会向已存在的原生代理目录安装。如果你从未启动过 Claude Desktop 等应用其目录可能不存在。1. 先启动一次你的 AI 应用如 Claude Desktop创建其配置目录。2. 或者使用--agent参数指定目标并配合--target指定一个自定义路径。例如dotnet agents install router --agent claude --target ~/my-custom-agents/。在 CI/CD 中如何使用需要在构建机器上安装技能以确保 AI 代码审查或生成的一致性。在 CI 脚本中添加步骤1.dotnet tool install --global dotnet-skills2.dotnet skills install --auto(或安装特定捆绑包)3. 确保后续的 AI 步骤如通过 API 调用能访问到安装技能的路径。5.3 性能与维护考量目录更新频率目录每天 UTC 时间 04:00 会自动发布新版本格式如2026.3.15.0。dotnet skills update命令会拉取最新版本。对于追求稳定性的团队可以考虑在 CI 中固定一个目录版本号虽然 CLI 目前主要通过--catalog-version支持但自动更新是默认行为。技能质量技能的质量取决于社区贡献。遇到不准确或过时的技能最好的方式是查看该技能所在的目录直接修改SKILL.md并提交 PR。这也是开源协作的魅力所在。与内部知识库结合dotnet-skills解决的是公共的、通用的 .NET 知识。对于公司内部的私有框架、特定规范你完全可以参照它的格式建立自己内部的技能目录并配置 AI 助手同时加载公共和私有目录。dotnet-skills代表了一种新的开发者与 AI 协作的范式从被动地纠正 AI转变为主动地塑造和赋能 AI。它通过结构化的社区知识将 .NET 领域的最新实践“编码”到 AI 的上下文中。作为开发者我们不仅是使用者更可以成为贡献者共同塑造这个不断进化的智能助手生态系统。开始安装技能体验那种 AI 终于“懂你”的流畅感并在遇到缺失的技能时毫不犹豫地成为那个填补空白的人。
返回列表