解密Claude Code与Codex:智能体编程的工作机制(第四篇)Skills深度解析

24 阅读9分钟

第三篇介绍了大模型的提示缓存机制,核心结论是:固定的前缀内容能命中缓存,帮你省钱。 但有一个问题没来得及细讲:这个“固定的前缀内容”从哪来?

答案就是本篇要聊的——Skills (技能)

一、先回顾一下:大模型为什么需要“背景说明”?

我们之前说过,大模型没有完整的“记忆和存储”功能。每次跟它交互,你都需要把完整的需求发给它,否则它返回的内容很可能达不到你的预期。

这意味着:每次提问,你都要重复发送同样的“背景说明”——你的项目介绍、文件命名风格、组件命名规范、代码风格偏好……

如果你每次都手动输入,既麻烦,又浪费Token(词元)。更重要的是,每次输入的措辞可能略有不同,缓存就无法命中,Skills正是为了解决这个问题。

二、Skills是什么?

Skills本质上是一套预置的、可复用的提示词模板,以Markdown文件的形式存储在特定目录中。

可以把它理解为给AI准备的“岗位说明书”

  • 当AI遇到特定任务时,就加载对应的“说明书”
  • 说明书里写明了:该用什么工具、该遵守什么规范、该按什么流程执行

从技术实现上看,Skills的设计非常简单:一个文件夹 + 几个Markdown文件

.claude/skills/

├── wechat-miniapp.md      # 微信小程序开发规范

├── frontend.md            # 前端开发规范

└── python.md              # Python项目规范

三、为什么Skills能帮你省钱?

第三篇我们讲过:固定内容 = 缓存命中 = 省钱

Skills的内容是固定的——你写好后就不会变。每次请求,AI编程工具都会自动把这些内容附加到消息前面,形成稳定的“前缀”。

这样一来:

  • 第一次请求:写入缓存(付全价)

·        后续所有请求:命中缓存(只需支付约1/10的费用。虽然命中缓存,但是大模型仍然需要读取你的新问题、并结合缓存的上下文返回答案)

如果你不用Skills,每次都在对话里用自然语言描述规范,每次描述的文字可能不一样,大模型的提示缓存永远无法命中,每次都付全价。所以Skills不只是“规范管理工具”,更是“省钱工具”。

四、一个真实的Skills长什么样?

光说概念你可能觉得抽象。我给你看一个真实的Skills文件:

markdown


name: 微信小程序开发

description: 当开发微信小程序时使用此技能


项目规范

  • 使用ES6语法,不使用TypeScript

  • 页面文件结构:.js / .wxml / .wxss / .json

  • 云函数统一放在 cloudfunctions/ 目录

  • 网络请求使用 utils/request.js 封装的 wx.request

代码风格

  • 组件命名使用 PascalCase(如 UserCard)

  • 文件命名使用 kebab-case(如 user-card)

  • 注释使用中文

常用命令

  • 启动开发者工具:/Applications/wechatwebdevtools.app/Contents/MacOS/cli open --project 项目路径

  • 上传代码:使用微信开发者工具的“上传”按钮

以上就是一份很普通的Markdown文档。你只需要把平时反复叮嘱AI的那些话,写进这个文件就行了,AI会按照你的这个Skill发给大模型。需要注意的是,如无必要,不要改动Skills,哪怕是一个空格,大模型都会认为是一个新的需求,导致匹配不上提示缓存。

五、为什么需要Skills?——三个痛点

你可能想问:我直接在对话里说“按我的规范来”不行吗?为什么非要搞个文件?主要有三个痛点:

痛点1:大模型“记不住”

大模型有一个特点:每次对话都是新的开始。它没有长期记忆。

你这次告诉它“用中文注释”,它记住了。但下次开新对话,它又忘了。你又要再说一遍。

Skills把这个规范“固化”下来,每次自动加载,不用你重复说。

痛点2:每次都说,浪费钱

我们第三篇讲过提示缓存——大模型会把重复出现的内容缓存起来,后续请求只需支付约1/10的费用。

如果你每次都在对话里用自然语言描述规范,每次描述的文字都不一样,缓存永远无法命中,每次都付全价。

而Skills的内容是固定的。每次请求都是一模一样的文字,完美命中缓存。省钱,是Skills的隐藏福利。

痛点3:团队协作,各说各话

如果你是团队开发,每个人都用自己的话告诉AI“怎么写代码”。A说“用中文注释”,B说“注释用中文”,C说“代码里写中文说明”……

AI每次都按不同理解执行,出来的代码风格不统一。

有了Skills就不一样了,大模型读到的都是同一份规范,代码风格自动统一。

六、为什么Skills使用Markdown格式?——一个“人机两读”的格式


