首页/新闻资讯/正文详情

AI Skills技能系统实战:用SKILL.md让Agent自动变强

发布时间:2026/9/26 10:39:25 来源:云帆数科 栏目:资讯中心
AI Skills技能系统实战:用SKILL.md让Agent自动变强
1. 为什么你的 Agent 总是“差点意思”如果你正在用 deepagents 搭 Agent大概率遇到过这种场景模型本身能力不差但一到具体任务就开始“自由发挥”——让它审查代码它给你写一段泛泛而谈的点评让它按团队规范生成文档它按自己的理解来一套。问题不在模型而在于你没有把“专业能力”以结构化的方式喂给它。AI Skills 技能系统解决的就是这件事。你可以把它理解成给 Agent 装 App每个 Skill 是一个独立的功能单元里面封装了特定领域的指令、脚本和参考资料。Agent 在收到请求时先扫描所有技能的元数据做语义匹配命中后把该技能的完整指令加载进上下文再按步骤执行。整个过程对用户透明你只管表达意图Agent 自己找技能、用技能。这套机制的核心载体是一个叫SKILL.md的文件。它由两部分组成开头的 YAML Frontmatter 定义技能名称和描述后面的 Markdown 正文写具体执行指令。描述字段尤其关键它直接决定 Agent 能不能在正确的时机找到这个技能。一个写得好的 description 应该简洁、包含触发条件让 Agent 一看就知道“什么场景下该用我”。这篇文章面向正在使用 deepagents 和 FilesystemBackend 的开发者我会从目录结构讲起给出技能注册的配置骨架然后通过 TaoToken 统一 Key/API 通道接入最后演示 Agent 加载技能后自动增强的完整验证步骤。全程可跟做代码可直接复制。2. 前置准备TaoToken 统一 Key 与 API 通道在写 Skill 之前先把模型接入这层理顺。deepagents 底层依赖 LangChain 的模型初始化而很多开发者在多模型切换时最头疼的就是 Key 和 base_url 的管理。我的做法是用 TaoToken 做统一入口一个 Key 走通所有模型调用省去到处配环境变量的麻烦。TaoToken 的 API 地址是https://taotoken.net/api你需要在控制台创建一个 API Key。拿到 Key 之后把它写进项目的.env文件不要硬编码在代码里。下面是我实际使用的.env结构# .env TAOTOKEN_API_KEYsk-你的key TAOTOKEN_BASE_URLhttps://taotoken.net/api TAOTOKEN_MODELgpt-4o-mini这里TAOTOKEN_MODEL可以换成你需要的任何模型标识TaoToken 会根据模型名路由到对应的上游。如果你还没创建 Key可以去控制台的 API Keys 页面生成一个建议按项目分 Key方便后续排查用量。注意deepagents 目前不支持通过init_chat_model直接构造的模型对象需要调整初始化方式。下面第 3 节会给出可用的写法。环境准备好之后安装依赖pip install deepagents python-dotenv langchain langchain-community装完之后先别急着写 Skill我们先把目录结构定下来这是整个技能系统能跑通的基础。3. SKILL.md 目录结构与技能注册配置骨架3.1 目录结构设计一个 Skill 的标准目录长这样skills/ └── code-review/ ├── SKILL.md # 必需技能指令和元数据 ├── scripts/ # 可选可执行脚本 │ └── review.py └── references/ # 可选参考文档、示例数据 └── rules.mdSKILL.md是唯一必需的文件。scripts/放 Python、Shell 等可执行脚本Agent 可以在指令中调用它们。references/放辅助资料比如团队编码规范、示例输入输出Agent 需要时会读取。3.2 SKILL.md 文件写法Frontmatter 用 YAML 格式定义name和description。description 要包含触发条件这是 Agent 做语义匹配的依据。正文部分写具体执行步骤。--- name: code-review description: 审查代码质量、检查常见问题。当用户要求代码审查、review 代码、检查代码规范时使用。 --- # 代码审查 审查代码文件检查以下问题 - 语法错误和潜在 Bug - 代码风格和规范性 - 性能问题 - 安全隐患 ## 使用方法 当用户要求审查代码时执行 python /skills/code-review/scripts/review.py file_path ## 输出格式 按严重程度分类 - 严重问题必须修复 - 警告建议改进 - 提示可选优化description 里我特意加了“当用户要求代码审查、review 代码、检查代码规范时使用”这三个短语覆盖了用户可能的表达方式能显著提高匹配命中率。如果你只写“审查代码”用户说“帮我看看这段代码有没有问题”时可能就匹配不上。3.3 技能注册配置骨架deepagents 的create_deep_agent通过skills参数指定技能目录。这里有个容易忽略的点默认使用的是内存后端StateBackend它读不到本地文件系统。要加载磁盘上的 Skill 文件必须显式传入FilesystemBackend。import os from dotenv import load_dotenv from deepagents import create_deep_agent from deepagents.backends import FilesystemBackend from langchain.chat_models import init_chat_model from langchain_core.tools import BaseTool from langchain_community.tools import WriteFileTool, ReadFileTool, ListDirectoryTool load_dotenv() # 使用 configurable_fields 创建可配置模型 model init_chat_model( model_provideropenai, configurable_fields[model, api_key, base_url], config_prefixTAOTOKEN ).with_config({ configurable: { TAOTOKEN_model: os.getenv(TAOTOKEN_MODEL), TAOTOKEN_api_key: os.getenv(TAOTOKEN_API_KEY), TAOTOKEN_base_url: os.getenv(TAOTOKEN_BASE_URL) } }) os.environ[OPENAI_API_KEY] os.getenv(TAOTOKEN_API_KEY) os.environ[OPENAI_BASE_URL] os.getenv(TAOTOKEN_BASE_URL) model fopenai:{os.getenv(TAOTOKEN_MODEL)}这里config_prefix设为TAOTOKEN对应的环境变量就是TAOTOKEN_model、TAOTOKEN_api_key、TAOTOKEN_base_url。这样配置的好处是模型、Key、base_url 三者解耦换模型时只改.env里的TAOTOKEN_MODEL即可代码不用动。接下来定义工具和创建 Agentclass CalculateTool(BaseTool): name: str calculate description: str 计算数学表达式的值 def _run(self, expression: str) - str: try: return f计算结果: {eval(expression)} except Exception as e: return f计算错误: {str(e)} async def _arun(self, expression: str) - str: return self._run(expression) calculate CalculateTool() write_file WriteFileTool() read_file ReadFileTool() list_dir ListDirectoryTool() agent create_deep_agent( modelmodel, tools[calculate, write_file, read_file, list_dir], system_prompt你是一个助手会用工具计算、读写文件、列出目录。, skills[skills], backendFilesystemBackend(root_diros.getcwd()), debugTrue )skills[skills]告诉 Agent 去skills目录下扫描所有SKILL.md。backendFilesystemBackend(root_diros.getcwd())让 Agent 能读取当前工作目录下的文件。debugTrue会打印技能匹配和加载的日志调试阶段建议开着。4. 验证请求Agent 加载技能后自动增强配置写好了怎么确认技能真的被加载并生效我设计了一组查询来验证覆盖技能匹配、工具调用、文件读写三个维度。queries [ 审查 mcp_weather.py 代码, 计算 2024*12500然后把结果保存到 result.txt, 读取 result.txt 的内容, 列出当前目录文件 ] for q in queries: print(f\n问{q}) result agent.invoke({messages: [{role: user, content: q}]}) print(f答{result[messages][-1].content})跑起来之后重点观察第一个查询。当输入“审查 mcp_weather.py 代码”时Agent 会先扫描skills目录下所有SKILL.md的 Frontmatter提取出code-review这个技能的 name 和 description生成可用技能列表。然后把用户请求和列表里的 description 做语义匹配命中code-review后调用load_skill方法把该技能的完整 Markdown 指令加载到对话上下文中。最后 Agent 按照指令里的步骤调用review.py脚本执行审查返回结果。如果你开了debugTrue控制台会打印类似这样的日志[Skill] Scanning skills directory... [Skill] Found: code-review - 审查代码质量、检查常见问题... [Skill] Matching query: 审查 mcp_weather.py 代码 [Skill] Matched: code-review [Skill] Loading skill: code-review [Skill] Executing: python /skills/code-review/scripts/review.py mcp_weather.py看到Matched: code-review和Loading skill这两行就说明技能系统正常工作了。第二个查询验证的是工具调用链Agent 先调calculate算出结果再调write_file写入文件。第三个查询验证read_file能读回内容。第四个验证list_dir。实测下来加了 Skill 之后最明显的变化是以前让它审查代码它会输出一段通用点评现在它会按SKILL.md里定义的分类格式输出严重问题、警告、提示分得清清楚楚而且会真的去调用review.py脚本而不是凭空生成。5. 本篇常见错排查5.1 技能没被匹配到最常见的原因是 description 写得太窄。比如只写“审查代码”用户说“帮我看看这段代码有没有问题”就匹配不上。解决办法是在 description 里补充同义触发词用逗号分隔。另外检查skills参数路径是否正确skills[skills]是相对路径相对于FilesystemBackend的root_dir。5.2 报错 “StateBackend cannot read local files”这是没传FilesystemBackend导致的。create_deep_agent默认用内存后端读不到磁盘文件。加上backendFilesystemBackend(root_diros.getcwd())即可。注意root_dir要指向包含skills目录的父目录。5.3 模型初始化报错 “init_chat_model object has no attribute”deepagents 目前不支持直接传init_chat_model构造的模型对象。需要用configurable_fields方式创建然后通过with_config注入配置最后用fopenai:{model_name}字符串形式传给create_deep_agent。上面第 3.3 节的代码就是可用的写法。5.4 脚本执行权限问题SKILL.md里写的python /skills/code-review/scripts/review.py是绝对路径。如果你的root_dir不是/这个路径会找不到文件。建议改成相对路径python skills/code-review/scripts/review.py或者用os.path.join动态拼接。另外确认脚本有可执行权限Linux/macOS 下chmod x review.py。5.5 API 调用返回 401 或 404检查.env里的TAOTOKEN_API_KEY和TAOTOKEN_BASE_URL是否正确。base_url 应该是https://taotoken.net/api不要多加/v1或结尾斜杠。如果用的是自定义模型名确认 TaoToken 控制台里该模型可用。401 通常是 Key 无效404 通常是 base_url 或模型名写错。6. 把技能系统用起来Skill 系统的价值在于模块化。你可以为团队常用的每个任务写一个 Skill代码审查、文档生成、数据分析、接口测试。每个 Skill 独立开发、独立测试、独立复用。新成员加入时不用口头传授规范把SKILL.md给他看就行Agent 会自动按规范执行。如果你想让 Agent 在长期编码任务中持续变强建议把常用 Skill 沉淀到项目仓库里配合 TaoToken 的 Coding Plan 做统一模型调度。需要生成新 Key 或查看用量去控制台的 API Keys 页面操作。接入文档里有更详细的参数说明和示例遇到报错可以先对照排查。最后留一个实用技巧SKILL.md的 description 字段值得反复打磨。我通常会拿 10 条真实用户请求做测试看命中率。如果某条没命中就把那条请求里的关键词补进 description。迭代两三轮之后匹配准确率会有明显提升。

