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

Agent view 是研究预览版,需要 Claude Code v2.1.139 或更高版本。使用
claude --version 检查你的版本。随着功能的发展,界面和快捷键可能会改变。- 快速开始:给 Claude 一个在后台处理的任务,检查它,并在需要时介入
- 使用 agent view 监控会话,包括状态图标、窥视和回复、附加、组织和快捷键
- 调度新代理,从 agent view、从会话内部或从 shell
- 从 shell 管理会话,使用
claude agents、claude attach和相关命令 - 后台会话如何被托管,由监督进程
快速开始
本演练涵盖核心 agent view 循环:调度一个任务,观看其行在 Claude 工作时更新,窥视以检查它并回复,以及附加到完整对话。你调度的会话在关闭 agent view 后继续运行,所以你可以离开并稍后回到它。1
打开 agent view
从你的 shell,运行:Agent view 打开,底部有一个输入框,当会话启动时表格会填充。随时按
Esc 返回你的 shell。你的会话在你离开时继续运行,下次打开 agent view 时会重新出现。2
3
窥视和回复
用箭头键选择一行并按
Space 打开窥视面板。它显示会话的最近输出,或它正在等待的问题,而不是完整的记录。输入回复并按 Enter 发送,无需离开 agent view。4
附加和分离
在一行上按
Enter 或 → 在你想要完整对话时附加。会话接管终端,就像一个完整的交互式 Claude Code 会话。在空提示上按 ← 分离并返回表格。5
将现有会话引入
这一步需要一个运行中的会话。如果你遵循了之前的步骤,你在此终端中没有打开的会话,所以在另一个终端中打开一个常规
claude 会话并先向其发送一条消息。要将你已经打开的会话移入 agent view,在其中运行 /bg,或在空提示上按 ← 以后台会话并在一步中打开 agent view。会话继续运行并显示为一行,与你调度的会话并排。claude agents 作为你的主要入口点而不是 claude:从 agent view 调度每个任务,当你想要完整对话时附加,按 ← 返回表格。
在常规 claude 会话内,提示页脚的 ← 提示计算正在等待你的后台 agent 数量,例如 ← 2 agents,当没有 agent 需要输入时返回 ← for agents。超过 99 的计数显示为 99+。当终端获得焦点时,计数大约每十秒刷新一次,当焦点返回时立即刷新。当计数移动和 agent 完成时,它会短暂改变颜色,除非启用了prefersReducedMotion 设置,并且在屏幕阅读器模式中隐藏。在 Amazon Bedrock、Google Cloud 的 Agent Platform 和 Microsoft Foundry 上,提示保持其纯 ← for agents 形式,没有计数。需要 Claude Code v2.1.205 或更高版本。
使用 agent view 监控会话
运行claude agents 打开 agent view。它接管整个终端并列出按状态分组的每个会话,固定的会话和需要你的会话在顶部。每行显示会话的名称、当前活动和其年龄,从会话创建时开始计算;已完成的会话的年龄冻结在运行花费的时间。
名称用该会话中由 /color 设置的颜色着色。从 v2.1.199 开始,当你用 ← 或 /background 后台会话时,颜色会保留。
默认情况下,列表显示你启动的每个后台会话,跨越所有项目。在一个存储库中工作的会话和在不同 worktree 中工作的另一个会话都会出现在这里,无论你从哪个目录打开 agent view。要将列表限制到一个项目,请传递 --cwd:
~/projects/my-app/.claude/worktrees/ 下的会话仍然算作属于 ~/projects/my-app。
你在其他终端中打开的交互式会话不会出现,直到你后台它们。Subagents 和 teammates 会话生成的不会列为单独的行。
读取会话状态
每行以一个图标开头,其颜色和动画显示会话的状态:
另外,图标的形状显示底层进程是否正在运行:
行右边缘可能出现的
#N 标签是会话打开的拉取请求,不是状态图标的一部分。
终端标签标题在 agent view 打开时显示等待输入的计数:当会话需要输入时显示 2 awaiting input · claude agents,或当没有会话需要输入时显示 claude agents。
从 v2.1.198 开始,当 agent view 打开时,Claude Code 还会通过你配置的终端通知频道发送通知,当本地后台会话开始需要你的输入、完成或失败时。在计划上运行的会话,例如 /loop 会话,仅在需要你的输入时通知。通知使用与 Claude Code 其余部分相同的 preferredNotifChannel 设置,并使用 agent_needs_input 或 agent_completed 类型触发 Notification hook。
后台会话不需要任何打开的终端来继续工作。一个单独的监督进程运行它们,所以你可以关闭 agent view、关闭你的 shell 或启动一个新的交互式会话,你的调度工作继续进行。
会话状态通过自动更新和监督进程重启在磁盘上持久化。会话在你的机器休眠时也会被保留。它们的进程在唤醒时恢复,监督进程重新连接到它们,而不是将时间间隙视为空闲。关闭仍然会停止运行中的会话;请参阅关闭后会话显示为失败了解如何恢复它们。
当你打开一个已停止响应的会话时,监督进程重启其进程,会话从中断处继续中断的响应。当机器在会话中途响应时休眠时,会话可能会陷入该状态。需要 Claude Code v2.1.200 或更高版本。
行摘要
每行中的单行摘要由 Haiku-class 模型生成,所以该行可以告诉你会话正在做什么、需要什么或生成了什么,无需打开记录。当会话正在积极工作时,摘要最多每 15 秒从会话自己的最近输出刷新一次,无需发送模型请求,每个回合结束时模型写入新摘要。 工作中的行显示会话说它正在做什么,被阻止的行显示它提出的问题。在长回合期间,模型也大约每分钟重写一次摘要,每次重写后等待时间加倍,最多四分钟,所以繁忙的行不会继续显示过时的摘要。在 v2.1.205 之前,工作中的行可能显示原始工具调用而不是报告,运行并行工作项的会话在文本之前显示done/total 计数,例如 2/5。
摘要文本填充行的剩余宽度,仅在终端的右边缘截断;打开窥视面板读取边缘裁剪的句子。在 v2.1.206 之前,文本在 64 列处被切割,无论终端宽度如何。
当列表按目录分组时,摘要以会话的状态作为彩色单词开头,例如 Needs input · double jump or wall climb?。在默认状态分组中,组标题已经命名了状态,所以行只显示摘要。在 v2.1.205 之前,按目录分组的行不带状态单词。
整个输出不包含字母或数字的回合,例如打印单个符号的安静迭代的 /loop 会话,保持行的前一个摘要和状态。在 v2.1.205 之前,该回合被重新分类,可能将等待你输入的会话翻转回 Working。
结束回合摘要和每次中途重写是通过你的正常提供商的一个短 Haiku-class 请求,按与会话本身相同的数据使用条款计费和处理。15 秒的模型重写之间的更新重用会话自己的输出,不发送请求。在第三方提供商(如 Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry 和自定义网关)上,当没有配置 Haiku 模型时,请求会回退到会话的主模型。设置 ANTHROPIC_DEFAULT_HAIKU_MODEL 以在这些提供商上为这些摘要选择模型。
拉取请求状态
当会话打开拉取请求时,#1234 标签出现在行的右边缘,在支持超链接的终端中链接到拉取请求。当你向会话发送后续内容时标签保持,所以拉取请求在行恢复到实时进度时保持可见。在 worktree 中隔离其更改的后台会话自己打开这些拉取请求;文件编辑如何隔离涵盖何时发生以及会话在没有询问的情况下永远不会做什么。
处理现有拉取请求的会话以相同方式链接到它。使用 gh 编辑、评论、关闭或标记拉取请求为就绪链接命令自己的输出命名的拉取请求,所以捕获的输出不命名拉取请求的 gh 命令不创建链接;gh pr merge 是常见情况,因为它仅将其结果打印到交互式终端。使用 gh pr checkout 检出拉取请求,或推送到有打开拉取请求的分支,通过改为使用 gh pr view 查找该分支来链接它。在 v2.1.205 之前,仅会话创建或检出的拉取请求被链接,推送仅在本地分支名称匹配时链接一个。
Claude Code 从完整命令输出读取拉取请求,包括当命令的输出超过内联限制时保存到文件的部分。在 v2.1.205 之前,在 Bash 调用中创建的拉取请求,其输出超过约 30,000 个字符,未被链接。
当会话链接到多个拉取请求时,标签显示计数,例如 3 PRs,按最需要关注的打开拉取请求着色。打开窥视面板查看它们全部。
拉取请求编号由其状态着色:
对于大多数任务,这列是你收集结果的地方:当其编号变绿时审查和合并拉取请求。
窥视和回复
在选定的行上按Space 打开窥视面板。它打开时显示行截断的句子,该句子是什么取决于会话的状态:
- 等待你的会话:它提出的确切问题,在回复输入上方
- 已完成的会话:其结果
- 工作中的会话:其完整状态句子
waiting 3m 显示它已经等待多长时间,这是面板中唯一显示的时间。行右边缘的年龄是一个不同的数字:它从会话启动时开始计算。
大多数时候窥视面板就足够了,你不需要打开完整的记录。
在 v2.1.207 之前,每次窥视都以状态句子和裸时间戳打开,被阻止的会话的问题出现在它们下方,前缀为相同的时间戳第二次。
在窥视面板中输入回复并按 Enter 将其发送到该会话。当会话提出多选问题时,窥视面板显示选项,你可以按数字键选择一个。对于其他被阻止的会话,按 Tab 用建议的回复填充输入,你可以在发送前编辑。用 ! 前缀回复以发送 Bash 命令。
无法传递的回复,因为后台服务无法访问或发送失败,会被保存并在其进程再次启动时作为其下一个提示发送到会话,错误消息说回复已保存。前缀为 ! 的回复不会被保存,因为保存的文本会作为纯提示而不是 Bash 命令到达会话。
启用语音听写后,在回复输入获得焦点时按住或点击你的推送通话键以听写回复而不是输入。同样的功能在 agent view 底部的调度输入中也有效。
使用 ↑ 和 ↓ 窥视相邻会话而不关闭面板,或 → 附加。
附加到会话
在选定的行上按Enter 或 → 附加。Agent view 被完整的交互式会话替换。当你附加时,Claude 发布一个关于你离开时发生的事情的简短回顾。
附加时,会话的行为像任何其他 Claude Code 会话:命令、快捷键和功能都有效,除了下面的例外。
后台会话拒绝 /install-github-app 和 /mcp 设置列表,包括其身份验证操作,无论你是附加还是从窥视面板回复。消息指导你到常规 claude 会话,/mcp reconnect <server>、/mcp enable 和 /mcp disable 仍然有效。
附加的会话始终以全屏模式呈现,无论你的 tui 设置如何,因为后台会话没有终端滚动历史可追加。使用 PgUp、PgDn 或鼠标滚轮滚动,按 Ctrl+O 进入记录模式。你的终端的原生滚动和 tmux 复制模式仅显示当前视口,与运行任何全屏应用程序时相同。
在空提示上按 ← 或运行 /exit 分离并返回 agent view。从 v2.1.198 开始,这的工作方式与你从 agent view 打开会话或从 shell 用 claude attach <id> 运行相同。
Ctrl+Z 也分离但返回到你开始的地方:如果你从那里附加则返回 agent view,或如果你运行了 claude attach 则返回你的 shell。当对话有焦点且不响应 ← 时使用 Ctrl+Z。
Ctrl+C 在附加时保持其标准中断行为:它取消运行中的响应或 ! shell 命令,而不是分离。在空提示上按两次 Ctrl+C 分离,与任何会话中的相同。
分离永远不会停止后台会话:←、Ctrl+Z、/exit 和双 Ctrl+C 或双 Ctrl+D 都让它运行。要从内部结束会话,运行 /stop。
在前台运行的会话中,一个你在终端中启动的而不是从 agent view 附加的,在空提示上按 ← 会后台它并打开 agent view,该行被选中,所以你可以在不离开终端的情况下切换会话。同样的单次按压分离附加的会话。
如果在你按 ← 时工具正在运行,Claude Code 会等待大约十秒钟让它完成,然后后台,响应在后台会话中继续。再按一次 ← 以立即后台而不是等待。当进行中的工作无法转移到后台会话时,Background this session? 对话首先出现,与 /background 相同。
十秒限制在 subagents 运行时不适用。Claude Code 继续等待以便它们的工作转移,并在等待时显示 Still backgrounding after the current tool 通知;再按一次 ← 以立即后台而不等待,这会从头重新启动 subagents。在 v2.1.203 之前,等待在十秒后结束,运行中的 subagents 在没有警告的情况下从头重新启动。
该行即使从没有对话历史的新会话也会被创建,所以 → 会返回到它。在 v2.1.203 之前,当该行是唯一的行时,agent view 在它下方显示一个入门提示。
你可以在 /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 在确认后删除该组中的每个会话。
删除会从 agent view 中删除会话。如果 Claude 为会话创建了 worktree,删除会删除该 worktree,包括其中的任何未提交的更改,所以在删除前推送或提交你想保留的工作。你自己创建的 worktree 并在其中启动会话的会被保留。对话记录保留在你的本地机器上,并且仍然可以通过 claude --resume 访问。
删除永远不会删除有未推送到任何地方的提交的 worktree,或另一个运行中的会话声称或已锁定的 worktree。Claude Code 保留 worktree 和会话,页脚命名保留的路径和原因。推送提交或关闭其他会话,然后再次删除。
删除也会从监督进程的会话列表中清除会话,无论你用 Ctrl+X 删除还是从 shell 用 claude rm 删除,所以删除在监督进程重启中保持。在 v2.1.206 之前,在监督进程重启或无法访问时删除会话会将其留在该列表中,下一个监督进程重启其进程并再次显示该行。
不适合屏幕的已完成会话折叠成 … N more 行。失败和有打开拉取请求的会话始终保持可见。Completed 组填充活跃组之后剩余的垂直空间,在短终端上标题压缩为单个摘要行,以便正在工作或需要输入的会话保持可见。
过滤会话
在调度输入中输入以过滤而不是调度:快捷键
在 agent view 中按? 查看每个快捷键的上下文。下表总结了它们。
调度新代理
你可以从 agent view 调度新的后台会话、将现有的交互式会话发送到后台,或直接从 shell 启动一个。从 agent view
在 agent view 底部的输入框中输入提示并按Enter 启动新的后台会话。会话从提示自动命名;稍后可以用 Ctrl+R 重命名它。
会话稍后获得的名称也会出现在其行上,包括当你在该会话中 接受计划 时 Claude 推导的名称。在 v2.1.207 之前,通过接受计划命名的后台会话在 /status 中显示该名称,但在你自己重命名之前不会在其 agent-view 行上显示。
将图像粘贴到提示中以包含任务的屏幕截图或图表。
粘贴的文本长度超过 800 个字符或超过两行会折叠为 [Pasted text #N] 占位符,以便输入保持在一行;完整文本在你调度时发送。要在调度前查看或编辑折叠的文本,再次粘贴相同的文本,占位符会展开回输入。在至少 90 列宽的终端上,粘贴后会在输入下方出现 paste again to expand 提醒几秒钟。在 v2.1.207 之前,再次粘贴相同的文本会添加第二个占位符而不是展开第一个。
前缀或提及提示的部分以控制会话如何启动:
一小组命令在 agent view 本身中运行而不是调度:
/exit和/quit关闭 agent view/logout将你登出/model设置 调度模型- 从 v2.1.198 开始,
/login打开登录对话框,以便你可以在不附加到会话的情况下再次登录
/init 作为其第一个提示发送到新的后台会话。其他内置命令显示 attach to a session to run it 提示。你输入的所有内容都保留在提示旁边的输入中,以便你可以编辑它。在 v2.1.203 之前,提示清除了输入,输入的文本丢失了。
将重复任务打包为 skill 让你从 agent view 多次启动相同的工作流而无需重新输入提示。
当相同的 @name 同时匹配 subagent 和同级存储库时,subagent 优先。不带 @ 的首字形式也适用,所以以匹配你的某个 subagent 名称的单词开头的提示会调度该 subagent 而不是将该单词视为纯文本。当你想要明确指定时,使用 @ 形式,或以不同的单词开头提示以避免匹配。
调度到特定目录
新会话在你打开 agent view 的目录中运行。要针对不同的目录,使用以下任何一种:-
在该目录中打开
claude agents。 -
在父目录中打开
claude agents并在提示中用@<repo>提及一个子存储库。输入@会列出这些目标:- 启动目录下一级的 Git 存储库
- 你启动的存储库的已注册 git worktrees,这些 worktrees 位于其目录树内,例如 Claude 在
.claude/worktrees/下创建的那些,标记有其检出的分支。在存储库外添加的 worktrees,例如用git worktree add ../feature添加的,不会被列出 - 任何已在列表中有会话的目录
claude --bg。 -
从 shell,
cd进入目录并运行claude --bg "<prompt>"。
从会话内部
运行/background 或其别名 /bg 将当前对话移动到后台会话。传递提示如 /bg run the test suite and fix any failures 以在后台化前先给出一个更多指令。如果 Claude 在你运行 /bg 时正在响应,响应会在后台会话中继续。
退出仍有后台工作运行的交互式会话,例如 subagents、后台 shell 命令、工作流或 monitors,会显示 Background work is running 对话而不是立即退出。从 v2.1.198 开始,对话提供 Move to background and exit 以及 Exit anyway 和 Stay。选择它会以与 /background 相同的方式将会话移动到后台,然后返回你的 shell,所以可以继续的工作保持运行,会话出现在 agent view 中。当 agent view 被 关闭 时,不显示该选项。
从交互式会话后台化启动一个新的进程,该进程从保存的对话恢复,进行中的工作会转移到它:运行后台 shell 命令、后台 subagents、动态工作流和你用 /loop 创建的计划任务会转移到后台会话并在那里继续运行。一个 subagent 与它启动的所有内容一起移动,所以它仅在所有工作都能转移时才转移,包括在 Windows 上。要停止进行中的工作而不是转移它,设置 CLAUDE_DISABLE_ADOPT=1 环境变量;Claude Code 随后会要求你在后台化前确认。
无法转移的工作,例如运行中的 monitor,会被停止。拥有监视器的后台 subagent 会与它一起被停止。当任何此类工作正在运行时,Claude Code 显示 Background this session? 对话,以便你可以在它被停止前确认。
一旦在后台,会话可以启动新的 subagents、monitors 和后台命令,这些会在后续的分离和重新附加中保持运行。
来自原始启动的配置标志会传递到后台化的会话,所以其 MCP servers、settings 和备用模型保持有效:
--mcp-config和--strict-mcp-config--settings--add-dir--plugin-dir--fallback-model--allow-dangerously-skip-permissions
/add-dir 添加的目录也会传递。
传递 --allow-dangerously-skip-permissions 会在后台化的会话中保持 bypassPermissions 可访问,但它不会授予任何新权限。该模式仍然需要在任何会话使用它之前进行相同的一次性交互式接受,如 权限模式、模型和工作量 中所述。
从你的 shell
传递--bg 或其长形式 --background 启动直接进入后台的会话:
-p 值。从 v2.1.198 开始,将 --bg 与 -p 或 --print 结合会在创建任何会话前被拒绝并显示错误,因为 --print 永远不会启动 claude agents 附加到的交互式会话。
要运行特定的 subagent 作为会话的主代理,结合 --bg 和 --agent:
--name 以在 agent view 中设置会话的显示名称而不是自动生成的名称:
--bg 可能首先在此输出上方打印 Starting background service…。当你传递 --name 时,名称出现在短 ID 之后:
运行 shell 命令
要运行 shell 命令作为后台作业而不是 Claude 会话,在 agent view 调度输入的第一个字符处输入!。! 显示为前缀,你在它之后输入的所有内容都是命令。以下示例从 agent view 输入框调度 pytest -x:
Enter 启动作业。同一作业也可以直接从你的 shell 用 --exec 启动:
Space 以在不附加的情况下查看,或从你的 shell 运行 claude logs <id>。捕获的输出保留在内存中,不写入磁盘。该行及其输出在命令退出后约五分钟自动清理,所以如果你需要结果,请在那之前读取它。
文件编辑如何隔离
每个后台会话,无论是从 agent view、/bg 还是 claude --bg 启动,都在你的工作目录中启动。在编辑文件前,Claude 将会话移动到 .claude/worktrees/ 下的隔离 git worktree 中,所以并行会话可以读取相同的检出但每个都写入自己的。
Claude 在以下情况下跳过 worktree:
- 会话已经在链接的 git worktree 内,无论 Claude 是在
.claude/worktrees/下创建的还是你用git worktree add在其他地方创建的 - 工作目录不是 git 存储库且没有配置
WorktreeCreatehook - 写入在工作目录外
worktree.bgIsolation 设置为 "none"。后台会话随后直接编辑你的工作副本而不先移动到 worktree。将设置添加到项目的 .claude/settings.json:
WorktreeCreate hook,Claude 会以与 git 相同的方式隔离编辑。
当 hook 在不是 git 存储库的目录中失败时,会话跳过该目录的隔离并就地编辑工作目录。在 git 存储库内,写入保持被阻止,直到会话隔离。在 v2.1.203 之前,处于该状态的后台会话无法编辑任何文件:每次写入都被拒绝,直到它隔离,hook 永远无法隔离该目录。
删除会话会删除或保留 Claude 为其创建的 worktree,取决于你如何删除它以及 worktree 包含的内容:
- 在 agent view 中用
Ctrl+X两次删除会删除 worktree,包括任何未提交的更改,所以先提交你想保留的更改。 - 从 shell 用
claude rm删除会保留有未提交更改的 worktree,以及其会话行。 - 两种方式都不会删除有未推送到任何地方的提交的 worktree:worktree 会 与其会话一起保留,输出会命名保留的路径和原因。
- 你自己创建的 worktree 并在其中启动会话的,无论哪种方式都会保留在原地。
isolation: worktree 或在生成它时传递 isolation: "worktree"。
从 v2.1.198 开始,隔离其代码更改在 worktree 中的后台会话也会提交、推送其自己的分支,并打开草稿拉取请求而不停止询问。当拉取请求打开时,#N 标签 出现在其行上。它永远不会推送到 main 或 master,永远不会强制推送或合并,当你告诉它不要打开拉取请求或存储库没有远程时,它会跳过拉取请求。
编辑未自行隔离的检出的会话仍然会在提交或切换分支前询问。这适用于隔离设置为 "none" 时、worktree 移动失败时,或会话在已存在的 worktree 内启动时。
设置模型
agent view 标题中显示的模型名称是调度默认值。你从输入启动的新会话使用此模型,这来自你的用户设置中的model 设置。通过在 /model 选择器 中选择模型来设置它,或直接编辑设置。
要为整个 agent view 会话覆盖调度默认值,在打开 agent view 时传递 --model。参见 权限模式、模型和工作量。
要从 agent view 内部更改调度默认值,在调度输入中输入 /model 后跟模型名称并按 Enter。标题更新以显示该模型,带有 (session) 标记,之后调度的会话使用它。输入 /model default 以清除覆盖并返回调度默认值。此覆盖持续当前 claude agents 运行的其余部分,不写入你的设置文件。以下示例在 Opus 上调度一个会话,在 Sonnet 上调度下一个:
- 从 shell,用
claude --bg传递--model。 - 附加到运行中的会话并运行
/model以切换:从选择器中选择,或输入/model <name>,保存为你的新会话默认值,除非你在选择器中按s进行仅会话切换。如果会话被重新生成,仅会话切换会持续。 - 调度一个 subagent,其 frontmatter 设置
model字段。
权限模式、模型和工作量
后台会话从它运行的目录读取其 settings,就像你在那里启动了claude 一样。这包括项目设置中的 env 值,所以在那里设置的 ANTHROPIC_MODEL 或提供商变量适用于该目录中的后台会话。
云提供商选择,如 CLAUDE_CODE_USE_BEDROCK 或 CLAUDE_CODE_USE_VERTEX,以及 ANTHROPIC_DEFAULT_*_MODEL 别名遵循调度会话的 shell。如果你在该 shell 中导出 CLAUDE_CODE_EXTRA_BODY 请求体覆盖,它会以相同的方式到达会话。在 v2.1.206 之前,后台工作进程忽略了 shell 导出的 CLAUDE_CODE_EXTRA_BODY。
如果你在调度 shell 中导出网关 ANTHROPIC_BASE_URL,它也会到达会话,以及 ANTHROPIC_CUSTOM_HEADERS,当监督者使用相同的网关环境运行且会话在你调度的目录中运行或是你自己的会话用 ← 或 /background 后台化时。这是第一个 shell 打开 agent view 或调度后台会话时的正常情况,是网关 shell。用 @repo 或 --cwd 调度到不同目录不会携带 shell 的网关;该项目的 settings 提供端点。参见 监督者进程 了解后台会话如何获取提供商设置和凭证。
permission mode 取决于你如何启动会话。用 /bg 或 ← 后台化现有会话会保持当前权限模式,所以你切换到 acceptEdits 或 auto 的会话在分离后仍保持该模式。从 agent view 输入调度或从你的 shell 运行 claude --bg 使用该目录设置中的 defaultMode,或调度的 subagent 的 frontmatter 中的 permissionMode。
后台会话启动时的权限模式、模型和工作量,以及它携带的 配置标志,在监督者稍后 停止并重新启动 其进程时都会持续。你用 claude --bg --dangerously-skip-permissions 或 claude --bg --permission-mode bypassPermissions 启动的会话在该重新启动后仍保持 bypassPermissions 而不是回退到目录的 defaultMode,以及你在会话中期用 /model 或 /effort 更改的模型或工作量会被保留。
会话从 effortLevel 设置 而不是从 --effort 或 /effort 获取的工作量不会在调度时固定:为会话启动的每个进程都会再次读取设置,所以在 settings.json 中编辑 effortLevel 会到达你用 ← 或 /bg 后台化的会话及其后续重新启动。在 v2.1.203 之前,后台化会话会记录其设置派生的工作量,就像你传递了 --effort 一样,所以后续的 effortLevel 编辑永远无法到达它。
你用 /rename 或 Ctrl+R 设置的名称也会在该重新启动中持续,所以 claude --resume <name> 仍然解析会话。在 v2.1.202 之前,重新启动会将会话恢复为调度时的名称,新名称停止解析。
要为从 agent view 调度的每个会话设置默认值,在打开它时传递 --permission-mode、--model、--effort 或 --agent 中的任何一个:
--agent 设置当调度提示未命名一个时使用的 subagent,无论是用 @name 还是作为第一个单词。如果设置了一个,它默认为 agent 设置,否则为内置的全能 claude 代理。在调度输入中命名 subagent 会覆盖两者。
claude agents 也接受 --dangerously-skip-permissions 作为 --permission-mode bypassPermissions 的简写,以及 --allow-dangerously-skip-permissions 以在每个调度会话的 Shift+Tab 循环中使 bypassPermissions 可用而不带权限模式启动。两者都匹配 顶级 CLI 标志。
活跃的默认值出现在调度输入下方的页脚中。
没有这些标志,会话使用该目录设置中的 defaultMode 或调度的 subagent 的 frontmatter 中的 permissionMode,以及 agent view 标题中显示的模型。
使用 bypassPermissions 与 claude --bg --permission-mode 被拒绝,直到你通过交互式运行 claude --dangerously-skip-permissions 一次接受了绕过免责声明,因为该模式让你没有看到的会话无需批准就能行动。传递 --dangerously-skip-permissions 或 --permission-mode bypassPermissions 到 claude agents 在你之前没有接受它时显示相同的免责声明,接受会将 bypassPermissions 应用到你从视图启动的会话。传递 --allow-dangerously-skip-permissions 也显示相同的免责声明,接受会在这些会话的 Shift+Tab 循环中使 bypassPermissions 可用而不在其中启动它们。
Settings、plugins 和 MCP servers
Agent view 接受与claude 相同的配置标志以加载 settings、plugins、MCP servers 和额外目录。每个标志适用于 agent view 本身,并传递给你从它调度的每个会话,所以以这种方式加载的 plugin 或 MCP server 在这些会话中也可用。
对每个值重复
--add-dir、--plugin-dir 或 --mcp-config。空格分隔的形式,如 --add-dir a b c,不支持与 claude agents 一起使用。
以下示例使用 settings 覆盖和一个额外目录打开 agent view:
从 shell 管理会话
每个后台会话有一个短 ID,你可以从 shell 使用。当你使用claude --bg 启动会话时会打印该 ID,每个会话的 ID 是其在 ~/.claude/jobs/ 下的目录名。这些命令对于脚本编写或当你不想打开 agent view 时很有用。
后台会话如何被托管
agent view 中列出的每个会话都被视为后台会话,无论你当前是否连接到它。相比之下,通过直接运行claude 启动的会话与该终端绑定,并在终端关闭时结束,除非你将其发送到后台。
监督进程
后台会话由每用户监督进程托管,与你的终端和 agent view 分离。监督进程在你第一次后台会话或打开 agent view 时自动启动,你不直接管理它。 当更新替换或移除了运行中的 Claude Code 进程启动时所用的二进制文件时,该进程会从另一个已安装的副本(如已安装的claude 启动器或磁盘上的最新版本)启动监督进程。
监督进程保持一个预热的工作进程就绪,以便从 agent view 或 claude --bg 的调度启动时不会有冷启动的延迟。当你调度时,监督进程将预热的工作进程分配给你的会话,将该会话的目录、设置和凭证应用到它,然后为下一次调度启动一个替代进程。如果没有可用的健康预热工作进程,监督进程会改为启动一个新进程。
监督进程及其会话使用与你的交互式会话相同的凭证进行身份验证,并且除了模型 API 外不进行额外的网络连接。提供商选择变量如 CLAUDE_CODE_USE_BEDROCK 和 ANTHROPIC_DEFAULT_*_MODEL 别名从调度每个会话的 shell 中读取,并应用到其工作进程。
调度 shell 的 PATH 以相同的方式应用到工作进程,因此会话运行的 shell 命令会找到你的终端所拥有的相同工具。在 v2.1.203 之前,后台会话保持启动监督进程的 shell 的 PATH,因此自那时以来添加到你的 PATH 的工具可能会丢失,最常见的是在 Windows 上。
后台会话不继承网关端点变量如 ANTHROPIC_BASE_URL 或等效的 Amazon Bedrock、Google Cloud 的 Agent Platform 和 Microsoft Foundry 基础 URL 变量,这些变量来自启动监督进程的 shell。如果没有在你调度的 shell 中导出网关,会话会使用你的存储凭证和项目目录的设置中 env 块中的任何 env 值。要在项目中指向LLM 网关的每个会话,在该项目的 .claude/settings.json env 块中设置 ANTHROPIC_BASE_URL。
如果你在调度的 shell 中导出网关 ANTHROPIC_BASE_URL,它会到达该会话的工作进程。ANTHROPIC_CUSTOM_HEADERS 和与它们一起导出的凭证会随之转发。这发生在监督进程从具有相同网关的环境启动时。监督进程从打开 agent view 或调度后台会话的第一个 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 命令会报告为已完成及其输出
- 动态工作流从中断处恢复
- 后台子代理从其自己的记录恢复
CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF 环境变量设置为 1。
重新启动的进程会找到移入 worktree 的会话的对话,该会话在任务中途移动:当记录不在会话启动的位置时,Claude Code 也会在存储库的已注册 worktree 下查找。在 v2.1.207 之前,在其进程停止后从 agent view 重新打开该会话可能会显示仅包含其原始提示的空对话,记录仍完整地保留在磁盘上;在 v2.1.207 或更高版本上再次打开会话会恢复它。
如果重新启动的会话回来时仅显示其原始提示,因为 Claude Code 误读了其记录为空,对话记录会被重命名为 .orphaned- 后缀而不是删除,所以它保留在你的机器上。
从按 ← 留下的空行从未给出提示符会在大约五分钟后被完全删除,以便列表自动清理。使用 claude --bg 启动的会话和等待设置提示符(如信任对话)的会话不会以这种方式被删除。
当主机内存不足时,监督进程首先停止空闲的非固定会话,仅在释放任何内容时才停止空闲的固定会话。
监督进程监视磁盘上安装的 Claude Code 二进制文件,在常规自动更新程序替换它后重新启动到新版本。这是本地文件监视,不是网络检查。后台会话是分离的进程,所以它们在重新启动期间继续运行,新的监督进程重新连接到它们。空闲的固定会话也会在原地重新启动到新版本,以便它获取更新而无需你重新附加。
一旦新的监督进程接管,它也会将剩余的空闲会话重新启动到新版本,在后台一次几个,在短暂延迟后,让在重新启动期间连接的终端首先重新连接。积极工作、等待你的输入或有终端连接的会话不会被中断;它在其进程下次重新启动时移动到新版本。在 v2.1.206 之前,监督进程每分钟仅将几个空闲会话移动到新版本,因此会话可能在更新后继续运行旧版本一段时间。
这些重新启动仅将会话移动到较新版本。运行比会话进程启动时所用版本更旧的 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_JOB_DIR 环境变量指向其 ~/.claude/jobs/<id> 目录,因此会话运行的 shell 命令可以将临时文件写入 $CLAUDE_JOB_DIR/tmp 而不会与并行会话冲突。
要在不直接读取文件的情况下检查此状态,请运行 claude daemon status。它报告监督进程是否可达、其进程 ID 和版本、套接字目录以及有多少后台会话处于活跃状态。
该命令还会在运行的监督进程版本与你调用的 claude 版本不同时发出警告,这发生在监督进程尚未重新启动到新版本的更新之后。警告显示两个版本,并告诉你运行 claude daemon stop --any 以获取新版本。当 Claude Code 作为操作系统服务安装时,建议的命令是 claude daemon stop 不带该标志。
会话完整地保留该版本不匹配:更新会话 state.json 的较旧 Claude Code 版本会保留它不识别的字段并保持会话列出。roster.json 中的会话列表遵循相同的规则:重写它的较旧版本会保留较新版本写入的字段,因此由较新版本启动的会话保持可达并在监督进程重新启动后继续接受输入。在 v2.1.200 之前,较旧版本可能会在重写时删除这些字段。
在 Windows 上,当守护进程的管道密钥文件被锁定或无法读取时,claude daemon status 会显示底层文件错误,而不是报告通用连接失败。
关闭 agent view
要完全关闭后台代理和 agent view,将disableAgentView 设置设为 true 或设置 CLAUDE_CODE_DISABLE_AGENT_VIEW 环境变量。管理员可以通过托管设置强制执行这个。
故障排除
claude agents 列出子代理而不是打开代理视图
如果 claude agents 打印一个计数,然后是你配置的子代理,然后退出,说明代理视图在你的环境中不可用。运行 claude update 来安装最新版本。
如果更新后代理视图仍然没有打开,检查它是否已被设置或环境变量关闭。
Agent view 打开时没有会话
在你调度你的第一个会话之前,agent view 显示空的部分标题,每个标题下有一个描述,以及输入上方的单行说明,代替会话列表。在底部的输入框中输入提示并按Enter 来调度你的第一个会话。
后台化显示 Background this session? 对话
如果按 ← 来后台当前会话显示 Background this session? 对话,会话有进行中的工作无法转移到后台会话,例如运行中的 monitor,Claude Code 不会默默停止它。对话命名将被停止的工作,并分别计算转移的任务。运行 /tasks 查看正在运行的内容,然后确认无论如何后台或选择 Stay 让工作先完成。参见从会话内部了解哪些任务类型转移,哪些被停止。
提示被拒绝,因为太短
调度输入期望一个任务描述,而不是对话开场白。少于四个字符的提示会被拒绝,并显示Too short 提示,这样随意的按键就不会启动会话。描述你希望会话执行的操作,例如 investigate the flaky checkout test。
会话在关闭后显示为已失败
关闭或重启你的机器会停止运行中的后台会话,所以当你下次打开 agent view 时,它们显示为已失败。附加、窥视或回复任何已失败的会话,会话从中断处重新启动。 睡眠单独不会导致这种情况。会话在睡眠期间被保留,监督进程在唤醒时重新连接到它们。打开会话说对话已经打开
打开一个已停止的行,其对话也由另一个运行中的非交互式 Claude Code 进程持有,例如同一对话的后台工作进程仍在关闭中,会显示This conversation is already open in another running Claude session 而不是启动该行的进程,因为两个进程无法写入同一个记录。在已经持有对话的会话中回复,或退出它并再次打开该行。你在拒绝尝试中输入的回复不会丢失;它会在会话下次启动时发送。
在 v2.1.203 之前,这种状态会启动第二个进程。该进程会以 currently running as a background agent 错误退出,该行显示为已失败。
会话在启动前失败,并显示 possibly low memory 注记
从 v2.1.199 开始,当后台会话的进程在完成启动前退出,且主机内存不足时,该行的状态会命名退出并添加 possibly low memory — free some up and retry。早期版本仅显示此失败的原始退出原因。
该注记是一个假设,而不是确认的原因。Claude Code 仅在进程无声退出(未写入错误且未被信号停止)且主机在该时刻报告内存不足时才添加它。当进程在退出前确实写入了错误时,该行显示该错误。
释放机器上的内存,然后附加、窥视或回复该行,监督进程为会话启动一个新进程。当内存保持不足时,监督进程也会停止空闲会话来自行释放资源。
Agent view 说后台服务没有响应
如果附加、窥视或claude logs 报告后台服务没有响应,监督进程可能已经停滞。停止它并让下一个 claude agents 启动一个新的。要在重启期间保持你的后台会话运行,请传递 --keep-workers:
--keep-workers,该命令也会结束后台会话。--any 标志确认你想停止一个按需启动的监督进程,而不是作为已安装的服务启动的,这是默认的。
一个启动但无法接受连接的监督进程会自行退出并释放其锁,所以下一个 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 及更高版本上,系统会阻止进程访问你本地网络上的设备,直到你授予本地网络权限。在 v2.1.198 之前,后台会话主机从未请求该权限,所以针对 LAN 地址的命令失败,出现connect: no route to host,即使相同的命令在前台终端中有效。从 v2.1.198 开始,后台会话中连接到本地网络地址的第一个命令会触发 Claude Code 的 macOS 本地网络权限提示。授予一次,这些命令就能像在前台终端中一样访问 LAN 主机。
附加后会话响应缓慢
一旦会话完成并未连接地坐了大约一小时,监督进程停止其进程以释放资源。附加启动一个从中断处的新进程并立即切换到会话,而进程重新启动。工作或等待你的会话,或固定的会话永远不会以这种方式停止,所以用Ctrl+T 固定一个会话来保持它的响应性。
当进程启动时,会话记录的最后一屏会显示,下面有一个 Session is starting 注记,当会话准备好时,实时会话会立即替换它。
.claude/worktrees/ 填满了
在 agent view 中删除会话会删除 Claude 为其创建的 worktree,无法安全删除的 worktree 保持其会话行,这样它就不会被孤立。claude rm 保留具有未提交更改的 worktree 及其会话行,并打印保留的路径。在项目目录中用 git worktree list 列出剩余条目,并用 git worktree remove <path> 删除每个。参见清理 worktrees。
限制
Agent view 处于研究预览阶段,存在以下限制:- 速率限制适用:后台会话消耗你的订阅使用量,与交互式会话相同,因此并行运行十个代理的配额消耗速度大约是运行一个代理的十倍。
- 会话是本地的:后台会话在你的机器上运行。它们在机器睡眠时保留,但在机器关闭时停止。
- Claude 创建的 worktrees 在 agent view 中随会话删除:在删除在其自己的 worktree 中编辑文件的会话之前,请提交更改。具有未推送任何地方的提交的 worktree 与会话一起保留。
claude rm也会将具有未提交更改的 worktree 与其会话一起保留,而你自己创建的 worktree 保持原位。
相关资源
有关以并行方式运行 Claude 的其他方法,请参阅:- 并行运行代理:比较 agent view 与 subagents、agent teams 和 worktrees
- Agent teams:协调相互发送消息的多个会话
- Claude Code on the web:在托管的云环境中运行会话而不是本地
版本历史
Agent view 在研究预览期间发展迅速。如果你使用较旧的 Claude Code 版本,本页上的某些行为可能会有所不同;特别是,claude agents 拒绝它尚不支持的标志,出现 unknown option 错误。下表列出了何时添加每个标志和行为。
