Agent 一次加载多个 Skill,会不会更强?

0 阅读9分钟

一、这个问题是怎么来的?

最近在整理自己的 Skill 库时,我产生了一个疑问:

如果我有 5 个都是分析股票的 Skill,在一次对话中同时手动加载,会不会比只加载一个 Skill 更厉害?

这个问题其实非常有代表性。很多人在使用 Codex、WorkBuddy、Claude Code 等 Agent 时,都下意识觉得:**加载的 Skill 越多,AI 就越强。**但事实并不是这样。搞清楚 Agent 到底怎么用 Skill 的,才能设计出更稳定、更省 Token 的 Skill 体系。


二、很多人误解了 Skill 的工作方式

假设我们同时勾选了下面 5 个 Skill:

  • 股票基本面分析
  • 技术分析
  • 财报分析
  • 资金流分析
  • 巴菲特价值投资分析

很多人的理解是这样的——AI 会依次调用五个专家,再综合五个人的意见:

Skill1
    ↓
Skill2
    ↓
Skill3
    ↓
Skill4
    ↓
Skill5
    ↓
综合输出

实际上,大多数 Agent 并不是这样工作的。


三、真正发生的事情是什么?

绝大多数 Agent(包括很多 Codex、WorkBuddy 等框架),当你手动加载多个 Skill 时,本质上会把它们全部拼接到同一个 Prompt 中。

模型最终看到的,更像是下面这样:

System Prompt

==================
Skill A 的说明(完整 SKILL.md 内容)
==================
Skill B 的说明(完整 SKILL.md 内容)
==================
Skill C 的说明(完整 SKILL.md 内容)
==================
Skill D 的说明(完整 SKILL.md 内容)
==================
Skill E 的说明(完整 SKILL.md 内容)
------------------

User:
分析腾讯股票

模型不是先执行 Skill A,再执行 Skill B,而是一次性看到所有 Skill 的说明。然后由大模型自己理解、融合这些信息,生成最终回答。因此,多个 Skill 更准确地说是多份"说明书",而不是多个独立运行的专家。

打个比方:你同时塞给一个人五本不同的"投资指南",他不可能分别按五本书跑五遍——他只会快速通读,然后用自己的理解给你一个综合回答。


四、多个 Skill 一起加载,会有哪些影响?

情况一:能力互补,效果通常更好

如果每个 Skill 负责不同的能力,例如:

  • 财报分析
  • 行业分析
  • DCF 估值
  • 风险分析
  • Markdown 报告生成

它们之间职责明确、互不冲突。最终模型能够综合这些能力,输出更完整的分析结果。这属于多个模块共同完成一项任务,值得推荐。

情况二:同类 Skill,收益可能没有想象中大

如果五个 Skill 都是在教模型"如何分析股票",例如:

  • 巴菲特投资体系
  • 彼得·林奇投资体系
  • 技术分析体系
  • 量化分析体系
  • 价值投资体系

那么模型最终看到的是**五套相似甚至部分重叠的分析方法。**它不会真的分别运行五个专家。更多情况下,它会:**自动融合、自动取舍、自动折中,**最后输出一个综合性的回答。

**加载五个相似 Skill,不等于得到五倍能力。**更像是给了模型五份方向大致相同的参考资料,而不是五个独立分析引擎。


五、Skill 之间还可能互相"打架"

如果多个 Skill 的指导原则不同,就可能出现冲突。例如:

Skill指导原则
APE 是核心指标
BPE 并不重要,更关注现金流
C不预测未来股价
D必须预测未来一年走势

模型看到之后,会尝试兼顾所有观点。最终回答往往会变成:

「PE 有一定参考价值……现金流同样重要……可以适当预测……但预测存在较大不确定性……」

这种回答看起来什么都说了,其实**没有任何一个体系真正贯彻到底。**这也是很多人觉得 AI 回答越来越"和稀泥"的重要原因。


六、一个容易被忽略的问题:Token 成本

很多人只关注能力,却忽略了上下文成本。做个简单估算:

内容Token 数
每个 Skill~1,500
5 个 Skill~7,500
用户提供的数据~5,000
历史聊天记录~10,000
合计~22,500

一次请求中,仅上下文就已经达到 22,500 Token

请求更慢、成本更高、更容易触碰上下文长度限制、历史内容更容易被挤出上下文。每加载一个 Skill,都会挤占一部分上下文窗口,而这些窗口本该留给用户数据和历史对话。


七、什么时候适合同时加载多个 Skill?

关键原则只有一句话:互补型 Skill 可以一起加载,相似型 Skill 要谨慎。

Skill 组合建议原因
财报 + 风险 + 行业 + 报告生成✅ 推荐能力互补,提升分析完整度
PPT + 配图 + Mermaid + Markdown✅ 推荐属于完整工作流链条
巴菲特 + 林奇 + 技术分析 + 价值投资⚠️ 谨慎内容重叠,容易融合甚至冲突
五个功能几乎相同的 Skill❌ 不推荐Token 增加,收益有限

