---
description: 从 ~/.claude/session-data/ 加载最新的会话文件，并从上次会话结束的地方恢复工作，保留完整上下文。
---

# 恢复会话命令

加载最后保存的会话状态，并在开始任何工作前完全熟悉情况。
此命令是 `/save-session` 的对应命令。

## 何时使用

* 开始新会话以继续前一天的工作时
* 因上下文限制而开始全新会话后
* 当从其他来源移交会话文件时（只需提供文件路径）
* 任何拥有会话文件并希望 Claude 在继续前完全吸收其内容的时候

## 用法

```
/resume-session                                                      # 加载 ~/.claude/session-data/ 目录下最新的文件
/resume-session 2024-01-15                                           # 加载该日期最新的会话
/resume-session ~/.claude/sessions/2024-01-15-session.tmp           # 加载特定的旧格式文件
/resume-session ~/.claude/session-data/2024-01-15-abc123de-session.tmp  # 加载当前短ID格式的会话文件
```

## 流程

### 步骤 1：查找会话文件

如果未提供参数：

1. 检查 `~/.claude/session-data/`
2. 选择最近修改的 `*-session.tmp` 文件
3. 如果文件夹不存在或没有匹配的文件，告知用户：
   ```
   在 ~/.claude/session-data/ 中未找到会话文件。
   请在会话结束时运行 /save-session 来创建一个。
   ```
   然后停止。

如果提供了参数：

* 如果看起来像日期 (`YYYY-MM-DD`)，则先在 `~/.claude/session-data/` 中搜索，再回退到旧的 `~/.claude/sessions/`，匹配
  `YYYY-MM-DD-session.tmp`（旧格式）或 `YYYY-MM-DD-<shortid>-session.tmp`（当前格式）的文件，
  并加载该日期最近修改的版本
* 如果看起来像文件路径，则直接读取该文件
* 如果未找到，清晰报告并停止

### 步骤 2：读取整个会话文件

读取完整的文件。暂时不要总结。

### 步骤 3：确认理解

使用以下确切格式回复一份结构化简报：

```
会话已加载：[文件的实际解析路径]
════════════════════════════════════════════════

项目：[文件中的项目名称/主题]

我们正在构建什么：
[用你自己的话总结 2-3 句话]

当前状态：
PASS: 已完成：[数量] 项已确认
 进行中：[列出进行中的文件]
 未开始：[列出计划但未开始的文件]

不应重试的内容：
[列出每个失败的方法及其原因——此部分至关重要]

待解决问题/阻碍：
[列出任何阻碍或未解答的问题]

下一步：
[如果文件中已定义，则列出确切下一步]
[如果未定义："未定义下一步——建议在开始前共同回顾'尚未尝试的方法'"]

════════════════════════════════════════════════
准备就绪。您希望做什么？
```

### 步骤 4：等待用户

请**不要**自动开始工作。请**不要**触碰任何文件。等待用户指示下一步做什么。

如果会话文件中明确定义了下一步，并且用户说"继续"或"是"或类似内容 — 则执行该确切步骤。

如果未定义下一步 — 询问用户从哪里开始，并可选择性地从"尚未尝试的内容"部分提出建议。

***

## 边界情况

**同一日期有多个会话** (`2024-01-15-session.tmp`, `2024-01-15-abc123de-session.tmp`)：
加载该日期最近修改的匹配文件，无论其使用的是旧的无ID格式还是当前的短ID格式。

**会话文件引用了已不存在的文件：**
在简报中注明 — "WARNING: 会话中引用了 `path/to/file.ts`，但在磁盘上未找到。"

**会话文件来自超过7天前：**
注明时间间隔 — "WARNING: 此会话来自 N 天前（阈值：7天）。情况可能已发生变化。" — 然后正常继续。

**用户直接提供了文件路径（例如，从队友处转发而来）：**
读取它并遵循相同的简报流程 — 无论来源如何，格式都是相同的。

**会话文件为空或格式错误：**
报告："找到会话文件，但似乎为空或无法读取。您可能需要使用 /save-session 创建一个新的。"

***

## 示例输出

```
SESSION LOADED: /Users/you/.claude/session-data/2024-01-15-abc123de-session.tmp
════════════════════════════════════════════════

项目：my-app — JWT 认证

构建目标：
使用存储在 httpOnly cookie 中的 JWT 令牌实现用户认证。
注册和登录端点已部分完成。通过中间件进行路由保护尚未开始。

当前状态：
PASS: 已完成：3 项（注册端点、JWT 生成、密码哈希）
 进行中：app/api/auth/login/route.ts（令牌有效，但 cookie 尚未设置）
 未开始：middleware.ts、app/login/page.tsx

需避免的事项：
FAIL: Next-Auth — 与自定义 Prisma 适配器冲突，每次请求均抛出适配器错误
FAIL: localStorage 存储 JWT — 导致 SSR 水合不匹配，与 Next.js 不兼容

待解决问题 / 阻碍：
- cookies().set() 在路由处理器中是否有效，还是仅适用于服务器操作？

下一步：
在 app/api/auth/login/route.ts 中 — 使用以下方式将 JWT 设置为 httpOnly cookie：
cookies().set('token', jwt, { httpOnly: true, secure: true, sameSite: 'strict' })
随后使用 Postman 测试响应中是否包含 Set-Cookie 标头。

════════════════════════════════════════════════
准备继续。您希望做什么？
```

***

## 注意事项

* 加载时切勿修改会话文件 — 它是一个只读的历史记录
* 简报格式是固定的 — 即使某些部分为空，也不要跳过
* "不应重试的内容"必须始终显示，即使它只是说"无" — 这太重要了，不容遗漏
* 恢复后，用户可能希望在新的会话结束时再次运行 `/save-session`，以创建一个新的带日期文件
