文档
推荐给好友,福利领不停!好友同步开通最高 1000 万词元额度 · 后续消费分佣最高 30%。
+50万 Token生成链接

会话管理

每次启动 CrabCode 是一个会话。/resume 恢复、/rewind 回滚到任意一步、/rename 改名、/export 导出、-c/-r 直接从命令行接上。

是什么

每次跑 crabcode 启动都开一个会话(session)——对话历史、工作目录、模型选择、文件改动轨迹全在这一个会话里。

会话以 JSONL 格式存盘,关掉终端不丢;下次能挑回来继续接着聊。CrabCode 把会话按"项目"分组——同一个 git 仓的所有会话归到一组,方便挑回。

何时会用到

  • 终端被关 / 系统重启了,要接上昨天的活
  • 一通操作走错了路,想回到三步之前重来
  • 想把对话导出当文档 / 给同事看
  • 同一个项目里堆了几十个会话,想搜出"上周改 auth 的那次"

存储位置

会话存在配置目录下的 projects/

shell
~/.crabcode/projects/<项目路径 sanitize 后>/<session-id>.jsonl
~/.crabcode/projects/<项目路径 sanitize 后>/<session-id>.jsonl
  • <项目路径 sanitize 后> 是你启动 CrabCode 时所在目录的安全化文件名
  • <session-id> 是 UUID,每个会话独立
  • 文件是 JSONL(每行一个 JSON 事件),可以直接 grep / cat

切换工作目录 = 切换"项目"分组。同账号在不同项目的会话之间互不可见。

/resume —— 挑一个会话接上

/resume(别名 /continue)打开会话挑选器:

  • 列出当前项目所有会话,按修改时间倒序
  • 显示第一条用户输入作为预览
  • 支持模糊搜索(按关键字过滤)
  • 选中后整段历史读回、继续

带参数版:

shell
/resume <session-id>        # 直接指定 ID 恢复
/resume <搜索>            # 用搜索词预填挑选器
/resume <session-id>        # 直接指定 ID 恢复
/resume <搜索>            # 用搜索词预填挑选器

CLI 启动时直接恢复

不用进 TUI 也能恢复,这两个 flag 在命令行就能用(src/main.tsx:435-441):

bash
crabcode -c                  # 接上当前目录最近一个会话
crabcode --continue          # 同上(长写法)
crabcode -r                  # 打开会话挑选器(互动模式)
crabcode -r <session-id>     # 指定 ID 恢复
crabcode -r "fix auth bug"   # 带搜索词进挑选器
crabcode -c                  # 接上当前目录最近一个会话
crabcode --continue          # 同上(长写法)
crabcode -r                  # 打开会话挑选器(互动模式)
crabcode -r <session-id>     # 指定 ID 恢复
crabcode -r "fix auth bug"   # 带搜索词进挑选器

-c / -r 适合脚本化场景:CI 接力上次跑、IDE 集成里接上前一个上下文。

--fork-session

bash
crabcode -r <id> --fork-session
crabcode -r <id> --fork-session

--fork-session 在恢复的瞬间分叉出一个新的 session id——原会话不动,新会话从同一时点开始独立演化。适合"想拿这次结果当起点试两条路"。

/rewind —— 回滚到任意一步

/rewind(别名 /checkpoint)打开消息选择器,让你回到对话里某一条用户消息。回滚时可以选:

选项效果
both对话回滚 + 代码恢复(撤回那之后所有文件改动)
conversation只回滚对话,文件保持当前状态
code只恢复代码,对话历史不动
summarize把那一点之前的对话压成摘要,继续往后
summarize_up_to压缩到选中位置
nevermind取消

代码恢复靠 CrabCode 内部维护的"文件历史"——它在每次编辑前快照原文件,回滚时按记录写回。这意味着回滚是安全的,不需要 git 也能撤销,但前提是改动是通过 CrabCode 工具做的。

/rename —— 给会话起名

shell
/rename <name>     # 显式起名
/rename            # 不传参 → 用小模型基于对话内容自动起名
/rename <name>     # 显式起名
/rename            # 不传参 → 用小模型基于对话内容自动起名

起名后在 /resume 挑选器里直接显示,找起来比"第一条 prompt 截 50 字"友好。

/export —— 导出对话

shell
/export                # 弹对话框,让你选文件名 + 路径
/export <filename>     # 直接写到当前目录 <filename>.txt
/export                # 弹对话框,让你选文件名 + 路径
/export <filename>     # 直接写到当前目录 <filename>.txt

导出格式是纯文本——把整段对话渲染成可读的转录,含工具调用与输出。默认文件名是 <时间戳>-<首条 prompt 摘要>.txt

适合:

  • 把调试过程贴给同事
  • 归档复盘
  • 把 CrabCode 跟你的来回喂给另一个模型当上下文

隔离

  • 跨账号:登不同账号 = 看不到对方的会话(每个账号独立的 transcript 目录)
  • 跨项目:默认只列当前项目的会话;要全局搜索从 /resume 挑选器里选"all projects"
  • 跨设备:本地存储,不会自动云同步——会话只在你存的那台机器上

排错

现象检查
/resume 看不到旧会话你启动 CrabCode 的目录是否变了?项目 sanitize 后路径不同
会话挑选器太慢旧会话堆积过多;可手动归档 ~/.crabcode/projects/<old>/
/rewind 找不到要回的那条消息太旧被压缩 / 滚出窗口;用 /export 找出来后手动复刻
多设备想同步用 git / rsync 自己同步 ~/.crabcode/projects/(自担风险)

相关