Fork Agent:共享上下文的艺术

Sub Agent:上下文管理的艺术 里讲了一种「分身」做法:新开一个空白的 messages 数组,让子 agent 在隔离的上下文里跑探索性任务,做完只把结论带回主线。

但有些任务的性质正好相反:它必须看到主对话的完整历史才能干活

比如让子 agent 帮你总结一下当前会话讲了什么、从最近几轮对话里抽出值得记的内容、或者在不打断主对话的前提下回答一个临时小问题。这些任务都强依赖父级上下文,新开空白上下文根本无从下手。

Claude Code 解决这类任务的机制叫 Fork Agent:把主对话当前的 messages 数组完整复刻一份当子 agent 的起点。子 agent 一上来就拥有所有历史,跑完之后产生的新内容不回写主对话。

听起来很简单,不就是「新开一个 agent,把历史带过去」嘛?机制本身确实就这么简单。

但要把这件事做好得费点工夫,关键是 Claude Code 怎么在尽可能复用 Prompt Cache 的同时,还能防止子 agent 乱改你的项目文件

下面会看到,权限管控的具体做法其实是被 cache 共享的约束逼出来的,这两件事是连在一起的。