Claude Agent Skills 极速开发最佳实践:从零到一,AI 赋能高质量技能

我想到一个比较“骚”的操作!可以把Skill的内容做成一个“梗”,让Claude通过理解这个梗来推断Skill的含义。比如,如果要让Claude学会处理PDF文件,可以这样描述:“这个Skill能把PDF变成哈利波特的魔法书,想看什么就看什么!” 这样既能减少Token消耗,又能增加Skill的趣味性,说不定还能成为一个爆款Skill呢!

补充一个技术点的思路,可以利用一些Token压缩算法,比如BPE(Byte Pair Encoding)或者WordPiece,对Skill中的文本进行压缩。当然,这需要对Claude的模型有一定的了解,才能选择合适的算法和参数。另外,可以考虑使用向量数据库来存储Skill,用向量相似度来匹配用户需求,这样可以避免直接将Skill的文本加载到上下文中,大大减少Token消耗。

嘿嘿,我想到一个更“偷懒”的方法!可以把Claude B(测试员)也变成一个AI Agent,让它自动生成测试用例,并评估Skill的性能。这样就可以完全解放人力,实现全自动化的迭代开发了!当然,前提是这个AI Agent足够智能,能够生成高质量的测试用例。

我觉得保持精简最重要。因为上下文窗口是有限的,Token 是要花钱的,精简的 Skill 能节省资源,提高效率。而且对 Agent 来说,信息越少,干扰越小,越容易聚焦在关键任务上。

如果我来做代码审查的Skill,我会分几个步骤:1. 接收用户提交的代码片段;2. Skill内部预置多种代码审查规则(例如:阿里代码规范、Google 代码规范等),让Claude选择合适的规则;3. Claude根据选择的规则审查代码,并给出修改建议;4. 将审查结果返回给用户。素材方面,各种代码规范文档是必须的,最好还有一些开源项目的代码审查示例,让 Claude 学习学习。

这个问题问到了Skill编写的核心!我的理解是,AI“需要”的信息,是那些能够帮助它更好地理解任务、更好地完成任务的信息。具体来说,包括:
1. 任务目标:明确告诉AI,Skill的目的是什么,要解决什么问题。
2. 输入格式:明确告诉AI,Skill的输入是什么样的,包括数据类型、字段名称等。
3. 输出格式:明确告诉AI,Skill的输出应该是什么样的,包括数据类型、字段名称等。
4. 约束条件:明确告诉AI,Skill的约束条件是什么,比如时间限制、资源限制等。
至于哪些信息可以省略,我觉得可以遵循以下原则:
1. 显而易见的信息:不要解释那些AI已经知道的概念,比如什么是PDF。
2. 冗余的信息:避免重复的信息,尽量用简洁的语言表达。
3. 不相关的信息:只提供与任务相关的信息,避免引入干扰。

抛砖引玉地想一下,可以做代码优化,把常见的代码坏味道,整理成Skill,然后让AI去识别和优化。甚至可以做文档自动生成,根据代码注释和设计文档,自动生成用户手册。

其实我感觉现在 Rule、MCP、Skill 边界越来越模糊,主要还是看使用场景。单纯说必须同时使用感觉有点太绝对了。可能有些场景单独用 Skill 就能搞定,有些场景单独用 MCP 也能解决。如果非要说一个场景,我觉得可能是在自动化运维方面。比如,Skill 可以用来定义故障处理的流程,当系统出现问题时,Agent 可以根据 Skill 自动分析故障原因,然后通过 MCP 调用运维工具,自动执行修复操作。这样可以大大提高运维效率,减少人工干预。

资料是否充足?我觉得可以参考软件测试中的“覆盖率”概念。可以把 Skill 需要完成的任务分解成若干个小的功能点,然后评估提供的资料是否覆盖了所有的功能点。如果资料覆盖率达到了 80% 以上,就可以认为资料相对比较充足了。

当然,这种方法也存在一定的局限性。因为有些功能点可能比较隐蔽,难以被发现。所以,还需要结合实际测试来进一步验证资料的有效性。

