首页 › tutorials › 上下文不丢:会话续跑入门

上下文不丢:Claude Code 会话续跑入门

概述

本教程面向已经装好 Claude Code、跑通过一次对话,却卡在"关掉终端、第二天回来怎么接着干"的零基础用户。你将学会用 --continue、--resume 一键续接历史会话,用 session ID 精确定位,用 /compact、/clear、/rewind、/branch 四招管理上下文,确保长任务不丢进度、不走偏方向。学完后你能在多天、多任务的真实开发中,把 Claude Code 当成一个"记得昨天聊到哪"的稳定搭档。

前置条件

关键认知:Claude Code 把每一次对话当作一个会话(session)保存到本地,按"项目目录"分组。只要目录不变、记录没清,你就能随时回到任意一次对话继续。理解这一点,本文的内容就顺理成章。


第一步:先看清"会话"到底是什么

很多新手以为关闭终端 = 对话清空,于是第二天只能把昨天的需求重新描述一遍——这是最大的误解。

Claude Code 在本地为每个项目目录维护一份会话历史,结构大致是:

~/.claude/projects/<目录路径转义>/
├── <session-id-1>.jsonl   # 一次完整对话的所有消息
├── <session-id-2>.jsonl
└── ...

预期结果:在任意项目目录执行 ls ~/.claude/projects/,能看到一串以路径命名的文件夹;进入对应文件夹能看到若干 .jsonl。只要这里有文件,就一定能续跑。

常见问题: - Q:换了一台电脑,会话还在吗? A:不在。会话存在本地磁盘,不随账号自动同步。要做迁移需手动拷贝 ~/.claude/projects/ 下对应目录。 - Q:会话占空间吗? A:单次几十 KB 到几 MB,长期累积可定期清理无用的 .jsonl。


第二步:--continue 一键续接最近的会话

最常用的续跑方式,只有一个字母。

cd ~/todo
claude -c          # 等价于 claude --continue

操作说明:-c(--continue 的缩写)会在当前目录里找到最近一次会话,直接带着完整上下文进入对话。你不用再解释项目背景,直接说"接着把昨天那个删除功能写完"即可。

预期结果:进入交互界面后,提示符下方会显示恢复的会话摘要(如"Resumed conversation"),Claude 立刻能接上之前的文件状态和讨论。

常见问题: - Q:报错说找不到会话? A:-c 严格依赖"当前目录"。必须在和昨天同一个目录下执行,跨目录是找不到的。用 pwd 确认当前路径。 - Q:我不想续最近的,想续更早的一次怎么办? A:用下一步的 --resume,它提供选择列表。


第三步:--resume 从会话列表里挑一个

当你同时推进多个任务、或想翻回头改几天前的某个分支时,-c 就不够用了。

cd ~/todo
claude -r          # 等价于 claude --resume

操作说明:-r 会弹出一个交互式会话选择器,列出当前目录下的历史会话。每一行通常显示:会话名称(若设置过)、否则显示对话摘要或第一句话,以及对应的 session ID 和时间。用方向键上下移动、回车选中。

如果你已经知道目标 session ID(比如从 .jsonl 文件名里复制来的),可以跳过选择器直接续:

claude --resume a1b2c3d4-5678-...

预期结果:屏幕上出现一列历史会话,选中后进入该会话,上下文与当时的最后一刻完全一致。

常见问题: - Q:列表里全是"第一句话",分不清哪个是哪个? A:养成给关键会话起名的习惯。Claude Code 支持为会话设置名称,设置过的会话在选择器里会优先显示名字而非摘要,一眼就能认出。 - Q:session ID 太长记不住? A:不必记全。复制 .jsonl 文件名粘贴即可;或在交互中靠摘要+时间定位。


第四步:实战——两天接力做完一个小工具

下面是一个完整、可复现的练习,把前面三步串起来。目标:用 Python 写一个命令行待办工具 todo.py,分两天完成。

第一天(在一个干净目录里开始):

