小ai:一个比喻,秒懂skill-creator技能原理
🦁
小ai:一个比喻,秒懂skill creator技能原理 🦁 小ai:一个比喻,秒懂skill creator技能原理 Modified April 3 新版里有一个特别聪明的设计:防止"刷题"。 就像你准备考试,如果只做那三道旧题,你可能只是把这三道题背熟了,换个新题就不会了。这叫"过拟合"。 新版在调整"菜谱描述"的时候,会自动把测试题分成两部分: • 60%用来练题(让你改描述的时候参考) • 40%用来最终考试(不让你看到,考完才给分) 这样就能保证:你练出来的不是"背答案",而是真正学会了。 三、深入源码:新版到底长什么样 光讲概念可能还是不够直观。下面我们直接看源码文件,就像拆开一台机器,看看里面的零件长什么样。 3.1 SKILL.md:技能说明书的"骨架" 每个技能的核心就是一份 SKILL.md 文件。它的开头有一段 YAML 格式的"元信息",告诉AI这个技能叫什么、什么时候该用它。 Code block YAML Copy name: skill creator description: Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill... 这一小段 YAML 就是技能的"名片"。AI每次收到你的问题时,会扫一遍所有技能的这段描述,判断该用哪个。 继续往下是技能的正文。skill creator 的正文写明了整个工作流程: Code block Plain Text Copy 1. 明确意图 → 写 SKILL.md 草稿 → 创建测试用例 2. 运行 + 评估 → 人工评审 → 迭代改进 3. 循环直到满意 → 优化 description 关键是它还特别强调:description 要写得"有点激进"。因为AI有"欠触发"的倾向——明明该用技能的时候不用。所以描述要写得更主动一些,比如不仅写"用来建数据表",还要写"只要用户提到'表格'、'数据库'、'字段',都应该用这个技能"。 3.2 evals.json:测试用例长什么样 新版里测试用例存放在 evals/evals.json 文件中,格式非常简单: Code block JSON Copy [ { "query": "帮我创建一个叫weather check的技能,用来获取天气信息", "assertions": [ "skill目录被创建", "SKILL.md文件存在且包含weather check名称", "SKILL.md的description包含触发条件" ] } ] 每条测试用例包含两个部分: • query:模拟用户会说的话(也就是"考试题") • assertions:评分标准(哪些条件满足了才算"做对了") 这就像老师出的考试卷——题目是query,评分标准是assertions。有题目、有标准,考试才能打分。 3.3 Grader:评分老师的工作逻辑 Grader 这个角色的指令文件(agents/grader.md)里写得很清楚,它的工作步骤是: Code block Plain Text Copy Step 1: 读取执行记录(transcript) Step 2: 检查输出文件 Step 3: 逐条验证每条assertion Step 4: 提取并验证隐含声明 Step 5: 读取用户备注 Step 6: 批评测试用例本身(发现问题要说) Step 7: 写出评分结果 注意第6步:Grader 不只是打分,还会反过来检查"考试题出得好不好"。如果某道题太简单了(比如"文件存在就行",不管内容对不对),它会指出这个问题。这就像一个好老师,不仅批改作业,还会指出"这道题出得太简单了,测不出水平"。 打分标准也很明确: • PASS:有明确证据证明期望成立,而且证据是实质性的(不是文件名对了就算) • FAIL:没有证据、证据矛盾、或者证据太表面 3.4 run eval.py:自动跑测试的引擎 这个脚本是整个测试系统的核心。它做的事情用一句话概括:让AI带着技能跑一遍测试题,看技能到底有没有被用上。 Code block Python Copy 核心逻辑简化版 def run single query(query, skill name, skill description): 1. 在 .claude/commands/ 目录下创建技能文件 command file.write text(command content) 2. 调用 claude p 执行用户的 query process = subprocess.Popen( ["claude", " p", query, " output format", "stream json"], stdout=subprocess.PIPE ) 3. 监听输出流,检测技能是否被触发 while time.time() start time < timeout: event = json.loads(line) if event["type"] == "stream event": triggered = True 它通过监听AI的输出流来判断技能有没有被触发,而不是等AI跑完全程才判断。这就像监考老师不需要等你交卷,看你的笔有没有动就知道你有没有开始做题。 3.5 aggregate benchmark.py:成绩单生成器 这个脚本把所有考试结果汇总成一份"成绩单": Code block Python Copy def calculate stats(values): """计算平均值、标准差、最小值、最大值""" n = len(values) mean = sum(values) / n variance = sum((x mean) 2 for x in values) / (n 1) stddev = math.sqrt(variance) return { "mean": round(mean, 4), "stddev": round(stddev, 4), "min": round(min(values), 4), "max": round(max(values), 4) } 它输出的不只是"通过了多少题",还包括: • pass rate:通过率(平均多少比例的assertion通过了) • stddev:标准差(多次跑同一题,结果稳不稳定) • delta:有技能和没技能之间的差异值 标准差这个指标很重要。如果同一道题跑了三次,结果分别是100%、0%、100%,平均值看起来是66%,但标准差巨大,说明你的技能非常不稳定——有时候好用,有时候失灵。这种问题光看平均值是发现不了的。 3.6 generate review.py:浏览器里的"审卷界面" 这个脚本会生成一个网页,让你在浏览器里直观地查看所有考试结果。它的工作原理是:读取所有测试运行的输出文件,把它们嵌入一个自包含的HTML页面中,然后用一个简易HTTP服务器把它打开。 Code block Python Copy def find runs(workspace): """递归找到所有包含 outputs/ 子目录的测试运行""" runs = [] for child in sorted(current.iterdir()): if child.is dir() and child.name not in skip: find runs recursive(root, child, runs) return runs 这个网页有两个主要页面: • Outputs 页面:逐个查看每个测试题的输出结果,支持文本和图片的内联预览,你可以在每个结果下面写反馈意见 • Benchmark 页面:量化的数据对比——通过率、耗时、token消耗,按每道题展开明细 就像一个在线阅卷系统——你坐在电脑前,一道一道看学生的答卷,觉得不好的地方写批注,最后提交反馈。 3.7 run loop.py:自动优化描述的循环 这个脚本专门负责第六步——description的自动优化。它的流程是: Code block Plain Text Copy 循环最多5轮: 1. 把测试题分成60%训练集 + 40%测试集 2. 用训练集的数据来改进description 3. 用测试集来验证改进效果 4. 跑3次取平均值(消除随机性) 5. 选出测试集得分最高的description 这里用到了机器学习中的一个经典技巧:train test split(训练测试分离)。你不能用同一份题目来练题和考试,否则练出来的只是"背答案"。把题目分成两份,一份用来改,一份用来考,这样改出来的description才能真正泛化到新的问题上。 四、实战案例:从零创建一个"翻译助手"技能 理论讲完了,来看一个完整的真实案例,走一遍完整的六步流程。 🎯 场景:你想让AI帮你翻译英文文章。你发现AI有时候翻译得很好,有时候风格不对,有时候术语翻错了。你想写一个"翻译助手"技能,规范翻译的流程。 4.1 第一步:明确意图 你跟skill creator对话: "我想创建一个技能,帮我翻译英文文章到中文。我希望翻译风格自然、专业术语保留英文原文、长句拆分成短句。遇到不确定的术语时,给出多个翻译选项。" skill creator 确认了你的需求: • 输入:英文文章 • 输出:中文翻译 • 触发词:翻译、translate、英文转中文 • 边界情况:代码片段不翻译、数学公式保留原样、人名地名音译 4.2 第二步:写 SKILL.md 草稿 skill creator 自动生成了第一版 SKILL.md: 新版里有一个特别聪明的设计:防止"刷题"。 就像你准备考试,如果只做那三道旧题,你可能只是把这三道题背熟了,换个新题就不会了。这叫"过拟合"。 新版在调整"菜谱描述"的时候,会自动把测试题分成两部分: • 60%用来练题(让你改描述的时候参考) • 40%用来最终考试(不让你看到,考完才给分) 这样就能保证:你练出来的不是"背答案",而是真正学会了。 三、深入源码:新版到底长什么样 光讲概念可能还是不够直观。下面我们直接看源码文件,就像拆开一台机器,看看里面的零件长什么样。 3.1 SKILL.md:技能说明书的"骨架" 每个技能的核心就是一份 SKILL.md 文件。它的开头有一段 YAML 格式的"元信息",告诉AI这个技能叫什么、什么时候该用它。 这一小段 YAML 就是技能的"名片"。AI每次收到你的问题时,会扫一遍所有技能的这段描述,判断该用哪个。 继续往下是技能的正文。skill creator 的正文写明了整个工作流程: 关键是它还特别强调:description 要写得"有点激进"。因为AI有"欠触发"的倾向——明明该用技能的时候不用。所以描述要写得更主动一些,比如不仅写"用来建数据表",还要写"只要用户提到'表格'、'数据库'、'字段',都应该用这个技能"。 3.2 evals.json:测试用例长什么样 新版里测试用例存放在 evals/evals.json 文件中,格式非常简单: 每条测试用例包含两个部分: • query:模拟用户会说的话(也就是"考试题") • assertions:评分标准(哪些条件满足了才算"做对了") 这就像老师出的考试卷——题目是query,评分标准是assertions。有题目、有标准,考试才能打分。 3.3 Grader:评分老师的工作逻辑 Grader 这个角色的指令文件(agents/grader.md)里写得很清楚,它的工作步骤是: 注意第6步:Grader 不只是打分,还会反过来检查"考试题出得好不好"。如果某道题太简单了(比如"文件存在就行",不管内容对不对),它会指出这个问题。这就像一个好老师,不仅批改作业,还会指出"这道题出得太简单了,测不出水平"。 打分标准也很明确: • PASS:有明确证据证明期望成立,而且证据是实质性的(不是文件名对了就算) • FAIL:没有证据、证据矛盾、或者证据太表面 3.4 run eval.py:自动跑测试的引擎 这个脚本是整个测试系统的核心。它做的事情用一句话概括:让AI带着技能跑一遍测试题,看技能到底有没有被用上。 它通过监听AI的输出流来判断技能有没有被触发,而不是等AI跑完全程才判断。这就像监考老师不需要等你交卷,看你的笔有没有动就知道你有没有开始做题。 3.5 aggregate benchmark.py:成绩单生成器 这个脚本把所有考试结果汇总成一份"成绩单": 它输出的不只是"通过了多少题",还包括: • pass rate:通过率(平均多少比例的assertion通过了) • stddev:标准差(多次跑同一题,结果稳不稳定) • delta:有技能和没技能之间的差异值 标准差这个指标很重要。如果同一道题跑了三次,结果分别是100%、0%、100%,平均值看起来是66%,但标准差巨大,说明你的技能非常不稳定——有时候好用,有时候失灵。这种问题光看平均值是发现不了的。 3.6 generate review.py:浏览器里的"审卷界面" 这个脚本会生成一个网页,让你在浏览器里直观地查看所有考试结果。它的工作原理是:读取所有测试运行的输出文件,把它们嵌入一个自包含的HTML页面中,然后用一个简易HTTP服务器把它打开。 这个网页有两个主要页面: • Outputs 页面:逐个查看每个测试题的输出结果,支持文本和图片的内联预览,你可以在每个结果下面写反馈意见 • Benchmark 页面:量化的数据对比——通过率、耗时、token消耗,按每道题展开明细 就像一个在线阅卷系统——你坐在电脑前,一道一道看学生的答卷,觉得不好的地方写批注,最后提交反馈。 3.7 run loop.py:自动优化描述的循环 这个脚本专门负责第六步——description的自动优化。它的流程是: 这里用到了机器学习中的一个经典技巧:train test split(训练测试分离)。你不能用同一份题目来练题和考试,否则练出来的只是"背答案"。把题目分成两份,一份用来改,一份用来考,这样改出来的description才能真正泛化到新的问题上。 四、实战案例:从零创建一个"翻译助手"技能 理论讲完了,来看一个完整的真实案例,走一遍完整的六步流程。 🎯 场景:你想让AI帮你翻译英文文章。你发现AI有时候翻译得很好,有时候风格不对,有时候术语翻错了。你想写一个"翻译助手"技能,规范翻译的流程。 场景:你想让AI帮你翻译英文文章。你发现AI有时候翻译得很好,有时候风格不对,有时候术语翻错了。你想写一个"翻译助手"技能,规范翻译的流程。 4.1 第一步:明确意图 你跟skill creator对话: "我想创建一个技能,帮我翻译英文文章到中文。我希望翻译风格自然、专业术语保留英文原文、长句拆分成短句。遇到不确定的术语时,给出多个翻译选项。" skill creator 确认了你的需求: • 输入:英文文章 • 输出:中文翻译 • 触发词:翻译、translate、英文转中文 • 边界情况:代码片段不翻译、数学公式保留原样、人名地名音译 4.2 第二步:写 SKILL.md 草稿 skill creator 自动生成了第一版 SKILL.md: 4.4 第四步:并行考试 skill creator 同时启动两组测试: A组(with skill):带着你的翻译技能跑三道题B组(baseline):不带任何技能,纯靠AI自身能力跑同样的题 每组各跑了2次(为了计算稳定性),结果如下: 4.5 第五步:分析并改进 Analyzer 分析了结果,发现一个问题: "第2题的A组 FAIL 原因是:翻译风格不够自然。这说明技能里写的'翻译风格自然'这个规则太笼统了,AI不知道'自然'具体是什么意思。建议给出具体的例子。" 你根据这个反馈,修改了 SKILL.md,加了一段"翻译风格示例": 改完之后重新跑测试,第2题的通过率从50%提升到了100%。 4.6 第六步:优化触发描述 最后一轮,run loop.py 自动优化了description。它发现原来写的"翻译、translate"触发词覆盖面不够广。用户有时候说的是"帮我看看这段英文什么意思",或者"这段话翻译一下",AI没有触发你的技能。 经过5轮自动迭代,description 被优化成了: 测试集通过率从72%提升到了94%。 4.7 最终成果 经过完整的六步循环,你的"翻译助手"技能: • pass rate 从无技能的50%提升到有技能的94% • 触发准确率从72%提升到94% • 有完整的测试用例,下次改了技能可以立刻验证有没有退步 • 有一个浏览器评审界面,任何改动能立刻看到效果 六、总结 旧版帮你"写出技能"。新版帮你"写出好用的技能"。 核心区别就四个字:考试、改进。 源码层面,新版由这些关键组件构成: • SKILL.md:技能的骨架,包含name、description和正文 • evals.json:测试用例,每道题有query和assertions • Grader:评分老师,逐条验证assertion并给出PASS/FAIL • run eval.py:测试引擎,自动运行测试并检测技能触发 • aggregate benchmark.py:成绩单生成器,计算pass rate和标准差 • generate review.py:浏览器审卷界面,可视化查看结果 • run loop.py:自动优化循环,用train test split防止过拟合 实战流程就像上面的"翻译助手"案例:明确意图、写草稿、创建测试、并行考试、分析改进、优化触发。每一步都有数据支撑,每一步改进都能被量化验证。 参考资料 • Anthropic 官方仓库:github.com/anthropics/skills github.com/anthropics/skills • SKILL.md 完整源码:github.com/anthropics/skills/blob/main/skills/skill creator/SKILL.md github.com/anthropics/skills/blob/main/skills/skill creator/SKILL.md • Grader Agent 源码:github.com/anthropics/skills/blob/main/skills/skill creator/agents/grader.md github.com/anthropics/skills/blob/main/skills/skill creator/agents/grader.md • Analyzer Agent 源码:github.com/anthropics/skills/blob/main/skills/skill creator/agents/analyzer.md github.com/anthropics/skills/blob/main/skills/skill creator/agents/analyzer.md • Anthropic 官方文档:docs.anthropic.com/en/docs/agents and tools/agent skills docs.anthropic.com/en/docs/agents and tools/agent skills 🚅 skill creator 是一个“教 AI 如何写好技能说明书”的工具,也是创建技能时最关键的一环。旧版只是教你写说明书,而新版不仅教你怎么写,还会帮你考核、打分、纠正问题,直到你写出一份真正好用的说明书为止。 skill creator 是一个“教 AI 如何写好技能说明书”的工具,也是创建技能时最关键的一环。旧版只是教你写说明书,而新版不仅教你怎么写,还会帮你考核、打分、纠正问题,直到你写出一份真正好用的说明书为止。 一、先搞懂一个基本概念:什么是"技能"? 可以把AI想象成一个非常聪明的学生。他什么都会一点,但如果你不给他"说明书"(也就是SKILL.md),他遇到具体任务时就不知道怎么干。 比如,想让AI帮你发一封邮件。可以在电脑里存一份说明书,写上"发邮件的步骤:先打开邮箱,再点写邮件,输入收件人和内容,点发送"。下次说"帮我发邮件",AI一看这份说明书,就知道怎么做了。 这份说明书,就叫"技能"(Skill),详见 🍽️ OpenClaw Skill技能系统 3分钟秒懂教程 。而 skill creator,就是帮忙写这份说明书的工具。 🍽️ OpenClaw Skill技能系统 3分钟秒懂教程 二、旧版和新版 2.1 旧版:像一个只教你"写菜谱"的厨师 想象你去学做菜。 旧版的老师傅跟你说:"来,我教你怎么写菜谱。第一步,写菜名。第二步,写需要什么食材。第三步,写每一步怎么做。好,写完了,拿走吧。" 然后你就拿着菜谱回家了。 问题来了:你写的菜谱真的好用吗?做出来的菜好吃吗?火候对不对?调料放多了还是放少了?老师傅不管这些。他只管教你"怎么写",不管你"写得好不好"。 这就是旧版的 skill creator:它帮你把菜谱(说明书)写好、格式整齐、保存好,然后就完事了。 旧版的流程非常简单: 1. 和AI对话,弄清楚你想写什么技能 2. AI自动生成一份 SKILL.md 文件 3. 顺便帮你建好文件夹、检查格式、打包 就像一个只会教你写字的老师——写完了就交卷,至于写得对不对,你自己想办法。 2.2 新版:像一个完整的"烹饪培训班" 现在换了一个新老师。 这个老师不仅教你写菜谱,还要你做出来给他尝。尝完不满意,教你改。改完做,再尝。一直循环,直到做出真正好吃的菜。 新版的流程变成了六步: 第一步:想清楚你要做什么菜 你得先跟老师说清楚:我想学做红烧肉。我要红烧肉肥而不腻、颜色红亮、入口即化。什么时候用这道菜?招待客人的时候。 对应到技能上:你想让AI在什么情况下用这个技能?输入什么、输出什么?边界情况有哪些? 第二步:写菜谱初稿 老师根据你的想法,帮你写一份菜谱草稿。但这个菜谱还是个"毛坯",能不能用还不确定。 第三步:准备几道"模拟考试题" 老师拿出三道题: • "用这道菜谱做一份红烧肉给家人吃" • "用这道菜谱做一份素食版本的红烧肉" • "用这道菜谱回答别人问'这道菜怎么做'" 这三道题,就是"测试用例"。它们模拟了真实用户会说的话。 第四步:考试——有菜谱 vs 没菜谱,对比着做 这是新版最大的升级。 老师同时安排两组学生考试: • A组:手里拿着你写的菜谱(有技能) • B组:不给菜谱,凭自己的经验做(没技能) 两组做完之后,有个专门的"评委"来打分。评委会看: • 做出来的菜对不对?(pass/fail) • 做得快不快?(花了多少时间) • 用了多少调料?(花了多少资源) 然后把结果汇总成成绩单,一眼就能看出:你写的菜谱到底有没有用,用了是变好了还是变差了。 第五步:看成绩单,反馈改进 老师把成绩单给你看,告诉你:"第一道题,A组和B组都做对了,说明这道菜谱对简单的情况没问题。但第三道题,A组反而做错了——你菜谱里的某个步骤可能让人误解了。" 你根据反馈改菜谱,改完再考一次。循环这个过程,直到成绩单上A组全面领先B组。 第六步:调整"什么时候用这道菜" 还有一个关键问题:你的菜谱放在书架上,什么时候会被人拿出来用? 比如你的菜谱叫"家常红烧肉",但有人问"有没有烧肉的做法",AI可能就找不到你的菜谱。新版增加了一个自动测试:它会模拟20种不同的问法,看你写的"菜谱名字和描述"能不能被AI准确识别出来。 它会自动反复调整描述的措辞,直到"应该找到的时候一定能找到,不该找到的时候不会误拿"。 2.3 旧版和新版的核心区别 用一张表来对比: 旧版的做法:写完就交卷 • 你写一份菜谱 • 格式检查没问题 • 打包保存 • 交给AI用 • 好不好用?不知道,全靠运气 新版的做法:考试打分、反复修改 • 你写一份菜谱初稿 • 准备几道模拟考题 • 两组学生对比考试 • 评委打分、出成绩单 • 根据反馈改菜谱 • 循环,直到A组全面碾压B组 区别就像:旧版 = 学校只教你写字,写完就毕业新版 = 学校教你写字,还出模拟卷让你反复考,考到高分才毕业 2.4 新版里三个重要的"角色" 新版里有三个专门的"帮手",就像培训班里的三个老师: 1. 评分老师(Grader) 他的工作是看学生做的菜,打分。他会严格按照标准来判断:做对了就是pass,做错了就是fail。而且他会写清楚为什么给这个分。 2. 对比老师(Comparator) 他的工作是把两道菜放在一起,蒙着眼睛对比。他不知道哪道菜来自A组、哪道菜来自B组,这样就不会有偏见。最后告诉你:A好还是B好,好在哪里。 3. 分析老师(Analyzer) 他的工作是看所有学生的成绩单,找出规律。比如"第一题所有人都对了,说明这道菜谱对简单情况没问题";"第三题A组反而比B组差,说明菜谱的某个步骤有问题"。 2.5 为什么要做这些改进? 这里有一个真实的教训。 瑞士有个大学做了实验,发现: • 程序员自己写的"技能说明书",对AI的帮助只有4% • 有时候甚至让AI变得更差了 原因不是"说明书没用",而是"写的说明书没经过验证,可能是错的"。 就像你写了一份菜谱,自己觉得写得挺好,但从来没做过。等真正做的时候,才发现盐放了两勺应该是一勺,火候写成了大火应该写小火。 旧版的问题就在这里:你写完了,格式没问题,但内容好不好用,没人知道。 新版就是要解决这个问题——写完必须考试,考试必须对比,对比必须有数据,数据必须能改进。 2.6 还有一个防"作弊"的设计 正文部分包含翻译规则: • 专业术语首次出现时标注中英文(如:人工智能(Artificial Intelligence)) • 超过40字的长句拆分成两个短句 • 代码块和数学公式保留原文不翻译 • 人名地名音译后标注原文 4.3 第三步:创建测试用例 你和skill creator一起写了三条测试题: