Agent 的核心组成:Memory、Skill、MCP、Tool、Hook 如何配合
约 1316 字大约 4 分钟
2026-05-25
Memory、Skill、MCP、Tool、Hook 不是同一层能力。Memory 负责上下文,Skill 负责复用流程,MCP 负责连接外部能力,Tool 负责执行动作,Hook 负责生命周期检查和约束。
核心结论
真正重要的不是记住这五个名词,而是理解它们在一次任务里怎么接棒:
Memory负责让 Agent 带着上下文进入任务。Skill负责把稳定流程套到合适任务上。Tool负责真正执行动作并产生结果。MCP负责把外部系统能力接进来,成为可用入口。Hook负责在关键节点做检查、注入和拦截。
如果把这五个概念都看成“差不多的能力”,后面就很容易把 Tool 当 Skill、把 MCP 当 Agent、把 Hook 当业务逻辑。
职责边界
| 概念 | 负责什么 | 不负责什么 |
|---|---|---|
| Memory | 保留和调取上下文、偏好、项目长期决策 | 不替代事实核查 |
| Skill | 复用稳定流程、模板、脚本和经验 | 不替代项目规则和验证 |
| MCP | 连接外部系统,把能力暴露给 Agent | 不等于无限授权 |
| Tool | 执行具体动作并返回结果 | 不判断业务最终正确性 |
| Hook | 在生命周期节点自动检查、注入、拦截 | 不替代人工判断 |
这张表最值得反复看的地方不是“负责什么”,而是“它不负责什么”。很多协作失控,恰恰是因为把某一层能力误当成了另一层。
以 Codex 智能体为例
一次 Codex 任务通常这样流动,但关键不在步骤数量,而在每一步是谁接手:
- 用户给出当前目标和约束。
- Codex 读取当前会话、项目规则、项目文件和相关 memory。
- 如果任务匹配某个 Skill,就按 Skill 的稳定流程组织下一步。
- 模型规划动作,并通过 Tool 读文件、改文件、跑命令或查资料。
- 如需连接外部系统,Tool 的来源可能是 MCP server。
- Hook 在工具调用、修改后、提交前等关键节点做检查。
- 最后输出结果、diff、验证和后续建议。
这里可以把它们的接棒关系理解成一条主线:
Memory先让 Agent 读到对的背景Skill再告诉它这类任务通常怎么推进Tool真正把计划变成动作MCP让这些动作能够延伸到外部系统Hook则在关键时刻提醒、检查和拦截
完整任务流转
把这张图按一次真实任务去读,会更容易理解:
用户目标进入当前任务这里决定的是方向,不是实现细节。上下文被装载当前会话、项目规则、项目文件、项目记忆一起形成判断材料。流程被收敛如果这类任务已经有稳定做法,就由 Skill 把步骤拉回到熟悉轨道。动作开始发生Tool 负责读、写、跑、查;只要涉及外部系统,MCP 可能在这一步提供能力入口。结果回到下一轮stdout、diff、截图、报错等结果重新进入模型判断。关键节点被检查Hook 保证高风险动作、验证和收尾不会被轻易跳过。
所以这五个概念不是并列展示品,而是在任务链里前后接棒。
常见误解
| 误解 | 更准确的理解 |
|---|---|
| MCP 就是 Agent | MCP 是连接层,Agent 还需要模型、上下文、工具和控制循环 |
| Tool 等于 Skill | Tool 执行动作,Skill 封装流程 |
| Hook 能解决所有安全问题 | Hook 只能覆盖明确规则,仍需要权限设计和人工审查 |
| Memory 永远可靠 | Memory 会过期,必须被当前文件和官方文档校验 |
| Skill 只是更长 prompt | Skill 可以包含脚本、模板、资产和操作步骤 |
这些误解的共同问题是:把不同层的职责揉成了一层。一旦揉在一起,就会不知道该把问题交给哪一层解决。
工程落地顺序
从单次 AI Coding 走向团队流程时,建议按这个顺序建设:先写项目规则,再沉淀 memory;先让 Tool 调用可审查,再接入 MCP;先手动验证关键流程,再用 Hook 自动化;最后把稳定流程做成 Skill。
这个顺序背后的逻辑是:
- 先把边界写清楚,再谈自动化
- 先让动作可审查,再接外部能力
- 先让流程稳定,再沉淀成 Skill
如果顺序反过来,比如先接很多外部系统、先做一堆自动化、最后才补规则和验证,工程复杂度通常会先失控。