mkdir -p ~/todo && cd ~/todo
claude

进入后输入:

帮我创建 todo.py,先实现 add 和 list 两个子命令:add 往 tasks.json 追加一条待办,list 打印所有待办。用标准库 json 即可。

Claude 会创建 todo.py 和示例 tasks.json。试跑:

python3 todo.py add "买菜"
python3 todo.py add "写周报"
python3 todo.py list

看到两条待办输出后,直接关闭终端(模拟下班)。

第二天(模拟续班):

cd ~/todo
claude -c

进入后输入:

接着昨天的 todo.py,新增 done 子命令,把指定序号的待办标记为完成;list 时已完成项前面打 [x],未完成打 [ ]。

Claude 会记得昨天用的是 tasks.json、字段结构、add/list 的实现方式,直接给出 done 实现,而不会推翻重写。这就体现了"上下文不丢"的价值。

预期结果:第二天 list 输出变成:

[ ] 买菜
[x] 写周报

关键体会:如果没有 -c,第二天 Claude 会把 todo.py 当全新项目对待,很可能换一套数据结构、改字段名,反而把昨天能跑的代码改坏。续跑的本质是"保持前后认知一致"。


第五步:上下文快满了——/compact 压缩而不丢失

随着对话变长,上下文窗口会被塞满。Claude Code 在接近上限时会提示你。这时有两个选择,其中更推荐 /compact。

在交互界面里直接输入:

/compact

操作说明:/compact 会把此前的对话压缩成一份摘要,替换掉冗长的原始消息,腾出上下文空间,同时保留关键决策(比如已确定的技术方案、改过的文件)。你也可以带一句指引,告诉它压缩时务必留下什么:

/compact 保留 todo.py 的命令行参数设计和已完成的 done 逻辑,丢弃中间的试错过程

预期结果:界面提示上下文已压缩,剩余 token 数明显回升,对话继续。Claude 仍记得项目核心约定,但"忘掉"了无关的来回试探。

与 /clear 的区别(重要):

命令 效果 适用场景
/compact 压缩摘要,保留要点 同一任务继续做,只是太长了
/clear 清空上下文,从零开始 换一个完全不相关的任务

常见问题: - Q:压缩后 Claude 把某个关键约定忘了? A:下次带更明确的指引,把"务必保留 X"写进 /compact 后面;或把重要约定写进项目记忆 CLAUDE.md,让它每次自动加载,不依赖上下文。 - Q:能不能自动压缩? A:接近上限时 Claude Code 会给出提示,建议手动执行以便你掌控保留内容。


第六步:走偏了——/rewind 回退到正确的一步

有时 Claude 走错方向(比如误删了一段你想保留的代码),或你给了个糟糕的指令。不要硬拽,直接回退。

在交互界面输入:

/rewind

操作说明:/rewind(部分版本也可用连按两次 Esc)会把对话回退到更早的某一步,撤销那一步之后的消息与文件改动,让你从干净的岔路口重新来过。你可以选择回退多少步。

预期结果:对话和被改坏的文件恢复到回退点的状态,你可以重新下达指令。

与 /clear 的区别:/clear 是"全清重来",/rewind 是"只倒带几步"。走偏一点用 /rewind,方向完全错了才用 /clear。

常见问题: - Q:文件已经被改坏了,/rewind 能救回吗? A:能。Claude Code 在会话里记录了文件改动轨迹,回退会一并恢复。但不依赖 Claude Code 的外部改动(你手动改的、或别的工具改的)不会自动回滚,重要文件仍建议用 git 兜底。


第七步:想试另一条路——/branch 分叉而不破坏原会话

做架构决策时常想"如果不这么做、换种方案会怎样"。直接在原会话里改,会把原来的方案搅乱。正确做法是分叉。

/branch

或启动时用 CLI 参数:

claude --fork

操作说明:/branch(也叫 fork session)会基于当前会话复制出一个新会话,原会话原封不动。你在分叉里大胆尝试方案 B,不满意就回原会话继续方案 A,互不影响。

