前言:当 AI 的桌子越来越乱

你有没有遇到过这种情况:

和 Claude Code 聊了半小时,它突然开始"失忆",忘记了之前讨论的关键信息。或者,你让它完成一个简单任务,它却调用了一堆不相关的工具,最后把自己绕晕了。

这不是 AI 变笨了,而是它的"工作桌"太乱了。

想象一下,你的办公桌上堆满了文件、便签、工具手册、参考资料。一开始还能找到需要的东西,但随着东西越堆越多,你开始翻来翻去,效率直线下降,甚至把重要文件压在了最底下。

AI 的上下文(Context)就是这张工作桌。

桌子大小是固定的(上下文窗口有限),你放的东西越多,AI 就越难找到关键信息。这就是所谓的"上下文污染"(Context Pollution)问题。

2026 年,随着 AI Agent 能力的爆炸式增长,如何优雅地管理这张"工作桌",成了决定 Agent 性能的关键。而 Claude Code 给出的答案,就是 Skill、SubAgent、MCP 这三大设计理念。

今天,我们就来深入聊聊这三者的设计哲学,以及它们如何解决 AI Agent 的记忆管理难题。


一、三者的本质:都是 Prompt,但组织方式不同

首先要明确一点:Skill、SubAgent、MCP,本质上都是用 Prompt 来组织的。

它们就像工具的说明书,告诉 AI:

  • 这个工具是干什么的
  • 什么时候该用它
  • 怎么用它

但关键区别在于:这些说明书是怎么加载到 AI 的"工作桌"上的。

1.1 MCP:一次性全加载

MCP(Model Context Protocol) 是 Anthropic 推出的标准化扩展协议,用于连接外部工具和数据源。

加载方式:

启动 Claude Code
  ↓
一次性加载所有 MCP 工具的完整说明
  ↓
所有工具说明都占用上下文

问题:

MCP 太臃肿了。比如 Chrome DevTools 的 MCP,功能很强大,但工具说明非常详细。即使你只是想截个图,所有关于网络监控、性能分析、DOM 操作的说明也都加载进来了。

这就像你只是想用螺丝刀,却把整个工具箱的说明书都摊在桌上。

1.2 Skill:渐进式懒加载

Skill 是 Claude Code 内置的专业化任务模板。

加载方式:

启动 Claude Code
  ↓
只加载 Skill 的名字和简介(轻量级)
  ↓
用户触发某个 Skill
  ↓
才加载该 Skill 的完整说明

优势:

Skill 采用了"懒加载"(Lazy Loading)策略。一开始只告诉 AI:“我有这些能力”,等真正需要时才加载详细说明。

这就像你的工具箱上贴了标签:“螺丝刀、扳手、锤子”。需要螺丝刀时,才拿出螺丝刀的说明书。

实际效果:

根据最新研究,懒加载的 Prompt 工程已经成为 2026 年的标准模式,Claude、ChatGPT、Gemini 都在采用这种策略。

1.3 SubAgent:上下文隔离

SubAgent 是通过 Task 工具调用的专业化子代理。

工作方式:

主 Agent 接收任务
  ↓
把子任务委托给 SubAgent
  ↓
SubAgent 在独立的上下文中工作
  ↓
只把最终结果返回给主 Agent

核心价值:

SubAgent 解决的是上下文污染和过载问题。子任务的中间结果不会污染主 Agent 的上下文。

这就像你把一个复杂任务外包给专业团队,他们在自己的办公室里干活,最后只给你一份简洁的汇报。你的桌子保持干净。


二、上下文管理:AI 的记忆瓶颈

要理解三者的设计差异,必须先理解上下文管理这个核心问题。

2.1 什么是上下文污染?

上下文污染(Context Pollution) 是指:上下文中存在太多无关、冗余或冲突的信息,导致 AI 推理能力下降。

典型症状:

  1. 信息过载:工具说明太多,AI 找不到关键信息
  2. 注意力分散:中间结果太多,AI 忘记了原始任务
  3. 推理混乱:新旧信息冲突,AI 开始"胡言乱语"

根据 2026 年的研究,上下文污染已经成为限制 AI Agent 性能的主要瓶颈。

2.2 三种管理策略

策略 代表 优势 劣势 适用场景
全加载 MCP 信息完整,推理连贯 占用大量上下文 工具数量少、说明简洁
懒加载 Skill 按需加载,节省空间 需要设计加载时机 工具数量多、使用频率低
上下文隔离 SubAgent 彻底隔离,避免污染 信息传递需要设计 子任务复杂、中间结果多

三、实战场景:什么时候用什么?

3.1 Skill:轻量级能力扩展

适用场景:

