跳到内容
← 深入了解
深入了解

它不是 Skill

如果你用 Claude,就一定知道 Skills:装着一份指令文件的文件夹,AI 在需要时才加载。它们和 Reminder 足够相似,会让你觉得“这个我已经有了”。但它们做的不是同一份工作,区别一句话就能说清:Skill 回答的是事情怎么做,Reminder 回答的是是谁在做。

这个异议,我们抢在你想到之前说出来

“Skills 是官方功能,而且本来就是我自己的文件”

这些全都属实,我们也不绕弯子。Skill 就是一个里面放着 SKILL.md 的文件夹:两行 front matter——一个名称和一段描述——然后是正文。它是 markdown,归你所有,存放在 git 里,哪天你改主意了,可以带着它走。没有人把你锁在任何地方。

它的机制也设计得很好。在需要这个 Skill 之前,内存里只留着它的描述——大约一百个词;当 AI 判断它相关时才加载正文,辅助文件则只有在 AI 真的打开时才会加载。这叫渐进式披露,是让 AI 拥有上百种能力、又不必在每一句话里为所有能力付出代价的正确做法。

所以不是的:这一页并不是要说 Skills 做得不好。它存在,是因为这套机制对一项能力来说是优点,对一个身份来说却是缺陷。

关键在于它何时进入上下文

Skill 在需要时才进入。这就是它全部的优雅之处:没有理由时它不占任何空间,AI 通过阅读描述来判断理由是否出现。非常适合“按我们的规范排一份演示文稿”这类事情——周二需要,周四就不需要。

身份可不是这样运作的。你是谁,并不是一项到了合适的话题才启动的能力:它在你开口之前就已经在那儿了,并且决定你怎样理解问题。只有被调用时才出现的东西,不是性格,只是一本手册。

这就像“会做饭”和“饿了”之间的区别。前者要用的时候才拿出来;后者即使你没在想吃的,也会推着你行动。

还有一样东西,是 Skill 没有的

在 SKILL.md 里,没有办法写下这部分你不能改写。这不是疏忽:Skill 是你交给 AI、让它去用的东西,没有什么需要守护的。

而在 Reminder 里,另一头有一个会读、会理解、也可能改写的存在——所以每个区块都要声明其中有多少归你:从只有你能改的规则,到 AI 不用问你就会更新的笔记。这就是手册和宪法的区别,也是 Reminder 要有结构、而不只是一段文字的原因。

两栏对照

SkillReminder
回答什么问题一件事怎么做做这件事的是谁
何时进入上下文AI 判断相关时始终,从第一行开始
里面有什么一套流程、一些示例、一些脚本核心、模块、记忆、权限
谁可以改写你,在对话之外取决于所在的区:文件里已经写明
如果把它拿走AI 就不再会做那件事AI 就不再是“某个人”
记住的内容没有:明天和今天一样做得怎么样:在模块的关联记忆里

它们在哪里并存——几乎总是如此

这不是二选一,也没必要把它变成二选一。行得通的分工很清楚:Skill 负责能力,Reminder 负责身份。同一场对话,没有冲突——因为它们并不争同一个位置。

对编程智能体来说,这种分工已经有了自己的落脚处:智能体启动时读取的文件——CLAUDE.md、AGENTS.md——就是放身份的地方,而 Skill 仍然是这个身份懂得执行的各种流程。

而且边界比看上去更有渗透性。你已有的 Skill 可以转成模块,几乎逐行对应:无须重新发明什么,因为这两种形式回答的是同样的四个问题。

描述:它做什么,什么时候用
### FUNCTION · ### TRIGGER
指令,要遵循的步骤
### ROUTINE
不能做的事,限制
### LIMITI
输入和输出的示例
### ESEMPIO

反过来也成立,这才是出人意料的地方。SKILL.md 里强制要求的只有两行 front matter——名称和描述。在那之下你是自由的:正文的结构没有人规定。Skill 往往被写成松散的散文,这只是一种流行的习惯,不是规则——Anthropic 自己的指南还推荐编号步骤、输出模板和示例,而这恰恰就是模块已经具备的形态。它可以直接放在 front matter 下面,不用重写。

只有一样东西过不去,值得说清楚。在模块里,声明这部分你不改写的那一行有地方安放,应用会强制执行;在 SKILL.md 里,这一行无处可放,回路中也没有应用来守护它——区域标记只是留在那里的文字,没有人去执行。翻译一项能力,完全行得通。翻译身份,行不通:这页要说的,就只有这一句。

第三条路:不翻译,嫁接

把 Skill 翻译成模块,是一条路。另一条路是完全不翻译。SKILL.md 的正文是 markdown,模块可以原封不动地容纳它,放在一行声明“这一段归谁”的标记之下:在 Standard 中这行叫 ### SUB-MODULE:,下面放进 Skill 的全部文字——它的功能、步骤、示例。什么都不用改写。你只需声明它归谁,放在哪里。

## MODULE 07: ...
### FUNCTION

### SUB-MODULE: SKILL_A
#### FUNCTION
#### ROUTINE

### SUB-MODULE: SKILL_B
#### FUNCTION
#### ROUTINE

[P4]
### ASSOCIATED MEMORY
[/P4]

模块在它周围补上的,是 SKILL.md 无处安放的两样东西。第一是权限区:嫁接进来的文字落在一个声明了“谁可以改写”的区块里,而拒绝改写的是应用,不是模型。第二是 ### ASSOCIATED MEMORY,也就是沉淀你使用它时所学到的东西的那一节——这些步骤对你来说顺序不同;用你的文件时那一步行不通;你想要更短的输出。Skill 知道怎么做。模块记得做得怎么样。

而且一个模块可以容纳不止一个。如果三个 Skill 做的是同一行活——读 PDF、从中提取表格、写出摘要——你可以把它们嫁接到同一个模块里,每个放在一个 ### SUB-MODULE: 下。从此它们不再一个一个地亮起:它们会随模块一起进入上下文,并且彼此看得见。这是你的选择,也是你不再采用渐进式披露的那一刻。

代价说在明处:只要那个模块处于启用状态,你每次都要为三个一起付费,包括那天你只需要其中一个的时候。你买到的是它们不再互相矛盾——一份关联记忆代替三份,一条规则只写一次、而不是同一句话写在三个地方,也不会因为 AI 加载了其中一个而没加载另一个,导致活干到一半。如果活是一行,模块就是一个。如果是三行活,就让它们分开,需要时再亮起:这恰恰是单独的 Skill 比这种做法更称职的情形。

今天有一件事要靠手工,最好事先知道:嫁接就是复制粘贴,从那一刻起,副本归你。如果 Skill 的作者发布了新版本,由你决定要不要带进来——文字就摆在你的文件里,一目了然,更新的方式和文件的更新方式一样。这和其他部分是同一个约定:没有任何东西会在你看不见的地方悄悄移动。

模块容纳 Skill,并为它赋能

这一点,哪怕对永远不会用 IllAIra 的人也值得说。Skill 知道一件事怎么做。容纳它的模块则记录做得怎么样:用你的文件时那一步行不通,你想要更短的输出,对你来说这些步骤顺序不同。流程,以及对流程的经验,放在同一个对象里,权限各不相同——前者在模型不会改写的区里,后者在模型自己会追加的区里。

于是 Skill 不变,模块在变:围绕流程,长出一份实操记忆,记录这项能力与你一起使用的历史,每当模块启用,模型都够得着。这和你在 Sphere Grid 里看到的形状一样:整个档案成为某个节点的关联记忆——那里是一本 wiki,这里是一套流程:你在使用它的过程中积累的东西,挂在它所会的事情之下。

逐条回应质疑

“你们的并不是谁的官方标准”

没错,所以才公开发布。Reminder 就是 markdown:你用任何编辑器都能打开,不需要我们就能读,不用谁批准就能改。不存在必须一直运行才能让这个文件继续有意义的运行环境。就算 IllAIra 明天消失,你的文件还在,用起来也一样——而一段住在别人服务里的记忆,就做不到这一点。

“写一份很长的系统提示词就够了”

能用,用一阵子。然后它越来越长,你会发现它缺的三样东西:不重读全文就没法改其中一块;没法声明某一部分不可触碰;也没法“看”它——它是一堵文字墙,不是一张地图。Reminder 是同一个想法,外加一层结构,而正是这层结构让其余一切成为可能。

“Skill 也可以装下一种性格”

可以,而这恰恰是最容易出错的做法——因为它几乎行得通。但它依然只是在 AI 认为时机相关时才加载的东西,也没有人告诉过它:关于它自己的任何内容都不可改写。你得到的是一个时有时无、毫无防护的角色:看起来像身份,直到真正需要它是身份的时候。

“这只是 markdown:你们卖给我的是什么?”

问得公道,老实回答是:你可以自己动手,免费,没有人拦着你。Standard 是特意公开的。我们卖的是其余部分——让你看见自己搭建了什么的 Sphere Grid,应用真正会强制执行的权限区,由以此为业的人写好的 Reminder,以及对“用了什么”的追踪。不是格式:格式无论如何都是你的。

“谁来保证 AI 会遵守?”

没有人,谁说能保证,谁就是在向你推销什么。Reminder 是 AI 读取的文字:它遵守到什么程度,取决于它遵守指令到什么程度——几乎总是遵守,但不是出于合同。Skill、系统提示词,以及你放在它面前的任何东西,都是如此。

我们能保证的是另一半,也是真正关键的那一半:应用不会写进区域标明“不行”的地方,而这个拒绝并不经过模型。模型这边是一项声明出来的约定;我们这边是你可以读到的代码。

和其他一切一样:模型会被训练,并且会自己学着遵守它所认定的既有惯例——事情本来的运作方式。要让它们在应用之外也遵守——在聊天里、在别的工具里——唯一的办法就是使用。这套方法越是公开、越是被使用,就越会成为模型预期会遇到的东西。这不是写进合同的保证。这是约定如何变成习惯,对模型如此,对人也一样。

“你们把我绑在你们的格式上”

离开的代价是:把文件带走。它们是 .md,已经在你的设备上,导出 ZIP 只要点一下。没有要导出的数据库,没有要转换的专有格式,也没有留在我们这边的历史记录。问“以后我想退出怎么办”,是该问任何人的正确问题——我们的回答是:你其实已经退出了,因为这些文件从来就不是我们的。

“每次对话都要花 token”

是的,而且不算少。这正是结构做成模块化的原因:装着身份的织布机始终都在,模块需要时加上,不需要时拿掉。想要最少的人,只留织布机,别的都不要。想要全部的人,为全部付费,并且心里有数——但不是付给某个服务商:这些 token 在免费额度里就装得下,哪一个用完了,同一个文件在下一个里照样打开。

“我得学一种格式”

是的。比看上去的少——一个标题、几个核心、几个模块——但不是零,我们也不假装是零:第一天,打开聊天直接打字更快。差别出现在第三十天,那时那个聊天什么都不记得,而文件记得。

一句话

Skill 是你的 AI 知道怎么做的事。Reminder 是它做这件事时是谁。两个都留着:它们互不干扰,因为不在同一个位置。