相关推荐

ClaudeCode Skills 配置 TaoToken:SKILL.md 与 YAML 骨架实战
ClaudeCode Skills 配置 TaoToken:SKILL.md 与 YAML 骨架实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 10:39:19

CNN_LSTM时间序列预测效果差?用TaoToken统一通道排查配置与调参
CNN_LSTM时间序列预测效果差?用TaoToken统一通道排查配置与调参

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 10:39:19

OpenClaw、Hermes、Superagent 三条 Agent 路线怎么选?TaoToken 统一 Key 接入配置实战
OpenClaw、Hermes、Superagent 三条 Agent 路线怎么选?TaoToken 统一 Key 接入配置实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 10:39:19

SST固态变压器技术漫谈【5】采样、驱动与保护系统设计
SST固态变压器技术漫谈【5】采样、驱动与保护系统设计

模块五 采样、驱动与保护系统完整设计 摘要:本章围绕 10 kV / 1 MVA 固态变压器(SST)的采样、驱动与保护三大子系统展开完整设计。采样体系覆盖 16 类关键信号,强调多通道同步采样(偏差 ≤1 μs)与五层抗干扰设计;驱动电路聚焦 SiC/IGBT 的防误导通、驱动电阻匹配与串扰… · 2026/9/26 11:10:59