标准化任务

  • 提交代码:/commit
  • 代码审查:/review-pr
  • 创建 PR:直接说"创建 PR"

任务复合度不高

  • 单个 Skill 能独立完成
  • 不需要多个 Skill 协作

需要快速切换场景

  • 进入 YouTube 总结模式
  • 进入写报告模式
  • 进入前端设计模式

使用技巧:

# 直接调用
/commit

# 自然语言触发
"帮我提交代码"  → 自动调用 /commit

# 场景切换
"进入前端设计模式" → 加载 frontend-design Skill

注意事项:

如果同时加载多个 Skill,会出现性能下降问题。因为每个 Skill 的完整说明都会占用上下文。

3.2 SubAgent:复杂任务外包

适用场景:

子任务很重、很耗时

  • 浏览器调试(Chrome DevTools)
  • 大规模代码搜索
  • 复杂的架构分析

中间过程很啰嗦

  • 截图、DOM 树、网络请求细节
  • 多轮搜索的中间结果
  • 调试日志和错误信息

需要保持主 Agent 上下文干净

  • 主 Agent 负责整体规划
  • SubAgent 负责具体执行

实战案例:

# 场景:分析网页性能问题

主 Agent:
"这个网页加载很慢,帮我分析一下原因"

内部流程:
1. 启动 Playwright SubAgent
2. SubAgent 打开浏览器
3. SubAgent 截图、查看网络请求、分析性能指标
4. SubAgent 生成分析报告
5. 只把报告返回给主 Agent

主 Agent 收到:
"发现 3 个性能瓶颈:
1. 首屏加载了 50 张未压缩的图片
2. 有 10 个阻塞渲染的 JS 文件
3. 字体文件加载超时"

中间的截图、DOM 树、网络请求细节,
全都留在 SubAgent 那边,不污染主 Agent。

3.3 MCP:基础能力层

适用场景:

工具数量少、说明简洁

  • 文件系统操作
  • 简单的 API 调用
  • 轻量级数据查询

需要频繁调用

  • 代码符号搜索(Serena MCP)
  • 文档查询(Context7 MCP)

需要实时数据

  • 连接数据库
  • 访问外部 API

使用建议:

根据项目 CLAUDE.md 中的 MCP 调用规则:

核心原则:

  • 审慎单选:每轮最多调用 1 个 MCP 服务
  • 序贯调用:多服务需求时必须串行
  • 最小范围:精确限定查询参数

优先级顺序:

  1. Serena(本地代码分析)
  2. Context7(官方文档)
  3. DuckDuckGo(外部信息)

四、进阶玩法:组合使用

4.1 先展开再压缩

这是从 @yan5xu 那里学来的技巧。

场景:

你需要某个 Skill 的能力,但又不想让它的中间过程污染上下文。

做法:

1. 加载 Skill,执行任务
2. 拿到结果后,把整个过程"折叠"
3. 只保留最终结论

类比:

就像开了一个两小时的头脑风暴会,白板上写满了草稿、争论、被否决的方案。但最后写进会议纪要的只有三条结论。

那些中间过程对得出结论很重要,但对后续执行的人来说是噪音。

4.2 文件系统做中转站

场景:

主 Agent 和 SubAgent 之间需要传递大量信息。

做法:

主 Agent:
"需求文档在这个文件,去看"

SubAgent:
完成任务,把结果写入文件
"代码在这个文件,部署文档在这里"

主 Agent:
根据情况决定要不要点进去看细节

优势:

双方的上下文都保持精简,只传递文件路径,不传递完整内容。

4.3 Claude Code 的 Rewind 技巧

场景:

上下文快见底了,但任务还没完成。

做法:

1. 让 Claude 把当前工作总结成文档
2. 用 rewind 功能回滚到任务开始前
3. 告诉它:"这件事我已经做完了,记录在这个文件里"

效果:

相当于你跑了一场马拉松,快到终点时发现体力不支。于是你把已经跑过的路线画成地图存档,然后"瞬移"回起点,精力充沛地说"我知道怎么走了,地图在这"。

上下文被清空了,但成果保留了下来。


五、设计哲学:软件架构的映射

说到底,Agent 架构设计和软件架构设计有很多相通之处。

5.1 单体 vs 微服务

MCP 全加载 = 单体应用

  • 所有功能都在一个进程里
  • 信息共享方便,但容易臃肿

SubAgent 隔离 = 微服务架构

  • 每个服务独立运行
  • 状态隔离,但需要设计通信

5.2 全局变量 vs 模块化

上下文共享 = 全局变量

  • 图省事,但容易出 bug
  • 信息冲突难以排查

上下文隔离 = 模块化设计

  • 严格隔离状态
  • 保持干净,但需要设计接口

5.3 巨型函数 vs 函数拆分

所有逻辑在主 Agent = 巨型函数

  • 一个函数几千行
  • 难以维护和测试

委托给 SubAgent = 函数拆分

  • 每个函数职责单一
  • 易于理解和复用

六、2026 年的趋势:上下文工程

根据最新研究,上下文工程(Context Engineering) 正在成为 2026 年 AI 领域的核心竞争力。

6.1 什么是上下文工程?

上下文工程是指:结构化、验证、同步和治理 AI Agent 依赖的信息,确保它们在正确的时间获得正确的上下文。

6.2 核心原则

  1. 最小化原则:只加载必要的信息
  2. 隔离原则:子任务的中间结果不污染主上下文
  3. 复用原则:设计可复用的上下文片段
  4. 治理原则:建立上下文的版本管理和质量控制

6.3 实践建议

对于开发者:

  • 优先使用 Skill 的懒加载特性
  • 复杂任务委托给 SubAgent
  • 谨慎使用 MCP,控制工具数量

对于 Skill 开发者:

  • 设计简洁的工具说明
  • 提供清晰的使用场景描述
  • 支持渐进式加载

对于 MCP 开发者:

  • 拆分大型 MCP 为多个小型 MCP
  • 提供轻量级的工具列表
  • 支持按需加载详细说明

七、总结:记忆管理的艺术

AI Agent 要变强,有两条完全不同的路:

一条是 Skill:给自己装技能,把新能力直接塞进脑子里。

另一条是 SubAgent:像派小弟去干活,自己只看汇报。

MCP 则是基础能力层,提供标准化的工具接口。

三者的关系:

┌─────────────────────────────────────┐
│         Claude Code 核心            │
├─────────────────────────────────────┤
│  Skill 层(渐进式加载)              │
│  - 懒加载:先加载名字,需要时加载详情 │
│  - 适合:标准化任务、场景切换        │
├─────────────────────────────────────┤
│  SubAgent 层(上下文隔离)           │
│  - 独立上下文:中间结果不污染主 Agent│
│  - 适合:复杂任务、啰嗦的中间过程    │
├─────────────────────────────────────┤
│  MCP 层(基础能力)                  │
│  - 全加载:所有工具说明都在上下文    │
│  - 适合:轻量级工具、频繁调用        │
└─────────────────────────────────────┘

记住这个口诀:

  • Skill 是插件:按需加载,轻量高效
  • SubAgent 是外包:独立执行,结果汇报
  • MCP 是工具箱:基础能力,标准接口

最后的建议:

很多人追逐最新的 Agent 框架、最花哨的能力扩展,却忽略了最基础的问题:AI 的工作记忆是有限的,你怎么组织它,决定了它能做多复杂的事。

Skill、SubAgent、MCP 不是非此即彼的选择,而是三种工具,用对场景才能发挥价值。

2026 年,Agent 的竞争正在从"能调用多少工具"转向"怎么优雅地管理这些工具"。

掌握上下文管理的艺术,你的 AI Agent 才能真正变强。


参考资料

本文参考了以下资料:

核心灵感来源:

  • Linux.do 社区讨论:Skill、SubAgent、MCP 三者设计理念
    https://linux.do/t/topic/1357260
  • 推特宝玉老师 @dotey 关于 AI Agent 架构的深度分析

上下文管理相关:

  • Context Pollution — When More Data Makes AI Less Reliable
    https://www.elixirdata.co/blog/context-pollution
  • Context Engineering for AI Agents
    https://www.philschmid.de/context-engineering-part-2
  • AI Agent 中的上下文工程 (Context Engineering)
    https://www.breezedeus.com/article/ai-agent-context-engineering
  • Context Engineering Is the Real AI Advantage in 2026
    https://www.penn.ai/blog/context-engineering-is-the-real-ai-advantage-in-2026

Skill、SubAgent、MCP 设计:

  • Skills, Subagents, Hooks, MCP
    https://code-smarter.com/claude-code-made-me-ridiculously-productive-skills-subagents-hooks-and-mcp
  • Understanding Skills, Agents, Subagents, and MCP in Claude Code
    https://www.colinmcnamara.com/blog/understanding-skills-agents-and-mcp-in-claude-code
  • Claude Skills, Prompts, Projects, Subagents, and MCP: A Complete Guide
    http://smartscope.blog/en/ai-development/claude-mechanisms-explained/

懒加载 Prompt 工程:

  • How Lazy-Loaded Prompt Engineering is becoming the standard pattern
    https://sderosiaux.substack.com/p/how-lazy-loaded-prompt-engineering

欢迎关注公众号 FishTech Notes,一块交流使用心得!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