1. 会话断了别慌,Claude Code 本来就能接着聊
用 Claude Code 写代码的人大概都遇到过这种场景:一个重构任务跑到一半,终端窗口不小心被关了,或者网络抖了一下 SSH 掉线,再或者自己手滑按了 Ctrl+C。第一反应通常是「完了,上下文没了,得从头再讲一遍需求」。其实不用这么悲观,Claude Code 本身带会话记忆机制,中断之后是可以恢复的,关键就在于claude --continue和claude --resume这两条命令怎么用、什么时候用哪条。
这篇就围绕「会话意外中断后的恢复」这个场景展开。我会先讲清楚这两条命令的差异和适用时机,然后给出一份可复制的settings.json配置骨架,把 TaoToken 的统一 Key 和 API 通道接进去,最后一步步验证恢复动作是否真的把中断前的上下文找回来了。适合已经在终端里用 Claude Code 做日常开发、但还没系统整理过会话恢复流程的同学。整个流程不需要你记住复杂的会话 ID 规则,配置一次,后面基本就是两条命令的事。
需要先说明一点:Claude Code 的会话恢复依赖本地保存的会话记录,所以恢复的前提是你还在同一台机器、同一个用户目录下操作。换机器、清空了~/.claude目录,那记录就没了,这点后面排障部分会再提。
2. 先把 TaoToken 的 Key 和通道准备好
在讲恢复命令之前,得先把「模型从哪来」这件事定下来。Claude Code 默认走 Anthropic 官方通道,但很多团队和个人开发者会用统一的 API 网关来管理 Key、做用量统计和成本控制。TaoToken 就是这样一个统一入口,一个 Key 可以对接多个模型通道,Claude Code 通过配置ANTHROPIC_BASE_URL和ANTHROPIC_AUTH_TOKEN就能接进来。
为什么恢复会话这件事要和统一 Key 绑在一起讲?因为会话恢复的本质是「用同一个身份、同一个通道,把之前的上下文重新加载」。如果你的 Key 或 base URL 在中途变了,恢复出来的会话可能连不上模型,或者报鉴权错误,看起来像是「恢复失败」,其实是通道配置不一致。所以先把通道固定下来,恢复才有稳定的前提。
你需要准备的东西不多:一个 TaoToken 账号、一个 API Key。Key 在控制台的 API Keys 页面创建,创建后只显示一次,记得当场复制保存。接入文档里有各客户端的详细配置说明,Claude Code 属于 Anthropic 兼容通道这一类。
注意:API Key 属于敏感凭证,不要写进会提交到 Git 仓库的文件里。下面配置里我会用占位符,你替换成自己的真实 Key。
3. 可复制的 settings.json 配置骨架
Claude Code 的配置分两层:一层是环境变量(决定走哪个通道、用哪个 Key),一层是settings.json(决定权限、模型等行为)。恢复会话能不能成功,主要看环境变量这层是否稳定。
3.1 环境变量:固定通道与 Key
在~/.zshrc或~/.bashrc里加上这几行,然后source一下:
# TaoToken 统一通道接入 Claude Code export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_AUTH_TOKEN="sk-你的TaoToken密钥"这里ANTHROPIC_BASE_URL指向 TaoToken 的 API 地址,ANTHROPIC_AUTH_TOKEN填你在控制台创建的 Key。两行都固定下来之后,无论你开多少个终端、恢复多少次会话,走的都是同一条通道,不会出现「这次能恢复、下次报 401」的诡异情况。
3.2 settings.json:权限与模型骨架
Claude Code 的用户级配置放在~/.claude/settings.json。下面是一份可以直接抄的骨架,重点是把权限模式设成可控范围,避免恢复会话后它自动执行危险命令:
{ "permissions": { "allow": [ "Read", "Glob", "Grep" ], "deny": [ "Bash(rm -rf:*)", "Bash(git push:*)" ] }, "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_AUTH_TOKEN": "sk-你的TaoToken密钥" } }把环境变量同时写进settings.json的env字段,好处是即使你在一个没加载 shell 配置的环境里启动 Claude Code,通道信息也不会丢。permissions.allow里先放开只读类工具,deny里挡掉删除和推送这类高风险操作,恢复会话后它想动手也得先问你。
3.3 会话记录存在哪
Claude Code 的会话记录默认保存在~/.claude/projects/下面,按项目路径分目录。每个会话是一个 JSONL 文件,文件名就是会话 ID。--continue和--resume本质上就是去这个目录里找对应的记录文件。你可以先看一眼:
ls -lt ~/.claude/projects/ | head按时间倒序排列,最上面那个目录就是你最近活跃的项目。进去之后能看到一串.jsonl文件,最新的那个通常就是你要恢复的会话。
4. 两条恢复命令的差异与验证动作
配置就位后,进入正题。claude --continue和claude --resume解决的是同一个问题的两个层次:前者是「接着最近一次」,后者是「挑一个指定的」。
4.1 claude --continue:恢复最近一次会话
当你是被动中断——网络掉线、终端被关、进程被系统杀掉——直接在当前项目目录下敲:
claude --continue它会自动找到该项目下最近一次会话记录,把上下文加载回来,你接着往下说就行。实测下来,恢复后它还记得之前改过哪些文件、讨论到哪一步,不需要你重新描述需求。
验证是否恢复成功,可以问一句和上文强相关的话,比如「刚才我们改的那个函数现在是什么状态」,如果它能准确答出来,说明上下文确实回来了。
4.2 claude --resume:按编号恢复指定会话
当你是主动中断——自己按了 Ctrl+C——Claude Code 退出时会打印一个会话编号,类似Session ID: 3f8a...。这时候用:
claude --resume 3f8a...把编号替换成实际打印的那串。它就会精确加载那一次会话,而不是最近一次。这个在你有多个并行任务、想回到更早某个会话时特别有用。
如果你不记得编号,也可以直接运行claude --resume,不带参数时它会列出可选的会话让你挑:
claude --resume终端会显示一个会话列表,包含时间和摘要,用方向键选一个回车即可。
4.3 两条命令的对照
| 命令 | 适用时机 | 是否需要编号 | 恢复目标 |
|---|---|---|---|
claude --continue | 被动中断、只想接着最近一次 | 否 | 最近一次会话 |
claude --resume <id> | 主动中断、要回到指定会话 | 是 | 指定编号会话 |
claude --resume | 不确定编号、想手动挑 | 否 | 列表中选择 |
4.4 恢复后的验证请求
恢复成功不代表通道也正常。建议恢复后立刻发一个轻量请求验证链路,比如让它读一个文件:
# 在 Claude Code 交互界面里输入 读取 package.json 并告诉我项目名如果它能正常调用 Read 工具并返回内容,说明会话上下文和 TaoToken 通道都是通的。如果这里报鉴权错误,问题在 Key 或 base URL,不在会话恢复本身。
5. 本篇常见错排查
恢复会话时踩的坑,大多集中在「记录找不到」和「通道连不上」两类。下面按现象列一下。
现象一:claude --continue提示没有可恢复的会话。先确认你在正确的项目目录下执行。会话记录是按项目路径存的,你在 A 目录中断,跑到 B 目录敲--continue,它自然找不到。cd回原目录再试。
现象二:--resume报编号不存在。编号是区分大小写的,复制时别漏字符。如果确实找不到,用不带参数的claude --resume看列表里有没有。
现象三:恢复后一发消息就报 401 或鉴权失败。这是通道问题,不是会话问题。检查ANTHROPIC_AUTH_TOKEN是否过期、ANTHROPIC_BASE_URL是否写成了带路径错误的地址。TaoToken 的 API 地址是https://taotoken.net/api,不要多加斜杠或后缀。
现象四:恢复出来的上下文不完整。会话记录是流式写入的,如果中断发生在写入过程中,最后几条可能没落盘。这种情况只能恢复到上一个完整节点,属于正常损耗,重要节点建议手动在CLAUDE.md里记一笔。
现象五:换了机器就恢复不了。会话记录在本地~/.claude/projects/,不跟着账号走。换机器要么手动拷贝这个目录,要么接受重新开始。
提示:如果你经常需要长时间跑任务,可以用 tmux 把 Claude Code 挂在后台会话里,这样即使本地终端断开,进程还在,回来
tmux attach就能接着看,比事后恢复更省事。
6. 把恢复流程固定成习惯
配置和命令都讲完了,最后说下怎么把它变成日常习惯。我的做法是:环境变量和settings.json一次性配好,之后每个项目目录下都保持claude --continue作为默认恢复入口,只有在明确要回到某个更早会话时才用--resume加编号。这样大部分中断场景一条命令就解决了。
如果你还没配 TaoToken 的 Key,先去控制台创建一个,接入文档里有 Claude Code 的完整配置示例,照着填就行。Key 建好之后,把上面那份settings.json骨架里的占位符替换掉,重启终端,然后随便找个项目跑一次claude --continue验证链路。跑通之后,会话中断这件事基本就不再是问题了。
对于需要长期跑编码任务、经常开多个 Agent 会话的同学,可以了解一下 Coding Plan,它在统一 Key 的基础上做了会话和用量的集中管理,配合--resume用起来会更顺。