Skip to content

6.18 --continue - 加载最近的对话

概述

--continue 标志允许您加载并继续最近的对话会话。这是快速恢复工作的便捷方式,无需记住会话 ID。

基本语法

bash

    claude --continue

使用场景

1. 快速恢复工作

bash

    # 快速恢复最近的对话
    claude --continue

    # 继续之前的工作

2. 中断后继续

bash

    # 工作中断后,快速恢复
    claude --continue
    # 继续之前的任务

3. 日常开发

bash

    # 每天开始工作时,恢复昨天的对话
    claude --continue

    # 继续开发

4. 快速回顾

bash

    # 快速回顾最近的对话
    claude --continue
    # 查看上下文

高级用法

1. 与其他标志组合

bash

    # 继续对话 + 指定模型
    claude --continue --model opus

    # 继续对话 + 自定义系统提示
    claude --continue --system-prompt "你是一位 Python 专家"

    # 继续对话 + 限制工具
    claude --continue --allowedTools "Read" "Grep"

2. 检查最近的会话

bash

    #!/bin/bash
    # check-recent-session.sh
    # 查看最近的会话
    claude --list-sessions | head -1
    # 继续最近的会话
    claude --continue

3. 条件继续

bash

    #!/bin/bash
    # conditional-continue.sh

    # 检查是否有最近的会话
    RECENT_SESSION=$(claude --list-sessions | head -1)

    if [ -n "$RECENT_SESSION" ]; then
        echo "继续最近的会话: $RECENT_SESSION"
        claude --continue
    else
        echo "没有最近的会话,创建新会话"
        claude --session-id "new-session-$(date +%Y%m%d-%H%M%S)"
    fi

4. 自动恢复工作流

bash

    #!/bin/bash
    # auto-resume-workflow.sh
    # 检查工作目录
    if [ -f ".claude/session" ]; then
        SESSION_ID=$(cat .claude/session)
        echo "恢复会话: $SESSION_ID"
        claude --resume "$SESSION_ID"
    else
        echo "继续最近的会话"
        claude --continue
    fi

实际应用示例

示例 1: 日常开发流程

bash

    #!/bin/bash
    # daily-dev-flow.sh

    # 检查是否有项目特定的会话
    if [ -f ".claude/project-session" ]; then
        PROJECT_SESSION=$(cat .claude/project-session)
        echo "恢复项目会话: $PROJECT_SESSION"
        claude --resume "$PROJECT_SESSION"
    else
        echo "继续最近的会话"
        claude --continue
    fi

示例 2: 多项目工作流

bash

    #!/bin/bash
    # multi-project-flow.sh
    PROJECT=$1
    # 检查项目会话
    if [ -f ".claude/$PROJECT-session" ]; then
        SESSION_ID=$(cat ".claude/$PROJECT-session")
        echo "恢复项目 $PROJECT 的会话"
        claude --resume "$SESSION_ID"
    else
        echo "继续最近的会话"
        claude --continue
    fi

示例 3: 任务切换

bash

    #!/bin/bash
    # task-switching.sh

    # 保存当前会话
    CURRENT_SESSION=$(claude --list-sessions | head -1)
    echo "$CURRENT_SESSION" > .claude/last-session

    # 切换到新任务
    NEW_TASK=$1
    claude --session-id "task-$NEW_TASK-$(date +%Y%m%d-%H%M%S)"

    # 稍后可以恢复之前的会话
    # claude --resume $(cat .claude/last-session)

示例 4: 工作日志

bash

    #!/bin/bash
    # work-log.sh
    LOG_FILE="work-log-$(date +%Y%m%d).log"
    # 记录开始工作
    echo "$(date): 开始工作" >> "$LOG_FILE"
    # 继续最近的会话
    RECENT_SESSION=$(claude --list-sessions | head -1)
    echo "$(date): 恢复会话 $RECENT_SESSION" >> "$LOG_FILE"
    claude --continue
    # 记录结束工作
    echo "$(date): 结束工作" >> "$LOG_FILE"

与 --resume 的区别

标志行为使用场景

--continue| 加载最近的会话| 快速恢复工作 --resume <ID>| 加载指定的会话| 恢复特定会话

使用建议

bash

    # 快速恢复工作
    claude --continue

    # 恢复特定会话
    claude --resume session-abc123

    # 查看会话列表后选择
    claude --list-sessions
    claude --resume chosen-session

会话管理技巧

1. 定期清理

bash

    #!/bin/bash
    # cleanup-sessions.sh
    # 保留最近 10 个会话
    claude --list-sessions | tail -n +11 | while read session; do
        claude --delete-session "$session"
    done
    echo "旧会话已清理"

2. 会话标记

bash

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

    MARK=$1

    # 标记最近的会话
    RECENT_SESSION=$(claude --list-sessions | head -1)
    echo "$RECENT_SESSION" > ".claude/marked-$MARK"

    echo "会话 $RECENT_SESSION 已标记为 $MARK"

3. 会话切换

bash

    #!/bin/bash
    # switch-session.sh
    # 保存当前会话
    CURRENT_SESSION=$(claude --list-sessions | head -1)
    echo "$CURRENT_SESSION" > .claude/last-session
    # 切换到标记的会话
    MARK=$1
    if [ -f ".claude/marked-$MARK" ]; then
        SESSION_ID=$(cat ".claude/marked-$MARK")
        claude --resume "$SESSION_ID"
    else
        echo "没有找到标记为 $MARK 的会话"
    fi

4. 会话历史

bash

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

    # 显示会话历史
    echo "会话历史:"
    claude --list-sessions | nl

    # 继续最近的会话
    echo ""
    echo "继续最近的会话?(y/n)"
    read answer

    if [ "$answer" = "y" ]; then
        claude --continue
    fi

常见问题

Q1: --continue 和 --resume 有什么区别?

A: --continue 自动加载最近的会话,--resume 需要指定会话 ID。

Q2: 如何知道最近的会话是什么?

A: 使用 claude --list-sessions 查看会话列表,第一个就是最近的会话。

Q3: 可以继续几天前的会话吗?

A: --continue 只能继续最近的会话。要继续其他会话,使用 --resume <会话ID>

Q4: 会话会自动保存吗?

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

Q5: 如何避免意外继续错误的会话?

A: 使用 --resume <会话ID> 明确指定要恢复的会话。

与其他标志的组合示例

1. 完整的工作流程

bash

    #!/bin/bash
    # complete-workflow.sh
    # 检查是否有项目会话
    if [ -f ".claude/project-session" ]; then
        SESSION_ID=$(cat .claude/project-session)
        echo "恢复项目会话"
        claude --resume "$SESSION_ID"
    else
        echo "继续最近的会话"
        claude --continue
    fi

2. 多项目切换

bash

    #!/bin/bash
    # multi-project-switch.sh

    PROJECT=$1

    # 保存当前会话
    CURRENT_SESSION=$(claude --list-sessions | head -1)
    echo "$CURRENT_SESSION" > .claude/last-session

    # 切换到项目会话
    if [ -f ".claude/$PROJECT-session" ]; then
        SESSION_ID=$(cat ".claude/$PROJECT-session")
        claude --resume "$SESSION_ID"
    else
        echo "没有找到项目 $PROJECT 的会话,继续最近的会话"
        claude --continue
    fi

3. 任务跟踪

bash

    #!/bin/bash
    # task-tracking.sh
    TASK=$1
    # 记录任务开始
    echo "$(date): 开始任务 $TASK" >> task-log.txt
    # 继续最近的会话
    claude --continue
    # 记录任务结束
    echo "$(date): 结束任务 $TASK" >> task-log.txt

基于 MIT 许可发布