目录
Claude Code 的 agent view(用 claude agents 打开)是这样一个地方:你在后台一个接一个地启动彼此独立的会话,并在同一块屏幕上管理它们。用官方的说法,它让你「从一块屏幕上调度(dispatch)并管理多个 Claude Code 会话」(Manage multiple agents with agent view)。
本文只谈机制与安全模型。真正危险的从来不是「AI 失控」,而是你并不清楚隔离到底管到哪里、这些会话又在什么权限下运行,却在自己没盯着的时候一口气排上十个。结论先给出来:这套隔离做得相当认真——但有三样东西会漏到隔离之外。那才是值得你花时间的部分。
📌 本文的事实来源:下文出现的每一项行为、版本号和设置名,都在2026 年 8 月 9 日依据官方文档核对过。agent view 属于研究预览,需要 Claude Code v2.1.139 及以上版本。预览阶段的功能规格会变,请用 claude --version 确认自己手上的版本,细节以最新官方文档为准。
🔀 如果你是搜「Dispatch」找过来的。Claude 里有两个名字极易混淆的不同功能。桌面应用侧边栏里的 Dispatch(调度),指的是从手机给 Claude 发消息、让它在你自己的电脑上干活的那个功能,跟本文说的不是一回事——那一个在Dispatch 的机制与安全性里讲。本文讲的是 agent view,一个 Claude Code 的终端功能;名字之所以撞车,是因为官方文档把你在那里执行的操作叫作「dispatch」。
1. agent view 是什么——官方称为「dispatch」的那个操作
先把名字钉死。在 Claude Code 内部,「dispatch」是你在 agent view 里执行的一个操作的名字,并不存在一个叫这个名字的独立功能。官方文档是这么描述的。
「用 claude agents 打开的 agent view,是一块显示你全部后台会话的屏幕——什么正在跑,什么在等你的输入,什么已经跑完了。」(Agent view)
该在什么时候用它,官方同样划得很清楚:当你手上有好几件彼此独立的任务,想把它们交出去,想一眼看清各自的状态,并且只在不得不出手时才介入。修一个 bug、评审一个 PR、排查一个时好时坏的测试——把这三件事丢成三行,然后换个窗口继续自己的活儿,等哪一行变成「需要你」的时候再回去看。
✅ 适合交出去的活
彼此独立、而且过程不需要你盯着的任务。那种最后拿到结果就够了的工作,这期间你可以去干别的。
❌ 不适合交出去的活
做到一半需要重新定方向的、会争抢同一批文件的,以及含有不可撤销动作的(发布上线、生产数据库、往外发送东西)。
2. 一个提示词就是一个会话,而不是追加
这是第一个会绊住人的地方。文档写得明明白白:你在这里输入的每一个提示词,都会启动它自己的一个新会话。再打一条按下回车,你得到的是第一个旁边多出来的第二个会话,而不是给第一个补的一句话。
你凭平时聊天的条件反射打一句「刚才那个再补一点」,补出来的不是备注,而是一份新工作。这是设计而不是事故,因为 agent view 本来就是用来把互不相干的任务排成一列的。真要追加指令,得从下面要讲的预览面板(peek panel)发。
| 操作 | 会发生什么 |
|---|---|
在输入框里写提示词 → Enter |
启动一个新会话(会一个个并行地攒起来) |
Space |
打开预览面板。看到的是最近的输出,或者它正在等的那个问题,而不是完整记录 |
在预览面板里回复 → Enter |
不用离开 agent view 就能回复那个会话 |
→ 或 Enter(选中某一行时) |
进入那个会话(挂接) |
Ctrl+X |
停止它。再按一次就是删除(直接通向第 6 节那个坑) |
Ctrl+S / Ctrl+T / Ctrl+R |
分组(按状态或按目录)/置顶/改名 |
还有一点:会话自己派生出来的子智能体和队友,不会作为单独的行出现。屏幕上列出来的,只有你调度出去的那些单位。
3. 隔离是怎么做到的——写入之前先搬进 worktree
安全模型的核心就在这里。后台会话在编辑任何文件之前,会先搬进一个属于它自己的 git worktree。官方的原话如下。
「每一个后台会话都从你的工作目录开始,无论它是从 agent view 启动的,还是用 /bg 或 claude --bg 启动的。在编辑文件之前,Claude 会把会话搬进 .claude/worktrees/ 下一个隔离的 git worktree。这样一来,并行的会话读的是同一份检出,但各自写进自己的那一份。」(Agent view)
这个设计之所以成立,关键在于读是共享的,写是分开的。并行的会话能读到彼此的代码,所以各自的前提不会越走越偏;而它们的写入又不可能撞车。三个会话在同一个目录里跑、互相覆盖对方的文件——这种最糟的事故在结构上就不可能发生。
接下来是最要紧的那一句。「一旦会话进入 worktree,Claude Code 就会阻断那些会触及主检出的文件编辑和命令——对这个会话如此,对它派生的任何子智能体也一样。」隔离是会被子代继承的。一个被调度出去的会话哪怕在内部叫起五个子智能体,这五个也都在同一堵墙里面。
4. 撑起这套隔离的三道检查
「阻断」具体指什么,文档写得很细。一共是三类检查。
① 文件编辑
阻断指向主检出内部路径的 Edit、Write 和 NotebookEdit。
② 命令的工作目录
阻断工作目录会解析到主检出的命令,以及那些无法核实其确实待在外面的命令。
③ 把 git 指向别处
git -C、--git-dir、GIT_DIR、GIT_WORK_TREE,以及在 git 之前先 cd——全都被切断。
连第三条都堵上,说明这是认真做的。它管的不只是「别往主检出里写」,还有「别把 git 骗到主检出上去」。而且判断刻意偏向安全一侧:核实不了的命令就不给跑。
⚠️ 话说回来,这不是操作系统层面的墙。这三道检查靠的是审视一次工具调用到底想干什么,而不是把进程关起来。它们守住的是同一个仓库的主检出,仓库之外的文件以及网络,都不在这三道检查的范围内。
文档还明确写了,PowerShell 命令只享有第 2 道,也就是工作目录那一道检查。如果你在 Windows 上主要用 PowerShell,就别指望第三道保护了。要把进程本身关起来,那不是 worktree 的活儿,是沙箱的活儿。
5. 权限是从哪里来的
在你没盯着的时候,那个会话到底跑在哪种权限模式下?回答不了这个问题就把会话一排排摆出去,是这里最危险的做法。
官方的规则毫不含糊。当你从 agent view 的输入框调度,或者在 shell 里执行 claude --bg 时,用的是那个目录的设置中的 defaultMode。如果你调度出去的是一个子智能体,那就改用它 frontmatter 里的 permissionMode。
换句话说,权限不是当场选的,而是从你的配置里继承下来的。你平时在 settings.json 里的 defaultMode 越松,下面这句话就越是字面意义上的真事:你按下调度的那一刻,十个无人看管、权限宽松的会话就此诞生。先把权限模式和权限规则理清楚,这是前置条件,不是锦上添花。
不过该停的地方,它确实会好好停下来。当一个会话需要只有你能给的东西——一个问题的答案、一次权限判断、下一步的指令时,那一行会变成「Needs input(等待输入)」。这个状态是你手里仅剩的那个控制点。所以 agent view 不是「排好队然后走人的屏幕」,而是「你要回来把等待输入的那些行捡起来的屏幕」。
6. 最容易被漏掉的几个坑
隔离做得很用心。即便如此,还是有三样东西会漏出去。而这部分恰恰是实际干活时会咬人的。
① 一句「以后别再问我」会走出 worktree
按照文档的说法,在 worktree 会话里对某条 Bash 命令选了「是,以后别再问我」,这条规则会被存进主检出的 .claude/settings.local.json。结果就是:它在主检出里生效,在其他每一个 worktree 里也生效,而且在它诞生的那个 worktree 被删掉之后依然留着。
也就是说,一次在隔离环境里做出的权限判断,变成了隔离之外的永久配置。一次在你没看着的时候、在你以为只是临时工作区的地方按下的「以后别再问我」,从此一直有效。当某个被调度出去的会话在预览面板里向你要权限时,别随手去点「以后别再问我」。
② 删掉会话,未提交的成果会跟着一起没
官方的限制条款里写得很直白:「Claude 创建的 worktree,会在你于 agent view 里删除会话时被一并删除。删除一个在自己的 worktree 里编辑过文件的会话之前,请先提交你的改动。」Ctrl+X 是第一下停止,第二下删除。你想收拾一个跑完的会话而顺手按了两下,产出就跟着一起没了。「跑完了」和「收进来了」是两回事——拿到结果之后,先提交或合并,再删。
③ .worktreeinclude 会把你的密钥发给每一个 worktree
worktree 是一份全新的检出,所以被 gitignore 掉的 .env 并不在里面。可是没有它什么都跑不起来,于是你把它写进 .worktreeinclude,它就会在每次创建新 worktree 时自动被复制进去。
方便是方便,但反过来看,这意味着你每调度一个会话,磁盘上就多出一份你的凭据。要并行地跑这些东西,理智的做法是发开发用的密钥,而不是生产用的。
官方还列出了另外三条限制。配额是成倍消耗的(「并行跑十个智能体,消耗配额的速度大约是跑一个的十倍」)。会话跑在本地——它们能挺过睡眠,但机器关机就停。以及,这件事本身还只是一个研究预览。
7. 怎么选——并行的路一共有四条
官方文档把并行化归成了四种做法。调度(agent view)只是其中之一,所以选错了就是实打实地吃亏。
| 做法 | 谁来主导 | 什么时候选它 |
|---|---|---|
| 子智能体 | Claude 在同一个会话里委派出去,再把结果收回来 | 你不想让旁支工作的输出(搜索结果、日志、文件)污染主上下文 |
| agent view(调度) | 你把活交出去,回头再来看 | 有好几件彼此独立的任务。本文讲的就是它。研究预览 |
| 智能体团队 | Claude 来规划、分派并监督 | 你希望分工和同步都交给它处理。实验性,默认关闭。另有专文 |
| 动态工作流 | 计划握在脚本手里 | 全代码库审计、500 个文件的迁移——这种规模不是一轮对话指挥得动的。以及需要交叉核对结果的时候 |
分界线就是谁来主导。一个会话之内能收尾的,用子智能体。你来主导、事后回收的,用 agent view。想让 Claude 来主导的,用智能体团队。规模大到应该按固定流程走、而不是靠临场判断的,用动态工作流。
顺带一提,worktree 的定位不是一种并行手段,而是一件隔离工具。agent view 会自动用它。而你自己开的并行会话,得像 claude --worktree <名称> 这样显式指定一个。
8. 安全地把它跑起来的流程
调度之前
- 确认那个目录的
defaultMode。它会原样变成一个无人看管的会话的权限等级 - 别把含有不可撤销动作的活交出去。发布上线、生产数据库、对外发送,都该留在你盯着的会话里
- 这些任务真的彼此独立吗?如果它们都吊在同一个设计决策上,先把那个决策定下来,再交出去
- 你的
.worktreeinclude里都有什么?你排出去几个会话,你的密钥就被复制几份
跑起来之后
- 回来把「Needs input」的行捡起来。那是唯一的控制点
- 被问到权限时,别选「以后别再问我」。那个决定活得比 worktree 长
- 并行度直接对应配额。同时跑十个,消耗速度就是十倍
跑完之后
- 先提交,再删除。第二下
Ctrl+X是删除,worktree 里的东西会跟着一起走 - 别把结果当真话直接收下。你并行跑的每一份,都给你多添了一条未经核实的断言
最后一点作为经验法则值得着重强调。并行化会把要审阅的总量一起放大。十件活回来,附带的是十个「这真的成立吗」;核实这件事并不会随着工作一起被并行掉。你能调度出去多少,上限取决于你能核实多少结果。
总结
调度,指的是从 agent view(claude agents)启动一个独立后台会话这个动作,它属于研究预览(需 v2.1.139 及以上)。一个提示词就变成一个会话,绝不会是追加。
安全模型的核心是用 worktree 做隔离。写入之前,会话先搬进 .claude/worktrees/,从那一刻起读是共享的,写是分开的。会触及主检出的编辑、命令和 git 改向,都被三道检查切断,而且这份保护会被会话派生的每一个子智能体继承。
但有三样东西会跑出隔离之外。一句「以后别再问我」会被存到主检出那边,在每个 worktree 里生效,删掉 worktree 也还在。删除会话会毁掉未提交的成果。.worktreeinclude 会按 worktree 的数量复制你的密钥。另外,既然 worktree 不是操作系统层面的墙,仓库之外的一切和网络就都不在保护范围内——那是沙箱的职责。
FAQ
Q1. Claude Code 里真的有一个叫「Dispatch」的功能吗?
作为独立的功能名并不存在。dispatch 是 agent view 内部一个操作的名字。官方文档把 agent view 描述成让你「从一块屏幕上调度并管理多个 Claude Code 会话」的功能。打开它的命令是 claude agents。
Q2. /agents 和 claude agents 是同一个东西吗?
不是。文档直接就此提醒过:名字虽像,/agents 并不是 claude agents。claude agents 是打开 agent view 的 shell 命令。而 /agents 从 v2.1.198 起已经不再打开任何面板——它只告诉你子智能体定义文件放在哪里。
Q3. 被调度出去的会话会不会弄坏我的主工作副本?
就同一个仓库的主检出而言,你在结构上是受保护的。文件编辑、命令的工作目录和 git 改向都会被那三道检查拦下,而且同样的保护也覆盖会话派生的任何子智能体。不过仓库之外的文件和网络不在范围内,并且在 PowerShell 下只有工作目录那一道检查生效。
Q4. 并行跑会让成本变成什么样?
大致按数量成比例上升。官方的限制条款就是这么写的:并行跑十个智能体,消耗配额的速度大约是跑一个的十倍。后台运行并不等于便宜。
Q5. 会话跑完之后可以直接删掉吗?
先提交,再删除。文档写明,Claude 创建的 worktree 会在你于 agent view 里删除会话时被一并删除。Ctrl+X 第一下停止,第二下删除。拿到了结果,不等于已经把它收进来了。
Q6. 每次调度时能不能自己选权限模式?
当场选不了。用的是那个目录的设置中的 defaultMode——如果你调度的是子智能体,则用它 frontmatter 里的 permissionMode。你平时的 defaultMode 有多松,无人看管时跑的就是那么松。开始用调度之前,先把权限设置重新过一遍。
Q7. 这和子智能体有什么区别?
区别在于谁来主导。用子智能体时,Claude 在同一个会话里委派,并把结果交回那个会话。用 agent view 时,是你把彼此独立的任务交出去,之后再来回收结果。会话派生出来的子智能体,不会作为 agent view 里的一行显示出来。
Q8. 我合上笔记本会怎样?
会停。官方的限制条款说,后台会话跑在你自己的机器上:它们能挺过睡眠,但机器关机就会停。没有任何东西在云端跑,所以这不是那种「把长活儿甩过墙就回家」的工具。
相关文章
- 子智能体与智能体团队 — 并行化的另外两条路
- 权限模式 — 被调度的会话所继承的那个设置
- 权限规则与 settings.json — 「以后别再问我」被存到了哪里
- 沙箱 — 补上 worktree 管不了的那一段
- 什么时候该按 /compact — 并行跑得越多,上下文膨胀得越快