Search K
Appearance
🍵 欢迎来到技术茶馆 🍵
这里是一个分享技术、交流学习的地方
技术札记 | 茶馆周刊 | 工具书签 | 作品展示
让我们一起品茗技术,共同成长
Appearance
Agent 正在经历从"聊天机器人"到"得力干将"的进化,而 Skills 正是这场进化的关键催化剂。
你是否曾被 Agent 的"不听话"、"执行乱"和"工具荒"搞得焦头烂额?
本文将带你一文弄懂 Skills ——这个让 Agent 变得可靠、可控、可复用的"高级技能包"。我们将从 Skills 是什么、如何工作,一路聊到怎样写好一个 Skills,并为你推荐实用的社区资源,带领大家在 TRAE 中实际使用 Skills 落地一个场景。
无论你是开发者还是普通用户,都能在这里找到让你的 Agent "开窍"的秘诀。
周五下午 5 点,你盯着屏幕上那份长达 3000 字的 agent.md 规则文件,里面详细写着:
你花了整整一下午精心打磨这些规则,甚至用加粗、高亮、emoji 来强调重点。
结果呢?Agent 就像没看见一样,依然我行我素:直接操作数据库不管权限,生成的代码满屏 ESLint 报错,API 调用失败因为它压根没检查配置。
你开始怀疑人生:这些规则到底有没有被读取?
你尝试换个思路,既然写规则不管用,那就写详细的 Prompt 吧。于是你开始了 Prompt 工程的修炼之路:
每次都要重新调整 Prompt,每次结果都不太一样。这种不稳定性,让你觉得自己不是在开发,而是在抽奖。
听说 MCP(Model Context Protocol)很强大,可以给 Agent 集成各种工具。你兴冲冲地配置了一堆:文件操作工具、数据库查询工具、API 调用工具、代码分析工具。
配置文件写得漂漂亮亮,工具列表长长一串。然后你满怀期待地对 Agent 说:"帮我查询一下数据库中的用户列表"
Agent 回复:"抱歉,我没有可用的数据库查询工具"
你:???
如果上面这些场景让你感同身受,恭喜你,你不是一个人在战斗。根据社区调研,超过 80% 的 Agent 开发者都遇到过类似问题。
这些问题的根本原因是:传统的 Agent 配置方式(规则文件 + Prompt + 工具列表)是静态的、分散的、不可控的。
而 Skills,正是为了解决这些问题而生的。它提供了一种结构化、可复用、可控制的方式,让 Agent 从"不听话的助手"变成"靠谱的专家"。
"Skills" 这个概念最早由 Anthropic 公司提出,作为其大模型 Claude 的一种能力扩展机制。
2024 年初,Anthropic 团队在开发 Claude 的过程中发现:虽然大模型很聪明,但在处理特定领域任务时,往往需要大量的上下文信息。如果把这些信息全部塞进 Prompt,会导致 Token 消耗巨大、执行不稳定、难以复用。
于是,Anthropic 提出了 Skills 的概念:把完成某个特定任务所需的领域知识、操作流程、工具调用、最佳实践等,全部封装成一个独立的"技能包",让 Agent 可以按需加载和执行。
这个设计理念迅速得到了社区的认可。如今,Skills 已经成为大多数 Agent 开发工具和 IDE 都支持的一种标准扩展规范。
一个 Skills 通常以一个文件夹的形式存在,里面主要装着三样东西:
my-skill/
├── SKILL.md # 说明书(核心)
├── scripts/ # 操作脚本(可选)
│ ├── process.py
│ └── validate.sh
└── references/ # 参考资料(可选)
├── api-docs.md
└── examples.jsonSKILL.md 是核心文件,包含元数据(YAML frontmatter)和说明文档(Markdown 正文)。scripts/ 存放可执行脚本,references/ 存放参考资料。
如果还是觉得抽象,我们用一个生活化的例子来理解:
假设你要装修房子,你会怎么做?
方案 A:自己摸索(传统 Prompt 方式)
你在网上搜索"如何装修房子",然后把所有信息都告诉装修工人。问题是:信息太多工人记不住,每次都要重复一遍,工人可能理解偏差导致执行走样。
方案 B:请专业团队(Skills 方式)
你直接找一个专业的装修团队,他们自带标准流程、专业工具、经验积累。你只需要说:"我要装修房子,现代简约风格,预算 20 万",团队就能按照标准流程,使用专业工具,高质量完成任务。
Skills 就是这样的"专业团队":
如果把 Agent 比作一个有很大潜力的大脑,那 Skills 就像是给这个大脑的一套套能反复用的"高级武功秘籍"。有了它,Agent 能从一个"什么都略知一二"的通才,变成在特定领域"什么都擅长"的专家。
Skills 最巧妙的设计,就是它的三层渐进式加载机制。
为什么需要渐进式加载?如果把所有 Skills 的所有内容都一次性加载到上下文中,会导致 Token 消耗巨大、信息过载、效率低下。
解决方案:按需加载,用多少加载多少。具体怎么做?三层加载:
内容:Skills 的"名片"(name、description)
加载时机:Agent 启动时
作用:让 Agent 知道"我有哪些技能可用"
Token 消耗:极低(每个 Skills 只有几十个 Token)
内容:SKILL.md 的正文部分(工作流程、最佳实践、操作指南)
加载时机:只有当用户请求匹配 Skills 描述时,才加载
Token 消耗:中等(几百到几千 Token)
内容:详细文档、可执行脚本、参考资料
加载时机:只有在执行过程中需要时,才读取或执行
Token 消耗:几乎为零(脚本代码不进入上下文,只有执行结果进入)
Agent 是如何智能地选择并执行一个 Skills 的呢?整个过程分为四步:
在 Agent 开发中,有很多容易混淆的概念:Skills、Command、MCP……让我们用一个厨房的例子来理解:
| 概念 | 类比 | 特点 | 适用场景 |
|---|---|---|---|
| Command | 微波炉加热 | 一键完成、固定功能、快速简单 | 简单重复操作(格式化代码、运行测试) |
| MCP | 厨房用具 | 单一功能、需要手动操作、可组合 | 基础操作(文件读写、数据库查询) |
| Skills | 菜谱+厨具套装 | 完整流程、包含工具和知识、可自主执行 | 复杂多步骤任务(代码审查、文档生成) |
它们可以组合使用:一个 Skills 内部可以调用多个 MCP 工具、使用 Command 快捷指令、组合其他 Skills。
写 Skills 和写代码一样,有好坏之分。让我们通过对比来理解:
❌ Bad Skills
---
name: "代码审查"
description: "审查代码"
---
请帮我审查代码,找出问题。问题:Description 太模糊、没有具体流程、没有标准、没有示例。
✅ Good Skills
---
name: "代码审查专家"
description: "对 JavaScript/TypeScript 代码进行全面审查,检查代码规范、安全漏洞、性能问题和最佳实践"
---
## 角色定义
你是一位资深的前端代码审查专家,拥有 10 年以上的 JavaScript/TypeScript 开发经验。
## 审查流程
### 1. 代码规范检查
- 命名规范(驼峰命名、常量大写等)
- 代码格式(缩进、空格、换行)
- 注释完整性
### 2. 安全漏洞扫描
- XSS 风险点
- SQL 注入可能性
- 敏感信息泄露
### 3. 性能问题分析
- 不必要的重复计算
- 内存泄漏风险
- 可优化的循环
### 4. 最佳实践检查
- 是否遵循 SOLID 原则
- 是否有适当的错误处理
- 是否有单元测试
## 输出格式
(包含完整的输出格式示例)
## 示例
(包含完整的输入输出示例)
## 注意事项
- 不要过度吹毛求疵,关注真正重要的问题
- 提供具体的修改建议,而不是只指出问题让我们通过一个真实案例,一步步创建一个可用的 Skills。
需求背景:团队使用 Conventional Commits 规范,但新人经常写出不规范的 commit message。我们需要一个 Skills 来帮助生成规范的 commit。
---
name: "Git Commit 规范专家"
description: "根据代码变更生成符合 Conventional Commits 规范的 commit message,支持 feat/fix/docs/style/refactor/test/chore 等类型"
---## 角色定义
你是一位经验丰富的 Git 工作流专家,深谙 Conventional Commits 规范。
## Conventional Commits 规范
### 格式
<type>(<scope>): <subject>
<body>
<footer>
### Type 类型
- feat: 新功能
- fix: Bug 修复
- docs: 文档变更
...
## 工作流程
1. 分析代码变更内容
2. 判断 commit 类型
3. 确定影响范围
4. 编写简洁的主题
5. 如有必要,添加详细说明## 示例
### 示例 1:新功能
**代码变更**:添加了用户登录功能
**输出**:
feat(auth): add user login functionality
Implement JWT-based authentication with email and password.
Includes login form validation and error handling.
Closes #45## 注意事项
### ✅ 应该做的
- 使用现在时、祈使句
- 主题简洁明了,50 字符以内
- Breaking Changes 必须在 footer 中明确标注
### ❌ 不应该做的
- 不要使用模糊的描述
- 不要在主题中使用句号
- 不要在一个 commit 中混合多种类型的变更实际测试这个 Skills,收集不符合预期的情况,分析原因并优化。
📚 官方 Skills 仓库:https://github.com/anthropics/skills
| Skills 名称 | 功能描述 | 适用场景 |
|---|---|---|
| code-review | 代码审查专家 | 检查代码规范、安全漏洞、性能问题 |
| frontend-design | 前端设计专家 | 创建现代化的响应式页面 |
| api-design | API 设计专家 | 设计 RESTful API,生成 OpenAPI 文档 |
| database-schema | 数据库设计专家 | 设计数据库结构,优化查询性能 |
| testing | 测试专家 | 编写单元测试、集成测试 |
| documentation | 文档专家 | 生成技术文档、API 文档 |
评估标准:
选择建议:
TRAE 提供了三种创建 Skills 的方式:
Cmd + ,(Mac)或 Ctrl + ,(Windows)打开设置面板.trae/skills/my-skill/ 目录TRAE 中内置了 skills-creator Skills,你可以直接对话创建:
你:帮我创建一个 Skills,用于生成 API 文档
Agent:好的,我来帮你创建...在 TRAE 里使用 Skills 很容易,只需在对话框中用日常语言说明你的需求:
你:帮我设计一个有科技感的登录页面
Agent:(自动调用 "frontend-design" Skills)
好的,我来为你设计一个现代科技感的登录页面...Spec Coding 提倡"先思考后行动",通过详细定义可以执行的需求规范(Specification)来推动 AI 开发。流程包含"需求分析、技术设计、任务拆解"的文档编写,最后让 AI 根据规范完成编码。
我们需要:
| Skills 名称 | 职责 | 输入 | 输出 |
|---|---|---|---|
| 需求分析专家 | 分析用户需求,输出需求文档 | 用户描述 | 需求分析文档(飞书) |
| 技术设计专家 | 设计技术方案,输出设计文档 | 需求文档 | 技术设计文档(飞书) |
| 任务拆解专家 | 拆解开发任务,输出任务清单 | 设计文档 | 任务清单文档(飞书) |
| 代码实现专家 | 根据任务清单编写代码 | 任务清单 | 代码文件 |
通过不同角色 Skills 的分工协作,借助飞书文档形成协作闭环,有效解决了 Agent "不听话、执行乱、工具少" 的问题,让 AI 从 "对话助手" 真正转变为 "可信赖的实干家"。
A: 十有八九是你的 Description 没写好。Agent 通过 Description 判断什么时候该用哪个 Skills。
改进建议:
A: 会有影响。更强大的模型主要影响"挑选"和"安排" Skills 的能力,而 Skills 本身决定了执行的稳定性。
A: 不是。Skills 擅长处理流程明确、边界清晰的任务,不擅长高度创造性的任务、实时动态决策、单纯的知识问答。
A: 当然可以!大多数 Skills 都支持 Fork 并进行二次开发。
A: 有可能,但可以通过明确 Description、定义优先级、手动指定来避免。
A: 可以,而且这是一个强大的功能。
A: 设计得当的话,开销很小。元数据约 50 Token,说明文档 500-2000 Token,脚本几乎不消耗 Token。
A: 查看 Agent 思考过程、测试 Description 匹配、逐步测试、添加日志、版本对比。
Skills 的出现,为 AI 从"对话式助手"转变为"可信赖的执行者"搭建了关键的技术桥梁。
它用结构化的方法把领域知识、操作流程和工具调用逻辑封装起来,解决了 Agent 规则失效、执行失控的混乱问题,让 AI 的能力输出变得可以控制、值得信赖且高效。
精准击中痛点:通过三级加载机制,在功能深度和上下文效率之间找到绝佳平衡。
生态赋能,降低门槛:官方和社区提供丰富资源,让普通用户也能快速复用成熟能力。
随着 AI 模型能力的提升与 Skills 生态的进一步完善,我们有望看到:
不妨从今天开始,尝试创建你的第一个 Skills:
将你最擅长的领域经验封装成可复用的能力,让 AI 成为你延伸专业价值的放大器。
作者:咸鱼,TRAE 开发者用户
扩写:基于原文核心要点深度扩展
最后更新:2024-01-22