八、如果一定要加载多个同类 Skill,应该怎么做?

如果你的目的就是**"希望看到不同投资体系的观点"**,那么不要让模型自己决定。而是直接告诉它:

请严格按照五种投资体系分别分析,不允许融合,最后再给出综合结论。

例如输出结构可以设计为:

一、巴菲特投资体系

......

二、彼得·林奇体系

......

三、技术分析体系

......

四、量化分析体系

......

五、综合结论

这样模型会更倾向于分别应用不同思路,而不是提前融合。


九、我更推荐的 Skill 设计方式

相比维护多个高度相似的 Skill,我更推荐:一个总 Skill + 多个子模式(Persona)。

例如:

股票分析 Skill

├── 巴菲特模式
├── 林奇模式
├── 技术分析模式
├── 财报分析模式
├── 量化模式

真正调用时,只需要告诉 Agent:

分析腾讯股票

启用:

✓ 巴菲特模式
✓ 财报模式
✓ 技术分析模式

这样设计有几个明显优势:

  • 公共规则只维护一次,减少重复。
  • 避免多个 Skill 指令冲突。
  • 节省 Token,降低上下文开销。
  • 输出结构更加稳定。
  • 后期维护成本更低。

对于 Skill 数量越来越多的用户,这种设计会明显优于维护大量高度相似的独立 Skill。


十、最后的总结

关于"一次加载多个 Skill 是否更强",记住下面几条:

  1. 多个 Skill 不会像多个专家一样依次执行。
  2. 大多数 Agent 的实现方式,是把多个 Skill 一次性拼接到 Prompt 中,让大模型自行理解和融合。
  3. 互补型 Skill(不同能力)一起使用,通常能够提升效果。
  4. 相似型 Skill(相同领域、不同流派)一起使用,收益往往没有想象中高,还可能因为指令冲突导致回答变得折中。
  5. 如果希望保留不同体系的观点,应明确要求模型分别分析,而不是让它自由融合。

**一句话总结:**Agent 的能力,不取决于一次加载了多少 Skill,而取决于 Skill 是否职责清晰、互补协作,以及你是否让模型以正确的方式组织和使用这些能力。


十一、把镜头拉近:Skill 注入的四个底层机制

前面讲的都是"现象层面"。如果我们把镜头拉近,看看 Skill 到底在底层是怎样发挥作用的,理解会更深。

1. Skill 加载本质是 Prompt 注入,不是多 Agent 协作

无论是手动勾选还是自动匹配,Skill 都通过"将 SKILL.md 全文拼入 System Prompt 或用户消息"的方式生效。Agent 框架一般不会为每个 Skill 启动独立的推理会话——那样成本太高,而且不同会话之间没有共享上下文。

实际的做法是:在同一条 Prompt 里把多个 Skill 的指令一并给出。所以:

  • Skill A 里写"输出必须包含风险提示",Skill B 里写"输出应简洁,不超过 500 字",模型需要自己协调这两个指令。
  • 如果两个 Skill 的指令本质上互斥——比如一个要求结构化表格、另一个要求自然段落——模型最终的表现会变得不稳定,可能在这一段遵守 A,下一段又被 B 带跑。

2. Skill 不是 RAG,不要再搞混了

有人在看到"多个 Skill 一起用"时,会联想到 RAG(检索增强生成)——从多个知识库中检索相关内容然后综合。但 Skill 不是知识库,它是行为指令。知识库的内容可以叠加,因为它们是"参考资料",不冲突就行;指令叠加却不一样——两条互相矛盾的指令同时生效,模型没法同时做到,只能折中。

这个区别很关键:RAG 是给了模型更多"弹药",Skill 是给了模型更多"命令"。多一份弹药通常更好,多一份互相打架的命令则未必。

3. 中间迷失:Skill 多了,有些指令会被模型忽略

大模型处理长上下文时,存在公认的"中间迷失"(Lost-in-the-Middle)效应。2023 年 Liu 等人的研究证实:模型对开头和结尾的内容关注度最高,中间部分容易被遗漏。

这个效应放在 Skill 加载的场景里就很直接了:当你加载 5 个甚至 8 个 Skill 时,排在 Prompt 中间位置的 Skill 指令,模型可能只是"略读"一下,甚至整段跳过。你在用的 Agent 看起来加载了 8 个 Skill,实际被认真执行的也许只有前两个和最后一个。

4. 真的需要多个"视角"?换个思路

一个更可靠的方案不是加载多个 Skill,而是:

  1. 单个 Skill 定义清楚分析框架。
  2. 在 Skill 内用模式切换(如"请用巴菲特模式分析")来控制行为分叉。
  3. 如需多次分析,分多轮对话,每轮切换一个模式。每轮只加载一份上下文,指令更聚焦,也不存在指令冲突。

这个思路比"一次性加载五个 Skill 让模型自己看着办"要可靠得多——不是因为逻辑上更优雅,而是因为它尊重了模型处理长上下文的真实边界。


**原文作者:**杨杰的学习笔记,整理自日常使用 Agent 的实践经验。