上下文隔离的两种模式

上下文隔离的两种模式

------从 Manus 的实践,看多 Agent 架构的真实成本

引言:多 Agent 的真正难点,是"会不会协作"

在 Agent 系统刚流行时,很多团队都有一个直觉:

一个 Agent 不够强,那就多来几个。

但很快,另一个现实问题出现了。Cognition 等顶级团队都公开警告过:

多 Agent 系统的真正噩梦,不在于能力,而在于信息同步。

Agent 之间到底该如何共享上下文?共享多少?谁能写?谁能读?

Manus 联合创始人 Peak Ji 给出的判断非常清醒:

这不是 AI 特有问题,而是一个我们在计算机系统中早就见过的问题。

一、问题本质:这是一个"多线程通信"问题

Peak Ji 在分享中借用了并发编程领域的一句经典格言:

"不要通过共享内存来通信,而要通过通信来共享内存。"

原文也明确说了:这个类比并不完全适用于 Agent,甚至在某些情况下是"错误的"。但它有一个巨大价值------它非常清楚地引出了两种截然不同的协作模式。

二、模式一:通过通信隔离上下文

2.1 核心思想

上下文不共享,Agent 只通过结果通信。

在这种模式下,子 Agent 更像一个一次性的、黑盒的"工具型 Agent" 。它只接收指令,返回结果,不保留任何历史。

2.2 工作流程与架构

这是最轻量的协作模式,其架构如下:

arduino 复制代码
┌─────────────────────────────────────────────────────────────┐
│                    通信模式架构图                             │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  主Agent上下文(完整历史)                                    │
│  ├── 执行任务中...                                           │
│  ├── 决定委派子任务:"在代码库中搜索Auth模块的实现"             │
│  └── 生成工具调用:code_searcher(query="Auth module")        │
│       ↓                                                      │
│  ┌─────────────────────────────────────────────────────┐    │
│  │              子Agent实例(全新、干净)                 │    │
│  │                                                     │    │
│  │  系统提示:你是一个代码搜索专家...                      │    │
│  │  用户指令:在代码库中搜索Auth模块的实现                  │    │
│  │           (仅此一条,无其他历史)                      │    │
│  │                                                     │    │
│  │  → 独立执行搜索                                        │    │
│  │  → 返回结果:{file: "auth.py", line: 45}             │    │
│  └─────────────────────────────────────────────────────┘    │
│       ↓                                                      │
│  主Agent接收观察结果,子Agent销毁                             │
└─────────────────────────────────────────────────────────────┘

2.3 工程优劣势分析

维度 表现 工程意义
隔离性 ⭐⭐⭐⭐⭐ 子Agent错误不影响主Agent,故障边界清晰
上下文干净度 ⭐⭐⭐⭐⭐ 无历史干扰,专注单一任务
Token 成本 ⭐ 低 输入少,推理成本低
KV-Cache 高命中 无需重新计算历史,延迟极低

能力边界: 子 Agent 完全没有历史视野。这意味着它无法理解任务的演进,无法处理"上下文驱动型"的复杂任务。

适用场景:指令清晰、目标单一、只关心最终输出的子任务(如搜索、API调用、格式化)。

三、模式二:通过共享上下文隔离

3.1 核心思想

上下文是共享的(只读);身份与能力是隔离的。

子 Agent 在这种模式下拥有完整历史背景,但以一个全新的系统提示和技能包 行动。你可以把它理解为:在同一时间线,分叉出一个"平行智能体"。

3.2 工作流程与构造细节

这是处理复杂任务的"重武器",其核心在于Prompt的重新构造:

sql 复制代码
┌─────────────────────────────────────────────────────────────┐
│                   共享上下文模式架构图                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  主Agent上下文(完整历史)                                    │
│  ├── 已完成:需求分析、资料收集...                             │
│  └── 决定:需要专业写作能力来生成最终报告                       │
│       ↓                                                      │
│  【分叉动作】创建子Agent(构造如下Prompt)                     │
│       ↓                                                      │
│  ┌─────────────────────────────────────────────────────┐    │
│  │  【System Prompt】                                   │    │
│  │  你是一个专业的技术文档撰写专家...(全新身份)           │    │
│  │                                                     │    │
│  │  【Complete History】(完整历史记录)                  │    │
│  │  User: 我们需要研究AI Agent的上下文工程...              │    │
│  │  Assistant: 我来为您收集相关资料...                     │    │
│  │  ...(全部20轮对话历史,包含中间推理过程)...             │    │
│  │                                                     │    │
│  │  → 基于全量背景撰写报告                                │    │
│  └─────────────────────────────────────────────────────┘    │
│       ↓                                                      │
│  主Agent接收最终报告,子Agent销毁                             │
└─────────────────────────────────────────────────────────────┘

