Claude Code 技能评估与调优

您有15个技能。您输入"清理我的代码"。三个技能认为您在对它们说话。其中一个触发了。是错误的那个。PR工作流技能刚刚在您的工具函数上运行了。

这就是误触发问题。如果您花过时间构建一个严肃的Claude Code技能库,您就遇到过这个问题。不是一次。是反复遇到。您添加的技能越多,描述就越容易混淆,您花在思考为什么错误工具在代码上运行的时间就越多。

技能创建器的触发调优正是为此而生。要理解为什么Claude Code技能触发调优很重要,您首先需要了解Claude Code技能究竟是什么,以及为什么触发器是整个关键。一旦您了解Claude如何决定加载技能,关于构建、评估和维护技能的其他一切就都迎刃而解了。

本文涵盖完整的图景:什么是Claude Code智能体技能、您可以构建的两种战略类型、技能创建器的评估系统如何工作、如何有效进行基准测试,以及触发调优如何系统性地解决误触发问题。到最后,您将拥有一个维护循环,使您的技能库随着模型演进保持准确和有价值。

1、什么是Claude Code技能

Claude Code技能是带有YAML前置内容的SKILL.md文件。这就是完整的格式。namedescription字段是必需的。前置内容之后的所有内容都是技能体:指令、上下文、示例、Claude完成工作所需的任何内容。

---
name: commit-message
description: 在创建git提交消息时使用。生成包含范围和破坏性更改说明的常规提交格式。
---
# 提交消息技能
[技能体内容]

这个YAML片段看起来简单得具有欺骗性。description字段承担了所有繁重的工作。它是Claude读取以决定此技能是否与当前任务相关的内容。它始终在上下文中,每个技能大约100个token。当Claude确定某个技能与当前任务匹配时,它会调用Skill工具将完整技能体加载到上下文中。否则,完整技能体保持休眠状态,这使得即使拥有大型库也能保持token使用量可控。这100个token就是您的整个选择界面。

Claude Code智能体技能根据作用域存在于两个位置。个人技能位于~/.claude/skills/<name>/SKILL.md,适用于您所有项目。项目级技能位于.claude/skills/<name>/SKILL.md,仅当您在该项目中工作时适用。项目级技能会覆盖同名的个人技能,这使您可以为每个代码库定制行为。

智能体技能标准

技能格式遵循智能体技能开放标准,文档位于agentskills.io。这不是Claude专有的格式。相同的规范已在Cursor、VS Code/Copilot(GitHub Copilot)、Gemini CLI、OpenCode、Goose、Roo Code、JetBrains Junie和30多个其他工具中实现。您为Claude Code编写的技能可以轻松移植到更广泛的生态系统中。

这种可移植性比看起来更重要。随着生态系统的扩展,您的编码工作流可以转移。编写一次技能,在一个地方维护它,它就能在任何支持该规范的地方运行。

2、两种Claude Code技能类型

构建Claude Code技能时最重要的战略决策是了解您正在构建哪种类型。搞错这一点,您将投资于在一年内变得毫无价值的技能。

AI智能体:智能体技能——能力提升和编码偏好

您构建的每个技能都属于两个分支之一。这个分支决定了技能能保持多久有用。

2.1 能力提升技能

能力提升技能教Claude在特定任务上比基础模型思考得更好。反AI泛滥设计技能是典型例子。这是对某些AI生成的UI看起来都一样的频繁抱怨。基础模型默认使用训练数据中最频繁出现的内容。对于设计任务,这意味着Inter或Roboto字体、紫蓝色渐变、白色背景。这些模式如此普遍,以至于它们有一个名字:分布趋同。模型没有做错任何事。它在做统计学习所优化的事情。

提升技能用特定的品味覆盖了这种趋同。它避免了AI泛滥。明确指定要避免的字体、产生通用结果的颜色组合以及替代方案。该技能为Claude提供了一个具体的美学框架,没有明确指令就不会应用。

局限性:能力提升技能是一种赌注,赌模型不会快速进步到使您的技能过时。当下一个模型版本改进到足以原生避免您讨厌的字体时,您的提升技能就变成了噪音。它仍然加载token。它仍然触发。它只是不再增加价值。这不是假设性的。在2024年和2025年,随着模型改进,早期"编写更好代码"的技能就发生了这种情况。

