Agent Skills 实战:用 SKILL.md 给 AI Agent 装一份可检索的“带目录说明书”

发布时间:2026/9/27 12:36:24

Agent Skills 实战:用 SKILL.md 给 AI Agent 装一份可检索的“带目录说明书” 1. 当 Agent 能力越堆越多为什么反而变笨了如果你最近在 Claude Code、Cursor 或者 OpenCode 里给 AI Agent 加过能力大概率遇到过这个场景一开始只挂两三个工具Agent 干活又快又准后来你把团队里所有脚本、规范、模板都塞进系统提示词结果它开始答非所问明明该调用 A 技能却调了 B甚至把不相关的流程也硬套进来。问题不在模型而在组织方式。所有能力都平铺在上下文里Agent 每次启动都要把全部内容读一遍token 消耗暴涨注意力被稀释调用自然混乱。这就像你给一个新员工一本没有目录、没有章节、所有内容糊在一起的万字手册他找一条报销规则要翻半小时。Agent Skills 想解决的就是这件事。它把能力拆成一个个独立文件夹每个文件夹里放一份SKILL.md作为入口Agent 启动时只读每个技能的name和description相当于先看目录等任务真正匹配到某个技能才加载完整正文。这个机制叫渐进式上下文加载Progressive Disclosure是 Skills 区别于普通提示词模板的核心。这篇面向已经在用 Claude Code 等工具、想让 Agent 能力可维护的开发者。我会先讲清楚SKILL.md的目录骨架再给出技能注册配置的可复制片段最后演示新增一个技能后怎么验证 Agent 能正确命中它。全程围绕“带目录说明书”这个思路展开不堆概念。2. 前置准备TaoToken 接入与 Skills 运行环境在动手写技能之前得先让 Claude Code 这类工具能稳定跑起来。我自己的做法是通过 TaoToken 统一接入模型好处是 API Key 和接入地址集中管理后面切换模型或做多技能验证时不用反复改配置。TaoToken 的官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 。注意 API 地址不带 UTM 参数配置时直接填这个。你需要先拿到 API Key。登录后进入控制台在 API Keys 页面创建一个新 Key复制保存。这个 Key 就是后面settings.json里的ANTHROPIC_AUTH_TOKEN。Claude Code 的配置目录在用户主目录下的~/.claude/。如果目录不存在就手动创建。核心是settings.json它负责告诉 Claude Code 用哪个后端、超时多久、是否关闭非必要流量。下面是我实测可用的配置片段{ env: { ANTHROPIC_AUTH_TOKEN: 你的 TaoToken API Key, ANTHROPIC_BASE_URL: https://taotoken.net/api, API_TIMEOUT_MS: 3000000, CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: 1 } }这里ANTHROPIC_BASE_URL填 TaoToken 的 API 地址API_TIMEOUT_MS设大一点因为技能执行时可能涉及脚本运行和多次模型往返超时太短会中途断掉。CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC设为 1 可以关掉一些非必要的遥测请求让日志更干净。另外还要处理首次登录引导。在~/.claude.json里加上{ hasCompletedOnboarding: true }这样启动时不会卡在登录流程。配置完成后在终端执行claude能正常进入对话就说明后端通了。如果这一步报 401 或连接超时先检查 Key 是否复制完整、API 地址有没有多带斜杠。提示TaoToken 的接入文档在 https://taotoken.net/doc 里面有各语言 SDK 和常见报错说明配置卡住时可以先翻这里。3. SKILL.md 目录骨架与技能注册配置Skills 的本质是一个文件夹SKILL.md是必须的入口文件其余目录都是可选的资源。一个标准的技能目录长这样my-skill/ ├── SKILL.md # 必须元数据 执行说明 ├── scripts/ # 可选可执行脚本 ├── references/ # 可选参考文档 └── assets/ # 可选模板与资源SKILL.md的结构分两部分顶部的 YAML frontmatter 和下面的 Markdown 正文。frontmatter 负责技能发现与匹配正文负责执行说明。骨架如下--- name: bill-analysis description: 读取账单截图OCR 提取文字清洗后导出报销用 CSV。当用户需要汇总账单、生成报销单时使用。 --- # 账单分析 ## 何时使用 当用户提供账单图片或文件夹路径并要求汇总、报销、导出表格时使用本技能。 ## 执行步骤 1. 读取输入路径下的 png、jpg、pdf 文件 2. 调用 OCR 提取文字 3. 抽取商户名称、消费日期、金额、支付方式 4. 去重并导出 CSV表头为序号 | 商户名称 | 消费日期 | 金额(元) | 支付方式 | 备注 ## 注意事项 - 金额统一保留两位小数 - 日期格式统一为 YYYY-MM-DD - 无法识别的条目单独列出不要丢弃name和description是 Agent 启动时唯一会读到的字段所以 description 要写清楚“做什么”和“什么时候用”这是命中率的关键。正文只在技能被激活后才加载可以写得很细。技能注册有两种方式。一种是放在 Claude Code 默认扫描的技能目录下通常是~/.claude/skills/每个技能一个子文件夹。另一种是在项目根目录建.claude/skills/只对当前项目生效。我一般把通用技能放全局项目专属的放项目里。注册后可以用一个清单文件做索引方便自己管理{ skills: [ { name: bill-analysis, path: ~/.claude/skills/bill-analysis, enabled: true }, { name: commit-work, path: ~/.claude/skills/commit-work, enabled: true } ] }这个清单不是 Claude Code 强制要求的但当你技能多了以后用它来记录哪些启用、哪些停用比翻目录快得多。4. 验证请求新增技能后 Agent 能否正确命中写完技能不算完得验证 Agent 真的会在合适的时候调用它。我新增一个“日志分析”技能来演示完整流程。先创建目录和文件mkdir -p ~/.claude/skills/log-analysis然后写入SKILL.md--- name: log-analysis description: 分析应用日志文件统计错误类型、出现频次和首次出现时间。当用户提供 .log 文件并要求排查错误、统计异常时使用。 --- # 日志分析 ## 何时使用 用户提供日志文件路径要求统计错误、定位异常、分析频次时使用。 ## 执行步骤 1. 读取指定 .log 文件 2. 用正则匹配 ERROR、WARN、FATAL 级别行 3. 按错误信息聚合统计出现次数 4. 记录每条错误的首次出现时间 5. 输出 Markdown 表格错误信息 | 级别 | 次数 | 首次出现 ## 注意事项 - 大文件按行流式读取避免一次性载入内存 - 时间戳格式不统一时先归一化保存后重启 Claude Code让它重新扫描技能目录。然后发一条测试请求帮我分析 /tmp/app.log统计里面的错误类型和出现次数如果命中成功Agent 会先说明它要使用 log-analysis 技能然后按步骤执行最后输出一张错误统计表。如果它没有调用技能而是自己临时写了一段分析逻辑说明 description 没匹配上需要调整措辞把用户可能说的关键词日志、错误、统计、排查都覆盖进去。再测一个反向用例确认不会误触发帮我分析一下这段 Python 代码的性能这条请求里没有日志文件也没有排查错误的需求Agent 不应该调用 log-analysis。如果它调用了说明 description 写得太宽泛需要加上“当用户提供 .log 文件时”这类限定条件。实测下来命中率主要取决于 description 的精准度。我的经验是把“做什么”和“触发条件”分开写触发条件里尽量包含用户的原话词汇。5. 本篇常见错排查技能不生效时按下面几个方向逐个排查。技能没被扫描到。检查目录层级是否正确。Claude Code 扫描的是~/.claude/skills/下的直接子目录每个子目录里必须有SKILL.md。如果你把技能放在~/.claude/skills/foo/bar/SKILL.md它可能扫不到。用ls ~/.claude/skills/*/SKILL.md确认每个技能入口都在。frontmatter 格式错误。YAML 对缩进和冒号很敏感。name和description必须顶格冒号后面要有空格。如果 description 里含冒号要用引号包起来。可以用在线 YAML 校验工具过一遍或者直接看 Claude Code 启动日志里有没有解析报错。description 匹配不上。这是最常见的问题。Agent 只靠 name 和 description 做匹配正文它看不到。所以 description 要写成“用户会怎么描述这个需求”的样子而不是“这个技能技术上做了什么”。比如写“当用户需要汇总账单、生成报销单时使用”比写“基于 OCR 的账单处理”命中率高得多。技能之间互相抢。如果两个技能的 description 覆盖了相似场景Agent 可能随机选一个。解决办法是在 description 里加排他条件比如“仅当输入为图片时使用”“仅当涉及 Git 提交时使用”。脚本执行失败。如果技能正文里调用了scripts/下的脚本要确认脚本有执行权限依赖也装好了。Skills 比 MCP 更依赖本地环境脚本路径写相对路径时基准目录是技能文件夹本身不是项目根目录。改了 SKILL.md 不生效。Claude Code 在启动时加载技能元数据改完要重启。如果只想快速验证可以退出当前会话重新进。注意排查时优先看 Claude Code 的启动输出它会打印加载了哪些技能。如果某个技能没出现在列表里问题一定在目录结构或 frontmatter而不是 description。6. 把技能组织成可检索的目录才是长期解法回到开头那个问题能力堆叠后 Agent 变笨根因是上下文没有分层。Skills 用SKILL.md做入口、用 frontmatter 做索引、用渐进式加载做按需读取本质上是给 Agent 装了一份带目录的说明书。目录负责“找得到”正文负责“做得好”两者分开上下文就不会膨胀。如果你打算把这套东西用在长期编码或 Agent 工作流里建议配合 Coding Plan 来管理调用额度入口在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。日常验证模型对技能的理解是否到位可以直接在模型对话里试地址是 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。需要新建或轮换 Key 时去 API Keys 页面 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。我自己的习惯是每加一个技能先写 description再写正文最后一定跑一遍正向和反向用例。description 改三遍以上是常事但改完之后 Agent 的调用准确率会明显不一样。技能多了以后维护那份清单文件比什么都重要它就是你这份说明书的目录页。
延伸阅读

更多相关文章

2026/9/27 13:31:26

Linux边缘计算工控机实战:Ubuntu+Node-RED+EMQX+IoTDB搭建边缘数据管道

1. 从一块工控机新品说起:Linux边缘计算到底在解决什么问题前阵子圈子里不少人在聊智嵌物联新发的Linux边缘计算工控机,我拿到消息的第一反应不是去看它的CPU型号或者接口数量,而是想搞清楚一个更本质的问题:为什么现在做工业控制…

2026/9/27 13:31:26

工业电压传感器VSA101-G270T03-I全解析:原理、选型与实操

1. 从型号到实物:VSA101-G270T03-I 到底是个什么东西第一次拿到 VSA101-G270T03-I 这个型号的人,大概率会愣一下——字母加数字的组合看起来像某种密码,而不是一个能直接说清楚用途的产品名。我最早接触这类器件是在做一套工业配电柜的改造项…

2026/9/27 13:31:26

青岛网页设计避坑指南:被黑后重建的完整流程与规范

青岛网页设计避坑指南:被黑后重建的完整流程与规范 网站突然弹窗广告、浏览器提示“不安全”,后台代码多出几行乱码,这时候千万别慌着直接删库重装。很多青岛本地企业主遇到这种情况,第一反应是找之前做站的“野路子”团队,结果往往越修越乱,甚至导致服…

2026/9/27 13:31:26

网站被黑挂马?2026最新免费网站源码下载器避坑指南

网站被黑挂马?2026最新免费网站源码下载器避坑指南 网站突然打不开,浏览器弹窗全是博彩广告,后台登录密码怎么改都没用?别慌,这通常是你的服务器被植入恶意代码,也就是俗称的“挂马”。很多站长第一反应是删代码,但往往删不干净,因为后门脚本已经…

2026/9/27 13:26:26

3步搞定网页制作网站创建,免费工具帮你避开域名服务器坑

3步搞定网页制作网站创建,免费工具帮你避开域名服务器坑 是不是每次听到“域名”和“服务器”这两个词,脑子里就一片浆糊?很多甲方朋友在对接网页制作网站创建项目时,最大的痛点就是搞不懂这两者的关系,生怕买错了或者配置错了导致网站打不开,甚至多花…

2026/9/27 0:00:45

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/27 0:00:45

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:45

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/27 0:00:45

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/27 0:00:45

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:45

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/25 20:55:38

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/26 19:58:38

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/25 18:34:56

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