Claude Code 智能体协作
Claude Code 智能体协作
智能体视图
10 分钟阅读
使用智能体视图管理多个智能体
从一个界面分派和管理多个 Claude Code 会话。智能体视图会显示每个会话正在做什么,以及哪些会话需要你的输入。
通过 claude agents 打开的智能体视图,是你所有后台会话的统一界面:正在运行什么、哪些需要你的输入、哪些已经完成。你可以分派新会话,一眼查看它们的状态而不必翻阅完整记录,只在有会话需要你时才介入。每个后台会话都是一个完整的 Claude Code 对话,即使没有连接终端也会持续运行,因此你可以随时打开、回复,也可以随时离开。
当你有几个独立的任务,Claude 可以在无需你逐步盯着的情况下完成时,就可以使用智能体视图。把一个 bug 修复、一次 pull request 审查和一次不稳定测试的调查各分派为一行,同时在另一个窗口继续工作,等某一行显示需要你或已经出结果时再回来查看。
当你想更直接地参与某个智能体的会话时,接入该行即可进入完整对话。
要比较智能体视图与子智能体、智能体团队和 worktree,请参阅并行运行智能体。
智能体视图目前处于研究预览阶段,需要 Claude Code v2.1.139 或更高版本。使用 claude --version 检查你的版本。界面和键盘快捷键可能会随功能演进而变化。
本页涵盖:
- 快速开始:让 Claude 在后台处理一个任务,查看进展,并在需要时介入
- 用智能体视图监控会话,包括状态图标、查看与回复、接入、整理列表和键盘快捷键
- 从智能体视图、会话内部或你的 shell 中分派新智能体
- 使用
claude agents、claude attach等相关命令从 shell 管理会话 - 后台会话如何由监督进程托管
快速开始
本教程涵盖智能体视图的核心使用流程:分派一个任务,观察其所在行随 Claude 处理而更新,查看并回复,以及接入以进行完整对话。你分派的会话在你关闭智能体视图后仍会继续运行,因此你可以离开后再回来查看。
打开智能体视图
在 shell 中运行:
智能体视图打开后,底部有一个输入框,随着会话启动,上方会填充一张表格。随时按 Esc 返回你的 shell。你离开期间会话会继续运行,下次打开智能体视图时会重新出现。
查看并回复
用方向键选中一行,按 Space 打开查看面板。它会显示会话最近的输出,或它正在等待回答的问题,而不是完整记录。输入一条回复并按 Enter 即可发送,无需离开智能体视图。
接入与分离
在某一行上按 Enter 或 →,即可在需要完整对话时接入。该会话会作为一个完整的交互式 Claude Code 会话接管终端。在空提示词上按 ← 可分离并返回表格。
把已有会话接入
此步骤需要一个正在运行的会话。如果你按照前面的步骤操作,此终端中还没有打开会话,因此请在另一个终端中打开一个常规的 claude 会话并先给它发一条消息。要把已经打开的会话移入智能体视图,可在其中运行 /bg,或在空提示词上按 ←,一步完成后台化并打开智能体视图。该会话会继续运行,并作为一行与你分派的其他会话并列显示。
你可以把 claude agents 作为主要入口,取代 claude:从智能体视图分派每个任务,在需要完整对话时接入,按 ← 返回表格。
用智能体视图监控会话
运行 claude agents 打开智能体视图。它会接管整个终端,并按状态分组列出每个会话,被固定的会话和需要你处理的会话排在最上方。每一行显示会话的名称、当前活动,以及距上次变化过去了多久。
名称会被染上该会话中通过 /color 设置的颜色。从 v2.1.199 开始,当你用 ← 或 /background 将会话转入后台时,该颜色会一并保留。
默认情况下,列表会显示你在所有项目中启动过的每个后台会话。一个在某个仓库中工作的会话和另一个在不同 worktree 中工作的会话都会出现在这里,无论你是从哪个目录打开智能体视图的。要将列表限定到某一个项目,传入 --cwd:
这只会显示在该目录下启动的会话。一个已经移入 worktree(位于 ~/projects/my-app/.claude/worktrees/ 下)的会话,仍算作属于 ~/projects/my-app。
你在其他终端中打开的交互式会话,在你将其转入后台之前不会出现在列表中。会话生成的子智能体和团队成员不会作为独立的行列出。
查看会话状态
每一行开头都有一个图标,其颜色和动画显示会话的状态:
| 状态 | 图标表现 | 含义 |
|---|---|---|
| 正在处理 | 有动画 | Claude 正在主动运行工具或生成回复 |
| 需要输入 | 黄色 | Claude 正在等待你回答一个具体问题或做出权限决定 |
| 闲置 | 变暗 | 该会话暂无待办事项,可以接受你的下一个提示词 |
| 已完成 | 绿色 | 任务成功完成 |
| 失败 | 红色 | 任务以错误结束 |
| 已停止 | 灰色 | 会话被 Ctrl+X 或 claude stop 停止 |
另外,图标的形状显示底层进程是否仍在运行:
| 形状 | 含义 |
|---|---|
✻ 或有动画的 ✽ | 会话进程处于活动状态,能立即回应 |
∙ | 进程已退出。你仍可以查看、回复或接入,Claude 会从上次中断的地方继续 |
✢ | 一个在多次迭代之间休眠的 /loop 会话。该行会显示运行次数和倒计时 |
行右侧可能出现的 #N 标签,是该会话关联的 pull request,并不属于状态图标。
智能体视图打开时,终端标签页标题会显示等待输入的数量:有会话需要输入时显示 2 awaiting input · claude agents,否则显示 claude agents。
从 v2.1.198 开始,智能体视图打开期间,当本地后台会话开始需要你的输入、完成或失败时,Claude Code 还会通过你配置的终端通知通道发送通知。按计划运行的会话,例如 /loop 会话,只在需要你输入时才通知。通知使用与 Claude Code 其他部分相同的 preferredNotifChannel 设置,并以 agent_needs_input 或 agent_completed 类型触发 Notification 钩子。
后台会话无需打开任何终端即可持续工作。一个独立的监督进程负责运行它们,因此你可以关闭智能体视图、关闭 shell,或启动一个新的交互式会话,你已分派的工作仍会继续进行。
会话状态会持久保存在磁盘上,能够经受自动更新和监督进程重启。你的机器休眠时,会话也会得到保留。它们的进程会在唤醒时恢复,监督进程会重新连接到它们,而不是把这段时间当作闲置。关机仍会停止正在运行的会话;请参阅关机后会话显示为失败了解如何恢复它们。
当你打开一个已停止响应的会话时,监督进程会重启其进程,会话会从中断处继续之前被打断的回复。当机器在响应过程中进入休眠时,会话可能进入这种状态。需要 Claude Code v2.1.200 或更高版本。
行摘要
每一行中的单行摘要由一个 Haiku 级模型生成,因此该行可以在不打开完整记录的情况下告诉你该会话在做什么、需要什么,或产生了什么结果。会话正在活跃工作时,行文本最多每 15 秒根据会话自身最近的输出更新一次,而不发送模型请求;每轮结束时,模型会写一份新的摘要。
正在处理的行会显示该会话说自己在做什么,被阻塞的行会显示它正在提出的问题。在较长的一轮中,模型还会大约每分钟重写一次摘要,且每次重写后等待时间会翻倍,最长到四分钟,这样繁忙的行就不会一直显示过时的摘要。文本会在 64 列处截断;打开查看面板可阅读完整的句子。在 v2.1.205 之前,正在处理的行可能显示一次原始的工具调用而不是报告,并行处理多个工作项的会话会在文本前显示 完成数/总数 计数,例如 2/5。
当列表按目录分组时,摘要开头会以彩色词语显示会话状态,例如 Needs input · double jump or wall climb?。在默认的按状态分组视图中,分组标题已经写明了状态,所以该行只显示摘要本身。在 v2.1.205 之前,按目录分组的行不带状态词语。
某一轮的全部输出中不包含任何字母或数字时——例如 /loop 会话在一次安静的迭代中只打印一个孤立符号——该行会保留之前的摘要和状态。在 v2.1.205 之前,这种轮次会被重新分类,可能把一个正在等待你输入的会话重新翻回 Working。
轮次结束时的摘要以及每次轮次中途的重写,都是通过你正常使用的服务商发出的一次简短的 Haiku 级请求,按与会话本身相同的数据使用条款计费和处理。模型重写之间每 15 秒的更新复用会话自身的输出,不会发出请求。在 Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry 等第三方服务商及自定义网关上,如果没有配置 Haiku 模型,请求会回退到会话的主模型。在这些服务商上,可以设置 ANTHROPIC_DEFAULT_HAIKU_MODEL 来为这些摘要选择模型。
Pull request 状态
当一个会话打开一个 pull request 时,该行右侧会出现一个 #1234 标签,在支持超链接的终端中会链接到该 pull request。你向会话发送后续消息时,该标签会保留,因此在该行恢复实时进度显示的同时,pull request 仍然可见。将改动隔离在 worktree 中的后台会话会自己打开这些 pull request;文件编辑如何被隔离介绍了何时会发生这种情况,以及会话在未询问的情况下绝不会做的事。
处理已有 pull request 的会话也会以同样方式与之关联。使用 gh 编辑、评论、关闭或将某个 pull request 标记为可审查,会关联该命令自身输出中提到的那个 pull request,因此如果 gh 命令捕获的输出没有提到任何 pull request,就不会创建关联;gh pr merge 就是常见的例子,因为它只会把结果打印到交互式终端。用 gh pr checkout 检出某个 pull request,或推送到一个已有开放 pull request 的分支,则会通过用 gh pr view 查询该分支来建立关联。在 v2.1.205 之前,只有会话自己创建或检出的 pull request 才会被关联,而推送只在本地分支名匹配时才会关联。
Claude Code 会从完整的命令输出中读取 pull request 信息,包括命令输出超过内联限制而保存到文件中的那部分。在 v2.1.205 之前,如果某次 Bash 调用创建 pull request 时输出超过约 30,000 个字符,该 pull request 就不会被关联。
当一个会话关联了多个 pull request 时,该标签会改为显示数量,例如 3 PRs,颜色由最需要关注的那个开放 pull request 决定。打开查看面板可以看到全部内容。
Pull request 编号的颜色代表其状态:
| 颜色 | Pull request 状态 |
|---|---|
| 黄色 | 等待检查或审查,或检查失败 |
| 绿色 | 检查通过,且没有审查处于阻塞状态 |
| 紫色 | 已合并 |
| 灰色 | 草稿或已关闭 |
对于大多数任务,这一列就是你获取结果的地方:当编号变绿时,审查并合并该 pull request。
查看与回复
在选中的行上按 Space 打开查看面板。它会显示会话完整的状态描述(该行只显示截断版本)以及距上次变化过去了多久,随后是该会话关联的所有 pull request。对于正在等待你的会话,它提出的确切问题也会显示在回复输入框上方。大多数情况下,查看面板已经足够,你不需要打开完整记录。
在 v2.1.205 之前,该面板只在没有其他内容可显示时才重复显示状态描述,并会提及耗时最长的并行工作项。
在查看面板中输入回复并按 Enter,即可发送给该会话。当会话正在提出一个多选题时,查看面板会显示选项,你可以按数字键选择其中一个。对于其他被阻塞的会话,按 Tab 可用建议回复填充输入框,你可以编辑后再发送。在回复前加上 ! 前缀可改为发送一条 Bash 命令。
启用语音输入后,在回复输入框获得焦点时按住或轻点你的一键通话键,即可用语音输入代替打字输入回复。这在智能体视图底部的分派输入框中同样有效。
使用 ↑ 和 ↓ 可以在不关闭面板的情况下查看相邻的会话,或按 → 接入。
接入某个会话
在选中的行上按 Enter 或 → 即可接入。智能体视图会被替换为完整的交互式会话。接入时,Claude 会先简要回顾你离开期间发生的事情。
接入期间,该会话表现得和其他任何 Claude Code 会话一样:每个命令、键盘快捷键和功能都可以正常使用。
接入的会话总是以全屏模式渲染,无论你的 tui 设置如何,因为后台会话没有可供追加的终端回滚缓冲。用 PgUp、PgDn 或鼠标滚轮滚动,按 Ctrl+O 进入记录模式。你终端自带的滚动和 tmux 复制模式只会显示当前视口,就像运行任何全屏应用时一样。
在空提示词上按 ←,或运行 /exit,即可分离并返回智能体视图。从 v2.1.198 开始,无论你是从智能体视图打开该会话,还是在你的 shell 中用 claude attach <id> 打开的,这个操作方式都是一样的。
Ctrl+Z 同样会分离,但会返回到你最初所在的位置:如果你是从智能体视图接入的,则返回智能体视图;如果你是运行 claude attach,则返回你的 shell。当某个对话框获得焦点、且不响应 ← 时,请使用 Ctrl+Z。
接入期间 Ctrl+C 保持其标准的中断行为:它会取消正在运行的回复或 ! shell 命令,而不是分离。在空提示词上连按两次 Ctrl+C 会分离,和任何会话中的行为一样。
分离绝不会停止后台会话:←、Ctrl+Z、/exit,以及连按两次 Ctrl+C 或 Ctrl+D,都会让会话继续运行。要从会话内部结束它,请运行 /stop。
在前台运行的会话中——即你在终端中直接启动、而非从智能体视图接入的会话——在空提示词上按 ← 会将其转入后台,并打开智能体视图并选中该行,这样你就可以在不离开终端的情况下切换会话。同样的单次按键也可以分离一个已接入的会话。
如果按 ← 时有工具在运行,Claude Code 会等待最多约十秒钟让其完成后再转入后台,回复会在后台会话中继续。再按一次 ← 可立即转入后台而不必等待。当进行中的工作无法转移到后台会话时,会先出现与/background相同的 Background this session? 对话框。
子智能体运行期间不受十秒限制约束。Claude Code 会继续等待,以便它们的工作能够顺利转移,并在等待期间显示 Still backgrounding after the current tool 提示;再按一次 ← 可不等待直接转入后台,但这会让子智能体从头重启。在 v2.1.203 之前,等待会在十秒后结束,正在运行的子智能体会在没有任何警告的情况下从头重启。
即使是没有任何对话历史的全新会话,也会创建该行,因此 → 能返回到它。在 v2.1.203 之前,当该行是唯一一行时,智能体视图会在其下方显示一条上手提示。
你可以通过 /config 中的 leftArrowOpensAgents 设置关闭这个快捷方式。
整理列表
智能体视图会对会话分组,把需要输入的会话排在最上方,Ready for review 和 Needs input 排在 Working 和 Completed 之上。这些分组名称与上面的状态并非一一对应:当一个会话有一个开放的 pull request 时,会移入 Ready for review;Completed 会把已完成、失败和已停止的会话一起归入其中。
按 Ctrl+S 可改为按目录分组。你的选择会在多次运行之间保留。
在一个分组内:
- 按
Ctrl+T可将某个会话固定到顶部,并在其闲置期间保持其进程运行 - 按
Shift+↑或Shift+↓可重新排序会话 - 按
Ctrl+R可重命名会话 - 在分组标题上按
Enter可折叠该分组
要将某个会话从列表中移除,按 Ctrl+X 将其停止,并在两秒内再按一次 Ctrl+X 将其删除。在分组标题上按 Ctrl+X 会在确认后删除该分组中的每个会话。
删除会将该会话从智能体视图中移除。如果 Claude 为该会话创建了 worktree,删除也会移除该 worktree,包括其中任何未提交的更改,所以请先推送或提交你想保留的工作。你自己创建的 worktree 会被保留。对话记录仍会留在你本机上,并可以通过 claude --resume 继续使用。
屏幕上放不下的已完成会话会折叠成一行 … N more。失败的会话和有开放 pull request 的会话始终保持可见。Completed 分组会填充实时分组之后剩余的垂直空间,在较矮的终端中,标题会压缩为单行摘要,以便正在处理或需要输入的会话保持可见。
筛选会话
在分派输入框中输入内容可用于筛选,而不是分派:
| 筛选条件 | 显示内容 |
|---|---|
a:<名称> | 运行指定智能体的会话 |
s:<状态> | 处于给定状态的会话,例如 s:working。也支持 s:blocked,表示所有等待你处理的会话 |
#<编号> 或 PR 网址 | 正在处理该 pull request 的会话 |
| 其他任意网址 | 首个提示词中包含该网址的会话 |
键盘快捷键
在智能体视图中按 ? 可在当前上下文中查看所有快捷键。下表对它们做了汇总。
| 快捷键 | 操作 |
|---|---|
↑ / ↓ | 在各行之间移动 |
Enter | 接入选中的会话;如果输入框中有文本,则改为分派 |
Space | 打开或关闭选中会话的查看面板 |
Shift+Enter | 分派并立即接入 |
→ | 接入选中的会话 |
Alt+1..Alt+9 | 接入当前聚焦会话所在目录中的第 1–9 个会话 |
Tab | 在空输入框中浏览所有子智能体;否则应用高亮的建议 |
Ctrl+S | 在按状态分组和按目录分组之间切换 |
Ctrl+T | 固定或取消固定选中的会话 |
Ctrl+R | 重命名选中的会话 |
Ctrl+G | 在你的 $VISUAL 或 $EDITOR 中打开分派提示词 |
Ctrl+X | 停止会话;两秒内再按一次即可删除 |
Shift+↑ / Shift+↓ | 重新排序选中的会话 |
Esc | 关闭查看面板、清空输入框,或退出 |
Ctrl+C | 清空输入框;连按两次退出 |
? | 显示所有快捷键 |
分派新智能体
你可以从智能体视图分派新的后台会话,把已有的交互式会话转入后台,或直接从 shell 启动一个。
从智能体视图
在智能体视图底部的输入框中输入提示词并按 Enter,即可启动一个新的后台会话。该会话会根据提示词自动命名;之后可用 Ctrl+R 重命名。
在提示词中粘贴图片,即可为任务附带一张截图或图表。
在提示词中加前缀或提及特定部分,可以控制会话的启动方式:
| 输入 | 效果 |
|---|---|
<智能体名称> <提示词> | 如果第一个词匹配某个自定义子智能体的名称,该子智能体会作为会话的主智能体运行,并使用其 frontmatter 中的配置 |
@<智能体名称> | 在提示词中任意位置提及一个自定义子智能体,即可将其作为主智能体运行 |
@<仓库> | 提及一个仓库,即可在该仓库中运行会话。关于列出哪些仓库,请参阅分派到特定目录 |
/<命令> | 建议将技能和命令作为提示词分派 |
! <命令> | 以后台任务方式运行一条 shell 命令,而不是启动一个 Claude 会话。该任务会作为一行显示,你可以接入、观察和分离 |
#<编号> 或 pull request 网址 | 如果已经有会话在处理该 PR,则改为选中它,而不是重新分派 |
Shift+Enter | 分派并立即接入新会话 |
有一小部分命令会在智能体视图内部本身运行,而不是被分派出去:
/exit和/quit关闭智能体视图/logout让你退出登录/model设置分派模型- 从 v2.1.198 开始,
/login会打开登录对话框,让你无需接入某个会话即可重新登录
技能、你自己的命令,以及像 /init 这样会展开提示词的内置命令,会作为首个提示词发送给一个新的后台会话。其他内置命令则会显示一条 attach to a session to run it 提示。你已输入的所有内容都会留在提示旁边的输入框中,供你编辑。在 v2.1.203 之前,该提示会清空输入框,已输入的文本会丢失。
将一个反复出现的任务打包成一个技能,可以让你在智能体视图中反复启动同一个工作流,而不必重新输入提示词。
当同一个 @name 同时匹配一个子智能体和一个相邻仓库时,子智能体优先。裸词首匹配同样适用,因此如果提示词恰好以你某个子智能体的名称开头,会分派该子智能体,而不是把这个词当作普通文本处理。想要明确指定时可以使用 @ 形式,或者以其他词开头以避免匹配。
分派到特定目录
新会话在你打开智能体视图时所在的目录中运行。要指向不同的目录,可以使用以下任意一种方式:
-
在该目录下打开
claude agents。 -
在父目录下打开
claude agents,并在提示词中用@<仓库>提及某个子仓库。输入@会列出以下目标:- 启动目录下一级的 Git 仓库
- 你启动所在仓库中已注册、且位于其目录树内的 git worktree,例如 Claude 在
.claude/worktrees/下创建的那些,会以其检出的分支标注。在仓库外部添加的 worktree(例如通过git worktree add ../feature)不会列出 - 列表中已经有会话的任何目录
名称中包含空格的目录不会被列出。在 v2.1.203 之前,已注册的 worktree 不会被列出,因此要分派到某个 worktree 中,意味着要从该 worktree 的目录运行
claude --bg。 -
从 shell 中,
cd进入该目录并运行claude --bg "<提示词>"。
当智能体视图按目录分组时,高亮所在行的目录会成为分派目标,因此你可以滚动到某个分组并直接分派到其中,而不必重新输入路径。
从会话内部
运行 /background 或其别名 /bg,可将当前对话转入后台会话。传入一个提示词,例如 /bg run the test suite and fix any failures,可以先额外给出一条指令。如果运行 /bg 时 Claude 正在回复,该回复会在后台会话中继续。
退出一个仍有后台工作在运行的交互式会话——例如子智能体、后台 shell 命令、工作流或监视器——会显示一个 Background work is running 对话框,而不是立即退出。从 v2.1.198 开始,该对话框会在 Exit anyway 和 Stay 旁边提供 Move to background and exit 选项。选择它会像 /background 一样把会话转入后台,然后把你带回 shell,因此能够转移的工作会继续运行,该会话也会出现在智能体视图中。当智能体视图被关闭时,不会显示此选项。
从交互式会话转入后台会启动一个从已保存对话恢复的全新进程,进行中的工作也会转移过去:正在运行的后台 shell 命令、已转入后台的子智能体、动态工作流,以及你用 /loop 创建的定时任务,都会转移到该后台会话中并继续运行。一个子智能体会连同它启动的一切一起转移,因此只有当所有相关工作都能转移时(包括在 Windows 上),它才会转移。要在转入后台时停止进行中的工作,而不是转移它,请设置 CLAUDE_DISABLE_ADOPT=1 环境变量;Claude Code 之后会在转入后台前请你确认。
无法转移的工作,例如正在运行的监视器,会被停止。拥有某个监视器的已转入后台的子智能体也会随之被停止。当有此类工作正在运行时,Claude Code 会显示一个 Background this session? 对话框,让你在其被停止前确认。
一旦进入后台,该会话就可以启动新的子智能体、监视器和后台命令,它们会在之后的分离与重新接入过程中持续运行。
原始启动时的配置标志会延续到转入后台的会话中,因此其 MCP 服务器、设置和回退模型仍然有效:
--mcp-config和--strict-mcp-config--settings--add-dir--plugin-dir--fallback-model--allow-dangerously-skip-permissions
你在会话中用 /add-dir 添加的目录同样会延续。
延续 --allow-dangerously-skip-permissions 会让转入后台的会话仍可使用 bypassPermissions,但并不会授予任何新的权限。该模式仍需要经过权限模式、模型与 effort中所述的、一次性的交互式确认,之后才能被任何会话使用。
从你的 shell
传入 --bg 或其完整形式 --background,即可启动一个直接进入后台的会话:
提示词是位置参数,不是 -p 的值。从 v2.1.198 开始,将 --bg 与 -p 或 --print 组合使用,会在创建任何会话之前直接被拒绝并报错,因为 --print 永远不会启动 claude agents 所能接入的那种交互式会话。
要让某个特定子智能体作为会话的主智能体运行,可将 --bg 与 --agent 组合使用:
传入 --name 可以在智能体视图中设置会话的显示名称,取代自动生成的名称:
转入后台后,Claude 会打印该会话的短 ID 以及用于管理它的命令。当托管后台会话的服务尚未运行时,--bg 可能会先打印 Starting background service…,然后再显示以下输出。当你传入 --name 时,名称会出现在短 ID 之后:
运行一条 shell 命令
要以后台任务方式运行一条 shell 命令,而不是启动一个 Claude 会话,在智能体视图的分派输入框中将 ! 作为第一个字符输入。! 会作为前缀显示,你在其后输入的一切都是命令本身。下面的示例从智能体视图的输入框中分派了 pytest -x:
按 Enter 启动该任务。同样的任务也可以直接在你的 shell 中用 --exec 启动:
该命令会作为一个由 PTY 支持的任务运行,并在智能体视图中显示为一行,以最新一行输出作为其状态。shell 任务会代替 Claude 运行命令,因此不会调用任何模型,输出也不会发送给任何会话。
要查看输出,可以接入该行、按 Space 查看而不接入,或从你的 shell 运行 claude logs <id>。捕获的输出只保存在内存中,不会写入磁盘。该行及其输出会在命令退出约五分钟后自动清理,因此如果你需要结果,请在此之前读取。
文件编辑如何被隔离
每个后台会话,无论是从智能体视图、/bg 还是 claude --bg 启动的,都会从你的工作目录开始。在编辑文件之前,Claude 会将会话移入 .claude/worktrees/ 下一个隔离的 git worktree,这样并行会话可以读取同一份检出内容,但各自写入自己的副本。
在以下情况下,Claude 会跳过 worktree:
- 该会话已经处于一个已链接的 git worktree 内部,无论是 Claude 在
.claude/worktrees/下创建的,还是你用git worktree add在其他位置创建的 - 工作目录不是一个 git 仓库,且未配置
WorktreeCreate钩子 - 该次写入位于工作目录之外
要在 git worktree 不适用的仓库中关闭 worktree 隔离,可将 worktree.bgIsolation 设置为 "none"。此后后台会话会直接编辑你的工作副本,不再先移入 worktree。将该设置添加到项目的 .claude/settings.json 中:
在 git 仓库之外,会话会直接写入工作目录,彼此之间不会被隔离,因此应避免同时分派会编辑同一批文件的并行会话。如果你使用其他版本控制系统,可以配置一个 WorktreeCreate 钩子,Claude 会以与 git 相同的方式隔离编辑。
当该钩子在一个非 git 仓库的目录中失败时,会话会跳过该目录的隔离,直接编辑工作目录。在 git 仓库内部,写入操作会保持阻塞状态,直到会话完成隔离。在 v2.1.203 之前,处于这种状态的后台会话无法编辑任何文件:每次写入都会被拒绝,直到会话完成隔离,而该钩子却永远无法为该目录完成隔离。
在智能体视图中两次按 Ctrl+X 删除一个会话,会移除 Claude 为其创建的 worktree,包括其中任何未提交的更改,所以请先合并或推送你想保留的更改。从 shell 中用 claude rm 删除,则会保留有未提交更改的 worktree,并打印其路径,方便你自行清理。无论哪种方式,你自己创建的 worktree 都会被保留。
要查找某个会话的 worktree 路径,可以查看该会话,或接入并检查其工作目录。
后台会话生成的子智能体会继承该会话的工作目录,因此其文件编辑落在该会话的 worktree 中,而不是你的工作副本中。要让子智能体拥有自己独立的 worktree,可以在其 frontmatter 中设置 isolation: worktree,或在生成它时传入 isolation: "worktree"。
从 v2.1.198 开始,将代码更改隔离在 worktree 中的后台会话,也会在不停下询问的情况下自行提交、推送自己的分支,并打开一个草稿 pull request。当该 pull request 打开时,#N 标签会出现在其所在行上。它绝不会推送到 main 或 master,绝不会强制推送或合并,并且当你告诉它不要打开 pull request,或该仓库没有远程仓库时,它会跳过打开 pull request。
一个编辑着自己没有隔离的检出内容的会话,在提交或切换分支之前仍会先询问。这适用于隔离设置为 "none"、worktree 迁移失败,或会话本身就在一个已存在的 worktree 内启动的情况。
设置模型
智能体视图顶部显示的模型名称是分派默认值。你从输入框启动的新会话会使用该模型,它来自你用户设置中的 model 设置。可以通过在 /model 选择器中选择模型来设置它,也可以直接编辑该设置。
要为整个智能体视图会话覆盖分派默认值,在打开智能体视图时传入 --model。请参阅权限模式、模型与 effort。
要从智能体视图内部更改分派默认值,在分派输入框中输入 /model,后跟模型名称,然后按 Enter。顶部会更新为显示该模型,并带有一个 (session) 标记,之后分派的会话都会使用它。输入 /model default 可清除覆盖并恢复分派默认值。这个覆盖仅在当前这次 claude agents 运行期间有效,不会写入你的设置文件。以下示例将一个会话分派到 Opus,下一个分派到 Sonnet:
每个后台会话都可以运行在不同的模型上。要为某一个会话单独覆盖模型:
- 从 shell 中,在
claude --bg时传入--model。 - 接入一个正在运行的会话,打开
/model,在某个模型上按s,即可仅为该会话切换模型。如果该会话被重新启动,这个更改仍会保留。 - 分派一个在 frontmatter 中设置了
model字段的子智能体。
权限模式、模型与 effort
后台会话会从其运行所在的目录读取设置,就像你在那里启动了 claude 一样。这包括项目设置中的 env 值,因此在那里设置的 ANTHROPIC_MODEL 或服务商变量会应用到该目录下的后台会话。
云服务商选择(例如 CLAUDE_CODE_USE_BEDROCK 或 CLAUDE_CODE_USE_VERTEX)以及 ANTHROPIC_DEFAULT_*_MODEL 别名,都跟随分派该会话的 shell。在该 shell 中导出的网关 ANTHROPIC_BASE_URL 同样会跟随,连同 ANTHROPIC_CUSTOM_HEADERS 一起,但前提是监督进程运行在相同的网关环境中,且该会话运行在你分派所在的目录中,或者是你自己的会话用 ← 或 /background 转入后台的。当第一个打开智能体视图或分派后台会话的 shell 正是网关 shell 时,这是正常情况。用 @repo 或 --cwd 分派到不同目录不会带上该 shell 的网关;那个项目的设置会提供端点。关于后台会话如何获取服务商设置和凭据,请参阅监督进程。
权限模式取决于你启动该会话的方式。用 /bg 或 ← 将已有会话转入后台会保留当前的权限模式,因此一个你切换到 acceptEdits 或 auto 的会话,在分离后仍会保持该模式。从智能体视图输入框分派,或在 shell 中运行 claude --bg,会使用该目录设置中的 defaultMode,或分派的子智能体 frontmatter 中的 permissionMode。
你为一个后台会话选择的权限模式、模型和 effort,连同它延续的配置标志,都会在监督进程之后停止并重启其进程时保留。用 claude --bg --dangerously-skip-permissions 或 claude --bg --permission-mode bypassPermissions 启动的会话,在那次重启后仍会保持在 bypassPermissions,而不会回退到该目录的 defaultMode;你在会话中途用 /model 或 /effort 更改的模型或 effort 也会保留。
一个会话从 effortLevel 设置(而非 --effort 或 /effort)继承的 effort 并不会在分派时被固定:为该会话启动的每个进程都会重新读取该设置,因此在 settings.json 中编辑 effortLevel,会影响你用 ← 或 /bg 转入后台的会话及其之后的重启。在 v2.1.203 之前,将会话转入后台会把它从设置继承的 effort 记录得如同你传入了 --effort 一样,因此之后对 effortLevel 的编辑永远不会影响到它。
你用 /rename 或 Ctrl+R 设置的名称同样会在那次重启后保留,因此 claude --resume <name> 仍能解析到该会话。在 v2.1.202 之前,重启会让会话恢复为分派时的名称,新名称就不再能解析到它了。
要为你从智能体视图分派的每个会话设置默认值,可以在打开它时传入 --permission-mode、--model、--effort 或 --agent 中的任意一个:
--agent 用于设置分派提示词未指定(既没有用 @name,也没有作为首个词)时使用的子智能体。如果设置了 agent 设置,默认使用它;否则默认使用内置的通用 claude 智能体。在分派输入中指定子智能体会覆盖以上两者。
claude agents 还接受 --dangerously-skip-permissions,作为 --permission-mode bypassPermissions 的简写,以及 --allow-dangerously-skip-permissions,用于让每个分派会话的 Shift+Tab 循环中都能使用 bypassPermissions,而不必以该模式启动。两者都与顶层 CLI 标志一致。
当前生效的默认值会显示在分派输入框下方的页脚中。
如果没有传入这些标志,会话会使用该目录设置中的 defaultMode,或分派的子智能体 frontmatter 中的 permissionMode,以及智能体视图顶部显示的模型。
在 claude --bg --permission-mode 中使用 bypassPermissions,会被拒绝,直到你通过交互式运行一次 claude --dangerously-skip-permissions 接受了绕过免责声明,因为该模式会让一个你未在关注的会话在无需批准的情况下执行操作。向 claude agents 传入 --dangerously-skip-permissions 或 --permission-mode bypassPermissions,如果你之前没有接受过,会显示同样的免责声明,接受后会将 bypassPermissions 应用到你从该视图启动的会话。传入 --allow-dangerously-skip-permissions 也会显示同样的免责声明,接受后会让这些会话的 Shift+Tab 循环中可以使用 bypassPermissions,但不会以该模式启动它们。
设置、插件与 MCP 服务器
智能体视图接受与 claude 相同的、用于加载设置、插件、MCP 服务器和额外目录的配置标志。每个标志会应用于智能体视图本身,并传递给你从这里分派的每个会话,因此你以这种方式加载的插件或 MCP 服务器,也会在这些会话中可用。
| 标志 | 效果 |
|---|---|
--settings <file-or-json> | 覆盖智能体视图和分派会话的设置 |
--add-dir <path> | 授予对额外目录的文件访问权限 |
--plugin-dir <path> | 从本地目录加载插件 |
--mcp-config <file-or-json> | 从配置文件或 JSON 字符串加载 MCP 服务器 |
--strict-mcp-config | 只使用 --mcp-config 中的 MCP 服务器,忽略其他 MCP 配置 |
--add-dir、--plugin-dir 或 --mcp-config 每个值需要重复传入一次。以空格分隔的形式(例如 --add-dir a b c)在 claude agents 中不受支持。
以下示例以设置覆盖和一个额外目录打开智能体视图:
从 shell 管理会话
每个后台会话都有一个可在 shell 中使用的短 ID。用 claude --bg 启动会话时会打印该 ID,每个会话的 ID 也是其在 ~/.claude/jobs/ 下的目录名。这些命令在编写脚本或不想打开智能体视图时很有用。
| 命令 | 用途 |
|---|---|
claude agents | 打开智能体视图 |
claude agents --cwd <path> | 打开限定于 <path> 下启动的会话的智能体视图 |
claude agents --json | 打印当前活动会话组成的 JSON 数组并退出:每个正在运行的会话,加上仍在处理或被阻塞(即使其进程已退出)的后台会话。添加 --all 也可包含已完成的后台会话。每个条目都有 cwd、kind 和 startedAt。后台条目还有 id(可用于 claude attach/logs/stop)和 state:working、blocked、done、failed 或 stopped 之一。pid 和 status 只在进程存活时出现,当 status 为 waiting 时还会附带 waitingFor,说明会话被什么阻塞,例如 permission prompt 或 input needed;设置了 sessionId 和 name 时也会出现。你从未命名的交互式条目会带有一个默认 name,由其工作目录名加一个两字符后缀组成,例如 my-app-3f。与 --cwd <path> 组合可用于筛选 |
claude attach <id> | 在此终端中接入某个会话 |
claude logs <id> | 打印该会话最近的输出 |
claude stop <id> | 停止一个会话。也接受 claude kill |
claude respawn <id> | 在对话保持完整的情况下重启一个正在运行或已停止的会话,例如以便使用更新后的 Claude Code 二进制文件 |
claude respawn --all | 重启所有正在运行的会话,例如一次性将所有会话迁移到更新后的 Claude Code 二进制文件 |
claude rm <id> | 从列表中移除一个会话。如果 Claude 为该会话创建的 worktree 没有未提交的更改,会将其移除;否则会打印该 worktree 的路径,供你自行清理。你自己创建的 worktree 会保留原位。对话记录仍会留在你本机上,并可通过 claude --resume 继续使用 |
claude daemon status | 打印监督进程的状态、版本、套接字目录和工作进程数量 |
claude daemon stop --any | 停止监督进程及其托管的后台会话。传入 --keep-workers 可保留后台会话继续运行,以便下一个监督进程重新连接到它们。下一次 claude agents 或 claude --bg 会启动一个全新的监督进程 |
后台会话如何被托管
智能体视图中列出的每个会话都被视为后台会话,无论你当前是否已接入它。相比之下,直接运行 claude 启动的会话与该终端绑定,终端关闭时该会话也会结束,除非你将其转入后台。
监督进程
后台会话由一个按用户维度运行的监督进程托管,独立于你的终端和智能体视图之外。你第一次将会话转入后台或打开智能体视图时,监督进程会自动启动,你不需要直接管理它。
监督进程会保持一个预热好的工作进程处于待命状态,这样从智能体视图或 claude --bg 进行的分派就无需承受冷启动的延迟。分派时,监督进程会把预热好的工作进程分配给你的会话,为其应用该会话的目录、设置和凭据,然后再为下一次分派启动一个替补进程。如果没有可用的健康预热工作进程,监督进程会改为启动一个全新的进程。
监督进程及其会话使用与你的交互式会话相同的已存储凭据进行身份验证,除模型 API 之外不会建立额外的网络连接。诸如 CLAUDE_CODE_USE_BEDROCK 之类的服务商选择变量和 ANTHROPIC_DEFAULT_*_MODEL 别名,会从分派每个会话所在的 shell 读取,并应用到其工作进程上。
分派所在 shell 的 PATH 也会以同样方式应用到该工作进程上,因此会话运行的 shell 命令能找到与你终端相同的工具。在 v2.1.203 之前,后台会话会保留最初启动监督进程的那个 shell 的 PATH,因此此后添加到你 PATH 中的工具可能会缺失,这种情况在 Windows 上最为常见。
后台会话不会从启动监督进程的 shell 继承网关端点变量,例如 ANTHROPIC_BASE_URL,或 Amazon Bedrock、Google Cloud 的 Agent Platform 和 Microsoft Foundry 对应的基础 URL 变量。如果你分派所在的 shell 中没有导出网关,该会话会使用你已存储的凭据,以及项目目录设置中的任何 env 值。要让一个项目中的每个会话都指向某个 LLM 网关,可在该项目的 .claude/settings.json 的 env 块中设置 ANTHROPIC_BASE_URL。
当监督进程是从具有相同网关的环境启动时,你分派所在 shell 中导出的网关 ANTHROPIC_BASE_URL 会传递到该会话的工作进程,连同 ANTHROPIC_CUSTOM_HEADERS 以及与之一并导出的凭据。监督进程会从第一个打开智能体视图或分派后台会话的 shell 中捕获其环境,因此从网关 shell 启动就会让它获得该环境。这种转发同样只适用于分派到你当前分派所在目录的会话,或是用 ← 或 /background 从你自己的会话转入后台的会话:用 @repo 或 --cwd 分派到不同目录不会带上该 shell 的网关,那个项目的 settings.json 的 env 块会提供端点。当监督进程的环境携带不同的网关或没有网关时,工作进程会针对默认端点保留你已存储的凭据,而不会把一种环境的凭据与另一种环境的端点混用。在 v2.1.203 之前,分派所在 shell 的 ANTHROPIC_BASE_URL 会被丢弃,而与之一并导出的 ANTHROPIC_API_KEY 却会被保留,导致网关的密钥被发送到默认端点,每个请求都以 401 失败。
转发的端点只适用于那个实时进程,绝不会写入磁盘。当监督进程停止一个闲置会话并之后重新启动它时,重启的进程会再次从你的设置中读取其端点:如果使用网关的 ANTHROPIC_AUTH_TOKEN,会回退到你已存储的凭据;如果使用网关发出的 ANTHROPIC_API_KEY,则可能在设置中配置好网关之前无法通过身份验证。
每个后台会话都是自己独立的 Claude Code 进程,由监督进程管理,而不是与你的终端绑定。一个正在活跃工作、等待你输入,或已接入终端的会话,会保持其进程运行。一个正在运行的后台 shell 命令、子智能体、动态工作流或监视器都算作活跃工作,因此像一个长期运行的开发服务器这样的进程会让会话保持存活。
一个会话完成后,若未被接入且闲置约一小时,监督进程会停止其进程以释放资源。你用 Ctrl+T 固定的会话不受此限制,会在闲置期间保持进程运行。无论哪种情况,记录和状态都会保存在磁盘上,下次你接入、查看或回复一个已停止的会话时,监督进程会从其上次中断处启动一个全新的进程。当所有会话都已完成、且没有连接的终端时,监督进程本身也会退出,并在你下次需要时再次启动。
会话自身在顶层启动的后台工作,会在其进程被停止、重启或更新时被转移,包括在 Windows 上。为该会话启动的下一个进程会接续这些工作:
- 一个在此期间已完成的后台 shell 命令,会带着其输出被报告为已完成
- 一个动态工作流会从中断处继续
- 一个后台子智能体会从其自身的记录中继续
从 v2.1.198 开始,这种转移涵盖以上全部三种情况。在 v2.1.198 之前,只涵盖 shell 命令和工作流,因此一个后台子智能体会随进程一起停止,并在下次唤醒时被报告为失败。
状态只存在于进程本身内部的工作,会随进程一起停止,而不会被转移。这类工作包括子智能体启动的 shell 命令(恢复的子智能体可以重新启动它们),以及正在运行的监视器(其事件流无法转移到另一个进程)。
删除该会话会停止它已转移的一切工作。要让该会话的所有后台工作随进程一起停止,而不是被转移,请将 CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF 环境变量设置为 1。
如果一个重启的会话恢复后只显示其最初的提示词,是因为 Claude Code 误将其记录读取为空,此时该对话记录会被重命名为带 .orphaned- 后缀,而不是被删除,因此它仍会留在你的机器上。
按 ← 留下、却从未收到任何提示词的空行,会在约五分钟后被完全移除,以便列表自行清理。用 claude --bg 启动的会话,以及正在等待某个设置提示(例如信任对话框)的会话,不会以这种方式被移除。
当主机内存不足时,监督进程会先停止闲置的未固定会话,只有在这样做仍未释放任何资源时,才会停止闲置的已固定会话。
监督进程会监视磁盘上安装的 Claude Code 二进制文件,并在常规自动更新程序替换该文件后重启到新版本。这是一次本地文件监视,不是网络检查。后台会话是分离的进程,因此它们会在重启期间持续运行,新的监督进程会重新连接到它们。一个闲置的已固定会话也会就地重启到新版本,让它无需你重新接入即可获得更新。
在监督进程正在重启一个会话(无论是因为更新、卡顿还是迁移)期间运行 claude attach,会等待替补进程,而不是直接失败。一行诸如 Agent is updating to the new Claude Code… 的状态行会说明它在等待什么,并计算已经过去的秒数,一旦会话就绪,命令便会立即连接。大约 60 秒后它会停止等待并报告错误。在 v2.1.205 之前,claude attach 会在几秒钟后停止重试并打印错误,而此时会话可能仍在重启中。
状态存储位置
会话状态存储在你的 Claude Code 配置目录下。如果你设置了 CLAUDE_CONFIG_DIR,监督进程会改用该目录而不是 ~/.claude,并作为一个拥有自己会话的独立实例运行。
| 路径 | 内容 |
|---|---|
~/.claude/daemon.log | 监督进程日志 |
~/.claude/daemon/roster.json | 正在运行的后台会话列表,用于重启后重新连接 |
~/.claude/jobs/<id>/state.json | 智能体视图中显示的单个会话状态 |
~/.claude/jobs/<id>/tmp/ | 单个会话的临时目录。在此处写入不会触发权限提示。会话被删除时随之移除 |
每个后台会话都设有 CLAUDE_JOB_DIR 环境变量,指向其 ~/.claude/jobs/<id> 目录,因此会话运行的 shell 命令可以将临时文件写入 $CLAUDE_JOB_DIR/tmp,而不会与并行会话发生冲突。
要在不直接读取文件的情况下查看这些状态,请运行 claude daemon status。它会报告监督进程是否可达,其进程 ID 和版本,套接字目录,以及有多少个后台会话处于活动状态。
该命令还会在正在运行的监督进程版本与你调用的 claude 版本不同时发出警告,这种情况发生在一次更新之后、而监督进程尚未重启到新版本时。该警告会显示两个版本号,并告诉你运行 claude daemon stop --any 以获取新版本。当 Claude Code 是作为操作系统服务安装时,建议的命令是不带该标志的 claude daemon stop。
会话能够完整地经受这种版本不一致:一个较旧的 Claude Code 版本在更新某个会话的 state.json 时,会保留它不认识的字段,并保持该会话在列表中。roster.json 中的会话列表遵循同样的规则:较旧版本重写它时会保留较新版本写入的字段,因此由较新版本启动的会话在监督进程重启后仍可访问,并能继续接受输入。在 v2.1.200 之前,较旧版本在重写时可能会丢弃这些字段。
在 Windows 上,当守护进程的管道密钥文件被锁定或不可读时,claude daemon status 会展示底层的文件错误,而不是报告一个通用的连接失败。
关闭智能体视图
要完全关闭后台智能体和智能体视图,将 disableAgentView 设置设为 true,或设置 CLAUDE_CODE_DISABLE_AGENT_VIEW 环境变量。管理员可以通过统一管理设置强制启用此设置。
故障排查
claude agents 列出子智能体,而不是打开智能体视图
如果 claude agents 打印出一个数字,随后列出你配置的子智能体然后退出,说明智能体视图在你的环境中不可用。运行 claude update 安装最新版本。
如果更新后智能体视图仍然无法打开,请检查它是否已被某个设置或环境变量关闭。
智能体视图打开后没有任何会话
在你分派第一个会话之前,智能体视图会显示空的分组标题(每个标题下都有说明),以及输入框上方的一行说明,取代会话列表。在底部的输入框中输入提示词并按 Enter,即可分派你的第一个会话。
转入后台时显示 Background this session? 对话框
如果按 ← 将当前会话转入后台时显示 Background this session? 对话框,说明该会话有无法转移到后台会话的进行中工作,例如正在运行的监视器,Claude Code 不会悄悄地停止它。该对话框会说明哪些工作将被停止,并单独统计有多少任务会被转移。运行 /tasks 查看正在运行的一切,然后确认无论如何都要转入后台,或选择 Stay 让工作先完成。关于哪些任务类型会被转移、哪些会被停止,请参阅从会话内部。
提示词因过短被拒绝
分派输入框期望的是任务描述,而不是聊天式的开场白。少于四个字符的提示词会被一条 Too short 提示拒绝,以防误触的按键启动一个会话。请描述你想让该会话做什么,例如 investigate the flaky checkout test。
会话在关机后显示为失败
关闭或重启你的机器会停止正在运行的后台会话,因此下次打开智能体视图时它们会显示为失败。对其中任意一个进行接入、查看或回复,该会话就会从中断处重启。
单纯的休眠不会导致这种情况。会话会在休眠期间被保留,监督进程会在唤醒时重新连接到它们。
打开某个会话时提示对话已经打开
打开一个已停止的行,而其对话同时被另一个仍在运行的非交互式 Claude Code 进程占用——例如同一对话的一个仍在收尾的后台工作进程——会显示 This conversation is already open in another running Claude session,而不会启动该行的进程,因为两个进程不能同时写入同一份记录。请在已经打开该对话的会话中回复,或退出它后再重新打开该行。你在这次被拒绝的尝试中输入的回复不会丢失;它会在会话下次启动时被发送。
在 v2.1.203 之前,这种状态仍会启动第二个进程。该进程会以 currently running as a background agent 错误退出,该行会显示为失败。
会话在启动前就因“可能内存不足”提示而失败
从 v2.1.199 开始,当一个后台会话的进程在完成启动之前就退出、且主机内存不足时,该行的状态会说明退出原因,并附上 possibly low memory — free some up and retry。更早的版本在这种失败时只显示原始的退出原因。
这个提示只是一种推测,而不是已确认的原因。Claude Code 只有在进程静默退出(没有写入错误、也没有被信号终止),且主机在那一刻报告内存不足时,才会添加它。当进程在退出前确实写入了错误时,该行会显示那个错误。
释放机器上的内存,然后对该行进行接入、查看或回复,监督进程会为该会话启动一个全新的进程。当内存持续不足时,监督进程也会自行停止闲置会话以释放资源。
智能体视图提示后台服务未响应
如果接入、查看,或 claude logs 报告后台服务未响应,很可能是监督进程已经卡住。停止它,让下一次 claude agents 启动一个全新的进程。要在重启期间保持你的后台会话继续运行,传入 --keep-workers:
新的监督进程会重新连接到正在运行的会话。如果不加 --keep-workers,该命令也会同时结束这些后台会话。--any 标志用于确认你想要停止的是一个按需启动的监督进程,而不是作为服务安装的进程,按需启动是默认情况。
一个已启动但无法接受连接的监督进程会自行退出并释放其锁,因此下一次 claude agents 会自动启动一个全新的进程,无需这个手动停止步骤。上面的步骤适用于一个正在运行的监督进程卡住的情况。
在 Windows 上,如果监督进程对停止请求没有响应,该命令会打印其进程 ID。用 taskkill /PID <pid> 结束该进程即可完成恢复。如果你传入了 --keep-workers,后台会话仍会被保留。
分派失败并提示“无法解析身份验证方式”
如果一次后台分派因 Could not resolve authentication method 而失败,而交互式会话可以正常完成身份验证,说明接收该分派的工作进程没有获取到凭据。监督进程在分配预热的工作进程时会提供一份最新的凭据快照,因此这个错误意味着监督进程本身没有可用的已存储凭据。请确认你已运行过 /login 或配置了 API 密钥,然后停止监督进程:
下一次 claude agents 或 claude --bg 会启动一个全新的监督进程,读取你已存储的凭据。如果你是通过环境变量(例如 ANTHROPIC_API_KEY)而不是 /login 进行身份验证,请在设置了该变量的 shell 中运行下一个命令。
完整的原因和修复方法列表,请参阅错误参考。
后台会话在 macOS 上无法读取桌面、文档或下载目录
在 macOS 上,托管后台会话的进程独立于你的终端运行,需要单独申请访问受保护文件夹的权限。如果后台会话在读取 ~/Desktop、~/Documents、~/Downloads 或其他受保护位置时报告 Operation not permitted,请在系统设置的“隐私与安全性 > 文件与文件夹”中授予访问权限,或为该条目启用“完全磁盘访问权限”。
使用原生安装程序时,该条目会显示为 Claude Code,且授权在更新后仍会保留。使用其他安装方式(例如 Homebrew 或 npm)时,该条目会显示二进制文件路径,更新后可能需要重新授权。
后台会话在 macOS 上无法访问本地网络中的主机
在 macOS 15 及更高版本上,系统会阻止某个进程访问本地网络中的设备,直到你授予“本地网络”权限。在 v2.1.198 之前,托管后台会话的进程从不请求该权限,因此即使同样的命令在前台终端中可以正常工作,指向局域网地址的命令也会以 connect: no route to host 失败。从 v2.1.198 开始,后台会话中第一条连接到本地网络地址的命令,会触发 macOS 针对 Claude Code 的“本地网络”权限提示。授权一次后,这些命令就能以与前台终端相同的方式访问局域网中的主机。
会话接入后响应缓慢
一个会话完成后,若未被接入且闲置约一小时,监督进程会停止其进程以释放资源。接入会从中断处启动一个全新的进程,并在该进程重启的同时立即切换到该会话。正在处理、正在等待你,或已被固定的会话不会以这种方式被停止,因此可以用 Ctrl+T 固定一个会话以保持其响应速度。
.claude/worktrees/ 不断变大
在智能体视图中删除一个会话,会移除 Claude 为其创建的 worktree。claude rm 会保留有未提交更改的 worktree,并打印其路径。在项目目录中用 git worktree list 列出遗留的条目,并用 git worktree remove <path> 逐一移除。请参阅清理 worktree。
限制
智能体视图处于研究预览阶段,存在以下限制:
- 仍受速率限制约束:后台会话消耗你的订阅用量的方式与交互式会话相同,因此并行运行十个智能体,用量消耗速度大约是运行一个的十倍。
- 会话在本地运行:后台会话运行在你的机器上。它们能经受休眠,但机器关机时会停止。
- Claude 创建的 worktree 会随会话在智能体视图中一起被删除:在删除一个曾在自己 worktree 中编辑文件的会话之前,请先合并或推送更改。
claude rm会保留有未提交更改的 worktree;你自己创建的 worktree 会被保留原位。
相关资源
关于其他并行运行 Claude 的方式,请参阅:
- 并行运行智能体:比较智能体视图与子智能体、智能体团队和 worktree
- 智能体团队:协调多个可以互相通信的会话
- 网页版 Claude Code:在受管的云环境中运行会话,而不是在本地运行
版本历史
智能体视图在研究预览期间演进很快。如果你使用的是较旧的 Claude Code 版本,本页描述的一些行为可能有所不同;特别是,claude agents 会对它尚不支持的标志报 unknown option 错误。下表列出了每个标志和行为的加入时间。
| 版本 | 变更 |
|---|---|
| v2.1.205 | 行摘要显示会话自身的单行报告(在 64 列处截断),而不是原始的工具调用或 完成数/总数 计数;按目录分组的行会以彩色状态词语开头。查看面板打开时会显示完整的状态描述,对于正在等待你的会话,还会在回复输入框上方显示其确切的问题。用 gh 编辑、评论、关闭或将某个 pull request 标记为可审查的会话会被关联,不只是创建或检出 pull request 的会话;即使本地分支名不匹配,一次推送也会关联某个 pull request;创建命令输出超过内联限制的 pull request 同样会被关联。一轮没有可读文本的输出会保留会话之前的状态,而不会将其翻回 Working。claude attach 会为正在重启的会话等待最多约 60 秒,并显示说明原因的状态行,而不是直接失败。 |
| v2.1.203 | 当监督进程共享相同的网关环境时,分派所在 shell 中导出的网关 ANTHROPIC_BASE_URL,会传递给从该 shell 分派到同一目录的会话,而不是被丢弃,同时保留与之一并导出的 API 密钥。分派所在 shell 的 PATH 会应用到每个会话的工作进程上。子智能体运行期间按 ← 会等待它们,而不是在十秒后重启它们。空列表始终会显示分组标题,每个标题下都有说明。在分派输入框中输入 @ 也会列出启动仓库中已注册、且位于其目录树内的 git worktree。从 effortLevel 设置继承的 effort 会跟随该设置之后的编辑,而不是在分派时被固定。打开一个对话已经在另一个正在运行的会话中打开的已停止会话,会以一条消息拒绝,而不是让该行失败。在智能体视图中不可用的命令会将已输入的文本留在输入框中。在非 git 仓库中失败的 WorktreeCreate 钩子,不再阻止会话编辑文件。 |
| v2.1.202 | 在后台会话上用 /rename 或 Ctrl+R 设置的名称,会在监督进程停止并重启其进程后保留,而不会恢复为该会话分派时的名称。 |
| v2.1.200 | 较旧的 Claude Code 版本在重写 roster.json 中的会话列表时,会保留较新版本写入的字段,与现有的 state.json 保证一致,因此由较新版本启动的会话在监督进程重启后仍能继续接受输入。当你打开一个已停止响应的会话时,监督进程会重启其进程,会话会从中断处继续之前被打断的回复。 |
| v2.1.199 | 一个在完成启动之前就退出、且主机内存不足的后台会话,其行状态会显示 possibly low memory — free some up and retry,而不仅仅是原始的退出原因。用 ← 或 /background 将会话转入后台,会把其 /color 一并带到新行中。 |
| v2.1.198 | 当后台会话需要输入、完成或失败时,智能体视图会通过 preferredNotifChannel 发送通知,并以 agent_needs_input 或 agent_completed 类型触发 Notification 钩子。在 claude attach <id> 中按 ← 和 /exit 会返回智能体视图,而不是退出到 shell;Ctrl+Z 会返回 shell。一个将工作隔离在 worktree 中的后台会话,会在完成时提交、推送其自己隔离的分支(绝不是 main 或 master),并打开一个草稿 pull request,而不是先询问。/login 可在智能体视图中运行并打开登录对话框。Background work is running 退出对话框提供 Move to background and exit 选项。转移交接也涵盖后台子智能体,它们会在下次唤醒时从自己的记录中恢复,而不是被报告为失败。将 claude --bg 与 -p 或 --print 组合会被拒绝并报错。 |
| v2.1.196 | 单次按 ← 即可将前台会话转入后台;更早的版本需要按两次,并带有页脚提示和确认。向 claude agents 传入 --dangerously-skip-permissions 会显示绕过免责声明,而不是被悄悄丢弃。你从未命名的交互式会话,在会话列表和 claude agents --json 中会带有一个默认名称,例如 my-app-3f。后台 shell 命令和动态工作流能经受会话进程被停止、重启或更新(包括在 Windows 上);设置 CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF=1 可关闭这种转移。重启时被误读为空的记录会被重命名为带 .orphaned- 后缀,而不是被删除。 |
| v2.1.195 | 在 Windows 上将会话转入后台时,进行中的工作同样会被转移;设置 CLAUDE_DISABLE_ADOPT=1 可改为停止它。Completed 分组会填充剩余的垂直空间,标题在较矮的终端上会压缩显示。较旧的 Claude Code 版本不再丢弃较新会话的 state.json 字段,也不再将这些会话从 claude agents 中隐藏。接入一个已停止的会话会立即切换,而不是显示最多五秒的空白屏幕。一个无法接受连接的监督进程会自行退出并释放其锁。 |
| v2.1.174 | 后台会话不再从监督进程的启动 shell 继承网关端点变量,例如 ANTHROPIC_BASE_URL;监督进程会为预热的工作进程提供一份最新的凭据快照,修复了误报的 Could not resolve authentication method 错误。 |
| v2.1.172 | 在分派输入框中使用 /model,可设置一个仅限当前会话范围的分派模型覆盖。 |
| v2.1.161 | 行摘要会为并行工作项显示 完成数/总数 计数;查看面板会提及耗时最长的并行工作项。 |
| v2.1.157 | claude agents 接受 --agent;分派的会话会遵循 agent 设置。 |
| v2.1.145 | 查看面板的回复输入框和分派输入框支持语音输入。 |
| v2.1.143 | 新增 worktree.bgIsolation 设置;claude agents 接受 --allow-dangerously-skip-permissions。 |
| v2.1.142 | claude agents 接受 --permission-mode、--model、--effort、--dangerously-skip-permissions、--settings、--add-dir、--plugin-dir、--mcp-config 和 --strict-mcp-config。 |
| v2.1.141 | claude agents 接受 --cwd,用于将列表限定到一个项目。 |
| v2.1.139 | 智能体视图作为研究预览版引入。 |