仓库 →

会话与撤销

AtomCode 默认持久化每一次对话,允许你随时恢复、继续、清空或压缩。一条 /undo 就能把对话记忆回退到此前任意一轮。

会话的生命周期

每次启动 atomcode 都会自动创建一个会话,会话包含:

会话数据落盘在 ~/.atomcode/sessions/ 下,按项目(工作目录 hash)分组存储。

恢复会话

命令行继续上次

atomcode -c        # 或 atomcode --continue

最常见的需求:接着昨天停下来的地方继续。

TUI 内切换会话

/resume

弹出会话选择器,按时间倒序显示当前项目的历史会话,可以快速跳到任一会话。每一条都带有最近的用户提问作为标题,便于识别。

回合运行中也可在 /resume 列表选择其他会话,或执行 /resume <id>:当前会话自动放到后台继续运行,目标会话准备成功后才切换画面;打开失败时保持原会话。切回本进程的后台会话会复用原 runtime,不重复启动任务。后台列表可用 /bg list 查看,最多 16 个后台槽位。

等待审批或交互回答、重配置期间以及开启 WebUI 共享同步时暂不允许切换。后台槽位已满时,先用 /bg drop <N> 停止不再需要的会话。该能力属于 TUI,不代表 WebUI 已支持运行中切换。

新开一个干净会话

/session

在不切换工作目录的前提下开启全新的上下文。适合"刚刚那个任务已经收尾,我要开始完全不相关的另一件事"。

后台会话(/background · /bg)

需要同时跟进多条任务、又不想丢失当前对话上下文?/background(别名 /bg,二者等价)把当前会话挪到后台、打开一个全新前台,随时可以切回去。最多 16 个并行后台槽位。

命令作用
/bg把当前会话送到后台,打开新的前台
/background <任务>(/bg <任务> 同)不切换前后台,直接在一个后台槽位里启动一次性任务(见下文)
/bg list(别名 /bg ls)列出所有后台会话:编号、ID、状态、创建时间、摘要
/bg <N>恢复第 N 号后台为前台(当前前台会被换下到后台)
/bg drop <N>丢弃第 N 号后台会话
/bg help(别名 -h、--help)显示内置帮助

会话状态

/bg list 的"状态"列对应会话在后台时的运行情况:

所以 /bg 后台并不只是"挂起"——模型真的会在后台继续干活,切回来时直接拿到结果。

/background <任务> —— 一次性后台派发

如果你不想专门切换前后台、只是"顺手让它跑一下查个东西",直接带任务即可(两个名字等价)——/background <任务> 或 /bg <任务>:

/background 列出 src 下未使用的依赖

会在一个 /bg 槽位里启动一次性任务(默认配置为只读工具子集,不污染主对话上下文)。跑完后用 /bg list 看状态,/bg <N> 切过去读结果,/bg drop <N> 丢弃。

典型场景

主前台正在调试 A 模块,模型一边改一边跑 cargo check(耗时)。这时想到要顺便重构 B 模块——直接 /bg 切到新前台开始 B;A 那边的 build 在后台跑完状态切到"已完成",/bg 1 切回去拿结果。

后台生命周期与多进程

后台会话依赖当前 AtomCode 进程;退出时会停止其 runtime,不是脱离进程的常驻任务。会话记录保留后可恢复,但不保证原工具进程继续执行。

无需安装两份 AtomCode:可在多个终端启动同一个可执行文件,分别使用不同会话。同一 home、同一项目的不同会话可以并行;同一存储 bucket 中的同一会话由排他租约保护,不能被两个 runtime 同时写入。交互恢复遇到其他进程占用时可能创建分支副本,请留意提示。配置文件写入使用跨进程锁和原子替换,但配置仍然共享。

不同 ATOMCODE_HOME 可隔离配置与会话存储。会话锁和 home 隔离均不保护项目工作区;多个 agent 并行修改代码时建议使用独立 Git worktree,避免文件或 Git 操作互相覆盖。

清空 vs 压缩 vs 新建

命令保留历史保留会话 ID何时使用
/clear否是想在同一会话里"重置对话",保留会话条目便于以后 /resume
/compact部分(摘要)是上下文快撑爆,但不想丢失之前的脉络
/session另起一段否(新 ID)开始完全不相关的新任务

对话记忆回退 /undo

/undo 把对话记忆回退到某一轮之前,删除那一轮及其后的全部消息,并把那一轮你输入的 prompt 还原回输入框,方便你修改后重发。

/undo      # 回退最后一轮
/undo N    # 回退到第 N 轮(N 从 1 开始,只计你真实输入的轮次)

回退后,scrollback 里被删轮次的分隔线会一并清掉,会话也会立即落盘——下次 /resume 看到的就是回退后的状态。

注意边界

/undo 只回滚对话记忆,不会恢复磁盘上的文件。如果那几轮里 AI 改过代码,这些改动仍保留在工作区——需要还原请用 /diff 查看后手动处理,或借助 git。当前回合进行中时无法 /undo,请先按 Esc 取消。

用 /rewind 安全回退

/rewind 会列出最近的用户提示,并让你选择回退范围:仅对话、仅代码,或对话与代码。代码回退需要 Git 工作区;执行前会显示确认界面。只想撤销最近一轮对话时仍可使用更轻量的 /undo。

异常退出后的恢复

回合进行中,AtomCode 会保存临时进度。终端异常退出或网络中断后,使用 /resume 会尽量恢复最后一条用户输入、已经生成的回复和工具调用进度,而不是只回到上一个完整回合。待确认的权限和问题不会被自动批准。

查看和控制 Token 用量

/cost

显示当前会话累计输入 / 输出 tokens。当数字逼近 provider 的 context_window 时:

多项目工作流

AtomCode 的会话是按工作目录分组的。切换目录的推荐方式:

下一步