上下文隔离(context isolation) 上下文与记忆
别名:
隔离 · 上下文切分
让每个 Agent 实例拥有自己独立上下文的设计原则:subagent 从全新消息历史开始,主对话不泄漏进去,两个 subagent 互不可见。隔离防止上下文污染,但结果需要穿过边界回填给主 Agent。见[第 22 章](/chapters/22-multi-agent-v09/)。
它是什么
上下文隔离(context isolation)是让每个 Agent 实例拥有自己独立上下文的设计原则:subagent 从全新消息历史开始,主对话不泄漏进去,两个 subagent 互不可见。它是多智能体的第一设计原则,针对的是单 Agent 的上下文污染失效模式——任务 A 的调试过程、失败的尝试、无关的中间输出全堆在历史里,任务 B 的模型被迫「隔着垃圾看题」。
隔离是设计出来的,不是默认得到的
主循环的 runAgent(initialMessages, ...) 本来就接收「初始消息」参数——如果委派时把主对话整个塞进去,隔离就破了。所以第 22 章的工厂构造性隔离:只接受 { task, context? },subagent 从 [system(SUBAGENT_PROMPT), user(task)] 重新开始——没有入口,自然串不了。判断标准一句话:把主历史删掉,subagent 还能不能独立跑? 能,才是隔离。四个隔离维度:消息上下文、工具集(白名单)、预算(独立保险丝)、会话/事件(subagent 事件不进主会话 SSE 流)。
隔离与共享的平衡
隔离不是目的本身——结果必须穿过边界回填给主 Agent(终答字符串,最小共享)。共享多了,污染又回来了;共享少了,worker 没法协作。取舍是:worker 之间零共享,主 Agent 通过 tool_result 做最小共享;要传更多信息就写进 task/context 参数或落盘后主 Agent 再读——显式、可审计,而不是隐式共享一个全局上下文。这对应主流实现里的「独立状态」思想:LangGraph 的 subgraph 拥有自己的 state,Claude Code 的 subagent 拥有自己的 messages[]。