Skills 只有这一项任务(但它失败了)

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00事实证明,使用 Skills 可能并非为智能体提供额外上下文的最佳方案,回归 agents.md 文件反而效果更好。
00:00:08这是 Vercel 在测试如何为编程智能体提供 Next.js 文档的最佳方法时,得出的一个令人意外的结论。
00:00:15那么,让我们直接进入正题,拆解一下究竟发生了什么、原因何在,以及这对于有效使用编程智能体有何启示。
00:00:26正如我所说,Vercel 的目标是为编程智能体提供额外的上下文(在本例中是 Next.js 文档),这样当你使用智能体编写 Next.js 代码时,它能了解所有最新的 API,因为其中一些可能尚未包含在训练数据中,甚至情况恰恰相反。
00:00:41你可能在使用旧版本的 Next.js,并希望确保智能体仅使用该版本中可用的方法。
00:00:47他们想要一套版本匹配的文档系统供智能体使用。
00:00:51为此,他们测试了两种常用的方法。
00:00:54首先是我们的 Skills。
00:00:56Skills 最近非常流行,许多框架和工具都已发布或正在发布相关功能。
00:01:01讽刺的是,Vercel 正是推动其普及的幕后功臣之一,他们推出了 Skills CLI 和相关的 Skills 仓库。
00:01:08强烈建议大家去看看。
00:01:09如果你还不了解 Skills,它们其实是 Anthropic 提出的一种开放标准,本质上是指令、脚本和上下文的模块化捆绑包,智能体可以按需加载,从而更准确地执行任务。
00:01:20但关键细节在于:完全由智能体来决定何时加载这些信息。
00:01:26而这正是目前的硬伤所在。当 Vercel 进行评估测试时,他们发现有 56% 的情况下,Skill 从未被调用。
00:01:35智能体就是决定不去使用它。
00:01:37令人惊讶的是,在评估中,为智能体提供 Skill 相比于完全没有 Skill 的智能体,性能居然没有任何提升。
00:01:44更让人意外的是,他们发现 Skill 甚至可能产生负面影响。
00:01:48在未使用 Skill 的情况下,其表现有时甚至不如基准线,这表明未使用的 Skill 可能会引入噪音或干扰。
00:01:57为了解决这个问题,他们尝试在提示词中明确要求“请使用此 Skill”。
00:02:02这确实奏效了,将 Skill 的触发率提高到了 95%,并将评估通过率提升至 79%。
00:02:09但也随之带来了新问题。他们发现不同的措辞会产生截然不同的结果。
00:02:15例如,如果你只说“你必须使用该 Skill”,它确实照做了,但随后它会忽略项目本身的上下文。
00:02:21所以你不得不说“同时使用该 Skill 和项目上下文”。
00:02:24Vercel 非常不喜欢这种系统的脆弱性,并指出如果微小的措辞调整就能导致巨大的行为波动,那么这种方法在生产环境中使用就显得太不稳定了。
00:02:33因此,他们需要一个更可靠的方案,最好是一个无需智能体自行做出决策的方案。
00:02:40于是他们尝试了 agents.md 文件。
00:02:42这其实是一种许多智能体都在使用的开放格式。如果你是 Claude 的粉丝,这与 CLAUDE.md 完全一样。
00:02:49它用于向编程智能体提供指令,且这些指令始终包含在系统提示词中。
00:02:53因此,与 Skills 不同,智能体不需要负责决定是否去获取信息。
00:02:58信息已经存在于其系统提示词中了。但这本身也可能产生上下文过载的问题。
00:03:03也就是说,当你的上下文增加时,输出质量反而会变差。
00:03:06所以,你总不能把整个 Next.js 文档都塞进 agents.md 文件里吧。
00:03:10那该怎么办呢?为了解决这个问题,Vercel 在 agents.md 中仅使用了一个文档索引。
00:03:17简单来说,它只是文件系统中各个具体文档文件的路径列表。
00:03:22然后,另一个关键点是添加一条指令,要求“在处理任何 Next.js 任务时,优先使用基于检索的推理,而非基于预训练知识的推理”。
00:03:31我个人读到这里时,本以为这会导致和 Skills 类似的结果,因为智能体仍然需要去查找并读取那些文档文件。
00:03:38但当他们在评估中进行测试时,智能体在所有项目中都获得了 100% 的分数,并在构建、代码检查和测试评估中获得了完美评分。
00:03:47因此,它明显比 Skills 更可靠、更准确。这有点像经典的软件工程:即那个看起来更“笨”、更简单的方案,往往才是最好的,你根本不需要过度设计。
00:03:53但为什么会这样呢?为什么 agents 文件优于 Skills?这其实很难解释清楚。
00:03:58AI 在某种程度上是个黑盒,但 Vercel 推测这归结为三个因素,而且都与决策有关。
00:04:03当你使用 agents 文件时,智能体不存在决策点。
00:04:10我们在一开始的系统提示词中就直接告诉它要使用文档,并明确告知每个文件的位置。
00:04:14这样知识就变成了持久化的上下文,而不是让模型自行决定是否按需调用的按需内容。
00:04:20因为它已经包含在系统提示词中,所以直接存在于推理过程中。
00:04:27但这并不意味着 Skills 就完全没用了。事实上,Vercel 发现两者其实是可以互补的。
00:04:31他们表示,Skills 更适用于由用户触发的明确工作流,比如指令“升级我的 Next.js 版本”、
00:04:36“迁移到 App Router”或“应用某些框架最佳实践”。
00:04:41但如果你希望编程智能体具备通用的框架知识,
00:04:45那么使用 agents.md 提供的被动上下文,其表现会优于 Skills,尤其是在目前的模型水平下。
00:04:48我相信未来的模型会针对基于 Skill 的检索工作流进行优化,但现在还没到那个阶段。
00:04:54目前,Vercel 给出的建议是——特别是对于框架作者或那些准备编写 Skills 或 agents.md 的人来说:
00:04:59不要坐等 Skills 的性能提升。应尽可能压缩你的上下文。
00:05:06为检索而设计,而非为记忆而设计。最重要的是,始终通过评估测试(evals)来验证一切。
00:05:10如果你只是这些文件的使用者,Vercel 现在提供了一个工具,可以下载针对你特定 Next.js 版本的文档
00:05:16以及预构建好的 agents.md 文件,让你能够立即体验这种新方法带来的优势。
00:05:21我很想知道其他工具是否也会采取这种做法。我也很想听听你们对此的看法。
00:05:29欢迎在下方评论区告诉我你对 Agents 和 Skills 的想法。
00:05:34顺便点个关注。一如既往,我们下期再见。
00:05:37And while you're there, subscribe. As always, see you in the next one.

