会话与撤销
AtomCode 默认持久化每一次对话,允许你随时恢复、继续、清空或压缩。同时文件编辑会被记录进 file-history,一条 /undo 就能回滚上一轮的所有改动。
会话的生命周期
每次启动 atomcode 都会自动创建一个会话,会话包含:
- 完整消息历史(用户 prompt、AI 回复、工具调用)
- 关联的工作目录
- 关联的 provider / 模型
- Token 消耗统计
- 该会话中所有文件编辑的 file-history 快照
会话数据落盘在 ~/.atomcode/sessions/ 下,按项目(工作目录 hash)分组存储。
恢复会话
命令行继续上次
atomcode -c # 或 atomcode --continue
最常见的需求:接着昨天停下来的地方继续。
TUI 内切换会话
/resume
弹出会话选择器,按时间倒序显示当前项目的历史会话,可以快速跳到任一会话。每一条都带有最近的用户提问作为标题,便于识别。
新开一个干净会话
/session
在不切换工作目录的前提下开启全新的上下文。适合"刚刚那个任务已经收尾,我要开始完全不相关的另一件事"。
清空 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会自动落盘 - daemon 的
POST /cd端点也可以触发切换
下一步
- 项目指令文件 —— 用
.atomcode.md为每个项目固化上下文 - Headless 与 Daemon —— 在 CI 或脚本中管理会话