5.7 `claude -r "<session-id>" "query"` - 按 ID 恢复会话

4 分钟阅读

claude -r "<session-id>" "query" 命令允许您按会话 ID 恢复特定的对话会话,并在恢复的上下文中执行查询。

命令语法#

bash
claude -r "<session-id>" "query" [选项]

功能描述#

-r--resume)标志允许您:

  • 按会话 ID 精确恢复特定会话
  • 在恢复的会话上下文中执行查询
  • 保持对话的连续性和上下文
  • 精确控制要恢复的会话

使用示例#

基本用法#

bash
claude -r "abc123" "继续这个任务"

恢复 ID 为 "abc123" 的会话,并继续执行任务。

代码审查#

bash
claude -r "def456" "审查最新的代码变更"

恢复特定会话,并在该上下文中审查代码变更。

项目分析#

bash
claude -r "ghi789" "分析这个项目的性能"

恢复特定会话,并在该上下文中分析项目性能。

结合其他选项#

bash
claude -r "abc123" "完成任务" --model claude-4-opus

恢复指定会话,使用特定模型完成任务。

bash
claude -r "def456" "检查状态" --output-format json

恢复指定会话,以 JSON 格式输出状态检查结果。

获取会话 ID#

方法1:查看会话目录#

bash
ls -la ~/.claude/projects/

这会列出所有项目,名称格式如 -User-xxx-someproject. 接下来,进入对应的项目目录:

bash
cd ~/.claude/projects/<project_dir>/ ls -al

这会列出所有保存的会话,通过文件名,我们就可以找出会话 ID。

方法2:使用交互式恢复#

bash
claude --resume

这会显示可用会话列表,包括会话 ID 和描述。

方法3: 查看历史记录文件#

bash
vi ~/.claude/history.jsonl

这会打印出历史会话,里面包含了sessionId,使用该id就可以恢复会话。

会话 ID 格式#

会话 ID 通常是:

  • 短字符串:如 "abc123"、"def456"
  • 唯一标识:每个会话有唯一的 ID
  • 可读性:某些情况下可能包含描述性信息

使用场景#

1. 精确恢复#

bash
# 知道要恢复的会话 ID claude -r "abc123" "继续工作"

精确恢复指定的会话。

2. 多会话管理#

bash
# 在多个会话之间切换 claude -r "abc123" "任务1" claude -r "def456" "任务2" claude -r "ghi789" "任务3"

在不同的会话之间切换工作。

4. 长期项目#

bash
# 恢复长期项目的会话 claude -r "project-alpha-session" "继续项目 Alpha"

恢复长期项目的会话,保持项目上下文。

会话选择策略#

选择最近会话#

如果您不确定要恢复哪个会话,可以:

  1. 查看会话列表
  2. 按时间排序
  3. 选择最近的会话

选择相关会话#

根据当前任务选择最相关的会话:

  • 查看会话描述
  • 检查会话内容
  • 选择最匹配的会话

选择活跃会话#

优先选择最近活跃的会话:

  • 查看最后修改时间
  • 选择最近更新的会话
  • 确保上下文是最新的

注意事项#

  1. 会话存在:确保指定的会话 ID 存在
  2. 会话位置-r 会从当前目录的会话目录查找会话
  3. 上下文相关:查询应该与恢复的会话相关
  4. 会话更新:新的查询会更新恢复的会话
  5. ID 大小写:会话 ID 可能区分大小写

与其他恢复命令的对比#

命令选择方式精确性适用场景
claude -c自动(最近)快速继续最近的工作
claude --resume交互选择浏览并选择会话
claude -r "id"指定 ID精确恢复特定会话

最佳实践#

  1. 记录会话 ID:重要的会话 ID 可以记录下来,便于后续恢复
  2. 描述性会话:在会话中使用描述性的查询,便于识别
  3. 定期清理:定期清理不需要的会话,避免混淆
  4. 会话备份:重要的会话可以备份,防止意外丢失
  5. 上下文保持:确保查询与恢复的会话相关,充分利用上下文

常见问题#

Q: 如何知道要恢复哪个会话?#

A: 可以使用 claude --resume 查看所有可用会话,或查看会话目录。

Q: 会话 ID 会改变吗?#

A: 会话 ID 在会话创建时生成,通常不会改变。

Q: 可以恢复其他目录的会话吗?#

A: 不可以,-r 只会从当前目录的会话目录查找会话。

Q: 恢复的会话会覆盖当前会话吗?#

A: 不会,恢复的会话和当前会话是独立的。

相关命令#

  • claude -c:继续最近的对话
  • claude --resume:交互式选择并恢复会话
  • claude -r "id":按 ID 恢复会话(不执行查询)
  • /clear:清除对话历史

实际应用示例#

会话管理脚本#

bash
#!/bin/bash # 列出所有会话 echo "可用会话:" ls -la .claude/sessions/ | grep session # 选择要恢复的会话 read -p "输入会话 ID: " session_id # 恢复会话 claude -r "$session_id" "继续工作"

恢复用户选择的会话。

多项目工作流#

bash
#!/bin/bash # 项目会话映射 declare -A sessions sessions[project-a]="abc123" sessions[project-b]="def456" sessions[project-c]="ghi789" # 选择项目 echo "选择项目:" for project in "${!sessions[@]}"; do echo "$project: ${sessions[$project]}" done read -p "输入项目名称: " project_name # 恢复项目会话 claude -r "${sessions[$project_name]}" "在 $project_name 中工作"

恢复用户选择的项目会话。

标记本节教程为已读

记录您的学习进度,方便后续查看。