Key Takeaway

Vercel 的研究表明,通过 agents.md 将上下文持久化到系统提示词中,比让智能体自行决定何时调用 Skills 更加稳定和高效。

Highlights

  • Vercel 发现使用 agents.md 文件为编程智能体提供上下文的效果优于 Skills 插件

  • Skills 在测试中表现出 56% 的未调用率,甚至可能因为干扰而产生负面影响

  • 通过在系统提示词中包含 agents.md 指令,消除了智能体的决策点,提高了可靠性

  • 针对特定框架任务,要求智能体优先使用基于检索的推理而非预训练知识

  • agents.md 在 Vercel 的评估测试中达到了 100% 的完美评分

  • Skills 并非一无是处,更适合用于用户触发的明确迁移或升级工作流

  • 开发者应为检索而设计内容,并始终通过评估测试(evals)来验证性能

Timeline

Skills 在 Next.js 开发中的意外失败

视频开篇揭示了一个意外结论:在为编程智能体提供 Next.js 文档上下文时,传统的 Skills 方案并非最佳选择。Vercel 致力于解决模型预训练数据过时或版本不匹配的问题,希望智能体能精准掌握最新 API。Skills 本质上是由 Anthropic 提出的模块化指令和脚本捆绑包,旨在让智能体按需加载。然而,这种“按需加载”的机制依赖于智能体的自主决策,这成为了整个流程的潜在薄弱环节。Vercel 通过对比实验发现,回归简单的 agents.md 文件反而能提供更稳定的性能表现。

Skills 方案的评估缺陷与脆弱性

Vercel 的评估测试显示,在 56% 的情况下,智能体根本没有调用为其准备的 Skill。更糟糕的是,提供 Skill 后的性能有时甚至低于没有任何辅助的基准线,这表明未使用的 Skill 产生了噪音干扰。虽然通过强制性提示词“必须使用此 Skill”将触发率提升至 95%,但这种方法极其脆弱。微小的措辞变化会导致智能体忽略项目本身的上下文,这种不稳定性使其难以在生产环境中使用。因此,Vercel 决定寻找一种无需模型进行复杂决策的替代方案,以规避这种系统性的不确定性。

agents.md:更简单、更可靠的检索方案

Vercel 转向了 agents.md 这种开放格式,其原理与 Claude 使用的 CLAUDE.md 类似。为了防止上下文过载导致输出质量下降,他们在文件中仅包含了一个文档索引和文件路径列表。最关键的一步是添加指令,要求智能体在处理任务时优先进行基于检索的推理,而非依赖记忆中的知识。测试结果令人震惊,智能体在所有测试项目中都获得了 100% 的满分评价,在代码检查和构建测试中表现完美。这证明了在软件工程中,更简洁、更直接的方案往往比过度设计的方案更有效。

原理解析:为什么持久化上下文胜过按需调用

为什么 agents.md 会优于 Skills?Vercel 认为核心在于消除了“决策点”。在 agents.md 方案中,文档位置和使用说明直接存在于系统提示词中,成为了推理过程中的持久化上下文。智能体不再需要决定是否去获取信息,因为知识已经“存在”于其当前的思维路径中。尽管如此,视频也指出 Skills 在特定用户触发的任务(如版本迁移或应用最佳实践)中仍有价值。作者认为当前的 AI 模型尚未针对复杂的 Skill 检索流程进行完全优化,目前的最佳实践依然是尽可能压缩上下文并针对检索进行设计。

行动建议与 Vercel 提供的工具

视频最后对开发者和框架作者提出了几点建议,强调不要盲目等待 Skills 性能的提升。开发者应该始终通过评估测试(evals)来验证方案的真实效果,并根据检索需求而非记忆需求来构建文档。为了帮助开发者快速上手,Vercel 已经提供了一套工具,可以下载针对特定版本的文档和预构建的 agents.md 文件。这种新方法允许开发者立即优化其 AI 编程环境的准确性。作者最后鼓励观众分享对这两种技术的看法,并关注后续的技术动态更新。

Community Posts

View all posts