AI热点 2026-08-19 28 次浏览

Skill 越装越多,Agent 为什么却越来越不好用?

Skill 能让 Agent 固化工作流程,但数量增加不等于能力线性增长。本文从渐进加载机制出发,分析路由冲突、规则碰撞、上下文成本和维护债务,并给出六项治理方法。

摘要:Skill 能让 Agent 掌握固定流程,但数量增加并不等于能力线性增长。真正影响体验的,往往是技能边界重叠、触发描述含糊、指令冲突和缺少评测。本文从 Skill 的加载机制出发,解释问题为什么发生,以及应该如何治理。

你可能遇到过这种情况:

Agent 刚安装几个 Skill 时,表现明显变好了。它知道如何写技术文章、检查代码、生成配图,也能按照固定流程发布内容。

但继续安装以后,体验却开始下降:有时选错 Skill,有时一次触发好几个流程,有时明明只是改一段文字,却先读取大量说明,最后还被互相矛盾的规则卡住。

这并不意味着 Skill 越少越好。

更准确的结论是:Skill 的数量不是主要问题,技能之间缺少清晰边界,才是 Agent 变得不好用的根源。

Skill 不是插件按钮,而是一套可被调用的工作方法

Skill 可以理解为给 Agent 准备的一份“岗位操作手册”。它通常包含任务说明、执行步骤、参考资料和可选脚本,用来把一次成功经验固化成可复用流程。

例如,同一个 Agent 可以安装这些 Skill:

  • 技术文章写作
  • 文章配图生成
  • 公众号发布
  • 代码审查
  • 故障复盘

每个 Skill 单独看都很有价值。问题出现在 Agent 收到一个请求后,还要先完成另一项任务:应该调用哪一个 Skill?

Skill 越多,这一步越像一个不断扩大的路由系统。

Agent 并不会一开始就读取所有 Skill

很多人以为,安装一百个 Skill,就会把一百份完整说明全部塞进模型上下文。至少在当前 Codex 的机制中,实际情况并非如此。

官方文档说明,Skill 使用渐进披露机制:系统起初只提供技能的名称和描述;当某个 Skill 被选中后,才读取完整的 SKILL.md

初始 Skill 列表还有上下文预算:最多占模型上下文窗口的 2%;无法确定窗口大小时,使用 8000 个字符作为上限。如果安装数量太多,Codex 会先缩短描述;规模继续扩大时,还可能省略部分 Skill 并给出警告。

这说明两件事:

第一,安装 Skill 不会必然造成上下文按数量线性膨胀。

第二,Skill 越多,Agent 越依赖那段简短的名称和描述做出正确选择。

Skill 采用先匹配名称和描述、命中后再读取完整说明的渐进加载机制

从整个系统看,失控通常集中在四个位置:选错入口、规则冲突、上下文承压,以及长期积累的维护债务。下面逐一展开。

边界和治理问题会将 Skill 系统放大为四类失控

第一个问题:描述相似,Agent 很容易选错

假设系统里有三个 Skill:

  • “用于编写技术文章”
  • “用于优化公众号文章”
  • “用于生成并发布技术内容”

当用户说“帮我整理一篇技术文章”时,三个描述都可能匹配。

Agent 可能只选中其中一个,也可能同时加载多个。选择结果还会受到用户措辞、上下文以及描述被缩短后的内容影响。

这不是模型突然变笨了,而是路由规则没有给出足够清楚的边界。就像一家公司的三个部门都写着“负责内容”,转交工单时自然容易出错。

第二个问题:多个 Skill 的规则可能互相冲突

不同 Skill 往往不只提供知识,还会规定执行流程。

一个 Skill 要求先搜索资料再写作,另一个要求先生成提纲;一个要求完整输出 Markdown,另一个要求直接生成 HTML;一个允许自动发布草稿,另一个要求发布前必须确认。

这些规则各自在自己的场景里可能都是合理的。一旦同时命中,Agent 就必须继续判断优先级。如果规则没有说明适用范围,结果可能是流程变长、重复执行,甚至原地等待。

所以 Skill 的冲突,本质上不是“知识太多”,而是多套操作规范在争夺同一个任务的控制权

第三个问题:命中以后,上下文仍然会膨胀

渐进加载解决的是“不要提前读取全部 Skill”,并没有消除被选中后的成本。

当一个 Skill 被激活,Agent 会读取完整说明;如果说明继续引用多份文档、模板和检查清单,这些内容还会进一步进入工作上下文。

