终端里跑 AI Agent,最别扭的一件事是什么?
是单线程。
你让它跑一个长任务——比如写一段微博文案、跑一组 subagent 调研——前台就被锁死了。光标不闪。输入框灰着。你只能盯着进度条,等它跑完。
这是我用 auto-coder.chat 几个月以来一直忍着没说的一个痛点。直到 2026 年 5 月 6 日晚上,我把 /bg 命令家族合并到了 auto-coder.chat.lite 终端(commit 073ef0b8 "为V3终端新增多会话后台管理功能")。
从这一晚开始,一个终端窗口里可以同时挂多个 AI 会话了,长任务沉到后台,前台立刻空出来接新输入。
痛点:长任务一跑,前台就锁死了
先看一张图:

左边是 william-docs 项目的文件树,中间是 RunSubagents 在跑——三个 subagent 并行调研,准备给一篇文章配一段微博推文。这个任务从启动到出结果,少说 5-10 分钟。
这 5-10 分钟里我能做什么?
只能等。
我没法借这个会话再问点别的,没法在同一个终端里查个 B 站 EP 链接,更没法启动第二个调研任务并行跑。整个终端被一个长任务"霸占"了。
类似的体验你可能也熟悉——Linux shell 里跑一个前台程序,要么 Ctrl+Z 沉到后台再 bg,要么开个 tmux 窗口 detach 再 attach。
终端 AI 会话需要一个等价物。这就是 /bg。
/bg 是什么 —— 把当前会话一键沉到后台
/bg 干的事很简单:把当前活跃会话沉到后台,再给你一个干净的新前台。
比如我已经启动了那个写微博文案的长任务,现在想先去做别的事。我直接敲一行 /bg:

