跳转到内容

后台会话

有些任务不是「问一句答一句」能搞定的:排查一个 flaky 测试要跑十几分钟、跨几百个文件做模式迁移要半小时、把一个长 issue 拆成可执行的 PR 需要研究 + 实现 + 写测试一整套。如果你盯着终端等结果,效率为零。

后台会话解决的就是这个——你把任务甩给 Claude,它自己起一个 agent 在后台跑,立刻返回给你一个 session ID。你可以关终端、去开会、跑别的任务,回头来再 attach 进去看进度。

--bg 让 Claude Code 立刻 fork 出一个后台会话,主进程马上返回。打印出来的是 session ID 和管理命令清单:

Terminal window
claude --bg "investigate the flaky test in auth module"

输出大致长这样:

Started background session: 7c5dcf5d
Manage with:
claude attach 7c5dcf5d
claude logs 7c5dcf5d
claude stop 7c5dcf5d
claude rm 7c5dcf5d

--bg 还能配 --agent 指定一个子代理来跑这次任务(详见 Subagents 深入):

Terminal window
claude --bg --agent security-reviewer "审查这个 PR 的依赖"

后台会话有一整套配套命令:

命令 作用
claude --bg "..." 启动一个后台 agent
claude agents 打开 agent view,监控并行的多个后台会话
claude attach <id> 附加到某个后台会话(接管终端,进入完整对话)
claude logs <id> 查看某个会话最近的输出(不接管)
claude stop <id> 停止某个后台会话(别名 claude kill
claude respawn <id> 重启一个已停止的会话,保留对话历史
claude rm <id> 从会话列表移除(不删数据,只是不再显示)
Terminal window
# 启动
claude --bg "跑全量测试并修失败用例"
# 查看输出(不接管终端)
claude logs 7c5dcf5d
# 看到要追问了,attach 进去对话
claude attach 7c5dcf5d
# 在 attach 状态下按 ← 退回 shell,会话继续在后台跑
# 跑偏了,停掉
claude stop 7c5dcf5d
# 想换个思路接着跑,重启(保留对话)
claude respawn 7c5dcf5d

respawn 是亮点——它不像 --resume 那样只能续会话,而是把已停止的进程重新拉起来,对话历史原封不动。适合「让它先停,我想想再让它继续」的场景。

claude agents 是后台会话的「指挥中心」——一屏列出所有正在跑、需要你输入、已完成的后台会话:

Terminal window
claude agents

它会占满整个终端,每行一个会话,显示状态、当前活动、上次更新时间。状态分几类:

状态 图标 含义
Working 动画 正在跑工具或生成回答
Needs input 黄色 等你回应某个具体问题或权限决策
Idle 灰暗 没事干,等下一个 prompt
Completed 绿色 任务完成
Failed 红色 出错结束
Stopped 灰色 Ctrl+Xclaude stop 停了

行末的 PR #1234 是会话开的 PR,颜色表示 PR 状态(黄=待审/红 CI、绿=通过、紫=已合并、灰=draft)。

  • ↑/↓:选择会话
  • Space:打开 peek 面板,看最近输出或它在等什么——可以直接回复,不离开 agent view
  • Enter:attach 进去,进入完整对话
  • (空 prompt 时):detach 退回表格,会话继续后台跑
  • Esc:退回 shell
Terminal window
# 只看某个项目的会话
claude agents --cwd ~/projects/my-app

agent view 不只看新派的——也能把已有交互会话挪进来:在会话里跑 /bg 或在空 prompt 上按 ,就把它背景化并打开 agent view。

每行的一句话摘要是用 Haiku-class 模型生成的(每 15 秒刷新一次 + 每轮结束时刷新),让你不用打开 transcript 也能知道这个会话在干啥。Bedrock/Vertex/Foundry 等第三方 provider 上若没配 Haiku 模型,会回退到主模型——可以用 ANTHROPIC_DEFAULT_HAIKU_MODEL 指定。

后台会话的甜区是「需要 Claude 自己走很远的活」:

场景 为什么适合后台
排查 flaky 测试 要跑测试、读日志、改代码、再跑——十几轮
大型重构 跨多文件、多模块,主会话上下文会爆
跨 repo 调研 探索很多代码,结论摘要才值得回主会话
PR 全流程 实现 + 写测试 + 修 lint + 开 PR
长时间监控 /loop 持续轮询某个状态(详见 定时任务

把这种活甩后台,你腾出手干别的,需要输入时 agent view 会标黄提醒你。

后台会话默认在你的工作目录里改文件——多个会话同时改会冲突。要真正并行不互相踩,配 --worktree 给每个会话一个独立工作树:

Terminal window
claude --bg --worktree "重构 src/legacy"

或者用 agent view 里的 worktree 隔离机制:派发时让每个 agent 在独立 worktree 里跑。

后台会话不需要终端开着就能继续跑——一个独立的 supervisor 进程托管它们。你可以关 agent view、关 shell、开新会话,派出去的任务照样在跑。会话状态持久化到磁盘,跨自动更新和 supervisor 重启都活着;机器睡眠也不会丢,唤醒后从原处继续。彻底关机时运行中的会话会停,重启后可以 respawn 恢复。

后台会话是 Claude Code 的「分身」:--bg 派出去,agents 看全景,attach 进去对话,respawn 失败重拉。把长任务甩给后台,你腾出手干别的——这是吞吐量提升的关键一招。

下一篇看 Git Worktrees 并行,用 --worktree 给每个并行任务一个隔离的工作空间。🌳