claude agents 打开,是所有后台会话的一个屏幕:什么正在运行、什么需要你的输入、什么已完成。调度新会话,一目了然地查看它们的状态而不是滚动浏览记录,只在需要时才介入。每个后台会话都是一个完整的 Claude Code 对话,在没有终端连接的情况下继续运行,所以你可以随时打开它、回复并离开。


Agent view 处于研究预览阶段。随着功能的发展,界面和快捷键可能会改变。
快速开始
本演练涵盖 agent view 的核心循环:调度一个任务,在 Claude 工作时观察其所在行的更新,窥视以查看进展并回复,以及附加以查看完整对话。您调度的会话在关闭 agent view 后会继续运行,因此您可以离开并稍后再回来。1
打开 agent view
在您的 shell 中运行:如果您尚未接受该目录的工作区信任对话框,Claude Code 会在 agent view 打开前显示该对话框,与
claude 显示的对话框相同。接受即可保存对该工作区的信任并继续。如果您拒绝,Claude Code 会直接退出,不会打开 agent view。Agent view 打开后,底部有一个输入框,表格会随着会话启动而逐步填充。按 Esc 返回您的 shell;如果您是通过按 ← 将会话转入后台来打开 agent view 的,Esc 则会返回到该对话。您离开期间会话会继续运行,并会在您下次打开 agent view 时重新出现。2
调度一个会话
输入描述任务的提示词并按
Enter。一个新的后台会话会针对该任务启动,并显示为一行,标明它是正在工作、正在等待您,还是已完成。新会话使用 agent view 标题中显示的模型。它以哪种权限模式启动取决于您打开 agent view 的方式。您在此输入的每个提示词都会启动各自的新会话。输入另一个提示词并按 Enter 会启动第二个会话,与第一个会话并行运行,而不是向第一个会话发送后续消息。您可以通过这种方式并行运行多个会话。每个会话独立消耗您的订阅配额,因此在一次调度多个会话之前,请先查看限制。3
窥视和回复
使用箭头键选择一行,然后按
Space 打开窥视面板。它显示会话的最新输出或会话正在等待回答的问题,而不是完整的会话记录。输入回复并按 Enter 即可发送,无需离开 agent view。4
附加和分离
当您想查看完整对话时,在某一行上按
Enter 或 → 进行附加。该会话会接管终端,成为一个完整的交互式 Claude Code 会话。在空输入框中按 ← 即可分离并返回表格。5
引入现有会话
此步骤需要一个正在运行的会话。如果您按照前面的步骤操作,此终端中并没有打开的会话,因此请先在另一个终端中打开一个常规
claude 会话并向其发送一条消息。要将已打开的会话移入 agent view,请在该会话中运行 /bg,或在空输入框中按 ←,一步完成将会话转入后台并打开 agent view。在尚无任何消息的新会话中,/bg 会要求您先发送一条消息,而 ← 可立即生效。该会话会继续运行,并与您调度的会话一起显示为一行。claude 会话中,输入框页脚的 ← 提示会统计正在等待您的后台 Agent 数量,例如 ← 2 agents;当没有 Agent 需要输入时,则恢复为 ← for agents。超过 99 的计数显示为 99+。终端处于焦点状态时,计数大约每十秒刷新一次,焦点返回时会立即刷新。计数变化以及 Agent 完成时,它会短暂改变颜色;当某个后台会话完成且没有 Agent 需要您输入时,它会短暂显示已完成的数量,例如 ← 2 done。启用 prefersReducedMotion 设置时,这两种闪烁效果都会关闭;在屏幕阅读器模式下,该提示会被隐藏。
默认打开 agent view
要让不带参数的claude 打开 agent view 而不是新对话,请启用一项 /config 设置。
1
启用设置
在常规
claude 会话中,运行 /config 并启用 Open agents view by default。要跳过菜单,可直接设置 defaultToAgentsView 键:2
启动 Claude Code
退出会话,然后不带参数运行 此时将打开 agent view,而不是新对话。
claude:claude "fix the login test"。要关闭该设置,请在常规会话中或在从 agent view 附加的会话中运行 /config defaultToAgentsView=false。
使用 agent view 监控会话
运行claude agents 打开 agent view。它接管整个终端并列出按状态分组的每个会话,固定的会话和需要您处理的会话位于顶部。每行显示会话的名称、当前活动和存在时长,时长从会话创建时开始计算;已完成会话的时长会定格在运行所花费的时间。
名称使用该会话中由 /color 设置的颜色着色,包括您用 ← 或 /background 将会话转入后台时。
默认情况下,列表显示您启动的每个后台会话,涵盖您的所有项目。在一个仓库中工作的会话和在另一个 worktree 中工作的会话都会出现在这里,无论您从哪个目录打开 agent view。要将列表限定到一个项目,请传递 --cwd:
~/projects/my-app/.claude/worktrees/ 下)的会话仍会列出。
您在其他终端中打开的交互式会话不会出现,直到您将其转入后台。会话生成的子代理和队友不会作为单独的行列出。
读取会话状态
每行以一个图标开头,其颜色和动画显示会话的状态:
另外,图标的形状有其自身的含义:
行右边缘可能出现的
#N 或 !N 标签是指向会话的拉取请求或合并请求的链接,不是状态图标的一部分。
agent view 打开时,终端标签页标题会显示等待输入的数量:有会话需要输入时显示 2 awaiting input · claude agents,没有时显示 claude agents。
要从脚本或其他程序读取会话状态,请使用 claude agents --json,而不是 ~/.claude/jobs/ 下的文件。
agent view 打开时,当本地后台会话开始需要您的输入、完成或失败时,Claude Code 还会通过您配置的终端通知频道发送通知。按计划运行的会话,例如 /loop 会话,仅在需要您的输入时通知。通知使用与 Claude Code 其余部分相同的 preferredNotifChannel 设置,并以 agent_needs_input 或 agent_completed 类型触发 Notification hook。
后台会话不需要打开任何终端即可继续工作。一个单独的监督进程运行它们,因此您可以关闭 agent view、关闭 shell 或启动新的交互式会话,已分派的工作会继续进行。
会话状态会在磁盘上持久保存,不受自动更新和监督进程重启的影响。机器休眠时会话也会被保留。它们的进程在唤醒时恢复,监督进程会重新连接到它们,而不是将这段时间间隔视为空闲。关机仍然会停止正在运行的会话;请参阅关机后会话显示为失败或已停止了解如何恢复它们。
如果机器休眠时会话正在生成回复,会话恢复后可能无响应。当您打开一个已停止响应的会话时,监督进程会重启其进程,会话会从中断处继续被打断的回复。
行摘要
每行中的单行摘要由 Haiku-class 模型生成,因此无需打开会话记录,该行就能告诉您会话正在做什么、需要什么或产出了什么。会话正在工作时,行文本最多每 15 秒根据会话自身的最近输出更新一次,不发送模型请求;每个轮次结束时,模型会写入新的摘要。 工作中的行显示会话自述正在做的事情,被阻塞的行显示它提出的问题。在较长的轮次中,模型还会每隔几分钟重写一次摘要,因此繁忙的行不会一直显示过时的摘要。摘要文本会填满行的剩余宽度;打开窥视面板可阅读被终端边缘截断的句子。 当列表按目录分组时,摘要以彩色文字显示的会话状态开头,例如Needs input · double jump or wall climb?。在默认的按状态分组中,组标题已经指明了状态,因此行只显示摘要。
轮次结束时的摘要和每次轮次中途的重写,都是通过您的常规提供商发送的一个简短 Haiku-class 请求,按与会话本身相同的数据使用条款计费和处理。两次模型重写之间每 15 秒的更新复用会话自身的输出,不发送请求。在未配置 Haiku-class 模型的第三方提供商或网关上,请求改用会话的主模型;设置 ANTHROPIC_DEFAULT_HAIKU_MODEL 可选择一个模型。
拉取请求状态
当会话创建拉取请求时,Claude Code 会在行的右边缘添加一个链接到该拉取请求的标签:- Claude Code 对拉取请求将标签写为
#1234,对 GitLab 合并请求写为!1234。 - 即使无法检测到超链接支持(例如通过 SSH 或 tmux),Claude Code 也会输出链接。设置
FORCE_HYPERLINK=0可将标签呈现为纯文本。 - 在您向会话发送后续消息后,Claude Code 会保留该标签,同时行恢复显示实时进度。
- 当 Claude 使用
gh编辑、评论、关闭拉取请求或将其标记为就绪时,Claude Code 会链接该命令自身输出中指明的拉取请求。捕获的输出中未指明拉取请求的gh命令不会创建链接;gh pr merge是常见情况,因为它只将结果打印到交互式终端。 - 当 Claude 使用
gh pr checkout检出拉取请求或推送到分支时,Claude Code 会用gh pr view查找该分支,并链接其打开的拉取请求。 - Claude 推送时拉取请求不必已经存在:在同一目录中后续最多五个
git、gh、glab或curl命令运行后,Claude Code 会重试分支查找,因此在推送之后创建的拉取请求,包括 Claude 通过 GitHub REST API 创建的拉取请求,会在重试找到它时被链接。
3 PRs,并按最需要关注的打开拉取请求着色。打开窥视面板可查看全部拉取请求。
拉取请求编号按其状态着色:
对于以拉取请求结束的任务,请查看此标签了解结果:当编号变为绿色时,审查并合并该拉取请求。
窥视和回复
在选中的行上按Space 打开窥视面板。面板打开时会显示该行在终端边缘被截断的句子,具体是哪个句子取决于会话的状态:
- 正在等待您的会话:它提出的确切问题,显示在回复输入框上方
- 已完成的会话:其结果
- 工作中的会话:其完整的状态句子
waiting 3m)显示它已等待多长时间,这也是面板中显示的唯一时间。行右边缘的时长是另一个数字:它从会话启动时开始计算。
大多数时候窥视面板就足够了,您无需打开完整的会话记录。
在窥视面板中输入回复并按 Enter 将其发送到该会话。在回复前加上 ! 可改为发送 Bash 命令。回复的处理方式取决于会话以及您发送的内容:
- 正在工作的会话:
/model、/effort、/rename和/usage会立即运行。其他回复会加入会话的消息队列而不是打断回复,并在排队输入生效时生效。其他命令会等待当前轮次结束,即使是在会话自身的提示符处输入后会立即运行的命令 - 恰好为
/stop的回复:立即停止会话,而不是发送给会话,无论会话正在工作还是在等待您 - shell 作业:回复(包括
/stop)会作为键入的输入发送到该命令的终端
- 带有预定义选项的问题:面板按编号列出选项。在回复输入框为空时,按某个选项的编号将其填入,然后按
Enter发送,或者改为输入您自己的答案 - 没有预定义选项的问题:输入您的答案。当空输入框显示建议的回复时,按
Tab将其填入,并可在发送前编辑 - 权限提示或其他对话框,例如沙箱提示或 MCP 服务器的输入请求:回复并不会回答它。您的回复会在队列中等待。要回答该对话框,请用
→附加
PermissionRequest 或 PreToolUse hook 针对会话正在询问的调用返回了 Claude Code 无法验证的输出时,该行会在待处理请求的文本之前显示 hook 事件以及 hook output invalid: 和验证错误。对于以其他方式失败的 hook,该行会说明 hook 失败。会话仍在等待同一个请求。
当回复无法送达时,错误消息会说明它是否已保存。以 ! 或 / 开头的回复永远不会被保存。下次您重启会话时,Claude Code 会将已保存的回复作为会话的下一个提示词发送;其他回复请重新发送。
在按住模式下启用语音听写后,在回复输入框获得焦点时按住您的按键通话键,即可通过听写而非键入来回复。agent view 底部的分派输入框中也同样适用。
使用 ↑ 和 ↓ 窥视相邻会话而无需关闭面板,或按 → 附加。
附加到会话
在选中的行上按Enter 或 → 即可附加。agent view 会被完整的交互式会话取代。附加时,Claude 会发布一段简短回顾,说明您离开期间发生了什么。
附加后,会话的行为与任何其他 Claude Code 会话相同:命令、快捷键和功能都可正常使用,但以下情况除外。
附加后,/install-github-app 和 /mcp 设置列表可正常使用,因为终端前有人可以完成它们的对话框。没有人附加时,这些命令无法打开对话框,因此会话会出现在 agent view 的 Needs input 下,行中显示类似 open this session to manage MCP servers 的内容,会话记录中的回复也会说明同样的情况。附加并再次运行该命令即可继续;附加时需要输入的行会被清除。/mcp reconnect <server>、/mcp enable 和 /mcp disable 无论是否附加都可使用。
附加的会话始终以全屏模式呈现,不受您的 tui 设置影响,因为后台会话没有可追加内容的终端回滚缓冲区。使用 PgUp、PgDn 或鼠标滚轮滚动,按 Ctrl+O 进入会话记录模式。终端的原生滚动和 tmux 复制模式仅显示当前视口,与运行任何全屏应用程序时相同。
附加的会话不会向您的终端报告其状态。
在空提示符上按 ← 或运行 /exit 即可分离并返回 agent view,无论您是从 agent view 打开会话,还是从 shell 用 claude attach <id> 打开的。
/btw overlay 打开时,← 也可以分离。需要 Claude Code v2.1.257 或更高版本。仍在回答中的旁支问题会在您离开期间继续运行。下次附加时,overlay 会重新打开并显示该问题或其答案。
在 Windows 上,如果您在附加后约半秒内按 ←,Claude Code 会显示 Ambiguous ←, press again to detach,因为在这段时间内终端可能会重新传递附加之前的按键。再按一次 ← 即可分离。
Ctrl+Z 也会分离,但会返回到您开始的地方:如果您从 agent view 附加则返回 agent view,如果您运行的是 claude attach 则返回 shell。当对话框获得焦点且不响应 ← 时,请使用 Ctrl+Z。
附加时 Ctrl+C 保持其标准中断行为:它会取消正在进行的回复或 ! shell 命令,而不是分离。在空提示符上按两次 Ctrl+C 会分离。
分离永远不会停止后台会话:←、Ctrl+Z、/exit 以及连按两次 Ctrl+C 或 Ctrl+D 都会让它继续运行。如果您在 /loop 等待下一次迭代时分离,循环会继续运行,该次迭代会在您不在时按计划开始。要在分离前停止循环,请参阅停止循环。要从会话内部结束会话,请运行 /stop。
在不离开终端的情况下切换会话
在前台运行的会话中(即您在终端中启动、而非从 agent view 附加的会话),在空提示符上按← 会将其转入后台并打开 agent view,同时选中该会话的行,因此您无需离开终端即可切换会话。对于已附加的会话,同样按一次即可分离。
如果您在删除提示符中最后的文本或浏览提示历史后立即按 ←,Claude Code 会要求您确认:第一次按下显示 Press ← again to open agents(在已附加的会话中显示 Press ← again to go back to agents),第二次按下才会切换。
当 ← 将前台会话转入后台时,agent view 会在列表上方显示 Your conversation moved to the background,并已选中该会话的行。接下来:
- 按
Enter重新打开对话。 - 按
Esc撤销切换并返回对话。如果Esc显示Still starting — try again in a moment,说明后台会话尚未就绪,请稍后再按一次Esc。 - 按两次
Ctrl+C退出到 shell。
claude --resume 命令。
Claude 的任务列表会随对话移到后台会话,因此当您返回该行时,清单保持完整。
在您用方向键或鼠标移动选择后,您按下 ← 时所在的行仍会保持粗体、不暗淡的名称,便于您辨认自己来自哪个会话。
如果按 ← 时有工具正在运行,Claude Code 会等待其完成后再转入后台,Claude 会在后台会话中继续回复。再按一次 ← 可立即转入后台而不等待。当进行中的后台工作无法转移到后台会话时,Claude Code 会先显示 Background this session? 对话框,与 /background 相同。
大约十秒后,Claude Code 会不再等待,直接将会话转入后台,但以下情况等除外:
- 前台子代理仍在运行:Claude Code 会继续等待,以便 Claude 启动的前台子代理的工作能够转移,并显示
Still backgrounding after the current tool。再按一次←可不等待直接转入后台,这会从头重新启动这些子代理。 - 有权限提示或问题在等待您的回答:当权限提示或 Claude 提出的问题处于等待状态时,Claude Code 会继续等待并显示
Still backgrounding after the current tool — a question is waiting for your answer.如果您的回答让当前轮次得以继续,例如在权限提示上选择 Yes,Claude Code 会在当前工具完成时将会话转入后台。 - 您在提示输入框中输入内容:Claude Code 会取消切换,因为未发送的文本会留在终端的输入框中,不会移到后台会话。它会显示
Backgrounding cancelled — you have unsent text in the input. Send it or clear it, then press ← again. - 您停止了当前轮次:Claude Code 会取消切换并显示
Backgrounding cancelled — the turn was stopped.例如,当您用Esc中断 Claude,在主对话的权限提示上不添加评论而选择 No,或在主对话中 Claude 提出的问题上按Esc时,当前轮次会停止。再按一次←即可将会话转入后台。 - 排队的消息无法移动:您在 Claude 工作时排队的消息会随对话移到后台会话。当其中某条消息无法移动时,会话会留在前台,Claude Code 会显示类似
Cannot open agents — 1 queued message can't move to the background. Press ← again once Claude has read it.的通知。
← 之后),它会停止 Claude 仍在前台运行的 shell 命令。Claude Code 不会针对该命令显示 Background this session? 对话框。在后台会话中,Claude 没有该命令已启动的记录,因此 Claude 可能会再次运行该命令。要在会话移动时让该命令继续运行,请在 Claude Code 仍在等待时按 Ctrl+B 将其转为后台命令。
即使对话还没有任何消息,按 ← 也会创建该会话的行,因此 → 仍可返回该会话。
您可以在 /config 中通过 leftArrowOpensAgents 设置为前台会话关闭此快捷键。
组织列表
agent view 对会话进行分组,使需要输入的会话位于顶部,Ready for review 和 Needs input 位于 Working 和 Completed 之上。这些组名与上面的状态并非一一对应:会话有需要审查或检查失败的打开拉取请求时会移到 Ready for review,而 Completed 会同时收纳已完成、失败和已停止的会话。
按 Ctrl+S 可改为按目录分组。您的选择会在多次运行之间保留。
在一个组内:
- 按
Ctrl+T将会话固定到顶部,并在空闲时保持其进程运行 - 按
Shift+↑或Shift+↓重新排序会话 - 按
Ctrl+R重命名会话 - 在组标题上按
Enter将其折叠,但过滤器处于活动状态时除外,此时所有组都保持展开
Ctrl+X 停止它,并在两秒内再按一次 Ctrl+X 删除它。在组标题上按 Ctrl+X 会在确认后删除该组中的所有会话。
即使停止尝试失败(例如因为后台服务没有响应),第二次按下也会删除会话:确认状态会再保持两秒,删除操作会自行结束会话的进程。按 Esc 可关闭确认而不删除。
除了删除会话会移除什么中所述的保留情况外,删除会将会话从列表中移除,而 Claude 为其创建的 worktree 会被移除、保留或留在原处,具体取决于您的删除方式以及 worktree 中的内容。对话会话记录始终保留在您的本地机器上,可通过 claude --resume 访问。
在 Claude Code v2.1.212 或更高版本上,要恢复会话,请在分派输入框中输入 /resume。此时会打开一个选择器,按从新到旧的顺序列出您打开 agent view 所在仓库的过往会话,包括您从列表中删除的会话;已有行的会话不会列出。↑/↓ 移动选择,Enter 将选中的会话作为后台会话恢复,使其以行的形式重新加入列表,Esc 关闭选择器。
选择器仅在输入不带参数的 /resume 时打开。指定目标、限定范围或受限制的恢复无法通过选择器完成,因此在以下情况下,agent view 会改为显示 attach to a session to run it 提示:
/resume指定了 id 或搜索词- 视图通过
--cwd限定了范围 - 视图以
--safe-mode启动 - 视图以
--permission-mode或--settings等标志打开
… N more。Completed 组会填满活跃组之后剩余的垂直空间;在较矮的终端上,标题会压缩为单行摘要,以便正在工作或需要输入的会话保持可见。
过滤会话
在分派输入框开头输入以下过滤器之一,即可在输入时缩小列表范围:
要组合过滤器,请以
a:、s:、n: 或 o: 开头,再添加更多过滤器,以空格分隔。列表会显示同时匹配所有过滤器的会话。例如,s:blocked a:reviewer 会列出正在等待您的 reviewer 会话。
过滤器处于活动状态时,您折叠的组会展开以显示匹配项,并且会选中一个匹配项,因此按 Enter 即可打开它。清空输入框即可移除过滤器,这些组会再次折叠。
快捷键
在 agent view 中按? 可在上下文中查看快捷键。下表对其进行了汇总。
在
Agents 上下文中有对应操作的快捷键遵循您的 keybindings.json。Ctrl+G 也是如此,它通过 Chat 上下文的 chat:externalEditor 绑定进行配置。
分派新的 Agent
您可以从 Agent 视图分派新的后台会话,将现有的交互式会话发送或复制到后台,或直接从 shell 启动一个。从 Agent 视图分派 Agent
在 Agent 视图底部的输入框中输入提示词,然后按Enter 启动新的后台会话。会话会根据提示词自动命名;稍后可以使用 Ctrl+R 重命名。
自动名称是由 Haiku 级模型 生成的简短标签。会话稍后获得的名称也会显示在其行上,包括当您在该会话中 接受计划 时会话获得的 生成的标题。
将图像粘贴到提示词中,即可随任务附上屏幕截图或图表。
粘贴的文本超过 800 个字符或超过三行时会折叠为 [Pasted text #N] 占位符,以便输入保持在一行;完整文本在您分派时发送。要在分派前查看或编辑折叠的文本,请再次粘贴相同的文本,占位符会展开回输入框。
通过为提示词添加前缀或在其中提及特定内容来控制会话如何启动:
有一小组命令在 Agent 视图本身中运行,而不是分派:
/exit和/quit关闭 Agent 视图/logout将您注销/model设置 分派模型/login打开登录对话框,以便您无需附加到会话即可重新登录- 不带参数的
/resume或其别名/continue会打开该仓库过去会话的选择器,以将其中一个作为后台会话 恢复。需要 Claude Code v2.1.212 或更高版本
/init)会作为第一条提示词发送到新的后台会话。其他内置命令则显示 attach to a session to run it 提示。您输入的所有内容都会保留在该提示旁边的输入框中,以便您进行编辑。
将重复任务打包为 skill,即可从 Agent 视图反复启动相同的工作流,而无需重新输入提示词。
当同一个 @name 同时匹配子代理和同级仓库时,子代理优先。不带 @ 的第一个单词匹配同样适用,因此恰好以您某个子代理名称开头的提示词会分派该子代理,而不是将该单词视为纯文本。想要明确指定时请使用 @ 形式,或以其他单词开头来避免匹配。
分派到特定目录
新会话在您打开 Agent 视图的目录中运行。要指定其他目录,请使用以下任一方式:-
在该目录中打开
claude agents。 -
在父目录中打开
claude agents,并在提示词中使用@<repo>提及子仓库。输入@会列出这些目标:- 启动目录下一级的 Git 仓库
- 您启动时所在仓库已注册的、位于其目录树内的 git worktree,例如 Claude 在
.claude/worktrees/下创建的 worktree,并标注其检出的分支。在仓库外添加的 worktree(例如使用git worktree add ../feature添加的)不会列出 - 列表中已有会话的任何目录
-
从 shell 中
cd进入该目录并运行claude --bg "<prompt>"。
将会话发送或复制到后台
有两个命令可将工作从您所在的会话移到后台:/background 将当前对话发送到后台并释放您的终端,/fork 则发送一个副本,同时您继续在原处工作。
将会话发送到后台
运行/background 或其别名 /bg 将当前对话移到后台会话。传递一个提示词,例如 /bg run the test suite and fix any failures,可以先再给出一条指令。如果您运行 /bg 时 Claude 正在回复,回复会在后台会话中继续。
退出仍有后台工作运行的会话(例如子代理、后台 shell 命令、工作流或 monitor)时,会显示 Background work is running 对话框,而不是立即退出。选择 Move to background and exit 可以像 /background 一样将会话移到后台并返回到您的 shell。当 Agent 视图 已关闭 时不显示该选项。
如果列表上的后台会话已使用该对话的名称,Claude Code 会为新行的名称编号,例如 my-session (2),并保持现有行的名称不变。要重命名新行,请在 Agent 视图中选择它并按 Ctrl+R。
使用 /fork 复制会话
运行/fork 将当前对话复制到新的后台会话,同时原始会话继续运行。副本包含截至该时刻对话中的所有内容;副本运行的位置请参阅下面的列表。它还会继承模型、权限模式、effort 级别,以及您在会话期间添加的任何目录或”不再询问”权限授予。副本在 Agent 视图中显示为独立的一行。
fork 之后,两个对话彼此独立:副本所做的任何事情都不会自行进入原始对话,不过在启用了 跨会话消息 的会话中,任一会话的 Claude 都可以显式地向另一个发送消息。
复制会话需要 Claude Code v2.1.212 或更高版本;在 v2.1.161 到 v2.1.211 上,/fork 启动的是 fork 出的子代理,该功能现在为 /subtask。当 Agent 视图已关闭 时,/fork 保持 fork 子代理的行为,且 /subtask 不可用。
传递一个提示词,例如 /fork open a draft pull request with the work so far,副本会立即开始处理。不带提示词时,副本会等待第一条指令:在 claude agents 中选择其行并按 Space 发送一条,或运行 claude attach <id>。等待期间,所选行会显示 space to send it a prompt。
/fork 的确认信息只有一行,显示副本的状态(例如 session running)、其在 Agent 视图中的行名称,以及用于 claude attach 的会话 ID。单击名称即可切换到副本:此会话会移到后台(与按 ← 相同),Agent 视图随即打开副本的会话。
除非副本 就地编辑,Claude Code 会指示它在进行代码更改前创建自己的 worktree。在 git 仓库外,只有从 hook 创建的 worktree 移出的副本才会获得该指令;没有 WorktreeCreate hook 时,副本就地编辑。无论隔离设置如何,从您的 worktree 移出的副本还会被告知绝不要编辑该 worktree、在其中运行命令或进入该 worktree。
副本启动的位置取决于当前会话运行的位置:
- 与任何分派的会话一样,副本会 在编辑文件前移入自己的 worktree。这种情况下,确认信息不会提及副本运行的位置。
- 当您的会话在启动后移入其链接的 worktree 时,副本会回到会话移动前的位置启动,并且除非它 就地编辑,否则会在那里自己的 worktree 中进行代码更改。当您的 worktree 检出在某个分支上时,该指令还会告诉任务建立在您工作之上的副本将其新分支基于您的分支,因为您的分支仍检出在您的 worktree 中。确认信息以
runs in the origin tree结尾。 - 当您在拥有主工作树的仓库的链接 worktree 内启动会话时,副本会在该主工作树中启动,同样遵循使用自己 worktree 的规则,但没有分支指令。此时确认信息同样以
runs in the origin tree结尾。 - 在裸仓库布局的 worktree 内启动的会话没有可返回的主工作树,因此副本留在原处,确认信息以
edits this checkout结尾。当在不位于链接 worktree 内的会话中 关闭了 worktree 隔离时,也会出现相同的说明,因为此时副本会编辑您打开的文件。
--tools 允许列表)启动的会话无法 fork;Claude Code 会说明这一点,而不是创建不完整的副本。从 Agent 视图分派的会话可以正常 fork:副本会使用与来源会话相同的 Agent 定义 和附加指令启动。
后台处理时的继承内容
后台处理会启动一个从已保存对话恢复的新进程,进行中的后台工作会移到该进程:正在运行的后台 shell 命令、已转入后台的子代理、动态工作流、您使用/loop 创建的定时任务,以及 Claude 对 Artifact 评论的自动回复 都会继承过去并在那里继续运行。子代理会与其启动的所有内容一起移动,因此只有当所有这些工作也都能移动时它才会被继承。要停止进行中的后台工作而不是继承它,请设置 CLAUDE_DISABLE_ADOPT=1 环境变量;Claude Code 随后会在后台处理前要求您确认。
当 动态工作流 仍有子代理在运行时,Claude Code 会在后台处理前通过 Background this session? 对话框询问,其中会说明有多少子代理将重新启动。选择 Stay 可让它们先完成。如果您确认,Claude Code 会在后台会话中重放该运行:仍在运行的子代理会从头开始,因此它们目前已使用的 token 会再次消耗。请参阅 暂停后恢复 了解哪些已完成的子代理会返回其保存的结果、哪些会再次运行。
Claude Code 会停止无法继承的后台工作,例如正在运行的 monitor,并一并停止拥有 monitor 的后台子代理。当有任何此类工作正在运行时,Claude Code 会显示 Background this session? 对话框,以便您在它停止工作前确认。
进入后台后,会话可以启动新的子代理、monitor 和后台命令,这些在之后的分离和重新附加过程中会持续运行。
原始启动时的配置标志会传递到后台会话,因此其 MCP 服务器、设置和备用模型保持有效:
--mcp-config和--strict-mcp-config--settings--setting-sources--add-dir--plugin-dir--fallback-model--allow-dangerously-skip-permissions
/add-dir 添加的目录也会继承。继承 --allow-dangerously-skip-permissions 会使 bypassPermissions 在后台会话中保持可用,但不会授予任何新权限:该模式仍需要有您 接受绕过免责声明 的记录。
从您的 shell 分派 Agent
传递--bg 或其长形式 --background 可启动直接进入后台的会话:
-p 的值。Claude Code 会在创建任何会话前拒绝 --bg 与 -p 或 --print 的组合,因为 --print 永远不会启动 claude agents 所附加的交互式会话。
如果您在未 信任 的目录中从终端运行 claude --bg,会先出现工作区信任对话框,会话在您接受后启动。如果您拒绝,Claude Code 会退出而不启动会话。在无法显示对话框的环境中(例如脚本中),命令会以 Workspace not trusted 错误退出。
要将您定义的特定 子代理(例如 code-reviewer)作为会话的主 Agent 运行,请将 --bg 与 --agent 组合使用:
no agent named 警告,并仍报告会话已转入后台,但会话会立即以 --agent '<name>' not found 错误退出。
当后台会话之后恢复或重新启动时,Claude Code 会恢复该 Agent 及其工具限制;关于其系统提示词,请参阅 恢复的对话中的系统提示词标志。它会先在会话自己的目录中搜索该 Agent(前提是您已 信任该工作区),因此从其他目录恢复会话时,项目范围的 Agent 仍会加载。如果该 Agent 已不存在,会话会使用默认工具继续运行,其会话记录打开时会带有一条 指明该 Agent 的警告。
要在后台继续现有对话,请使用 --resume 传递其完整会话 ID:
note: 行,说明为何无法就地继续。当会话就地继续时,claude agents 只为其显示一行。
当您将 --bg 与 --continue、不带参数的 --resume 或带名称或文件路径的 --resume 组合使用时,Claude Code 总是会启动这样的副本。添加 --fork-session 可有意启动副本,且不显示该说明。
传递 --name 可在 Agent 视图中设置会话的显示名称,而不使用自动生成的名称:
--bg 可能会先在此输出上方打印 Starting background service…。当您传递 --name 时,名称会显示在短 ID 之后:
运行 shell 命令
要将 shell 命令作为后台作业而不是 Claude 会话运行,请传递--exec。以下示例将 pytest -x 作为后台作业运行:
! 作为分派输入的第一个字符即可分派同类作业:! 显示为前缀,其后的所有内容为命令,按 Enter 启动作业。
该命令作为基于 PTY 的作业运行,并在 Agent 视图中显示为一行,以最近一行输出作为其状态。shell 作业以命令代替 Claude 运行,因此不会调用任何模型,输出也不会发送到任何会话。
要查看输出,请附加到该行、按 Space 在不附加的情况下预览,或从您的 shell 运行 claude logs <id>。捕获的输出保存在内存中,不会写入磁盘。该行及其输出会在命令退出约五分钟后自动清理,因此如果您需要结果,请在此之前读取。
文件编辑如何隔离
当您从 Agent 视图分派后台会话或使用claude --bg 启动一个后台会话时,会话在您的工作目录中启动。在编辑文件前,Claude 会将会话移入 .claude/worktrees/ 下的隔离 git worktree 中,因此并行会话可以读取同一个检出,但各自写入自己的 worktree。一旦会话进入其 worktree,Claude Code 就会为该会话及其生成的任何子代理 强制执行 worktree 隔离。
Claude 在以下情况下跳过 worktree:
- 您使用
←或/background将已打开的会话移到后台。该会话会继续在其原本工作的位置编辑文件 - 会话已位于链接的 git worktree 内,无论该 worktree 是 Claude 在
.claude/worktrees/下创建的,还是您使用git worktree add在其他位置创建的 - Claude 正在编辑的文件位于链接的 git worktree 内,例如会话或其子代理使用
git worktree add创建的 worktree - 工作目录不是 git 仓库,且没有配置
WorktreeCreatehook - 写入位置在工作目录之外
worktree.bgIsolation 设置为 "none"。后台会话随后会直接编辑您的工作副本,而不会先移入 worktree。将该设置添加到项目的 .claude/settings.json:
WorktreeCreate hook,Claude 会以与 git 相同的方式隔离编辑。
当 hook 在非 git 仓库的目录中失败时,Claude 会跳过该目录的隔离,并就地编辑工作目录。在 git 仓库内,Claude 在编辑前会将其移入 worktree 的会话,在该移动完成之前无法对共享检出使用 Edit、Write 或 NotebookEdit 工具。
要查找会话的 worktree 路径,请附加到会话并查看其工作目录。
后台会话生成的 子代理 会继承会话的工作目录。一旦会话进入 worktree,子代理的文件编辑就会落在该 worktree 中,而不是您的工作副本中。要改为给子代理分配单独的 worktree,请在其 frontmatter 中设置 isolation: worktree,或在生成它时传递 isolation: "worktree"。
当后台会话在 Claude 进入的 worktree 中进行了代码更改时,Claude Code 会指示 Claude 在完成前保存这些工作,这样即使您删除会话及其 worktree,工作也不会丢失:
- 提交并推送:Claude 无需询问即可提交,并在仓库有远程时推送分支。
- 草稿 Pull Request:Claude 会在任务需要时打开一个,该行上会显示
#N标签。 - 绝不:推送到
main或master、强制推送以及合并。 - 您的 git 指令优先:如果任务、
CLAUDE.md或 记忆 表明由您自己处理提交或推送,Claude 会将 git 操作留给您。
"none"、worktree 移动失败,或会话在已存在的 worktree 内启动的情况。
无论任务是什么,Claude 都会以一份报告结束作业,说明它做了什么以及工作成果在哪里:路径、分支、Pull Request 或答案本身。
删除会话会移除什么
在 Agent 视图 中按两次Ctrl+X,或使用 claude rm 删除会话。除下述保留的情况外,会话会从列表中移除。其会话记录仍保留在您的机器上,可通过 claude --resume 访问,且该移除在主管进程重新启动后依然有效。
Claude 为会话创建的 worktree 会如何处理:
- Agent 视图会移除它,包括未提交的更改,因此请先提交您想保留的内容。
-
当它有未提交的更改时,
claude rm会保留它以及会话行。 -
Agent 视图和
claude rm都不会移除另一个正在运行的会话正在使用或已锁定的 worktree,再次删除也不会改变这一点。Claude Code 会保留 worktree 和会话,并指明保留的目录及原因;在 Agent 视图中,该会话的行会显示not deleted。请关闭另一个会话,然后再次删除。 -
当您删除的会话的 worktree 中有 Claude Code 无法确认已保存到其他位置的提交时,Claude Code 会保留 worktree 和会话,消息会指明 worktree 的分支以及有多少未推送的提交。消息还提供两种后续做法:推送这些提交,或再次删除以丢弃它们。
远程上的提交不会阻止删除。您的
origin远程默认分支的本地副本上的提交也不会阻止删除,前提是该分支检出在您的主检出中(即仓库目录本身,而不是 worktree)。 在该拒绝之后,您可以选择:- 要保留这些提交,请推送它们,或将它们合并到该默认分支,然后再次删除会话。
- 要丢弃它们,请不推送而直接再次删除会话:在 Agent 视图中该会话的行上按两次
Ctrl+X,或运行拒绝消息中打印的claude rm <id> --discard-unpushed命令。这会移除会话和 worktree 及其分支,丢弃未推送的提交和任何未提交的更改。
-
git 已不再识别的 worktree(例如在执行
git worktree prune之后)不会阻止删除。Claude Code 会删除会话,并将目录留在磁盘上。 -
当 git 或您的
WorktreeRemovehook 未能移除 worktree 时,Claude Code 会保留 worktree 和会话,消息会指明原因。对于 hook,消息会说明它是如何结束的(例如exited 1),并引用其 stderr 的开头部分。消息还会告诉您接下来执行以下哪项操作:-
再次删除会话以强制移除目录:在 Agent 视图中该会话的行上按两次
Ctrl+X,或运行claude rm拒绝消息中打印的claude rm <id> --force-remove-worktree <worktree-id>命令。worktree 的分支会保留在仓库中。 只有当 Claude Code 能确认以下所有条件时才会提供此选项:- 该目录是仓库在
.claude/worktrees/下的链接 worktree 之一 - worktree 及其已检出的子模块都没有对已跟踪文件的未提交更改
- 没有其他会话的记录指向它
- 该目录是仓库在
- 解决阻碍因素,例如提交或储藏未提交的更改、将单独的 git 仓库移出 worktree、关闭正在使用该目录的程序或修复 hook,然后再次删除会话。
- 自行移除该目录,然后再次删除会话。
-
再次删除会话以强制移除目录:在 Agent 视图中该会话的行上按两次
WorktreeCreate hook 在其他位置创建了该目录),该会话仍然可以删除。当目录中仍有文件时:
- Agent 视图在丢弃这些文件前会要求同样按两次
Ctrl+X。对于由 hook 创建的目录,它会改为运行您的WorktreeRemovehook;如果没有该 hook,它会拒绝删除并保留会话。 claude rm会保留会话和 worktree,并指明原因。
设置模型
Agent 视图标题中显示的模型名称是分派默认值。您从输入框启动的新会话会使用此模型,它来自您用户设置中的model 设置。您可以在 /model 选择器 中选择模型来设置它,也可以直接编辑该设置。
要为整个 Agent 视图会话覆盖分派默认值,请在打开 Agent 视图时传递 --model。请参阅 权限模式、模型和 effort。
要在 Agent 视图内更改分派默认值,请在分派输入框中输入 /model 后跟模型名称,然后按 Enter。标题会更新以显示该模型并带有 (session) 标记,之后您分派的会话都会使用它。输入 /model default 可清除覆盖并恢复分派默认值。此覆盖在当前 claude agents 运行的剩余时间内有效,不会写入您的设置文件。以下示例在 Opus 上分派一个会话,在 Sonnet 上分派下一个:
- 从 shell 中使用
claude --bg时传递--model。 - 附加到正在运行的会话并运行
/model进行切换:在选择器中选择,或输入/model <name>,都会保存为新会话的默认值,除非您在选择器中按s进行仅限当前会话的切换。仅限当前会话的切换在会话重新生成后依然有效。 - 分派一个在 frontmatter 中设置了
model字段的 子代理。
权限模式、模型和 effort
后台会话会根据您分派它的位置和方式获取其设置、提供商、权限模式、模型和 effort。下面的小节介绍每个来源,以及主管进程重新启动会话时哪些内容会保留。设置和提供商
后台会话从其运行的目录读取 设置,就像您在该目录中使用 它继承的配置标志 启动claude 一样。这包括项目设置中的 env 值,因此在那里设置的 ANTHROPIC_MODEL 或提供商变量适用于该目录中的每个后台会话。
后台会话还会使用您分派它时所在 shell 的 PATH 运行,因此它运行的命令能找到与您终端相同的工具。它也会保留该 shell 的云提供商选择(例如 CLAUDE_CODE_USE_BEDROCK 或 CLAUDE_CODE_USE_VERTEX),以及其 ANTHROPIC_DEFAULT_*_MODEL 别名和您在那里导出的任何 CLAUDE_CODE_EXTRA_BODY 覆盖。
LLM 网关
如果您通过 LLM 网关 路由 Claude Code,请将网关变量放在设置文件的env 块中,而不是在 shell 中导出,这样后台会话会随其余设置一起读取它们。在设置文件中设置 展示了该块以及凭据应使用哪个设置文件。
如果您改为仅在 shell 中导出网关 ANTHROPIC_BASE_URL,那么它连同您一起导出的 ANTHROPIC_CUSTOM_HEADERS 和凭据,只有在 主管进程 本身是从导出了相同网关的 shell 启动时才会传递到后台会话,并且仅限以下情况:
- 您使用
←或/background将自己的会话转入后台 - 您将会话分派到您当前所在的目录
- 您通过附加或回复来唤醒当前所在目录中已停止的会话
ANTHROPIC_BASE_URL 的条件下,将该端点与标志组合连同 ANTHROPIC_CUSTOM_HEADERS 一起转发给会话。例如,导出 CLAUDE_CODE_USE_VERTEX=1 以及 ANTHROPIC_VERTEX_BASE_URL 和 CLAUDE_CODE_SKIP_VERTEX_AUTH=1,Claude Code 就会转发该端点和标志。
Claude Code 仅将转发的网关应用于该会话正在运行的进程,绝不会将其写入磁盘。
权限模式
权限模式 取决于您启动会话的方式:- 使用
/bg或←转入后台:Claude Code 保留会话原有的权限模式,因此您已切换到acceptEdits或auto的会话在分离后仍保持该模式 - 从使用
←打开的 Agent 视图分派:目标自身的配置优先;当没有其他设置指定权限模式时,采用您来源会话的权限模式 - 从在 shell 中启动的
claude agents分派,或使用claude --bg分派:新会话的启动方式与在该目录中启动新的claude会话相同,除非您是从使用 分派默认值 打开的 Agent 视图分派的。会话以哪种权限模式启动 列出了优先顺序
← 打开的 Agent 视图分派的会话,Claude Code 会从以下第一个适用的来源获取权限模式:
- 目标目录的
permissions.defaultMode。适用两条来源规则:auto和bypassPermissions仅在来自托管设置、--settings文件或~/.claude/settings.json时生效。- 如果项目的
.claude/settings.json或.claude/settings.local.json中的defaultMode选择了比您来源会话更宽松的模式,Claude Code 会拒绝它。
- 您来源会话的权限模式
acceptEdits 的目录,新会话会以计划模式启动。如果您将该 defaultMode 移到 ~/.claude/settings.json,则无论您来源会话的权限模式如何,它都会生效。
宽松程度从低到高依次为:计划模式,然后是手动和 dontAsk,然后是 acceptEdits 和 auto(二者均视为比对方更宽松),最后是 bypassPermissions。
分派默认值
要为从 Agent 视图分派的每个会话设置默认值,请在打开 Agent 视图时传递--permission-mode、--model、--effort 或 --agent 中的任意一个:
--effort 接受与 顶层 --effort 标志 相同的值,包括 ultracode。
--agent 设置分派提示词未指定子代理(无论是通过 @name 还是作为第一个单词)时使用的 子代理。如果设置了 agent 设置,则默认使用该设置,否则使用内置的通用 claude Agent。在分派输入中指定子代理会覆盖两者。
claude agents 还接受 --dangerously-skip-permissions 作为 --permission-mode bypassPermissions 的简写,以及 --allow-dangerously-skip-permissions,使 bypassPermissions 在每个分派会话的 Shift+Tab 循环中可用,而不以该模式启动。两者都与 顶层 CLI 标志 一致。
传递 --restricted 可使您从该视图分派的每个会话都以 受限模式 启动,如同每个会话都使用顶层 --restricted 标志启动一样。需要 Claude Code v2.1.248 或更高版本。
当前生效的默认值会显示在分派输入框下方的页脚中。
以 bypassPermissions 模式启动的后台会话需要有您 接受绕过免责声明 的记录,因为该模式允许一个您未在观察的会话无需批准即可执行操作。如果您之前未接受过,将 --dangerously-skip-permissions 或 --permission-mode bypassPermissions 传递给 claude agents 会显示相同的免责声明,接受后会将 bypassPermissions 应用于您从该视图启动的会话。传递 --allow-dangerously-skip-permissions 同样会显示该免责声明,接受后会使 bypassPermissions 在这些会话的 Shift+Tab 循环中可用,但不会以该模式启动它们。
重新启动后保留的内容
您为后台会话选择的权限模式、模型和 effort,以及 它继承的配置标志,在主管进程之后 停止并重新启动 其进程时都会保留。您在会话中途使用/model 或 /effort 更改的模型或 effort 也会保留。
如果会话的 effort 来自您的设置,而不是 --effort 或 /effort,Claude Code 每次为该会话启动进程时都会重新读取您的设置。在您编辑 settings.json 中保存的 effort 后,更改会作用于您使用 ← 或 /bg 转入后台的会话及其之后的重新启动。保存的 effort 是 effortLevel 键或 modelSettings 条目。
Claude Code 还会在重新启动后保留您使用 /rename 或 Ctrl+R 设置的名称,因此您仍可以运行 claude --resume <name> 来访问该会话。
您在附加状态下使用 Ctrl+S 暂存的提示词也会随会话保留。在会话进程停止或重新启动后重新打开会话,按 Ctrl+S 即可恢复暂存的文本。暂存内容中的粘贴内容在重新启动后不会保留。
设置、插件和 MCP 服务器
Agent 视图接受与claude 相同的配置标志,用于加载设置、插件、MCP 服务器和附加目录。Agent 视图会将 --settings、--setting-sources 和 --plugin-dir 应用于自身,并将每个配置标志传递给您从中分派的会话,因此以这种方式加载的插件或 MCP 服务器在这些会话中可用。
每个值需重复一次
--add-dir、--plugin-dir 或 --mcp-config。claude agents 不支持空格分隔的形式,例如 --add-dir a b c。
您可以将 --settings、--setting-sources 和 --plugin-dir 放在 agents 之前或之后。请将 --add-dir 和 --mcp-config 放在 agents 之后:如果将其中任一个放在 agents 之前,claude agents --json 会因 unknown option 错误而失败。
以下示例使用设置覆盖和一个额外目录打开 Agent 视图:
--settings 接受文件路径或内联 JSON 字符串。文件路径必须指向已存在的文件;如果文件不存在,Claude Code 会以 Settings file not found 错误退出。
从 shell 管理会话
每个后台会话有一个短 ID,您可以从 shell 使用。当您使用claude --bg 启动会话时会打印该 ID,每个会话的 ID 是其在 ~/.claude/jobs/ 下的目录名。这些命令对于脚本编写或当您不想打开 agent view 时很有用。
claude attach 和 claude logs 可以使用会话名称的一部分代替 ID,例如 claude logs "auth refactor"。claude attach 仅在会话进程运行时才能按名称打开会话,因此要重新启动已停止的会话,请改为传递 ID。传递名称需要 Claude Code v2.1.290 或更高版本。
将会话列为 JSON
claude agents --json 将活跃会话打印为 JSON 数组并退出:每个活跃会话,加上仍在工作或被阻止的后台会话,即使其进程已退出。添加 --all 以也包括已完成的后台会话,添加 --cwd <path> 以将列表限制为在该目录下启动的会话。
每个条目描述一个会话:
从脚本读取会话状态
claude agents --json 是从 Claude Code 外部读取会话状态的受支持方式,例如从状态栏、调度程序或监督后台工作的另一个 Claude 会话。轮询 claude agents --json --all,它会继续列出进程已退出的会话,并读取每个条目的 state、status 和 waitingFor。
完成其轮次并等待您的下一条指令的会话读取
done,而不是 blocked。blocked 总是意味着会话在继续之前需要您提供的东西。
~/.claude/jobs/<id>/ 下的文件不是稳定的接口。会话或其他程序写入 state、detail、tempo 或 needs 的值会在下一次更新时被替换。
如果您想让会话用自己的话报告进度,让它写一个自己的文件,例如在 $CLAUDE_JOB_DIR/tmp 下,而不是编辑 state.json。
后台会话如何被托管
Claude Code 将 agent view 中列出的每个会话都视为后台会话,无论您当前是否连接到它。相比之下,通过直接运行claude 启动的会话与该终端绑定,并在终端关闭时结束,除非您将其发送到后台。
要检查您所在的会话类型,请运行 /status。在后台会话中,Session kind 行显示 background job · attached 或 background job · unattended,具体取决于是否连接了终端,在任何其他会话中显示 interactive。
监督进程
监督进程是一个后台服务,运行您的后台会话,使其在您关闭 agent view 或终端后继续工作。Claude Code 在您第一次后台化会话或打开 agent view 时启动它,您不需要自己管理它。 每个会话都是监督进程下的独立 Claude Code 进程,该进程发生的情况取决于会话的状态:- 工作中、暂停在权限提示或其他对话框上,或已连接:进程继续运行。运行中的子代理、工作流或监视器计为工作中,待执行的会话范围定时任务(例如
/loop唤醒)也同样计为工作中。 - 已完成或等待您的下一条消息,且未连接约一小时:监督进程停止该进程以释放资源。以向您提问结束其轮次的会话计为等待您的下一条消息。对话保存在磁盘上,下次您连接或回复时,会话从中断处恢复。使用
Ctrl+T固定会话以保持其进程运行。 - 在监督进程运行时意外退出:监督进程重新启动该进程。如果通过
kill等方式结束您自己使用←或/background后台化的会话,该会话会被标记为已停止,而不是重新启动。对于以关闭结束的会话,请参阅会话在关闭后显示为失败或已停止。 - 自动更新后:监督进程重新启动自身到新版本,并在后台移动空闲会话。工作中、等待您或已连接的会话不会被中断。
- 监督进程本身停止,例如因为其进程被 Claude Code 外部结束:在 macOS 和 Linux 上,每个会话的进程会等待约一分钟,等待新的监督进程重新连接到它,如果没有重新连接则停止。在这一分钟内于 shell 中运行
claude agents,即可启动新的监督进程并保持会话运行。如果这一分钟先过去,会话会停止,但其保存的对话仍保留在磁盘上:连接或回复某个会话,它就会从保存的对话重新启动,如会话在关闭后显示为失败或已停止中所述。
CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF 设置为 1。
监督进程及其会话使用与您的交互式会话相同的存储凭据进行身份验证。关于哪些设置和 shell 变量到达会话(包括 PATH),请参阅设置和提供商。关于网关端点,请参阅 LLM 网关。
状态存储位置
会话状态存储在您的 Claude Code 配置目录下。如果您设置了CLAUDE_CONFIG_DIR,监督进程使用该目录而不是 ~/.claude,并作为单独的实例运行,具有其自己的会话。
每个后台会话都设置了
CLAUDE_JOB_DIR 环境变量指向其 ~/.claude/jobs/<id> 目录,因此会话运行的 shell 命令可以将临时文件写入 $CLAUDE_JOB_DIR/tmp 而不会与并行会话冲突。
要在不直接读取文件的情况下检查此状态,请运行 claude daemon status。它报告监督进程是否可达、其进程 ID 和版本、套接字目录以及有多少后台会话处于活跃状态。
该命令还会在运行的监督进程版本与您调用的 claude 版本不同时发出警告,这发生在监督进程尚未重新启动到新版本的更新之后。警告显示两个版本,并告诉您运行 claude daemon stop --any 以获取新版本。
会话在该版本不匹配时完好无损:更新会话 state.json 的较旧 Claude Code 版本会保留它不识别的字段并保持会话列出。roster.json 中的会话列表遵循相同的规则,因此由较新版本启动的会话保持可达并在监督进程重新启动后继续接受输入。
关闭 agent view
要完全关闭后台 Agent 和 agent view,请将disableAgentView 设置设为 true 或设置 CLAUDE_CODE_DISABLE_AGENT_VIEW 环境变量。管理员可以通过托管设置强制执行此项。
故障排除
claude agents 列出子代理而不是打开 Agent 视图
如果 claude agents 打印一个计数,然后是您配置的子代理,然后退出,说明 Agent 视图在您的环境中不可用。运行 claude update 来安装最新版本。
如果更新后 Agent 视图仍然没有打开,请检查它是否已被设置或环境变量关闭。
Agent 视图打开时没有会话
在您分派第一个会话之前,Agent 视图显示空的部分标题,每个标题下有一个描述,以及在输入框上方有一行说明,代替会话列表。在底部的输入框中输入提示词,然后按Enter 来分派您的第一个会话。
后台处理显示 Background this session? 对话框
如果您按 ← 来后台处理当前会话,而 Claude Code 显示 Background this session? 对话框,说明该会话有正在进行的工作,后台处理会停止、重新启动或让其无人值守地运行,Claude Code 在执行这些操作之前会询问:
- 无法移动的工作:该会话有无法移动到后台会话的工作,例如正在运行的监视器。对话框命名 Claude Code 会停止的工作,并分别计算转移的任务数。
- 具有运行子代理的工作流:动态工作流仍然有子代理在运行。工作流本身会转移,但其运行的子代理从头开始重新启动,对话框会说明有多少个。
- 自动 Artifact 回复:Claude 自动回复 Artifact 上的评论。这些回复在后台会话中继续,对话框会说明这一点。
/tasks 来查看正在运行的所有内容,然后确认后台处理或选择 Stay 来让工作先完成。请参阅后台处理时转移的内容,了解哪些类型的工作会转移,哪些 Claude Code 会停止。
提示词被拒绝为过短
分派输入框期望一个任务描述,而不是对话开场白。短于四个字符的提示词会被拒绝,并显示Too short 提示,以防止误触发启动会话。描述您希望会话执行的操作,例如 investigate the flaky checkout test。
会话在关闭后显示为失败或已停止
关闭或重新启动您的机器会停止运行的后台会话。等待您输入的会话在您返回时仍会显示在Needs input 下。对于任何其他运行的会话,Agent 视图显示的内容取决于它上次取得进展的时间:
- 在 48 小时内,会话显示为失败。附加或回复它,它会从其保存的对话重新启动。要继续被中断的工作,请向它发送一条回复,要求它继续。
- 超过 48 小时,例如机器关闭数天后,会话显示为已停止,并显示
ended while the background service was off。在该行上按Enter,页脚会显示Press enter again to resume this session (it ended while the background service was off), or ctrl+x to delete it.在同一行上再次按Enter来恢复其保存的对话。回复或claude attach <id>会在没有该页脚提示的情况下恢复它。
claude rm <id> 删除该行,除了上文保留的情况中描述的情况,claude respawn <id> 再次运行其原始提示词。请参阅此会话的保存对话不再在磁盘上。
仅睡眠不会停止会话。会话在睡眠中被保留,主管在唤醒时重新连接到它们。
打开会话说对话已经打开
两个进程不能写入同一个会话记录。当已停止会话的保存对话已在另一个活跃的 Claude Code 进程中打开时,Claude Code 拒绝启动该会话自己的进程。您看到的内容取决于什么持有对话:- 您恢复对话的终端,例如使用
claude --resume或/resume:该行显示Open in a terminal,并提示在那里继续,打开该行显示Can't open — this session is running in another terminal。在该终端中继续,或退出它并再次打开该行。 - 另一个非交互式 Claude Code 进程,例如同一对话的后台会话进程,尚未退出:打开该行显示
This conversation is already open in another running Claude session。使用该进程,或等待它退出并再次打开该行。
! 或 / 开头的回复除外),并在会话下次启动时发送它。
打开会话说它没有保存的会话记录
当您打开一个从另一个对话后台处理的会话,且该会话在运行自己的轮次之前就已停止时,Claude Code 会恢复那个对话。如果 Claude Code 找不到该对话,则会拒绝打开该会话:claude attach打印This session has no saved transcript。- Agent 视图在列表下方显示
Press enter again to restart this session fresh。
Enter 来使用空对话重新启动会话,或从 shell 运行 claude respawn <id>。
有关详细信息,请参阅错误参考。
终端主机已死亡或会话停止响应
主管在其自己的主机进程中运行每个后台会话的终端。当该进程死亡或停止响应时,Claude Code 显示原因并提供重新启动;在两种情况下,对话都被保存,重新启动会恢复它。错误参考引用完整消息。 Claude Code 永远不会重新启动运行shell 命令的行,无论是从Enter 还是从 claude attach,因为那样会再次运行该命令;该行的消息和 claude attach 都说该命令不会再次运行。
会话在启动前失败,并显示 possibly low memory 注释
当后台会话的进程在完成启动之前退出,且主机内存不足时,该行的状态命名退出并添加 possibly low memory — free some up and retry。
该注释是一个假设,而不是确认的原因。Claude Code 仅在进程无声退出时添加它,没有写入错误,也没有被信号停止,且主机在那一刻报告内存不足。当进程在退出前确实写入了错误时,该行显示该错误。
释放机器上的内存,然后附加或回复该行,主管为会话启动新进程。当内存保持不足时,主管也会停止空闲会话来自行释放资源,如果停止其他会话没有释放任何内容,也会停止空闲的固定会话。
Agent 视图说后台服务没有响应
如果附加、查看或claude logs 报告后台服务没有响应,主管进程可能已停滞。停止它并让下一个 claude agents 启动新的。要在重新启动期间保持后台会话运行,请传递 --keep-workers:
claude agents 来启动新的主管。如果您在停止后大约一分钟内执行此操作,它会重新连接到仍在运行的会话,这些会话的工作会不间断地继续。如果您花费的时间更长,在 macOS 和 Linux 上,这些会话届时已自行停止,附加或回复其中一个会话会从其保存的对话重新启动它。没有 --keep-workers,该命令也会结束后台会话。--any 标志使该命令停止由 Claude Code 按需启动的主管。
启动但无法接受连接的主管会自行退出并释放其锁,所以下一个 claude agents 会启动新的,无需此手动停止。上述步骤适用于运行的主管停滞的情况。
如果该命令改为退出,说记录的进程无法验证为主管,请检查报告的进程 ID:如果它是您拥有的主管,自己停止它,然后删除 ~/.claude/daemon.lock,以便下一个 claude agents 启动新的。
在 Windows 上,如果主管不响应停止请求,该命令会打印其进程 ID。使用 taskkill /PID <pid> 结束该进程以完成恢复。当您传递 --keep-workers 时,后台会话仍然被保留。
分派失败,显示 Could not resolve authentication method
如果后台分派失败,显示 Could not resolve authentication method,而交互式会话正常进行身份验证,说明接收分派的工作进程没有获取凭据。后台会话从主管获取其凭据,所以此错误意味着主管进程本身没有可用的存储凭据。确认您已运行 /login 或配置了 API 密钥,然后停止主管:
claude agents 或 claude --bg,以启动读取您存储凭据的新主管。如果您使用环境变量(如 ANTHROPIC_API_KEY)而不是 /login 进行身份验证,请从设置了该变量的 shell 运行该下一个命令。
有关原因和修复的完整列表,请参阅错误参考。
后台会话无法在 macOS 上读取 Desktop、Documents 或 Downloads
在 macOS 上,后台会话主机作为其自己的进程运行,并与您的终端分别请求对受保护文件夹的访问。如果后台会话在读取~/Desktop、~/Documents、~/Downloads 或其他受保护位置时报告 Operation not permitted,请在系统设置中的隐私和安全 > 文件和文件夹下授予访问权限,或为该条目启用完全磁盘访问。
使用本机安装程序,该条目显示为 Claude Code,授予在更新中持续。使用其他安装方法(如 Homebrew 或 npm),该条目显示二进制路径,更新后可能需要再次授予。
后台会话无法在 macOS 上访问本地网络主机
在 macOS 15 及更高版本上,系统会阻止进程访问本地网络上的设备,直到您授予本地网络权限,因此针对 LAN 地址的命令可能在后台会话中失败,显示connect: no route to host,即使它在前台终端中有效。后台会话中连接到本地网络地址的第一个命令会触发 Claude Code 的 macOS 本地网络权限提示。授予一次,这些命令就能像在前台终端中一样访问 LAN 主机。
附加后会话响应缓慢
当已完成或等待您下一条消息的会话保持未附加约一小时时,主管停止其进程以释放资源。附加从中断的地方启动新进程,并在进程重新启动时立即切换到会话。正在工作、暂停在权限提示或其他对话框上的会话,或固定的会话不会以这种方式停止,所以使用Ctrl+T 固定会话以保持其响应性。
进程启动时,Claude Code 显示会话记录的尾部,格式化为实时会话呈现的方式,带有 markdown、突出显示的代码块和作为暗淡行的工具调用,上方是带有 Session is starting 注释的暗淡提示区域。实时会话在准备好后立即替换它。
.claude/worktrees/ 正在填满
在 Agent 视图中删除会话会删除 Claude 为其创建的 worktree,但某些删除会保留 worktree 或在磁盘上留下其目录,所以剩余目录可能会累积。Git 不再识别的目录不会出现在 git worktree list 中,所以手动删除这些目录。
在项目目录中使用 git worktree list 列出剩余条目,并使用 git worktree remove <path> 删除每一个。请参阅清理 worktrees。
限制
Agent view 处于研究预览阶段,存在以下限制:- 速率限制适用:后台会话消耗你的订阅使用量,与交互式会话相同,因此并行运行十个代理的配额消耗速度大约是运行一个代理的十倍。
- 会话是本地的:后台会话在你的机器上运行。它们在机器睡眠时保留,但在机器关闭时停止。
- Claude 创建的 worktrees 在 agent view 中随会话删除:在删除在其自己的 worktree 中编辑文件的会话之前,请提交更改。某些删除会保留 worktree。
相关资源
有关以并行方式运行 Claude 的其他方法,以及在运行的会话之间传递发现的方法,请参阅:- 并行运行代理:比较 agent view 与 subagents、agent teams 和 worktrees
- 跨会话消息传递:让您的会话相互传递发现
- Agent teams:协调相互发送消息的多个会话
- 在云端使用 Claude Code:在托管的云环境中运行会话而不是本地
- Projects:让 Claude 从一个对话中协调并行云会话,并告诉您哪些需要您
版本历史
Agent view 在研究预览期间发展迅速。如果您使用的是较旧的 Claude Code 版本,本页上的某些行为可能会有所不同;特别是,claude agents 会以 unknown option 错误拒绝它尚不支持的标志。下表列出了每个标志和行为的添加时间。