Skip to content

6.17 --resume - 恢复特定会话

概述

--resume 标志允许您恢复之前保存的特定会话。这对于继续中断的工作、回顾历史对话或在不同设备间同步会话非常有用。

python
## 基本语法

    bash


    claude --resume <会话ID>

## 使用场景

### 1\. 恢复中断的会话

    bash


    # 恢复之前中断的会话
    claude --resume session-abc123

    # 继续之前的工作

### 2\. 回顾历史对话

    bash


    # 查看并恢复历史会话
    claude --resume session-xyz789
    # 回顾之前的讨论

### 3\. 在不同设备间同步

    bash


    # 在设备 A 上保存会话
    claude --session-id my-session

    # 在设备 B 上恢复会话
    claude --resume my-session

### 4\. 分支开发

    bash


    # 从主会话创建分支
    claude --resume main-session
    # 在新分支上工作
    claude --session-id branch-session

## 高级用法

### 1\. 与其他标志组合

    bash


    # 恢复会话 + 指定模型
    claude --resume session-abc123 --model opus

    # 恢复会话 + 自定义系统提示
    claude --resume session-abc123 --system-prompt "你是一位 Python 专家"

    # 恢复会话 + 限制工具
    claude --resume session-abc123 --allowedTools "Read" "Grep"

### 2\. 会话管理

    bash


    #!/bin/bash
    # session-manager.sh
    # 列出所有会话
    claude --list-sessions
    # 恢复特定会话
    SESSION_ID=$1
    claude --resume "$SESSION_ID"

### 3\. 会话备份

    bash


    #!/bin/bash
    # backup-session.sh

    SESSION_ID=$1
    BACKUP_DIR="backups/sessions"

    # 创建备份目录
    mkdir -p "$BACKUP_DIR"

    # 备份会话
    claude --export-session "$SESSION_ID" > "$BACKUP_DIR/$SESSION_ID.json"

    echo "会话已备份到 $BACKUP_DIR/$SESSION_ID.json"

### 4\. 会话迁移

    bash


    #!/bin/bash
    # migrate-session.sh
    OLD_SESSION=$1
    NEW_SESSION=$2
    # 导出旧会话
    claude --export-session "$OLD_SESSION" > temp-session.json
    # 导入为新会话
    claude --import-session temp-session.json --session-id "$NEW_SESSION"
    # 清理临时文件
    rm temp-session.json
    echo "会话已迁移从 $OLD_SESSION 到 $NEW_SESSION"

## 实际应用示例

### 示例 1: 项目开发会话

    bash


    #!/bin/bash
    # project-session.sh

    PROJECT=$1
    SESSION_ID="project-$PROJECT-$(date +%Y%m%d)"

    # 检查会话是否存在
    if claude --session-exists "$SESSION_ID"; then
        echo "恢复会话: $SESSION_ID"
        claude --resume "$SESSION_ID"
    else
        echo "创建新会话: $SESSION_ID"
        claude --session-id "$SESSION_ID"
    fi

### 示例 2: 多阶段任务

    bash


    #!/bin/bash
    # multi-stage-task.sh
    TASK=$1
    # 阶段 1:分析
    echo "阶段 1:分析"
    claude --session-id "$TASK-stage1" -p "分析需求"
    # 阶段 2:设计
    echo "阶段 2:设计"
    claude --resume "$TASK-stage1" -p "设计系统"
    # 阶段 3:实现
    echo "阶段 3:实现"
    claude --resume "$TASK-stage2" -p "实现功能"

### 示例 3: 代码审查会话

    bash


    #!/bin/bash
    # code-review-session.sh

    REVIEW_ID="review-$(date +%Y%m%d-%H%M%S)"

    # 开始审查
    echo "开始代码审查: $REVIEW_ID"
    claude --session-id "$REVIEW_ID" -p "开始代码审查"

    # 恢复审查
    echo "恢复代码审查: $REVIEW_ID"
    claude --resume "$REVIEW_ID"

### 示例 4: 学习会话

    bash


    #!/bin/bash
    # learning-session.sh
    TOPIC=$1
    SESSION_ID="learning-$TOPIC-$(date +%Y%m%d)"
    # 检查是否有学习会话
    if [ -f "sessions/$SESSION_ID.json" ]; then
    echo "继续学习: $TOPIC"
    claude --resume "$SESSION_ID"
    else
    echo "开始学习: $TOPIC"
    claude --session-id "$SESSION_ID" -p "学习 $TOPIC"
    fi

## 会话生命周期

### 1\. 创建会话

    bash


    # 创建新会话
    claude --session-id my-new-session

    # 会话自动创建并保存

### 2\. 恢复会话

    bash


    # 恢复现有会话
    claude --resume my-existing-session
    # 继续之前的对话

### 3\. 更新会话

    bash


    # 恢复会话并继续对话
    claude --resume my-session

    # 新的对话会更新会话

