会话与撤销
AtomCode 默认持久化每一次对话,允许你随时恢复、继续、清空或压缩。同时文件编辑会被记录进 file-history,一条 /undo 就能回滚上一轮的所有改动。
会话的生命周期
每次启动 atomcode 都会自动创建一个会话,会话包含:
- 完整消息历史(用户 prompt、AI 回复、工具调用)
- 关联的工作目录
- 关联的 provider / 模型
- Token 消耗统计
- 该会话中所有文件编辑的 file-history 快照
会话数据落盘在 ~/.atomcode/sessions/ 下,按项目(工作目录 hash)分组存储。
恢复会话
命令行继续上次
atomcode -c # 或 atomcode --continue
最常见的需求:接着昨天停下来的地方继续。
TUI 内切换会话
/resume
弹出会话选择器,按时间倒序显示当前项目的历史会话,可以快速跳到任一会话。每一条都带有最近的用户提问作为标题,便于识别。
新开一个干净会话
/session
在不切换工作目录的前提下开启全新的上下文。适合"刚刚那个任务已经收尾,我要开始完全不相关的另一件事"。
后台会话(/bg)
需要同时跟进多条任务、又不想丢失当前对话上下文?/bg 把当前会话挪到后台、打开一个全新前台,随时可以切回去。最多 16 个并行后台槽位。
| 命令 | 作用 |
|---|---|
/bg | 把当前会话送到后台,打开新的前台 |
/bg list(别名 /bg ls) | 列出所有后台会话:编号、ID、状态、创建时间、摘要 |
/bg <N> | 恢复第 N 号后台为前台(当前前台会被换下到后台) |
/bg drop <N> | 丢弃第 N 号后台会话 |
/bg help(别名 -h、--help) | 显示内置帮助 |
会话状态
/bg list 的"状态"列对应会话在后台时的运行情况:
- 运行中 —— 模型还在执行,工具调用 / 输出在后台继续推进
- 空闲 —— 模型轮次跑完,等你的下一条 prompt
- 已完成 —— 会话已经显式结束
- 已取消 / 错误 —— 被中断或后台运行时出错
所以 /bg 后台并不只是"挂起"——模型真的会在后台继续干活,切回来时直接拿到结果。
/background <任务> —— 一次性后台派发
如果你不想专门切换前后台、只是"顺手让它跑一下查个东西",用 /background 兼容入口:
/background 列出 src 下未使用的依赖
会在一个 /bg 槽位里启动一次性任务(默认配置为只读工具子集,不污染主对话上下文)。跑完后用 /bg list 看状态,/bg <N> 切过去读结果,/bg drop <N> 丢弃。
主前台正在调试 A 模块,模型一边改一边跑 cargo check(耗时)。这时想到要顺便重构 B 模块——直接 /bg 切到新前台开始 B;A 那边的 build 在后台跑完状态切到"已完成",/bg 1 切回去拿结果。
清空 vs 压缩 vs 新建
| 命令 | 保留历史 | 保留会话 ID | 何时使用 |
|---|---|---|---|
/clear | 否 | 是 | 想在同一会话里"重置对话",保留会话条目便于以后 /resume |
/compact | 部分(摘要) | 是 | 上下文快撑爆,但不想丢失之前的脉络 |
/session | 另起一段 | 否(新 ID) | 开始完全不相关的新任务 |
文件编辑与 /undo
AtomCode 的所有文件编辑工具(write_file、edit_file、search_replace 等)在写入前都会把原始内容快照到 file-history。执行:
/undo
会把上一轮 AI 执行的全部文件编辑一次性回滚到工具调用前的状态。
/undo 只回滚文件编辑,不回滚 bash 命令的副作用。比如模型执行了 rm -rf 或者把数据库 drop 了,/undo 帮不了你——那些操作本身在执行前应该已经触发过权限确认。
查看和清理成本
/cost
显示当前会话累计输入 / 输出 tokens。当数字逼近 provider 的 context_window 时:
- 用
/compact压缩历史,让早期消息变成摘要 - 或者直接
/session开新会话 - 不想用上下文窗口中的工具调用结果,可以让模型在 prompt 里明确"别再读那些大文件"
多项目工作流
AtomCode 的会话是按工作目录分组的。切换目录的推荐方式:
- 从命令行启动时用
-C指定 - 运行中用
/cd切换,default_workdir会自动落盘
下一步
- 项目指令文件 —— 用
.atomcode.md为每个项目固化上下文