读 Claude Code 源码发现 Skills 才是 Agent 真正的灵魂
其实 LLM 应用发展这几年,绕来绕去最后都回到同一个问题:能力怎么沉淀?
最开始大家比的是谁聊天聊得好,拼 prompt 工程,后来有了函数调用,再后来有了 MCP 协议统一工具调用。直到 Claude Code 推出 Skills 机制,才算是把这个问题答得比较漂亮。
今天读了 Claude Code 开源出来的源码,发现 Skills 设计里有很多值得品的细节,分享给做 Agent 开发的朋友。
一 从零散 prompt 到可复用能力包
LLM 开发这几年走了四步,每一步都在解决能力沉淀的问题。
刀耕火种时代,所有人都在琢磨怎么把需求指令约束塞进一句话,还诞生了专门的 prompt 工程师。这个阶段知识完全碎片化,换个任务就得重新写,模型一更新很多技巧又失效了。
后来有了函数调用,模型终于能结构化调用外部工具,让模型决定做什么和怎么做分离。prompt 不用硬编码所有逻辑,只需要描述意图,执行丢给工具就好。这算是打开了工程化的思路,但沉淀还是做得不够。
Skills 本质就是把解决某类任务的最佳实践整个打包起来。从说明文档,到执行脚本,再到参考资料全塞一个文件夹里,模型要用的时候整个加载进来,用完就扔,不占上下文。
其实说白了,Skills 就是把沉淀做透了。
打个比方,函数调用像是给你一口锅一把铲一些调料,炒什么菜自己琢磨步骤去。Skills 直接给你一本菜谱再加全套工具,你说要做土豆丝,照着来就行,新手炒出来味道也不会差太远。

一个标准 Skill 文件夹里必须有三样东西
SKILL.md 是自然语言写的说明书,告诉模型什么时候用这个 Skill,该做什么,要注意什么。脚本就是实际要执行的代码,AI 需要动手的时候就跑这些脚本。还有资源文件,比如模板参考配置这些,执行的时候可以查。
所以 Skills 其实就是高阶 prompt 加工具调用的结合体,配上包管理平台,就有了分发版本管理,之前遇到的问题基本都解决了。
二 加载阶段的设计细节挺有意思
Skill 的本质就是把磁盘上的 SKILL.md,在调用瞬间编译成模型能吃的 prompt 块,注入上下文。所以整个流程分加载和调用两大块,我们先看加载。
启动顺序都有讲究
从命令行敲入 claude 开始,流程就启动了。源码里 initBundledSkills() 必须放在 getCommands() 之前做,因为这一步就是把内嵌技能 push 到数组里,不到 1ms,但是顺序错了技能就丢了。这个细节挺有意思,说明工业级代码就是要抠这种小事。
搜索路径和优先级
Claude Code 会搜好几个地方找 Skills,优先级从高到低定死了
企业策略目录优先级最高,然后是用户全局技能,再是项目级技能,然后是额外添加的目录,兼容旧格式命令,最后才是代码内嵌技能和第三方插件。
同名技能遇到怎么办?先到先得,深度深的覆盖浅的,realpath 去重,保证不会乱。
这里有个设计很实用,条件技能。如果一个 Skill 带 paths 配置,只有当你操作的文件路径匹配模式时,才会自动激活,不匹配就不占坑。比如 React 组件开发助手,只有你改 src/components 下的文件时它才出来,很干净。
为什么要延迟加载
有意思的一个设计:启动的时候只解析 frontmatter,SKILL.md 的正文内容不加载,靠闭包捕获着,什么时候调用什么时候再编译。
这么做的权衡很清楚,启动只需要拿到技能列表展示,正文占体积,大多数技能启动后未必会调用,延迟加载能让启动速度快很多。而且有些技能里面要跑 shell 命令拿最新结果,每次调用动态生成才准。
动态发现也做了
如果你在会话过程中,往项目里加了新 Skill, Claude Code 能在你读写文件的时候,顺着路径向上搜,发现新的 Skill 目录,加载进来,清掉缓存就能用,不用重启会话。这个体验细节做得挺到位。

三 调用链路有九个入口
Skills 加载完就等着被调用,源码梳理下来,总共有九个不同入口能触发 Skill 调用,覆盖了各种使用场景。
用户敲 /skill-name 斜杠命令是最常用的,今天就说这一种。整条调用链路从 REPL 组件的 onSubmit 开始,一层层往下走,先判断是不是立即执行的命令,Skill 一般走正常排队,然后找到匹配的 Command,接着拿到 Skill 对象,执行 getPromptForCommand 拿到编译后的 prompt,注入上下文,就可以让模型干活了。
整个链路不复杂,但每个环节都处理了边界情况,比如权限检查,参数校验,不同上下文的处理。
四 为什么 Skills 是 Agent 的灵魂
其实 Agent 发展到现在,大家都在说,Agent 不是能调工具就行。很多 Agent 能列工具,但遇到问题还是不知道该怎么一步步解决。
Skills 把解决一类问题的过程知识沉淀下来了,告诉模型第一步做什么,第二步用什么工具,输出要符合什么规范。人把最佳实践写进 SKILL.md,模型只管照着执行,这才是把人的经验复用到无数次任务里。
这和传统的函数调用还不一样,函数只管执行,不管流程。Skills 管了流程,还管了知识,还带了工具,这才是完整的能力单元。

现在各家都在做自己的 Skill 生态,OpenClaw 也有了 clawhub 能分发技能。这个方向走下去,未来会不会真的出现 Skill 集市,大家卖卖写好的最佳实践?挺值得观察的。
至少从 Claude Code 的实现来看,这条路方向是对的,把能力沉淀下来,Agent 才能真的干活,而不是天天陪你聊天。
关于我:混迹各大厂多年的老派程序猿一枚,爱健身、懂理财,既痴迷专研各类新鲜技术,也乐于沉淀思考、分享架构路上的点滴心得,如果觉得这篇分享对你有帮助,欢迎加我微信交流~~

🔥 小龙虾星球 开放招募!每天 N 篇超实用 AI 工具 + 一手行业资讯SKILL 技能包|AI 副业玩法|效率神器 不间断更新从入门到变现,一站式喂饱你对 AI 的所有需求告别信息差,抢先抓住 AI 时代红利



夜雨聆风