这是本篇文章的一个核心内容:那么多格式,为什么偏偏选Markdown?

(关于Markdown格式的由来,详细内容可参见我的另一篇文章AI人工智能应用使用的Markdown文件格式是怎么来的?


原因1:大模型“看”Markdown长大

大模型训练的时候,看的是什么数据?

  • GitHub上几亿个README文件——全是Markdown
  • 技术博客、Stack Overflow——大量Markdown
  • 维基百科——语法类似Markdown

Markdown是大模型最熟悉的“语言”之一。  你用Markdown写Skills,就像用母语跟它说话。它理解最准,执行最稳。

原因2:基准测试证明,Markdown最准

有人做过测试:用11种不同格式给大模型输入同样的信息,看哪种格式准确率最高。结果很有意思:

格式准确率
Markdown(键值对)60.7%
XML56.0%
YAML54.7%
JSON52.3%
CSV44.3%

Markdown排第一,比CSV高出16个百分点。

为什么?因为大模型在训练时“看”过太多Markdown了,对这种格式的结构理解最深。

原因3:人写得爽,机器读得准

一个好的格式,必须同时满足两个条件:

  • 人好写:不用背语法、不用数括号
  • 机器好读:大模型能准确解析结构

Markdown就是这种平衡。你写起来跟写文档一样,不需要学任何新语法。大模型读起来,标题、列表、代码块,一目了然。

对比一下,用JSON写同样的规范:

json

{

  "rules": [

    {

      "category": "syntax",

      "value": "use ES6"

    }

  ]

}

写得累,读得也累。Markdown清爽多了。

原因4:固定格式 = 省钱

第三篇我们讲过:缓存命中的前提是“前缀完全一致”

Skills用Markdown写,内容固定,每次请求前缀一模一样,缓存稳稳命中。如果每次用自然语言描述,文字稍有不同,缓存就失效了。

Markdown不仅是“好用的格式”,更是“省钱的格式”。

虽然从技术上讲,Skills可以用纯文本、YAML、JSON等格式写,但Markdown是人机两读的最佳平衡点——大模型训练数据里它最多,人类写起来最舒服,结构也最清晰。这也是为什么Claude Code和Codex的Skills默认推荐使用Markdown格式。

七、Skills和提示缓存是什么关系?

第三篇我们讲了提示缓存,但你可能还有疑问:这跟Skills有什么关系?

关系是这样的:

每次API请求 = 系统提示词 + 工具列表 + Skills内容 + 你的问题 + 历史记录

以上请求中, “系统提示词+ 工具列表 + Skills内容”属于“固定的那部分”,每次请求都相同,是缓存的理想对象

场景缓存命中情况
用Skills固定内容每次相同 → 命中缓存 → 只需支付约1/10的费用
不用Skills,每次自然语言描述固定内容每次不同 → 缓存失效 → 每次都付全价

所以,Skills不只是“规范管理工具”,更是“省钱工具” 。用好了Skills,你每轮交互都能享受缓存红利。

八、Skills还能做什么?——从“说明书”到“可执行程序”

有意思的是,Skills正在变得越来越强大。最新的Skills已经不止是“文本指令集”,而是可以包含可执行脚本

markdown


name: 部署到测试环境


部署命令

执行以下脚本进行部署:

```bash

./scripts/deploy.sh --env=test

```

部署完成后,将结果返回给用户。

当AI加载这个技能时,它会自动执行 ./scripts/deploy.sh 脚本,而不只是输出提示文字。

这意味着Skills正在从“给AI看的说明书”演变为AI的“函数库” ——就像给AI装上了新的功能模块。 (如感兴趣,这部分的内容后面可补充)

九、小结

问题答案
Skills是什么?以Markdown文件编写的 “岗位说明书” ,放在 .claude/skills/ 目录,AI自动读取
为什么需要Skills?不用重复教、省钱、团队共享
为什么是Markdown?大模型训练时看过海量Markdown,理解最准;人也好写
和缓存什么关系?Skills内容固定,帮助命中缓存,省钱

一句话总结:Skills就是给AI看的“员工手册”,用Markdown写,因为它人机两读、精准省钱。用好Skills,你不仅能统一代码规范,还能让每一轮交互都享受缓存红利。


下一篇预告:我们把视野从Claude Code/Codex拉出来,看看国内AI编程工具的现状,以及那些“看得见、够不着”的技术难题。

本文内容基于作者的开发经验和对官方文档的理解,仅供参考。技术工具、模型参数、定价等信息可能随时间变化,请以官方最新发布为准。如有不同见解,欢迎在评论区理性交流。

本文为原创内容,首发于微信公众号[机器人与人工智能爱好者]。未经本人书面授权,禁止任何形式的摘编、复制或用于商业用途,转载须注明出处。