回车的瞬间,画面顶部出现两行提示:
New foreground session [6b63bf5c]—— 一个全新会话已经准备好接收输入Background: [#1] 12d1bd74 (state: running)—— 老任务被编号为 #1,状态 running,还在跑
新前台干净得像刚启动的终端:

我现在可以做任何事——查个 EP 链接、启动另一个 RunSubagents 任务、甚至再 /bg 一次让这个也沉到后台。原本那个长任务呢?继续在 #1 槽位里跑,fire-and-forget,前台不阻塞。
每个会话都有独立的 conversation_id 和独立的对话缓冲,互相不串扰。这一点很重要:你不会发现"原来那个写微博的会话被我现在的查询给污染了"。
/bg /list —— 看清你的后台到底在跑什么
后台多了之后,你得知道每个槽位里在跑什么。/bg /list 就是这件事:

一张五列的表:
- # —— 槽位编号,从 1 开始
- ID —— 会话短 ID
- State —— 当前状态
- Created —— 创建时间
- Summary —— 当时的用户输入预览(一眼回忆"这个槽里我塞的是什么")
状态有 5 种,用颜色编码:
- running(黄)—— 还在跑
- done(绿)—— 跑完了
- idle(灰)—— 空闲
- cancelled(灰)—— 被取消
- error(红)—— 出错了
后台会话最多挂 16 个(MAX_BACKGROUND_SESSIONS = 16)。这个数字我反复想过——少了不够用,多了容易把人自己埋了。16 是一个"够你管一上午的工作"但又"不至于失控"的中位数。超出 16 系统会拒绝再开。
/bg <N> —— 把任务召回前台
后台跑完了,怎么看产出?/bg <N> 把第 N 号槽位的会话拉回前台。
注意它不是单纯"切过去",而是双向交换:旧前台被沉到后台占一个新槽位,旧后台被提到前台。
比如我现在敲 /bg 1:

底下立刻出现三行报告:
Resumed session [#1] 12d1bd74 (state: done)—— 1 号槽位被召回,状态已经是 donePrevious active sent to bg [#1] 6b63bf5c (state: idle)—— 原本的空前台被沉到后台 1 号Summary: ...—— 召回会话的输入摘要
接着,召回会话的完整对话历史全部回来:

包括 RunSubagents 三个 subagent 跑出来的中间日志、最后写好的微博文案——一字不差。后台会话的输出是会持续累积的,不会因为你切走就丢。这意味着你随时切走、随时切回,每一次切回都像没离开过。
/bg /drop <N> —— 不要的就丢掉
不是每个后台会话都还需要。试错的、跑偏的、跑完已经看过结果的,都该清掉。
/bg /drop <N> 干这件事。
如果第 N 号还在 running,会先发一个取消信号让它结束,再释放槽位。槽位号空出来后,下次新建会话会复用。
简单粗暴,但你需要的就是这种简单粗暴。
实际跑通的工作流:写一段微博文案
光看命令很抽象,我演示一个 2026 年 5 月 6 日晚上自己亲手跑过的工作流。
那天我要给一篇产品文章配一段微博推文。流程是这样:
- 在 auto-coder.chat 前台启动一个 RunSubagents 任务,跑三个 subagent 并行调研:技能与流程、B 站合集风格、微博文案风格
- 调研需要 3-5 分钟。我敲
/bg,把它沉到后台 - 干净的新前台出现,我开始查 B 站 EP 链接,问了几个问题
- 大概 5 分钟后,敲
/bg /list看到 1 号槽位状态从 running 变成 done - 敲
/bg 1召回,看到完整的微博文案产出 - 把文案保存到 william-docs 项目里合适的目录
最终的画面是这样:

左边文件树多了一份"微博推荐文案.md"——这就是后台 1 号槽位跑出来的产物。中间是召回的对话上下文,右侧是 article.md 的预览。整个过程我没有离开过这个终端窗口,没有开第二个 tab,没有起 tmux。
这就是 /bg 想给你的体验。
为什么 /bg 和 Warp 特别 match(而且 Warp 现在开源了)
/bg 本质上是把终端从单线程改成了多任务调度台。Warp 这类现代终端,正好把这个能力放大了。它现在已经开源,和我们的 TUI 工作流非常贴。
先看这个场景:我在中间窗口跑着会话,随时可以用文件选择器定位目标文档,不需要离开终端:

再看完整视角:左侧是目录树,中间是 auto-coder.chat 会话,右侧是 Markdown/代码预览。整个过程支持鼠标点击切换和浏览,几乎就是"终端里的轻量 IDE"体验:

这就是我们说的 match:/bg 负责把任务并行起来,Warp 负责把并行任务可视化、可点击、可管理。两者叠在一起,你在一个窗口里就能同时查目录、看 Markdown、看代码、盯任务状态。
这不是一个小改动 —— 而是一种新的工作姿势
/bg 上线那一晚,我又陆续打磨了两个 commit:
4c81447d:把内部线程池的max_workers从 1 调到了MAX_BACKGROUND_SESSIONS + 4 = 20。原本只有 1 个 worker,多个后台任务会排队,第二个任务要等第一个跑完才能启动——这不就把"后台"又变回了"前台"。20 个执行通道之后,16 个会话各自有自己的运行槽,互不阻塞。bc9b8c4f:修了一个切换失败时状态可能不一致的小问题。上线后还在打磨,这是常态。
这两条加起来,才是 /bg 真正能用起来的样子。
意义在哪里?

终端 AI 不再是单线程。
你可以一个会话里跑长任务,另一个会话里做短查询,第三个会话里挂着一组 subagent 并行调研,第四个会话里写代码。它们之间互不阻塞,对话上下文互不串扰,状态各自独立。
如果你之前是"跑一个等一个"的节奏,现在节奏会变成——启动、沉后台、启动下一个、沉后台、列出来看进度、把跑完的召回。一个开发者在一个终端窗口里同时管 4-5 个 AI 任务,是可以做到的。
接近"AI 工位"那种感觉了。
怎么用 / 升级方法
/bg 已经合到 auto-coder.chat.lite 终端主线。三步用起来:
# 1. 升级 auto-coder
pip install -U auto-coder
# 2. 进入项目,启动 auto-coder.chat.lite 终端
cd your-project
auto-coder.chat.lite
# 3. 直接在终端里敲 /bg /help 看完整帮助
/bg /help 会列出全部子命令——/bg、/bg <N>、/bg /list、/bg /drop <N>、/bg /help。一页就能看完,5 分钟上手。
🎁 彩蛋:同期上线的另外几个顺手功能
和 /bg 一起上线的,还有几个小但特别顺手的命令。它们各自解决一个具体的小痛点,合起来用体验会更完整。
/sessions — 把所有对话摊开看
/sessions 不是只看后台任务,而是看所有持久化的对话会话。默认敲 /sessions 就等同于 /sessions /list,给你列个一清二楚:
/sessions
/sessions /current
/sessions /resume #2
/sessions /rename "重构 API 那条线"
#2 指的是列表里的序号,你也可以用会话 ID 或名字来切换。比起 /bg 管的是"正在跑的槽位",/sessions 管的是"你开过的每一段对话"。两者不是一个层面,但配合起来用特别顺——后台跑着任务,前台随时能翻出之前某段对话接着聊。
/fork — 在当前上下文上开一条岔路
文章写到一半、方案做到一半,突然想试另一条路,但又不想把当前上下文污染了?用 /fork:
/fork
/fork /name "另一种写法"
它会把当前会话完整复制一份,作为新会话,然后自动切过去。原会话原封不动留在那里。试错成本瞬间降到零。
/new — 干净地重新开始
想开始一个完全不同的任务?不需要退出终端重进,直接敲:
/new
它会清空当前上下文,给你一个干干净净的新会话。/clear 也能达到同样效果,是它的别名。
一句话总结这几个的关系:/bg 让任务并行,/sessions 让会话可找回,/fork 让想法可分叉,/new 让你随时清空重来。
最后
终端里管多个 AI 会话,不应该比管多个浏览器 Tab 更难。
我们希望每个 auto-coder.chat 用户都能像管理多个员工一样管理自己的多个 AI 任务——长任务交给后台跑,短任务自己处理,需要看进度时敲一下 /bg /list。一个终端窗口,一群"AI 同事",各司其职。
让 AI 在终端里真正并行起来。
auto-coder.chat:auto-coder.chat