SST固态变压器技术漫谈【6】PCB、结构与绝缘散热专项设计要点
SST固态变压器技术漫谈【6】PCB、结构与绝缘散热专项设计要点

模块六 PCB、结构与绝缘散热专项设计 摘要:本模块围绕 SST(固态变压器)的工程化落地,系统讲解高压 PCB 布局、爬电与电气间隙、高频散热、高压绝缘工艺及结构工况适配五大专项。核心要点:① 功率回路最小化是第一优先级,用叠层母排把回路电感压到 100 nH 以内;② 高压与… · 2026/9/26 11:10:59

窗口管理程序
窗口管理程序

窗口管理程序(CKGL) 点此下载最新版本(蓝奏云盘)密码:CKGL 点此前往GitCode下载 点此前往GitHub下载 以下是v1.26.09.23部分界面截图 上方界面点击“更改样式”按钮可以进入下方界面 此程序由DEFCONG编写 点此下载最新版本(蓝奏云盘)密码:CKGL · 2026/9/26 11:10:59

Qt — 布局管理器
Qt — 布局管理器

目录 1. 垂直布局 2. 水平布局 3. 网格布局 4. 表单布局(行为N,列固定为2) 5. Spacer 之前使⽤ Qt 在界⾯上创建的控件, 都是通过 "绝对定位 (手动)" 的⽅式来设定的. 也就是每个控件所在的位置, 都需要计算坐标, 最终通过 se… · 2026/9/26 11:10:59

第1章:开发环境搭建,安装乌班图系统
第1章:开发环境搭建,安装乌班图系统

专栏导航 上一篇:第1章:开发环境搭建,安装 VMware 虚拟机 回到目录 下一篇:第1章:了解乌班图环境,命令行中的提示文字 本节前言 对于本节所讲解的知识,有可能,你会需要时不时地参… · 2026/9/26 11:10:59

【STM32开源项目】智能家用垃圾桶
【STM32开源项目】智能家用垃圾桶

目录 一、项目概述 二、实现功能 1、功能详解: 2、项目清单: 3、演示视频: 三、硬件介绍 PCB硬件设计: 四、程序设计 五、项目成品效果图 六、项目总结 七、包含资料 一、项目概述 本项目基于STM32F103C8T6单片机&… · 2026/9/26 11:10:53

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码