Skills

文章目录

  • [1 什么是 Skills](#1 什么是 Skills)
  • [2 Skills 与 MCP](#2 Skills 与 MCP)
  • [3 OpenCode使用skill](#3 OpenCode使用skill)
  • [4 Skill规则](#4 Skill规则)
  • [5 OpenCode自定义skill](#5 OpenCode自定义skill)
  • [5 Agent 开发skill](#5 Agent 开发skill)

1 什么是 Skills

Skills 是一套「让模型在合适的时候,临时学会一项新能力」的机制。

  • 合适的时候: 精准触发,不浪费计算资源与上下文空间。
  • 临时:按需调用,任务结束后不长期占用模型注意力。
  • 新能力:突破模型原生限制,实现如 PDF 解析、代码执行等扩展功能。

"裸模型"无法胜任复杂任务

模型天生只会"理解和生成文本",并不具备解析复杂结构(如 PDF、 Excel)的内置能力。

面对"总结 PDF 第二页"等任务,模型常因缺乏工具而回答"我做不到"。

在此之前的解决方法常见为如下三种:

  1. 硬塞 Prompt 规则:导致上下文过长,注意力稀释,成本飙升。
  2. 外部代码喂数据:流程繁琐,难以实现真正的自动化与实时交互。
  3. 全量工具协议 (MCP) :无论是否使用,全量加载规则,导致高延迟与高成本。

从 Prompt 到"按需加载"的进化

核心创新:将「能力说明」从 Prompt 中彻底拆分:

  • 模型可见层:仅包含 Skill 名称与描述。模型平时只知道"我有这项能力",用于判断何时触发。
  • 默认隐藏层:包含具体执行规则、调用方式与细节。只有在任务命中时,才会动态加载到上下文中。
  • 进化优势:极大节省 Token 消耗,降低成本,同时避免模型注意力被无关规则稀释。

像人类一样:用时才翻说明书。

Skills 采用按需加载(Lazy Load)机制,优化资源占用。

2 Skills 与 MCP

Skills 与 MCP 对比:

  • Skills 模式:脑子里"知道有这项技能",但只有在用的时候,才去翻说明书。
  • MCP 模式:每次做事前,先把所有说明书通通摊在桌子上。

Skills 采用渐进式披露(Progressive Disclosure),将复杂度藏在幕后,仅在关键决策点呈现必要信息。

MCP 采用全量暴露策略,依赖模型自身的注意力机制去处理海量规则, 对模型"智商"要求极高。

核心差异:工程思维 vs 协议思维

Skills 关注如何降低模型负担,MCP 关注如何统一接口标准。

加载方式与决策逻辑的降维打击、无限扩展性与工程思维的胜利:

分类 Skills (按需加载) MCP (全量协议)
加载方式 只加载"名字 + 描述",真正用到时才加载执行细节。极大节省上下文空间,降低 Token 成本。 每次对话都全量加载所有工具规则。不管用不用,规则始终占据上下文,导致成本线性上涨。
决策逻辑 模型先判断"要不要用",再决定"用哪一个"。体现了更高级的智能体自主决策特征。 工具集强行摆在模型面前。模型只能在已有规则里被动选择,更像是一个传统的"工具箱"。
可扩展性对比 支持无限添加 Skill,模型仅在需要时加载,不会显著拖慢对话速度或增加系统延迟,适合构建复杂的大型 AI 系统。 工具数量与成本、延迟呈线性正相关。工具一多,上下文即刻爆炸,难以支撑大规模工业级应用。
设计哲学差异 体现了现代软件工程的模块化思维。将复杂度藏在幕后,仅在关键时刻呈现,让模型注意力始终保持高效聚焦。 倾向于一次性暴露所有规则,过度依赖模型自身的处理能力来应对复杂度,缺乏工程上的优雅与灵活性。
结论 更省钱、更高效 更像"智能体"

3 OpenCode使用skill

安装 OpenCode 需要 Node.js 环境,是运行的基础。

安装命令:

shell 复制代码
npm install -g opencode-ai

启动:

shell 复制代码
opencode

添加官方 skill,GitHub 地址:https://github.com/anthropics/skills

下载后,在 C:\Users\用户名\.config\opencode\skill 目录下添加所有官方的 skills。

测试

调用 pdf 工具读取 pdf 内容,还可以自己解决读取中出现的乱码等问题(需要先安装python解释器):

内容如下:

4 Skill规则

首先介绍一下一个标准的 skill 规范。

根据 anthropic 官方描述:一个 skill 就是一个标准的目录结构,必须包含 SKILL.md,格式如下:

plain 复制代码
your-skill-name/
├── SKILL.md # 必填,主要技能文件
├── scripts/ # 可选,可执行代码
│ ├── process_data.py # 示例
│ └── validate.sh # 示例
├── references/ # 可选,agent 可查阅的文档资料
│ ├── api-guide.md # 示例
│ └── examples/ # 示例
└── assets/ # 可先,相关静态资源文件,图片、文档等
 └── report-template.md # 示例

skill 文件夹命名规则:

  • 不能有大小写:YourSkillName;
  • 不能有空格:your skill name;
  • 不能有下划线: your_skill_name;
  • 使用驼峰命名法:your-skill-name;

不能存在 README.md 在文件夹下,所有的文献都应该在 references 目录下。

SKILL.md 格式规范:文件 SKILL.md 必须包含 YAML 前置元数据,后置 Markdown 格式的说明内容。

示例:

markdown 复制代码
---
name: skill-name
description: This skill should be used when...
license: Apache-2.0
metadata:
  author: example-org
  version: "1.0"
allowed-tools: Bash(git:*) Bash(jq:*) Read
---

# 技能名称
正文:功能说明、使用方法、可用资源列表等。

前置元数据内容解释

名称 是否必需 约束条件
name 最多64个字符,要与 skill 文件夹名称一致。仅限小写字母、数字和连字符。不得以连字符开头或结尾。
description 最多 1024 个字符,不然会被截断。 描述技能的效果以及何时使用。
license 许可证名称或捆绑许可证文件的引用。
compatibility 最多 500 个字符。说明环境要求(目标产品、系统软件包、网络访问等)。
metadata 任意键值映射,用于添加元数据。
allowed-tools 技能可使用的预先批准工具列表,以空格分隔。(实验性功能,不同 agent 规则可能不同)

MD 说明部分推荐章节:

  • 分步说明
  • 输入和输出示例
  • 常见边界情况

由于 agent 会在决定激活技能时加载整个文件,因此建议将较长的 SKILL.md 内容拆分成多个引用文件

文件引用使用相对于技能根目录的相对路径,如 See [the reference guide](references/REFERENCE.md) for details.

5 OpenCode自定义skill

自定义 Skill 实现 SQL 助手的功能。

首先,在 C:\Users\用户名\.config\opencode\skill 目录下创建 sql-query-helper\Skill.md 目录及文件。

内容如下:

markdown 复制代码
---
name: sql-query-helper
description: |
  Help write and optimize SQL queries for the company database.
  Use when Claude needs to query the production database or
  help with SQL query optimization.

---

# SQL Query Helper

## Database Schema

Our main tables:

- `users` (id, email, created_at, status)
- `orders` (id, user_id, amount, created_at, status)
- `products` (id, name, price, category)

## Query Guidelines

1. Always use parameterized queries
2. Include LIMIT clauses for safety
3. Use indexes on WHERE clauses
4. Test queries in staging first

## Common Queries

### Active Users

```sql
SELECT id, email, last_login
FROM users
WHERE status = 'active'
ORDER BY last_login DESC
LIMIT 100;
```

### Revenue by Month

```sql
SELECT
  DATE_TRUNC('month', created_at) as month,
  SUM(amount) as revenue
FROM orders
WHERE status = 'completed'
GROUP BY month
ORDER BY month DESC;
```

## Note

If you encounter a TLS/SSL error, please use  `--skip-ssl` to skip the verification.

--- 分割 skill 描述部分和细节部分,细节部分给出对应的资源配置。

在 opencode 的工作目录下创建 .env 指定 MySQL 连接配置:

markdown 复制代码
DB_HOST:"192.168.37.130"
DB_PORT:3306
DB_NAME:"opencode"
DB_USER:"root"
DB_PASSWORD:"123456"

测试

5 Agent 开发skill

感兴趣的直接看 https://java2ai.com/docs/frameworks/agent-framework/tutorials/skills 就可以了,阿里这个真的是良心开源项目。

相关推荐
政安晨2 小时前
政安晨【人工智能项目随笔】OpenClaw:开源个人AI助手的全面解读与应用实践报告【作者检索信息的应用调查报告随笔】
人工智能·ai·开源·ai-agent·openclaw·调查报告·openclaw调查报告
Aric_Jones2 小时前
LLM、Agent、MCP、Skill 是什么?它们之间有什么关系?
ai·llm·agent·mcp·sikll
组合缺一3 小时前
赋予 AI 灵魂:如何在 Java AI 生态实现一个会“自我反思”的长期记忆系统
java·人工智能·ai·llm·agent·solon·mcp
卷卷的小趴菜学编程3 小时前
项目篇----C++ AI大模型接入SDK->API获取与测试
c++·ai·api·apifox·deepseek
YZ0993 小时前
EvoMap 是什么?
ai·evomap
SeatuneWrite4 小时前
**AI仿真人剧工具2025推荐,解锁沉浸式内容创作新体验*
ai
belldeep4 小时前
python:如何将豆包AI中历史对话 备份到本地 backup目录下?
人工智能·python·ai·自动化·backup·豆包
lhxcc_fly5 小时前
1.LangChain--初识篇
ai·langchain·vibe coding
Java_慈祥5 小时前
My First AI智能体!!!
python·agent·coze