一个请求误触发三个大型 Skill,就可能出现:

  • 有效任务信息被大量流程说明稀释
  • Agent 花更多时间协调规则,而不是解决问题
  • 对话变长以后,早期约束更容易被压缩
  • 工具调用次数和执行时间增加

因此,SKILL.md 并不是越长越专业。它更适合作为一张清晰的路线图:告诉 Agent 何时使用、先做什么、需要时再读取哪份资料。

第四个问题:Skill 也会产生维护债务

Skill 不是安装完成就永远正确的静态文件。

接口会更新,工具会变化,业务流程也会调整。如果团队不断添加新 Skill,却不清理旧版本,就可能同时保留两套过期规则。Agent 未必知道哪一套才是当前标准。

更隐蔽的问题是:某个 Skill 单独测试没有问题,不代表它和其他 Skill 一起出现时仍然稳定。

随着数量增加,需要评测的不只是“这个 Skill 能不能完成任务”,还包括:

  • 应该触发时,是否真的触发
  • 不应该触发时,是否保持安静
  • 与相邻 Skill 同时存在时,是否会选错
  • 描述被缩短后,关键触发条件是否还在
  • 多个 Skill 同时命中时,规则能否兼容

如果没有这些测试,Skill 库越大,行为就越难预测。

解决办法不是少装,而是治理

一个稳定的 Skill 体系,可以从下面六件事开始。

1. 按任务边界划分,而不是按关键词划分

“文章”“图片”“代码”只是对象,不是完整边界。

更好的划分方式是明确输入、结果和责任。例如,“将技术素材写成公众号 Markdown”和“将已确认的 HTML 发布为公众号草稿”,就是两个容易判断的任务。

2. 把描述当成路由规则来写

描述至少要回答三个问题:

  • 什么请求应该使用它
  • 它负责完成到哪一步
  • 哪些相似任务不属于它

关键触发条件应放在描述前面。因为 Skill 很多时,描述可能被缩短,写在末尾的重要边界未必还能保留。

3. 让完整说明保持短而明确

核心文件只保留必须遵守的流程、判断条件和安全边界。大段教程、模板和案例放进引用资料,需要时再读取。

这能减少单次激活的上下文成本,也能降低规则冲突的概率。

4. 重要流程尽量显式调用

对发布、部署、数据修改等结果敏感的任务,不要完全依赖自动匹配。明确指定 Skill,可以降低路由的不确定性,也方便追踪本次任务使用了哪套流程。

5. 给 Skill 建立触发评测

每个 Skill 至少准备三类样例:应该触发、不应该触发、容易与相邻 Skill 混淆。

每次新增或修改 Skill 后,重新跑一遍这些样例。评测目标不是证明它“偶尔能用”,而是确认它能稳定地在正确场景出现。

6. 定期合并、废弃和改名

高度重叠的 Skill 应合并;已经被新流程替代的 Skill 应退出;名称过于宽泛的 Skill 应重新命名。

Skill 库应该像代码库一样维护,而不是像浏览器收藏夹一样只进不出。

通过明确边界、显式调用和持续评测,让多个 Skill 各司其职

怎样判断是不是已经装得太多?

不要只看 Skill 总数,可以观察下面几个信号:

  • 同一句请求经常触发不同 Skill
  • Agent 频繁读取与任务无关的说明
  • 一个简单任务也要协调多套流程
  • 新增 Skill 后,旧任务的成功率反而下降
  • 团队成员说不清相邻 Skill 的区别
  • 已经没人知道哪些 Skill 仍在使用

出现两三个信号时,应该做的不是继续补充提示词,而是重新检查分类、描述和评测。

最后

Skill 的价值,是把经验变成 Agent 可以重复执行的工作方法。它让 Agent 更专业,但不会自动让系统更有秩序。

Skill 少的时候,模糊边界还不明显;Skill 多起来以后,路由冲突、规则碰撞、上下文成本和维护债务会被一起放大。

因此,真正值得追求的不是“我装了多少 Skill”,而是:

  • 每个 Skill 是否有清晰边界
  • Agent 是否能稳定选中正确 Skill
  • 多个 Skill 是否能够协同而不冲突
  • 整套系统是否可以持续评测和清理

好的 Agent,不是会调用最多的 Skill,而是在正确的时候,只调用真正需要的 Skill。

参考资料:Build skills|OpenAI 官方文档