技能升级方案:动态系统提示词+动态 tools 参数
从技能(skills)的探讨出发,我们深入研究了技能的升级方案:技能(skills)+ MCP 混合方案,即动态系统提示词+动态 tools 参数。在昨晚对技能的细节内容进行阅读后,我发现 Anthropic 提供的技能存在一些问题,例如只能传入文本,无法动态决定传入的 tools 工具;技能在被 AI 调用后,其内容部分会持久的记录在上下文里;MCP 和 skills 是割裂的两个系统,Anthropic 没有给出直接的转换或者兼容工具;技能工具本身没有强制判断参数是否可用。这些问题的根本原因在于 Anthropic 在 claude code 实现技能时的一些限制和不足。为了优化这个系统,我们可以采用动态系统提示词和动态 tools 列表的方法。具体来说,我们可以在系统提示词中专门划分出两个部分,一个是各种技能的描述,另一个是技能的内容部分,这两个部分可以合并或分开。技能的描述放在系统提示词中,而不再放在技能工具的定义描述中。当 AI 使用技能工具获取描述时,历史上下文中只会记录调用技能的行为,然后应用会将该技能的内容添加到系统提示词的内容部分。后续对话中,AI 已经掌握了该技能的内容,如果需要,可以继续阅读更多的技能。当 AI 认为某个任务结束后,可以主动调用技能工具关闭该技能,完成技能的完整生命周期。用户也可以手动关闭或添加技能,因为技能是直接写入系统提示词中的,配置非常方便。MCP 工具在技能的前提下也会变得动态,不再是固定的。如果某个技能绑定了 MCP 工具,该工具不会被直接添加到调用 API 时的 tools 参数中。当 AI 决定读取某个技能,而该技能又定义了某些工具时,应用应该先检查是否已经注册了这些工具,并在 tools 参数中添加未启用的 MCP 工具,动态维护一个 tools 列表。当 AI 决定不再需要某个技能时,也会动态地根据配置项关闭这些工具,不再添加到 tools 列表中。目前,技能更像是给一堆文档添加了一个文字摘要库,AI 需要时阅读文档,而不是根据需求动态维护自身的技能。这种方式应该很早就有人想到,但没有火起来,反而是更次一级的技能火了。后续我会尝试在我的插件中实现这些功能。目前有什么 IDE 或插件已经实现了这些功能呢?
评论已关闭