最近花了些时间扩展了一下wegent里的skill机制,先说一个。
传统的skill和mcp是平行的关系,在claude code新推出的插件机制里这俩也是并列的存在。
但是我总觉得,没必要把skill和mcp做成两种机制。
skill本质上就三个能力:
代码拆分:skill可以独立于agent开发和分发,也就意味着skill开发者不需要有agent开发能力。
动态加载:默认情况下只给模型摘要信息,加载后再“展开”skill提示词。
附加文件:skill可以携带附加的文档和脚本,供大模型调用。
这三个能力很好,但是有个问题:
如果一个能力需要用到某种远程资源,目前的skill不能描述这个信息,需要通过plugin来描述。而plugin里的mcp的生命周期和skill又是不同的,就造成了skill可以按需加载,但mcp只能静态加载的问题。
在一些极端场景中,为了某个不怎么常用的偏门技能,可能需要加载一堆静态mcp资源,性价比很低。
因此wegent给skill的metadata做了个扩展,支持直接在metadata里面配置mcpserver,并且对上下文做了些改进,让skill相关的mcp工具随着skill的激活而激活,而不是每次都发给模型。
目前这个机制还在测试,从初步测试的效果来看,对于无需加载skill的任务会有一些帮助,毕竟少了很多无关的干扰项。
但是我始终没想明白为什么官方skill和mcp是两套机制,是不是我的理解肤浅了……[流汗]
发布于 北京
