乐于分享
好东西不私藏

【AI编码工具的配置机制】7.Skills与Subagents-高级配置机制的浅层采用

【AI编码工具的配置机制】7.Skills与Subagents-高级配置机制的浅层采用

Skills的定义与功能

Skills是由Anthropic引入的配置机制,现在作为扩展代理AI工具能力的开放标准。Skills将提示、工具和文档捆绑在一起,代理可以按需调用。从实现角度来看,Skills是一个包含SKILL.md文件的目录。这个文件必须包含至少包含名称和描述的YAML前置元数据,后面跟着关于如何执行任务的指令。

Skills的设计理念是提供可重用的知识和可调用工作流,使得开发者可以将常见的任务模式封装成可复用的组件。这不仅提高了效率,也确保了任务执行的一致性。

Skills的采用情况

研究数据显示,Skills的采用情况呈现出明显的浅层采用特征。在分析的2,926个仓库中,发现了601个Skills,分布在158个仓库中。平均而言,这些仓库使用3.8个Skills(最小值=1.0;最大值=28.0;中位数=2)。

然而,数据显示,使用Skills的仓库通常使用少于三个Skills。这表明大多数开发者只定义了少数几个Skills,没有充分利用Skills的潜力。

Skills的编程语言分布

与Context Files类似,Skills的采用也呈现出编程语言特定的模式。TypeScript和Python是使用代理工具的所有仓库中的主导编程语言,这种分布也反映在使用Skills的项目中。

这种分布可能反映了TypeScript和Python在AI和机器学习领域的流行度,以及这些语言社区对新技术和工具的接受度较高。

Skills的内容规范

Skills规范建议SKILL.md文件应该包含少于500行。它还建议将任何详细材料移动到单独的文件中。研究发现,在识别出的601个Skills中,只有25个(4%)超过500行。也就是说,大多数开发者遵循了这个建议。

为了提供详细的信息和指令,Skills可以利用不同的资源,即代理在需要时加载的额外可选文件或目录。有三种类型的资源:

scripts/:包含代理可以运行的可执行代码。语言选项包括Python、Bash和JavaScript。

references/:包含代理在需要时可以读取的文档。这可以包括技术参考、模板或结构化数据和其他领域特定文件。

assets/:包含静态资源,如模板(文档模板、配置模板)、图像(图表、示例)和数据文件(查找表、模式)。

Skills的资源使用情况

研究扫描了研究仓库中的所有Skills目录,以获取不同Skills使用的资源。在分析的601个Skills中,绝大多数(501个,83.3%)不包含额外资源。

在那些包含额外资源的Skills中,最常见的模式是references/目录(48个Skills,8.0%),其次是scripts/目录(34个Skills,5.7%)。12个Skills(2.0%)结合了scripts/和references/,而assets/目录只出现在4个Skills中(0.7%)。

剩余的组合,即references/与assets/,以及所有三个目录一起,每个只出现一次(0.2%)。

Skills的静态特性

资源使用情况的数据揭示了一个重要发现:Skills主要使用”静态”资源(代理在需要时读取的文档),而不是”动态”资源,如扩展代理行为的可执行脚本。

这种静态特性表明,在实践中,Skills主要作为结构化文本而不是可执行工作流包发挥作用。这表明配置目前更多地用作文档而不是自动化。

Subagents的定义与功能

Subagents是专门的AI代理,代理AI编码工具或其他代理可以将任务委托给。技术上,Subagents是具有与Skills相同YAML前置元数据结构的Markdown文件。

然而,Subagents的不同之处在于它们在自己的上下文窗口中运行,并将结果返回给父代理,而Skills在调用代理的上下文中执行指令。这种隔离性使得Subagents能够独立处理任务,不受主代理上下文的限制。

Subagents的采用情况

研究发现,Subagents的使用模式与Skills相似。在131个仓库中发现了452个Subagents。平均而言,这些仓库使用3.45个Subagents(最小值=1.0;最大值=18.0;中位数=2)。

然而,数据显示,这些仓库通常使用少于三个Subagents。这表明大多数开发者只定义了少数几个Subagents,没有充分利用Subagents的潜力。

Subagents的记忆功能

Claude Code的Subagents的一个特色功能是它们可以有自己的”记忆”,即一个在代理交互中持久存在的目录。这个目录可以用来随着时间的积累知识,例如存储调试见解。

然而,研究发现,没有仓库存储这样的记忆文件。这表明Subagents的记忆功能尚未被实际使用,可能是因为开发者还没有意识到这个功能的价值,或者还没有找到合适的应用场景。

Skills与Subagents的比较

Skills和Subagents虽然都是高级配置机制,但它们在功能和使用方式上有明显的区别。Skills在调用代理的上下文中执行,适合封装可重用的知识和工作流。Subagents在自己的上下文窗口中运行,适合需要独立处理的任务。

从采用情况来看,两者都呈现出浅层采用的特征,大多数仓库只定义了少数几个。从资源使用来看,Skills主要使用静态资源,而Subagents的记忆功能尚未被使用。

浅层采用的原因分析

Skills和Subagents的浅层采用可能有多个原因。首先,这些机制相对新颖,Claude Code于2025年2月才发布,Skills和Subagents的引入时间更晚。其次,定义可执行的Skills和Subagents需要额外的设计和维护工作,相比于编写Markdown指令,这可能阻碍了采用。

第三,目前很少有实证证据表明哪些配置策略最有效或在什么条件下产生可测量的改进。在缺乏明确指导的情况下,开发者可能倾向于使用最简单的机制(Context Files)。

高级机制的潜力与挑战

尽管Skills和Subagents目前只是浅层采用,但它们具有巨大的潜力。Skills可以通过脚本和结构化资源提供更丰富的配置,Subagents可以处理复杂的任务并积累知识。这些机制如果被充分利用,可以显著提高代理AI工具的效率和准确性。

然而,挑战也很明显。首先,需要更多的教育和文档,帮助开发者理解这些机制的价值和使用方法。其次,需要更多的实证研究,证明这些机制的优势。第三,需要更好的工具支持,简化这些机制的配置和管理。

实践建议

基于研究发现,对于想要采用Skills和Subagents的开发者,可以提供以下建议。首先,从简单的Skills开始,逐步增加复杂性。其次,考虑使用静态资源(references/)来提供详细的文档和指导。第三,谨慎使用可执行脚本,确保它们的安全性和可靠性。第四,探索Subagents的记忆功能,寻找合适的应用场景。

未来研究方向

Skills和Subagents的浅层采用为未来的研究提供了多个方向。首先,需要纵向研究,跟踪随着工具成熟和开发者获得经验,配置实践如何演变。其次,需要对照研究,评估高级机制(如带有可执行资源的Skills或专门的Subagents)是否比仅使用Context Files提供可测量的好处。

第三,需要研究Skills和Subagents在内容和用例方面的差异。最后,需要研究如何在多工具仓库中检测和解决配置工件之间的潜在冲突。

总结:Skills和Subagents作为高级配置机制,目前只是浅层采用。大多数仓库只定义了少数几个Skills和Subagents,Skills主要使用静态资源而不是可执行脚本,Subagents的记忆功能尚未被使用。这种浅层采用可能反映了这些机制的新颖性和配置的复杂性,但也表明它们具有巨大的潜力,需要更多的教育和研究来推动采用。

本文参考论文《Configuring Agentic AI Coding Tools:An Exploratory Study》