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 确认自己手上的版本,细节以最新官方文档为准。 第 5 节的权限模式规则已于 2026 年 9 月 25 日对照官方文档重新核对。

🔀 如果你是搜“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. 权限是从哪里来的

在你没盯着的时候,那个会话到底跑在哪种权限模式下?回答不了这个问题就把会话一排排摆出去,是这里最危险的做法。

根据官方文档(2026 年 9 月时的内容),后台会话用什么权限模式,取决于它是怎么启动的,分三种情况。

  • 从在 shell 里打开的 claude agents 调度,或者用 claude --bg 启动:会话的启动方式与在该目录里新开一个 claude 会话相同。先看 --permission-mode 之类的启动参数,再看设置文件里的 permissions.defaultMode,两者都没有时用内置默认值(随套餐和服务商而变,Pro、Max、Team 套餐下是 auto 模式)。如果打开 agent view 时就指定模式,比如 claude agents --permission-mode plan,这个模式就成为从那里调度的所有会话的默认值。
  • 从在运行中的会话里按 ← 打开的 agent view 调度:先看目标目录的 defaultMode,没有设置时,新会话沿用你原来那个会话的模式。但 auto 和 bypassPermissions 只有写在托管设置、用 --settings 传入的文件或 ~/.claude/settings.json 里才生效;项目的 .claude/settings.json 或 .claude/settings.local.json 如果要求比原会话更宽松的模式,会被拒绝。
  • 用 /bg 或 ← 把当前会话送到后台:保持它原来的模式。如果你已经把它切到了 acceptEdits 或 auto,你不看着的时候它也照样以那个模式运行。

换句话说,权限不是每次调度时逐个选的,而是从你的设置或原来的会话继承下来的。你平时的 defaultMode 越松,或者你按下 ← 时所在的模式越松,下面这句话就越是字面意义上的真事:你按下调度的那一刻,十个无人看管、权限宽松的会话就此诞生。如果会话要在无人看管的状态下跑,打开 agent view 时明确指定模式是最可靠的控制办法。先把权限模式和权限规则理清楚,这是前置条件,不是锦上添花。

不过该停的地方,它确实会好好停下来。当一个会话需要只有你能给的东西——一个问题的答案、一次权限判断、下一步的指令时,那一行会变成“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. 怎么选——并行的路一共有五条

官方文档把并行化归成了五种做法(2026年9月又加进来一个 Projects)。调度(agent view)只是其中之一,所以选错了就是实打实地吃亏。

做法 谁来主导 什么时候选它
子智能体 Claude 在同一个会话里委派出去,再把结果收回来 你不想让旁支工作的输出(搜索结果、日志、文件)污染主上下文
agent view(调度) 你把活交出去,回头再来看 有好几件彼此独立的任务。本文讲的就是它。研究预览
智能体团队 Claude 来规划、分派并监督 你希望分工和同步都交给它处理。实验性,默认关闭。另有专文
动态工作流 计划握在脚本手里 全代码库审计、500 个文件的迁移——这种规模不是一轮对话指挥得动的。以及需要交叉核对结果的时候
Projects Claude 来主导,跑在云端 跨越数天到数周的工作。合上机器之后也想让它继续推进的时候。Pro 和 Max 的公开测试,需要 github.com。另有专文

分界线就是谁来主导。一个会话之内能收尾的,用子智能体。你来主导、事后回收的,用 agent view。想让 Claude 来主导的,用智能体团队。规模大到应该按固定流程走、而不是靠临场判断的,用动态工作流。希望合上机器之后也一直跑下去的长活,用 Projects(不过它跑在云端,所以需要本地数据库、VPN 或 SSH 的活,在这里选不了)。

顺带一提,worktree 的定位不是一种并行手段,而是一件隔离工具。agent view 会自动用它。而你自己开的并行会话,得像 claude --worktree <名称> 这样显式指定一个。

8. 安全地把它跑起来的流程

调度之前

  • 确认目标目录的 defaultMode 和你当前会话的模式。根据调度方式,其中之一会成为无人看管的会话的权限等级。拿不准时,用明确的 claude agents --permission-mode 打开 agent view
  • 别把含有不可撤销动作的活交出去。发布上线、生产数据库、对外发送,都该留在你盯着的会话里
  • 这些任务真的彼此独立吗?如果它们都吊在同一个设计决策上,先把那个决策定下来,再交出去
  • 你的 .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. 每次调度时能不能自己选权限模式?

可以在打开 agent view 时一次性指定。比如用 claude agents --permission-mode plan 打开,这个模式就成为从那里调度的每个会话的默认值;从 shell 单独启动一个会话时,claude --bg 也接受同样的参数。不指定时取决于启动方式:在 shell 里打开的 agent view 和 claude --bg 与普通启动 claude 相同(设置里的 defaultMode,没有则用内置默认值);用 ← 打开的 agent view 用目标目录的 defaultMode,没有则沿用原会话的模式;用 /bg 送走的会话保持原来的模式。你平时的模式有多松,无人看管时跑的就是那么松。

Q7. 这和子智能体有什么区别?

区别在于谁来主导。用子智能体时,Claude 在同一个会话里委派,并把结果交回那个会话。用 agent view 时,是你把彼此独立的任务交出去,之后再来回收结果。会话派生出来的子智能体,不会作为 agent view 里的一行显示出来。

Q8. 我合上笔记本会怎样?

会停。官方的限制条款说,后台会话跑在你自己的机器上:它们能挺过睡眠,但机器关机就会停。没有任何东西在云端跑,所以这不是那种“把长活儿甩过墙就回家”的工具。

相关文章