提升技能有保质期。为此做好计划。

2.2 编码偏好技能

编码偏好技能在本质上是不同的。它们编码您的特定工作流:反映您组织运营方式的步骤、工具和子智能体的序列。没有未来模型会从第一性原理了解您的工作流,因为您的工作流是您的。

以下是一些编码偏好的示例:

客户支持分类示例使其具体化。该技能可能:从Zendesk接收传入的工单,分类紧急程度和意图,检索相关知识库文章,启动子智能体起草回复,并升级具有完整上下文的边缘案例。没有模型版本会了解您的内部政策、您的SLA、您的产品特性或您的升级路径。它可以下载仓库并扫描它们,在Confluence中查找设计和架构文档。工作流是不可还原地属于您的。无论基础模型变得多么强大,该技能都保持有价值。

销售情报流水线示例使其具体化。该技能可能:监控目标账户的信号(工作变动、融资、产品发布),通过API丰富联系人信息,根据交易阶段生成定制的推广内容,并协调邮件和CRM的后续跟进。没有模型版本会了解您的ICP细微差别、您的消息传递策略、您的交易速度模式或您的CRM卫生规则。工作流是不可还原地属于您的。无论基础模型变得多么强大,该技能都保持有价值。

DevOps事件响应示例使其具体化。该技能可能:监控跨环境的日志和指标,检测异常,关联跨服务的信号,启动智能体提出根本原因,并生成与从Confluence查找的操作手册对齐的回滚或补丁计划。没有模型版本会了解您的基础设施拓扑、您的部署模式、您的故障模式或您的操作容忍度。工作流是不可还原地属于您的。无论基础模型变得多么强大,该技能都保持有价值。

内容再利用引擎示例使其具体化。该技能可能:摄取长篇内容(播客、博客、转录稿),提取关键主题,生成平台特定的变体(LinkedIn、Twitter、通讯稿),并按渠道优化语气和结构。没有模型版本会了解您的声音、您的受众期望、您的分发策略或您的转化目标。工作流是不可还原地属于您的。无论基础模型变得多么强大,该技能都保持有价值。

数据质量监控示例使其具体化。该技能可能:扫描传入的数据管道,根据业务规则验证,检测异常,触发修复工作流,并为利益相关者生成报告。没有模型版本会了解您的模式演进、您的领域特定约束、您的下游依赖关系或您对数据漂移的容忍度。工作流是不可还原地属于您的。无论基础模型变得多么强大,该技能都保持有价值。

编码偏好技能会复合增长。这些是您的工作流。它们与您的访问技能和MCP配合使用。每个都代表了关于您如何工作的累积知识。它们在模型版本之间转移而不会降级。它们在支持智能体技能规范的工具之间转移。它们是正确的默认投资。

实用指导:首先构建编码偏好技能。积极构建它们。当基础模型所做的和您需要的之间的差距足够大,以至于您能在模型弥补差距之前受益时,能力提升技能才值得构建。将它们视为具有预期生命周期的临时优化,而不是技能库的永久添加。

如果您的Claude Code技能库中超过20%是能力提升技能,您持有的技能将会过时。在下一个模型发布使问题变得紧迫之前,将比例转向编码偏好。

3、技能创建器:Anthropic的官方元技能

技能创建器是Anthropic的官方技能,可在github.com/anthropics/skills获取。它构建和维护其他Claude Code技能。这是一个元技能:关于技能的技能。

它处理四个操作:创建、修改、评估和触发优化。创建和修改是简单的部分。描述您想要的内容,技能创建器会生成正确格式的SKILL.md,具有正确的前置内容、结构良好的技能体和初始描述。这节省了您每次都要记住格式要求的麻烦。

评估和触发调优功能使技能创建器值得安装。这些操作将技能集合转化为维护的技能库。

4、在Claude Code中运行技能评估

技能评估解决的核心问题:您如何知道您的Claude Code技能是否仍然有效?

技能是静态文本。模型会变化。六个月前针对早期Claude模型编写的技能可能会被更新的模型以不同方式解释,产生比单独使用基础模型更差的结果。没有测量方法,您就没有信号。在用户抱怨之前,您都是在盲目飞行。