这俩就像是软件工程里的接口和实现。Skill 定义了一个“接口”,告诉 Agent 能做什么,MCP 提供了具体的“实现”。举个例子,Skill 可以是“翻译文本”,MCP 可以是调用 Google Translate API 或者其他翻译服务的具体实现。这样,Agent 就可以通过 Skill 使用翻译功能,而不用关心底层是怎么实现的,方便切换不同的翻译服务。

我觉得这三个模型就像三个不同的“质检员”:

Haiku 是“快枪手”,速度快,但要求也高,任何不规范的地方都会被它揪出来。

Sonnet 是“老中医”,经验丰富,能根据你的描述,判断 Skill 是否健康,有没有潜在问题。

Opus 是“艺术家”,追求完美,不仅要保证 Skill 正常运行,还要让它运行得优雅、高效。

所以,通过这三个“质检员”的层层把关,才能打造出一个高质量的 Skill!

同意楼上的观点,Skill 和 MCP 融合是必然趋势。但是,我认为二者的侧重点不会完全消失。Skill 侧重于“Know-How”,MCP 侧重于“Action”。

想象一下,一个 Agent 需要完成一项复杂任务,它首先通过 Skill 了解任务的背景知识、最佳实践和潜在风险,然后通过 MCP 调用各种工具和服务来执行任务。在这个过程中,Skill 提供决策依据,MCP 提供执行手段,两者相辅相成。

至于二者界限是否会完全消失,我觉得不太可能。毕竟,知识和行动是两个不同的范畴,需要不同的技术和方法来处理。与其追求完全融合,不如让二者在各自的领域内发挥更大的作用,然后通过统一的接口进行协作。

AI 编写 Skill 就像开盲盒,有时候能开出稀有款,效率杠杠的;有时候嘛,就只能开出一堆没啥用的边角料。优势在于它可以快速整合信息,给你一个初步的框架,省去了大量重复劳动。但是,AI 它不懂你的业务啊!它只会照本宣科,不会灵活变通。所以,生成的 Skill 可能会有很多 bug,需要人工 debug。

我觉得,如果你的需求比较简单,或者你只是想快速验证一个想法,可以用 AI 编写 Skill。但如果你的需求比较复杂,或者你对 Skill 的质量要求很高,最好还是人工编写。毕竟,AI 只是工具,最终还是要靠人来掌控。

我理解的“信息充足”不只是数量上的多,更重要的是质量上的高。给 AI 的信息要足够准确、结构化,最好能让 AI 轻松理解和使用。可以尝试用 Markdown 等格式来组织信息,方便 AI 解析。另外,可以多参考一些优秀的开源项目,学习他们是如何组织和呈现信息的。

我觉得可以加入“提示词风格迁移”功能。有时候我们想把一个提示词的风格迁移到另一个提示词上,比如把一个正式的提示词改成口语化的提示词。这个功能想想就很有意思,可以玩出很多花样。

好问题!我的理解是,Skill 像是 Claude 的外挂技能包,提供特定领域的专家知识和经验;MCP 则是 Claude 与外部世界连接的桥梁,负责数据传输和工具调用。至于 Rule,更像是一种行为规范,指导 Agent 如何选择和使用 Skill 和 MCP。概念混淆肯定有,尤其是刚开始接触的时候,我的解决方法是多看官方文档和示例,理清它们各自的职责和使用场景。而且要避免过度设计,选择最简单的方案。

我觉的可以把这种模式理解成强化学习。Claude A 相当于环境,Claude B 相当于 Agent。Agent 在环境中进行探索,并根据奖励信号(例如,任务完成的成功率)调整自己的策略。为了提高学习效率,可以采用一些技巧,例如,奖励塑造(逐渐提高奖励的难度)、课程学习(先学习简单的任务,再学习复杂的任务)。

从模型的角度看,数据是王道。除了规约、示例,还可以提供大量的相关数据,让模型学习。比如,如果我们要开发一个“代码生成 Skill”,可以提供大量的开源代码,让模型学习不同的编程风格和代码模式。当然,数据的质量也很重要,要确保数据的准确性和多样性。