DC娱乐网

拆解Skill:为什么给大模型一本“手册”比教它“思考”更可靠

一、第一性原理:亚里士多德的追问方式
公元前4世纪,亚里士多德在《形而上学》中提出了一个影响深远的方法论:“在每一个系统的探索中,都存在第一性原理,它是一个最基本的命题或假设,不能被省略或删除,也不能被违反。”用他自己的话说,第一性原理是“认知事物的首要基础”。
这个方法的操作方式是:把问题拆解到不能再拆的基本事实,然后从这些事实出发,重新推导解决方案。马斯克用这个思维发现火箭原材料的成本仅占售价的2%,从而颠覆了航天工业——他没有问“火箭为什么这么贵”,而是问“火箭是由什么构成的,这些材料本身值多少钱”。
现在把同样的追问方式用在Skill上:当一个AI Agent需要执行一项专业任务时,它真正缺少的是什么?
不是“智能”。大模型的推理能力已经足够强。它缺少的是结构化的专业流程知识,以及可验证的执行边界。Anthropic在其Agent设计指南中明确指出,AI Agent系统面临的最大挑战并非底层模型的推理能力,而是指令的结构化程度——当指令以松散的对话形式呈现时,即使是最先进的LLM也会出现“上下文漂移”,随着token增长,模型对任务边界的感知逐渐模糊,执行质量断崖式下降。
这就是Skill要解决的第一性问题:如何把专业领域的“操作手册”以可加载、可验证、可复用的方式注入大模型的上下文? Anthropic的答案是:把Skill做成一个包含指令、元数据和可选资源的模块化能力包,大模型在需要时自动加载。
二、底层原理一:渐进式披露——用信息论约束上下文窗口
Skill最核心的设计原理是“渐进式披露”(Progressive Disclosure)。它的理论根基来自信息论:大模型的上下文窗口是有限资源,而模型的注意力机制在上下文越长时衰减越明显。把所有知识一股脑塞进上下文,不仅消耗token,还会稀释模型对关键信息的注意力。
渐进式披露的解决方案是:把知识分成三层,按需加载。
第一层是元数据层。 在Skill的YAML frontmatter中定义name和description,这部分始终加载在Agent的系统提示词中。一个description字段大约只占几十个token,Agent在启动时就能“知道”自己拥有哪些Skill,但不需要加载任何一个Skill的完整内容。这个设计使得你可以同时挂载几十个Skill,而激活判断的成本只是几十行短文本的比对。
第二层是指令层。 当用户的请求与某个Skill的description匹配时,Agent才会读取SKILL.md的完整正文,了解具体操作步骤。这一层包含工作流程、最佳实践和关键示例,官方建议控制在500行以内。
第三层是资源层。 references/目录下的详细文档、scripts/下的可执行脚本,只有在指令中明确提到时才会被读取或调用。执行脚本时,只有脚本的输出结果会进入上下文,代码本身不会,这极大地节省了token空间。
这个三层架构的第一性原理是:信息的价值不是恒定的,它取决于信息是否在正确的时刻被需要。 一个Skill的description在Agent启动时有价值,但在任务执行过程中没有价值;一个参考文档在需要查阅时有价值,但在初步判断时没有价值。渐进式披露的本质是让每条信息在它最有价值的时刻出现,而不是在所有时刻都占用资源。
三、底层原理二:文件系统作为能力封装——确定性工程约束概率性模型
Skill的第二个底层原理,是用文件系统的确定性来约束大模型的概率性输出。
大模型的本质是概率生成器。它根据训练数据中的统计规律预测下一个token,这意味着它的输出天然带有不确定性。在创意写作场景中,这种不确定性是优势;但在需要精确执行的专业任务中,这种不确定性是风险。
Skill的应对方式是:把确定性交给代码,把灵活性交给模型。
一个Skill的目录结构是一个真正的文件系统目录:SKILL.md是入口,scripts/目录下可以放Python脚本,references/目录下可以放Markdown参考文档。这意味着Skill可以包含可执行代码,而代码的执行结果是确定的。
以易经推演为例,起卦的过程可以用一个Python脚本实现。用户输入起卦时间和问题类型,脚本输出卦象编码——本卦、变卦、动爻。这个过程是纯数学计算,不涉及任何概率生成。脚本的输出是确定的,同一个输入永远得到同一个输出。这正是“规则引擎”在AI系统中的作用:大模型做初步判断,规则引擎做最终终审,双校验机制卡死风险。
在更广泛的Skill设计中,这个原理同样适用。做数据校验时,用JSON Schema做结构化校验,而不是让模型“判断”格式是否正确;做权限检查时,用白名单规则做拦截,而不是让模型“决定”是否越权。确定性的事情交给确定性工具,模糊性的事情才交给概率性模型。
四、底层原理三:意图→结构化知识→可验证执行的映射链
把上面两个原理放在一起,Skill的完整逻辑就浮现出来了:它是在“用户意图”和“系统执行”之间,建立一条可验证的映射链。
用户说“帮我分析一下当前的运势”,这是一条模糊的自然语言意图。系统需要把这个意图映射到具体的执行动作上:起卦、排盘、分析体用、检索爻辞、生成解读。这条映射链上的每一步都需要是可观测、可验证的。
Skill的SKILL.md正文定义的就是这条映射链。它告诉Agent:第一步做什么(调用起卦脚本),第二步做什么(用规则引擎判定体用),第三步做什么(从references目录检索对应爻辞),第四步做什么(按照输出模板组装回复)。每一步都有明确的输入和输出,每一步都可以被测试和验证。
这条映射链的底层逻辑,可以用一个更抽象的公式来表达:成功 = 意图识别 × 知识检索 × 规则约束 × 输出组装。 每一个乘数因子都可以独立优化和独立测试。如果意图识别错了,Agent就不会加载正确的Skill;如果知识检索错了,Agent就会引用错误的爻辞;如果规则约束失效了,Agent就会输出不符合易经逻辑的解读;如果输出组装出了问题,用户看到的就是一堆碎片。
这与传统的“给模型一段Prompt让它自由发挥”有本质区别。Prompt方式下,整个流程是一个黑箱,你不知道模型在哪一步出了问题。Skill方式下,流程被拆解成了可独立验证的步骤,每个步骤的输入输出都被显式定义。可观测性,就是可控性。
五、案例验证:易经推演Skill中的原理应用
以一个具体的易经推演Skill为例,看这三个原理如何落地。
渐卦的案例。 用户问“事业上有一个新机会,该不该接”。起卦脚本输出:本卦为渐卦(䷴),第三爻动,变卦为观卦(䷓)。渐卦的卦辞是“女归吉,利贞”,爻辞第三爻是“鸿渐于陆,夫征不复,妇孕不育,凶”。从五行生克的角度,体卦为艮(土),用卦为巽(木),木克土,用克体,主事有阻力。
原理一的落地: 用户的问题触发了Skill的description匹配(包含“事业”“决策”“运势”等关键词),Agent加载SKILL.md正文。脚本执行起卦。这个过程中,只有SKILL.md正文和脚本输出进入了上下文,references目录下的六十四卦完整数据库和五行生克规则表没有被加载,直到需要检索渐卦爻辞时才按需读取。
原理二的落地: 体用五行生克的计算是由规则引擎完成的,不是由大模型“判断”的。规则引擎硬编码了五行生克关系:金克木、木克土、土克水、水克火、火克金。体卦艮土被用卦巽木所克,这个结论是确定的。如果让大模型自由发挥,它可能会说“体用相生,有利”,因为“渐卦”的名字听起来很积极。规则引擎把这个判断锚定在五行生克的数学关系上,杜绝了这种“听起来对但逻辑错误”的输出。
原理三的落地: 最终的输出组装遵循一个固定的模板:卦象摘要(渐卦→观卦,三爻动)、体用分析(用克体,主阻力)、爻辞解读(“鸿渐于陆,夫征不复”——前进但不可冒进)、行动建议(机会存在但需要谨慎评估,不宜贸然行动)。每一步都有明确的来源和依据。
原理二在输出约束中的进一步应用: 大模型在这个Skill中被“降权”了。它的任务不是“决定”爻辞是什么,而是“解释”爻辞在用户具体问题中的含义。爻辞的原文和注疏是从references目录中检索来的,是确定的。大模型的灵活性被限定在“将古文翻译成用户能理解的语言”这个边界内,而不是自由发挥。
六、结论:Skill的第一性原理是“把不确定性限制在正确的位置”
回到亚里士多德的追问方式:Skill的第一性原理是什么?
答案是:把不确定性限制在正确的位置,把确定性部署在必要的位置。
大模型的不确定性在创意场景中是优势,在执行场景中是风险。Skill的设计逻辑不是“消除不确定性”——那等于放弃大模型的能力——而是划定边界:在意图识别和语义理解环节,让大模型发挥其自然语言理解的灵活性;在起卦、排盘、五行生克计算、结构化输出组装等环节,用规则引擎和确定性代码锁定结果。
这个逻辑的数学表达是一个“确定性锚定”公式:系统可靠性 = 确定性环节覆盖率 × 大模型灵活性的有效利用率。 确定性环节覆盖率越高,系统越可靠;大模型灵活性被限制在正确的边界内,其能力才能被有效释放。
渐进式披露解决的是“信息何时进入上下文”的问题,本质是信息论在Agent架构中的应用。文件系统封装解决的是“确定性如何约束概率性”的问题,本质是软件工程原则向AI能力设计领域的迁移。意图-知识-执行的映射链解决的是“流程如何可验证”的问题,本质是控制论中“可观测即可控”的思想在Agent系统中的落地。
Skill不是给大模型一本“思考指南”,而是给它一本“操作手册”。思考是模型自己的事,操作是工程的事。把工程的事情交给工程,把思考的事情交给模型,这就是Skill的第一性原理。