技能创建器的评估系统将测试用例存储在evals/evals.json中。每个测试用例有一个输入(用户输入的内容)和一组关于输出应包含什么的断言。

{
  "test_cases": [
    {
      "input": "我修复了导致会话令牌过早过期的auth中间件中的bug",
      "assertions": [
        "响应以'fix('或'fix:'开头",
        "响应提到'auth'或'middleware'或'session'",
        "响应少于72个字符"
      ]
    }
  ]
}

注意断言设计。每个断言都是一个具体的二进制检查:响应要么以fix(开头,要么不是。要么少于72个字符,要么不是。这是有意为之的。断言必须可客观验证。"响应很好"不是断言;它是希望。这个约束强制了精确性。如果您无法为预期行为编写可验证的断言,您实际上并不知道该技能应该做什么。这是在早期发现的有用信息,而不是在发布之后。

当您运行技能评估时,技能创建器会生成并行子智能体。一个运行启用技能执行。另一个运行在没有技能的情况下执行(或针对较旧的技能快照)。一个评估器子智能体根据断言评估每一对,并为每个测试用例生成通过/失败结果。

技能评估告诉您的两件其他方式无法知道的事情:

捕获回归。 您的提交消息技能的通过率在Claude模型更新后从92%下降到71%。模型以不同方式解释您的提示。六个月前明确的提交格式说明现在被赋予了不同的权重。您需要更新技能。没有评估,您可能几周都不会注意到,直到团队中有人问为什么提交消息突然看起来不对了。

发现超越。 您的评估显示基线(无技能)达到88%的通过率,而您的技能达到89%。差距是一个百分点。基础模型赶上了。该技能增加了token成本和触发复杂性,但几乎没有质量收益。归档它。您不会失去任何东西,并且减少了技能库中的噪音。

AI智能体——智能体技能——在Claude Code中运行技能评估

该图映射了三种失败模式:超越(基础模型赶上了)、回归(模型更新破坏了技能)和表现不佳(技能从未足够好地工作)。每种都有不同的解决路径。

发现超越是技能评估在维护节省方面收回成本的地方。从不修剪的库会长成触发消歧的噩梦。评估为您提供客观证据,以自信地归档技能,而不是出于惯性坚持它们。

5、技能基准测试

技能基准测试用三个特定指标扩展评估:pass_rateduration_mstotal_tokens。每个指标都报告为均值、标准差和与基线运行的增量。

pass_rate

  • 衡量什么: 通过断言的百分比* 何时重要: 始终:这是质量信号

duration_ms

  • 衡量什么: 每次运行的执行时间* 何时重要: 当您关心工作流中的延迟时

total_tokens

  • 衡量什么: 每次运行的token消耗* 何时重要: 当成本或速率限制重要时

增量列是您关心的数字。一个将pass_rate提高15个百分点但使token使用量翻倍的技能,与一个将pass_rate提高8个百分点但不改变token成本的技能是不同的权衡。两种改进可能都值得保留,但如果您在优化成本或延迟,它们意味着不同的决策。基准测试使这些权衡可见,以便您可以明确地推理它们。

标准差比人们预期的更重要。一个平均pass_rate为85%但标准差高的技能在均值掩盖的方式上是不可靠的。一致性是一个真正的质量属性,特别是对于在自动化工作流中使用的技能,失败的技能调用会导致下游问题。

在这些特定时刻运行技能基准测试:

  • 当您首次创建技能时(这是您的基线)。
  • 当您更新技能时(这是您的前后证据)。
  • 当Claude模型版本变化时。
  • 当您怀疑能力提升技能已被超越时。

基准测试结果是您即将做出的决策的证据。没有它,您就是在猜测。

关于基准测试输入的一个实用说明:使用反映您实际使用的输入,而不是理想化的干净示例。一个在完美结构化描述上达到95%通过率,但在您实际输入的混乱、不完整描述上只有60%通过率的提交消息技能,不是一个95%的技能。使评估输入现实化。

6、技能触发调优:修复误触发和错误触发

这是大多数技能库所有者最终需要的功能,也是大多数人直到技能库已经损坏才发现的功能。

一旦您拥有超过10个Claude Code技能,误触发和错误触发就不再是边缘情况。它们是主要的维护问题。描述开始混淆。相似的工作流共享词汇。Claude无法区分它们。

误触发:您说"清理这段代码",PR审查技能触发了,而不是重构技能。两个描述都提到代码质量。都提到改进代码。Claude在给定条件下没有做出错误的决定;描述确实是模糊的。它选了一个。选错了。

错误触发:您说"设置cron调度",没有任何技能触发。您的Tokio cron技能的描述是"在使用Tokio实现Rust异步cron作业时使用。"您的自然语言没有包含"Rust"、"异步"或"Tokio"。语义匹配失败了,因为描述过于关注实现细节而不是用户意图。

两个问题都可以通过技能创建器的触发调优过程解决。

AI智能体:智能体技能——Claude Code技能触发调优:修复误触发和错误触发

触发调优是一个循环,不是一次性修复。每次迭代都会重写描述,并根据标记查询测试它,直到准确率达到可接受的阈值或五次迭代用完。

步骤1:生成标记查询

在技能上运行触发调优。技能创建器分析当前描述并生成20个标记查询:10个应该触发此技能,10个不应该。这些是基于当前描述的语义内容生成的。

步骤1:生成标记查询

生成的查询首先是诊断。如果您查看"应该触发"列表,某些条目感觉不对,这告诉您一些关于描述如何被解读的重要信息。注意意外之处。

步骤1的输出1
步骤2的输出2

步骤2:在HTML UI中审查

触发调优UI以表格形式呈现20个查询及其标签。您审查每一个并纠正任何错误的标签。这是您注入自动化过程无法拥有的领域知识的机会。也许生成的"应该触发"示例实际上是您希望由不同技能处理的情况。标记为错误。纠正后的标签成为下一步的训练信号。

在HTML UI中审查
审查我们不触发未打算触发的技能。

步骤3:迭代描述重写

scripts/run_loop Python脚本运行最多五次迭代。每次迭代重写description字段,并根据您纠正的标记查询测试新描述的准确率。当准确率达到可接受的阈值或五次迭代后(以先到者为准)停止。

重写是根据它学到的内容进行的:哪些查询不应该触发却触发了,哪些应该触发却没有触发。

步骤4:审查结果

前后差异通常是巨大的。这是一个关于重构技能被误认为PR审查技能的真实示例:

之前:

description: 当用户想要提高代码质量时使用

之后:

description: 当用户明确说"重构"、"清理"、"提高可读性"或"重组"现有代码文件时使用。不要为新功能实现、bug修复或PR审查请求触发。

"不要为...触发"模式是造成差异的原因。Claude的描述匹配是语义的,而不是基于关键词的。显式排除在重叠技能之间划定了硬边界。之前的描述是正确的但不充分确定。之后的描述足够具体,Claude可以在两个都关于代码改进的技能之间进行消歧。

注意调优过程会对Tokio cron技能错误触发做什么。原始描述锚定在实现细节上("使用Tokio的Rust异步cron作业")。调优后的描述可能是:"在任何语言或运行时中设置计划任务、cron作业或重复后台工作时使用。"从实现到意图的转变正是调优循环所揭示的。

7、何时运行触发调优

对每个与现有技能在主题上重叠的新Claude Code技能运行触发调优。如果您有一个"提交消息"技能和一个"PR描述"技能,两者都描述与git相关的写作任务。对两者都进行调优。如果您有三个针对不同上下文的不同代码审查技能,将三个一起作为一个组进行调优。

在添加第十个技能后运行触发调优。然后每次添加进入已有技能领域的新技能时再次运行。

8、维护您的Claude Code技能库

Claude Code技能不是设置后就忘记的。技能创建器暗示了一个维护周期,始终如一地遵循它是将工作技能库与损坏技能库区分开来的关键。

完善您的智能体技能

状态图显示了完整的生命周期。技能从草稿移动到活跃状态,定期进入评估状态,然后要么返回活跃状态(健康),要么被调优(触发问题),要么达到归档状态(被超越)。技能不会永远停留在一个状态。这就是重点。

维护周期的工作方式如下:

使用技能创建器创建。 格式正确,获得初始描述,技能体结构正确。除非您喜欢调试YAML前置内容,否则不要手动创建SKILL.md文件。

evals.json中积累测试用例。 每当技能产生意外输出时添加一个测试用例。不是每次运行;只有输出错误且您能说明正确应该是什么样的情况。十个测试用例后,您就有了一个真正的回归检测器。二十个之后,您就有了一个有意义的基准。

每次Claude模型更新后运行技能评估。 新Claude模型的发布是技能库面临的最高风险事件。早期模型以一种方式解释的描述可能会被新模型以不同方式解释。在更新当天运行完整的评估套件。在用户之前发现回归。

当您怀疑被超越时运行基准测试。 这主要适用于能力提升技能。如果基础模型在您的技能覆盖的领域发布了显著改进,运行基准测试。比较pass_rate增量。如果增量接近零,归档该技能。

当您添加第十个技能时进行触发调优,以及在您自己的使用中注意到错误触发模式的任何时候。错误触发会留下痕迹:"等等,为什么那个技能触发了?"当发生时做记录。当您有三个这样的记录时,运行触发调优。

当确认被超越时归档。 归档不是失败。一个成功将能力转移给基础模型的技能完成了它的工作。归档它然后继续。一个拥有十五个准确技能的干净库,胜过一个拥有四十个质量和触发重叠程度不一的技能的臃肿库。

您的库的健康信号:如果您的Claude Code技能中超过20%是能力提升技能,您持有的技能将会过时。在下一个主要模型发布使情况变得紧迫之前,将比例转向编码偏好。

9、Claude Code技能创建的未来

技能创建器,如其目前的存在,需要您知道哪些断言是可验证的,哪些触发条件足够具体以避免歧义。这本身就是一项技术技能。从未编写过单元测试的人会努力编写好的评估断言。从未调试过正则表达式的人凭直觉知道"模式匹配"做什么,但不知道它在哪里会出问题。

Anthropic已经指明的方向:最终,高级自然语言描述就足以生成完整的Claude Code技能。目标体验类似于:"为我构建一个根据我们公司风格指南审查PR的技能",模型从该描述中推断出断言、触发条件和执行步骤。

这对非技术用户和降低技能创建门槛最重要。今天,在"我知道我希望这个技能做什么"和"我能编写使其可靠执行的SKILL.md"之间存在差距。通过自然语言接口弥合这一差距,显著扩大了技能生态系统的可寻址用户群。

不会改变的是:编码偏好技能仍然需要您的上下文。模型无法知道您的PR审查清单、您团队的风格偏好、您的部署工作流或您的格式约定。您仍然需要提供这些。自然语言接口只是消除了将您的知识转化为正确格式的摩擦。知识本身仍然是不可还原地属于您的。

agentskills.io上的智能体技能开放标准是为这个未来设计的。标准格式意味着可移植性。可移植性意味着您今天构建的Claude Code技能将在明年采用该规范的任何工具中使用。现在构建您的编码偏好技能库不仅是对今天工作流的优化。它是对可移植、持久资产的投资。

10、阅读后要采取的三个行动

第一:从github.com/anthropics/skills安装技能创建器。如果您已经拥有超过五个Claude Code技能,本周对所有这些技能运行触发调优。不是下一个冲刺。是本周。您会发现至少一个导致您尚未注意到的静默错误触发的描述。

第二:审查您现有的技能。标记每一个:能力提升或编码偏好。对于每个提升技能,诚实地问:基础模型是否已经赶上了?如果不确定,运行快速基准测试。归档增量接近零的技能。一个更小、更准确的库胜过一个带有降级技能的大型库。

第三:每次技能产生意外输出时,在evals.json中添加一个测试用例。从今天开始。第一个测试用例总是最难的,因为您必须仔细思考可验证的断言是什么样的。三四个之后,就变得很快了。十个之后,您就有了一个回归检测器,下次Claude模型更新改变技能体解释方式时,它将为您节省数小时。

触发器是整个关键。每次都能准确触发的技能胜过十个不可预测触发的技能。description字段是100个token。这100个token决定您的整个技能体是加载还是保持休眠。仔细编写它们。系统地调优它们。用真实输入测试它们。

技能创建器使完整的维护循环足够快,没有理由让技能库漂移。构建Claude Code技能。运行技能评估。调优触发器。归档基础模型已超越的内容。这就是实践。


原文链接: Claude Code: How to Build, Evaluate, and Tune AI Agent Skills

汇智网翻译整理,转载请标明出处