3.3 为什么这种模式"极其昂贵"?

Peak Ji 特别强调:这里的成本不是"有点高",而是成倍增加。原因有二:

1. 输入 Token 成本爆炸 每个子 Agent 都需要预填充完整历史上下文。在 Agent 系统中,往往意味着输入/输出 Token 比例达到 50:1 甚至 100:1。

2. KV-Cache 几乎无法复用(致命伤) 这是很多文章没点透的地方。

  • 子 Agent 的 System Prompt 不同(身份变了)。
  • Action Space 不同(工具集变了)。
  • 前缀不一致 → KV-Cache 直接失效。

这意味着:每一次子 Agent 调用,都是一次昂贵的"冷启动"。

3.4 为什么还要用它?

因为有些任务,没有完整上下文就是做不了。 例如:深度研究报告撰写、基于多轮讨论的复杂决策、需要理解用户偏好历史的个性化任务。

四、工程决策:如何在两种模式间选择?

4.1 决策判断法则

Peak Ji 给出的建议非常朴素:忠于任务本身,而不是迷恋架构的"高级感"。

你可以问自己三个问题:

markdown 复制代码
1. 子任务是否可以被一句清晰指令描述?
2. 我是否只关心最终结果,而非中间推理?
3. 这个任务失败时,我是否能接受低成本重试?

如果答案都是 YES 选「通信模式」(默认选择)。

如果任务高度依赖历史,且成本可接受 选「共享上下文模式」

4.2 进阶策略:混合模式(降本增效)

如果必须使用共享模式,但又不想承担全量历史的成本,可以采用 "关键信息提取" 策略,将"共享模式"降级为"增强版通信模式"。

优化示例:

arduino 复制代码
原始共享模式:
  主Agent → 共享全部20轮历史 → 子Agent
​
优化后的混合模式:
  主Agent → 提取关键摘要(500字)→ 嵌入指令 → 子Agent
  
  指令构造示例:
  "基于以下研究背景撰写报告:
   - 核心发现:WSCI框架
   - 关键案例:Manus的结构化摘要实践
   - 用户偏好:偏好技术深度
   ...(而非全量历史)"

效果:用通信模式的低成本,获得了接近共享模式的背景理解能力。

五、理论升维:与 WSCI 框架的融合

从 Context Engineering(WSCI)的更高视角看,这两种模式本质上是 Isolate(隔离) 操作的不同变体:

Peak Ji 模式 WSCI 对应操作 本质
通信模式 Isolate + Select 边界 = 单条指令。隔离新实例,仅传递精选指令。
共享上下文模式 Isolate + Write (Pre-fill) 边界 = 完整历史。隔离新实例,但预填充历史。

关键洞察 : Context Engineering 的本质,是在隔离与共享之间,找到成本和收益的最优平衡点

结语:默认轻量,谨慎共享

多 Agent 架构并不天然高级。不受控的上下文共享,只会放大复杂性。

Manus 给出的工程启示非常清晰:

  • 默认使用通信模式
  • 把共享上下文当作"重武器"
  • 只在任务确实需要、且成本可接受时使用

当你开始认真思考上下文隔离时,你就已经从"Agent 使用者",走向了"Agent 架构设计者"。每一个架构选择,都是一笔需要算账的工程投资。

相关推荐
得一录3 小时前
星图·全参数调试qwen3.1-B
深度学习·算法·aigc
盛夏光年爱学习6 小时前
AI Agent的Context Engineering:构建Manus的经验教训
aigc
xuegao08078 小时前
星图AI_comfyUI部署实践_问题解决方案记录
人工智能·python·aigc
孟健19 小时前
用 OpenClaw 做视频:播放量从几十涨到 9000,成本一毛钱
aigc·openai·ai编程
小程故事多_8019 小时前
极简即王道 下一代Agent架构Pi Agent Core设计逻辑深度解析
人工智能·架构·aigc
ServBay1 天前
GLM-5 拉高开源上限,离一人公司更近了
aigc·ai编程
树獭叔叔1 天前
从向量到文字:Transformer 的预测与输出(LM Head)
后端·aigc
reddingtons1 天前
Scenario: SLG 地图铺到吐?搭建“轴测流水线”,量产建筑不重样
游戏·3d·prompt·aigc·设计师·游戏美术·slg
德育处主任1 天前
『n8n』让大模型识别图片内容
人工智能·llm·aigc