预期结果:分叉后得到一个独立的新会话,选择器里能看到原会话和分叉会话并存。

常见问题: - Q:分叉会占用双倍空间吗? A:会话以 JSONL 记录,分叉是新的记录文件,体积可接受;试完不需要的分叉可删除对应 .jsonl。 - Q:2026 年的新工具 /btw 是什么? A:自 v2.1.72(2026 年 3 月)起,Claude Code 引入 /btw,用于"顺手补充一句旁白"(比如临时问一个无关小问题)而不污染主线上下文。它和 /branch 同属"上下文卫生(context hygiene)"工具族,适合在意上下文纯净度的进阶用户。


第八步:会话生命周期全流程

把上面八招放到一张图里,你就拥有了完整的"上下文不丢"心智模型:

flowchart TD
    A[启动 claude] --> B{带参数?}
    B -->|claude 无参数| C[全新会话]
    B -->|claude -c| D[续最近会话]
    B -->|claude -r| E[选择器挑历史会话]
    B -->|claude -r ID| F[直续指定 session]

    C --> G[正常对话]
    D --> G
    E --> G
    F --> G

    G --> H{遇到问题?}
    H -->|上下文将满| I["/compact 压缩摘要"]
    H -->|走偏几步| J["/rewind 倒带"]
    H -->|想试方案B| K["/branch 分叉"]
    H -->|换不相关任务| L["/clear 全清重来"]
    H -->|顺利推进| G

    I --> G
    J --> G
    K --> M[独立新会话继续探索]
    L --> C

    G --> N[关闭终端]
    N --> O[第二天: cd 同目录 + claude -c]
    O --> D

记住这张图的三个出口:满了用 compact、错了用 rewind、换路用 branch、换事用 clear,外加关机用 continue、找旧的用 resume,六招即覆盖 95% 的日常场景。


常见误区速查表

误区 正解
关掉终端对话就没了 会话存本地,cd 回原目录 claude -c 即可续
第二天重新描述需求 用 -c/-r,让 Claude 接着昨天的状态干
上下文满了直接 /clear 多数情况该用 /compact,保留要点
文件被改坏只能手抄恢复 先试 /rewind 倒带回退
试新方案在原会话里乱改 用 /branch 分叉,保护主线
不给会话起名,列表全是第一句话 给关键会话命名,便于日后辨认

实战案例验收标准

回到第四步的 todo.py 练习,用以下清单自测你是否真正掌握:

  1. 能用 claude -r 在选择器里找到第一天的会话并选中。
  2. 能用 claude -c 续接并让 Claude 记得 tasks.json 的结构。
  3. 在一个长会话中触发 /compact,并验证压缩后 Claude 仍记得命令行参数设计。
  4. 故意让 Claude 改坏 todo.py,用 /rewind 恢复。
  5. 用 /branch 开一个分叉,尝试把存储从 JSON 换成 SQLite,验证原会话未被影响。

全部跑通,说明你已从"会启动 Claude Code"升级到"会管理 Claude Code 的记忆"。


延伸阅读

训练营适用性评估

参考来源

  1. Manage sessions — Claude Code Docs — Anthropic 官方会话管理文档,覆盖 --continue、--resume、session ID 与分叉的权威定义
  2. Claude Code Session Management: /clear, /compact, and /rewind Explained — 详解四条核心上下文命令的区别与使用时机
  3. How to resume, search, and manage Claude Code conversations — 实操向指南,含 --resume 选择器与会话历史检索技巧
  4. Mastering Claude Code's /btw, /fork, and /rewind: The Context Hygiene Toolkit — 解读 2026 年 3 月 v2.1.72 引入的 /btw 与分叉、回退工具族
  5. Claude Code 2.1 Cheatsheet (Updated 2026) — 2026 年 6 月更新的命令速查表,含全部斜杠命令与 CLI 参数对照

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入