Skills
前言
很长一段时间没有接触各种社交媒体了,因为要找工作,所以关注了下最近公众号还有抖音什么的有什么新的知识出现。
然后就发现 AI 出现了一个 Skill ( 技能 )的东西。
在之前学习 MCP Tool 的时候,编写过简单的客户端 Demo,其可以给予模型操作工具的权力,其简单的流程为:
- 用户输入需求
- 客户端将用户的需求,还有目前的工具列表( 名称,描述,参数 )发生给 AI
- AI 返回要执行的工具和参数返回到客户端( 假设需要使用工具 )
- 客户端执行工具,然后把工具的结果和之前的记录再次发送给 AI,AI 再进行判断,循环往复
- AI 返回给用户最终答案
Skill

Skill 给予模型按需加载技能的权力。
在之前,我们在一个新的会话中,输入好一个初始的提示词,包含对 AI 定义的角色,流程,输出,约束等等,但是随着使用的越久,上下文越多,会出现一个问题,AI 就会忘记然后不遵守了。
1 | |
Token(标记)是大语言模型处理文本时使用的最小单位。模型并不是直接按“字”或“词”理解文本,而是把文本先拆分成一段一段的 token,再进行计算。
比如一句普通的中文,就会被分词器拆分成字、标点符号、空格等一个一个 token,每个 token 都对应一个 token id,通过 tokenid 转换 token 为向量,向量序列作为模型的输入进行推理。
在经过多轮对话,token 的使用到达上限,也就是上面所以的历史消息( user,assistant,system )到达 2048 token( 假设 )。到达之后呢?会怎么处理呢?
- 删除最早的对话
- 总结之前的对话历史,一些 AI 聊天女友的项目就会根据对话抽象人格的刻画,而不是全部记忆,比如性格特征,喜好,TODO….
- 停止回答,本次会话到达最大值
- …
这样就会导致用户最初的提示词被覆盖,忘记,Skill 会根据模型的选择将新的技能提示词追加到用户提示词中,就可以实现让 AI 记忆犹新,可以最好的执行。
Skill 的简单构成:
- 元数据( 名称,描述 )—— 始终加载
- 指令 —— 由 AI 根据使用场景和元数据决定是否按需加载
- 资源
- 子指令( xxx.md )
- 可执行脚本( scripts/xxxx )—— 通过 bash 直接运行,脚本提供确定性操作而不消耗上下文,也就是不是类似与 mcp tool 需要有复杂参数
- 资源 ( 参考材料,如数据库模式、API 文档、模板或示例)
1 | |
其简要流程如下:
- 用户输入需求
- 客户端将用户的需求,还有目前的 Skill 元数据列表( 名称,描述 )发送给 AI
- AI 根据用户的需求和 Skills 元数据, 选择需要加载的技能( 假设需要 )
- 客户端会读取需要加载的技能详情( SKILL.md ),然后注入到用户的提示词中,再次发送给 AI
- AI 根据详细的提示词做出决策,后续则返回或者加载其他的技能文档,循环往复
至于编写,现在 AI 客户端都直接提供 Skill 编写的功能了,直接告诉 AI 让 AI 给辅助编写。
结语
Skills 的出现可以让 AI 客户端的使用更加的方便,以前如果想用 AI 编写 pocsuite 脚本,我需要在一个提示词中编写:
- 角色
- Pocsuite 基础模板
- Pocsuite 各种漏洞检测方案,Pocsuite 格式
- 示例
- 约束
那么现在呢?
完全可以这样,清清楚楚的,明明白白的。
1 | |
当然,这里说的也只是对于 AI 客户端,如果是直接使用代码,直接放到 system prompt 会更方便,针对不同的函数和功能选择不同的系统提示词。