### 4\. 删除会话

    bash


    # 删除会话
    claude --delete-session my-session

## 会话管理技巧

### 1\. 命名约定

    bash


    # 使用描述性的会话 ID
    claude --session-id "project-auth-module-20240115"
    claude --session-id "bugfix-login-issue-20240115"
    claude --session-id "learning-python-async-20240115"

### 2\. 会话分组

    bash


    # 使用前缀分组
    claude --session-id "dev-auth-module"
    claude --session-id "dev-user-module"
    claude --session-id "test-auth-module"

### 3\. 会话归档

    bash


    #!/bin/bash
    # archive-sessions.sh

    ARCHIVE_DIR="archive/sessions"
    mkdir -p "$ARCHIVE_DIR"

    # 归档旧会话
    for session in $(claude --list-sessions | grep "2023"); do
        claude --export-session "$session" > "$ARCHIVE_DIR/$session.json"
        claude --delete-session "$session"
    done

    echo "旧会话已归档"

### 4\. 会话搜索

    bash


    #!/bin/bash
    # search-sessions.sh
    KEYWORD=$1
    # 搜索包含关键词的会话
    claude --list-sessions | grep "$KEYWORD"

## 最佳实践

### 1\. 定期保存会话

    bash


    # 为重要任务创建会话
    claude --session-id "important-task-$(date +%Y%m%d-%H%M%S)"

### 2\. 使用有意义的会话 ID

    bash


    # 好的会话 ID
    claude --session-id "project-api-design-20240115"
    # 不好的会话 ID
    claude --session-id "session1"

### 3\. 备份重要会话

    bash


    #!/bin/bash
    # backup-important-sessions.sh

    BACKUP_DIR="backups/sessions"
    mkdir -p "$BACKUP_DIR"

    # 备份所有会话
    for session in $(claude --list-sessions); do
        claude --export-session "$session" > "$BACKUP_DIR/$session.json"
    done

    echo "所有会话已备份"

### 4\. 清理旧会话

    bash


    #!/bin/bash
    # cleanup-old-sessions.sh
    # 删除 30 天前的会话
    for session in $(claude --list-sessions | grep "2023"); do
    claude --delete-session "$session"
    done
    echo "旧会话已清理"

## 常见问题

### Q1: 如何查看所有可用的会话?

A: 使用 `claude --list-sessions` 命令列出所有会话。

### Q2: 会话会自动保存吗?

A: 是的。会话会自动保存,除非显式删除。

### Q3: 会话有大小限制吗?

A: 有一定的限制。如果会话太大,建议创建新会话。

### Q4: 可以导出会话吗?

A: 可以。使用 `claude --export-session <会话ID>` 导出会话。

### Q5: 可以在不同设备间共享会话吗?

A: 可以。导出会话后,在另一个设备上导入。

## 与其他标志的组合示例

### 1\. 完整的项目开发流程

    bash


    #!/bin/bash
    # project-development.sh

    PROJECT=$1

    # 创建项目会话
    SESSION_ID="project-$PROJECT-$(date +%Y%m%d)"

    # 阶段 1:需求分析
    claude --session-id "$SESSION_ID" -p "分析需求"

    # 阶段 2:设计
    claude --resume "$SESSION_ID" -p "设计系统"

    # 阶段 3:实现
    claude --resume "$SESSION_ID" -p "实现功能"

    # 阶段 4:测试
    claude --resume "$SESSION_ID" -p "生成测试"

### 2\. 学习流程

    bash


    #!/bin/bash
    # learning-flow.sh
    TOPIC=$1
    SESSION_ID="learning-$TOPIC-$(date +%Y%m%d)"
    # 检查是否有学习会话
    if [ -f "sessions/$SESSION_ID.json" ]; then
    echo "继续学习: $TOPIC"
    claude --resume "$SESSION_ID"
    else
    echo "开始学习: $TOPIC"
    claude --session-id "$SESSION_ID" -p "学习 $TOPIC"
    fi

### 3\. Bug 修复流程

    bash


    #!/bin/bash
    # bug-fix-flow.sh

    BUG_ID=$1
    SESSION_ID="bugfix-$BUG_ID-$(date +%Y%m%d)"

    # 开始修复
    claude --session-id "$SESSION_ID" -p "分析 bug: $BUG_ID"

    # 继续修复
    claude --resume "$SESSION_ID" -p "实现修复"

    # 验证修复
    claude --resume "$SESSION_ID" -p "验证修复"

## 总结

--resume 标志提供了一种恢复之前会话的方式。通过使用此标志,您可以:

  • 继续中断的工作
  • 回顾历史对话
  • 在不同设备间同步会话
  • 实现分支开发

合理使用 --resume 可以帮助您更好地管理和组织工作,特别是在需要长时间或分阶段完成任务时。

基于 MIT 许可发布 | 永久导航