.NET+AI | Agent Skills | File-based Agent Skills 帮你复用成千上万的开源技能

张开发
2026/4/14 2:15:19 15 分钟阅读

分享文章

.NET+AI | Agent Skills | File-based Agent Skills 帮你复用成千上万的开源技能
以下内容选自我精心打造的《.NETAI | 智能体开发进阶》课程如需系统学习不妨阅读原文了解详情。上一篇我们聊了 Inline Skill。它最大的优点是轻写得快、调得快、验证也快非常适合作为 Agent Skills 的第一站。但问题也很明显一旦 Skill 不再只是临时能力而是需要长期维护、共享复用甚至交给不同角色协作Inline Skill 就开始不够用了。这时候File-based Skill 的价值就出来了。它解决的核心问题不是“怎么写一个 Skill”而是“怎么把 Skill 做成一个可以沉淀、共享、分发的能力资产”。一、为什么 Skill 要从代码里走向文件结构Inline Skill 更像“当前代码里的能力”。它适合快速试验但不适合长期沉淀。因为一旦 Skill 越来越多说明、资源、动作都混在代码上下文里维护成本会迅速上升。而 File-based Skill 的思路是把 Skill 从代码片段提升为一个有组织的文件单元。这样做最大的意义不是拆文件本身而是让 Skill 开始具备资产属性• 可以单独维护• 可以跨项目复用• 可以被打包和分发• 可以让非开发人员也参与部分内容维护所以如果说 Inline Skill 解决的是“先把能力接进来”那么 File-based Skill 解决的就是“怎么把能力沉淀下来”。二、File-based Skill 的核心其实是分层一个 File-based Skill通常至少会包含三类内容•SKILL.md描述 Skill 是什么、怎么用• 资源文件提供知识、规则、背景信息• 脚本文件提供可执行动作比如一个物流报价 Skill目录就可以直接长这样shipping-rate-skill/ ├── SKILL.md ├── resources/ │ └── rate-table.md └── scripts/ └── quote-rate.csx其中SKILL.md可以负责声明这个 Skill 的身份和使用方式--- name: shipping-rate summary: Quote shipping cost by destination and weight. --- 当用户询问运费时 1. 先读取 rate-table 资源 2. 再调用 quote-rate 脚本 3. 回复中包含目的地、重量、费率和总价而scripts/quote-rate.csx则专注动作本身var destination Args[destination].GetString(); var weight Args[weightKg].GetDouble(); var rate destination US ? 8.5 : 10.0; return new { destination, weightKg weight, rate, total Math.Round(weight * rate, 2) };这类结构的价值在于一眼就能看出说明在哪里、知识在哪里、动作在哪里。SKILL.md负责“身份和说明”资源文件负责“知识”脚本文件负责“动作”。这意味着File-based Skill 本质上不是“把代码拆成几个文件”而是在做一件更重要的事把说明、知识、动作分层管理。一旦完成这一步Skill 就不再只是一个零散能力而开始变成一个结构化单元。三、为什么它特别适合共享和分发这正是 File-based Skill 最有价值的地方。因为它是文件化的所以天然比 Inline Skill 更容易搬运。你可以把一个 Skill 目录交给另一个项目也可以把它放进仓库、模板或团队共享目录里复用。更重要的是它让 Skill 的维护不再只属于开发者。比如• 产品同学可以参与SKILL.md的说明完善• 运营同学可以维护部分资源内容• 开发同学只需要聚焦脚本逻辑和装载机制这就让 File-based Skill 天然更适合团队协作。从这个角度看File-based Skill 的核心优势并不只是技术上的而是协作上的。它让 Skill 从“写给当前程序看的代码”变成“团队可以共同维护的能力资产”。四、它是怎么进入 Agent 运行链路的虽然叫 File-based但它并不是让模型直接去读某个目录。它的本质仍然是先把文件结构解析成 Skill再通过 Provider 装配到 Agent 的上下文链路里。例如var provider new AgentSkillsProvider(./skills/shipping-rate-skill); var agentOptions new ChatClientAgentOptions { Name ShippingAgent, AIContextProviders [provider] };也就是说模型真正消费的不是磁盘上的文件本身而是这些文件被组织后形成的 Skill 语义。你可以把这个过程理解成文件结构负责定义 SkillProvider 负责把 Skill 接进 Agent。所以从运行机制上看File-based Skill 和其他 Skill 写法并不是割裂的真正不同的是它对能力的组织方式。五、它和 Inline Skill 的本质差异是什么一句话概括Inline Skill 偏“快速接入”File-based Skill 偏“能力沉淀”。前者适合先验证一个能力能不能跑通后者适合把已经验证过的能力做成可以共享、可以复用、可以持续演进的资产。所以它们不是谁替代谁而是分别对应两个不同阶段• Inline先跑通• File-based再沉淀当你开始关心“这个 Skill 要不要长期存在”File-based 就会比 Inline 更合适。六、总结File-based Skill 最重要的价值不是把 Skill 拆成若干文件而是把 Skill 从临时代码提升为可组织、可共享、可分发的能力资产。它补上的是 Agent Skills 从“能用”走向“可沉淀”的这一层。下一篇我们继续聊 Class-based Skill为什么当一个 Skill 不只是要共享还要进入系统内部治理时强类型结构就开始变得重要。

更多文章