5.7 `claude -r "" "query"` - 按 ID 恢复会话
第 5 章 · CLI 命令详解 · 第2部分:命令参考
claude -r "" "query" 命令允许您按会话 ID 恢复特定的对话会话,并在恢复的上下文中执行查询。
命令语法#
bash复制claude -r """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复制# 知道要恢复的会话 IDclaude -r "abc123""继续工作"
精确恢复指定的会话。
2. 多会话管理#
bash复制# 在多个会话之间切换claude -r "abc123""任务1"claude -r "def456""任务2"claude -r "ghi789""任务3"
在不同的会话之间切换工作。
4. 长期项目#
bash复制# 恢复长期项目的会话claude -r "project-alpha-session""继续项目 Alpha"
恢复长期项目的会话,保持项目上下文。
会话选择策略#
选择最近会话#
如果您不确定要恢复哪个会话,可以:
- 查看会话列表
- 按时间排序
- 选择最近的会话
选择相关会话#
根据当前任务选择最相关的会话:
- 查看会话描述
- 检查会话内容
- 选择最匹配的会话
选择活跃会话#
优先选择最近活跃的会话:
- 查看最后修改时间
- 选择最近更新的会话
- 确保上下文是最新的
注意事项#
- 会话存在:确保指定的会话 ID 存在
- 会话位置:
-r会从当前目录的会话目录查找会话 - 上下文相关:查询应该与恢复的会话相关
- 会话更新:新的查询会更新恢复的会话
- ID 大小写:会话 ID 可能区分大小写
与其他恢复命令的对比#
| 命令 | 选择方式 | 精确性 | 适用场景 |
|---|---|---|---|
claude -c | 自动(最近) | 低 | 快速继续最近的工作 |
claude --resume | 交互选择 | 中 | 浏览并选择会话 |
claude -r "id" | 指定 ID | 高 | 精确恢复特定会话 |
最佳实践#
- 记录会话 ID:重要的会话 ID 可以记录下来,便于后续恢复
- 描述性会话:在会话中使用描述性的查询,便于识别
- 定期清理:定期清理不需要的会话,避免混淆
- 会话备份:重要的会话可以备份,防止意外丢失
- 上下文保持:确保查询与恢复的会话相关,充分利用上下文
常见问题#
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"选择项目:"forprojectin"${!sessions[@]}";doecho"$project: ${sessions[$project]}"doneread -p "输入项目名称: " project_name # 恢复项目会话claude -r "${sessions[$project_name]}""在 $project_name 中工作"
恢复用户选择的项目会话。