目标:高效管理多个会话,在不同项目间灵活切换
预计时间:20 分钟
对应官方文档:Sessions
会话是什么?
一次会话(Session) = 你与 Claude 的一次连续对话,包含:
- 对话历史
- 加载的上下文文件
- 记忆和偏好
- 执行过的命令记录
创建和命名会话
启动时命名
claude --name "修复登录bug"运行中重命名
> /rename "重构支付模块"
好的命名方便后续查找:
- ✅ "实现 JWT 认证"
- ✅ "优化数据库查询 #215"
- ❌ "临时会话"
- ❌ "test"
会话持久化
自动保存
所有会话自动保存,存储在:
~/.claude/sessions/
恢复会话
# 继续上次的会话
claude --continue
# 查看所有会话
claude --list-sessions
# 按名称恢复
claude --continue "修复登录bug"
# 按 ID 恢复
claude --continue sess_abc123会话列表输出示例
Recent sessions:
1. 修复登录bug (2 hours ago) 45 messages
2. 添加单元测试 (yesterday) 120 messages
3. 重构数据库模型 (2 days ago) 80 messages
分支会话(Fork)
想基于当前会话尝试不同方案?使用分支:
> /fork "方案B:使用Redis缓存"
这会创建一个独立的副本,原会话不受影响。
原会话: "优化数据库查询"
├── 分支1: "方案A:加索引"
└── 分支2: "方案B:使用Redis缓存"
多项目工作
项目隔离
每个项目应该独立启动 Claude:
# 项目 A
cd ~/projects/backend
claude --name "backend-api"
# 项目 B
cd ~/projects/frontend
claude --name "frontend-app"使用 Git Worktree(高级)
同时处理同一项目的多个分支:
# 创建 worktree
git worktree add ../feature-auth feature/auth
# 在隔离环境中启动
cd ../feature-auth
claude --name "feature-auth" --worktree--worktree 确保会话完全隔离,不会互相影响。
会话清理
删除单个会话
claude --delete-session "旧会话名称"清理所有会话
# 删除超过 30 天的会话
claude --purge-sessions --older-than 30d
# 或清空项目级状态
claude project purge会话导入导出
导出会话记录
# 导出为 Markdown
claude --export-session "会话名称" --format markdown > session.md
# 导出为 JSON(含完整元数据)
claude --export-session "会话名称" --format json > session.json分享会话
> /share
生成分享链接:https://claude.ai/share/abc123
团队成员可以查看会话记录,了解思考过程。
会话最佳实践
| 场景 | 建议 |
|---|---|
| 开始新任务 | 新建会话,避免历史干扰 |
| 长任务中断 | 用 --continue 恢复,不要新建 |
| 尝试不同方案 | 用 /fork 分支 |
| 多项目切换 | 每个项目固定会话名 |
| 定期清理 | 删除已完成的老会话 |
| 重要决策 | 导出记录备档 |
快捷键速查
| 操作 | 命令 |
|---|---|
| 查看当前会话信息 | /info |
| 重命名 | /rename "新名称" |
| 压缩历史 | /compact |
| 清空对话(保留上下文) | /clear |
| 创建分支 | /fork "名称" |
| 导出记录 | /export |
补充:会话生命周期管理与自动化脚本
会话生命周期流程
实用配置与脚本
示例 1:Shell Alias 快速启动多项目会话
在 ~/.bashrc 或 ~/.zshrc 中添加:
# Claude Code 项目会话快捷启动
alias cbe='cd ~/projects/backend && claude --name "backend-$(date +%m%d)"'
alias cfe='cd ~/projects/frontend && claude --name "frontend-$(date +%m%d)"'
alias cdev='cd ~/projects/devops && claude --name "devops-$(date +%m%d)"'
# 快速恢复最近会话
alias ccon='claude --continue'
# 清理 7 天前会话
alias cpurge='claude --purge-sessions --older-than 7d'示例 2:Git Worktree + Claude 隔离会话脚本
#!/bin/bash
# claude-worktree.sh - 为指定分支创建隔离 worktree 并启动 Claude
BRANCH=$1
WORKTREE_DIR="../worktrees/$BRANCH"
if [ -z "$BRANCH" ]; then
echo "Usage: $0 <branch-name>"
exit 1
fi
# 创建 worktree(如果不存在)
if [ ! -d "$WORKTREE_DIR" ]; then
git worktree add "$WORKTREE_DIR" -b "$BRANCH"
echo "Created worktree: $WORKTREE_DIR"
fi
# 进入 worktree 启动 Claude
cd "$WORKTREE_DIR" || exit
claude --name "$BRANCH" --worktree使用方式:
chmod +x claude-worktree.sh
./claude-worktree.sh feature/payment-gateway示例 3:会话归档与清理脚本
#!/bin/bash
# archive-claude-sessions.sh
ARCHIVE_DIR="$HOME/.claude/archives/$(date +%Y-%m)"
mkdir -p "$ARCHIVE_DIR"
# 导出所有超过 3 天的会话并压缩
claude --list-sessions --json | jq -r '.[] | select(.age_days > 3) | .name' | while read -r sess; do
echo "Archiving: $sess"
claude --export-session "$sess" --format markdown > "$ARCHIVE_DIR/${sess}.md"
done
# 压缩归档
tar czf "$ARCHIVE_DIR.tar.gz" "$ARCHIVE_DIR"
rm -rf "$ARCHIVE_DIR"
# 删除 30 天前的会话
claude --purge-sessions --older-than 30d
echo "Archived to $ARCHIVE_DIR.tar.gz"实战场景
场景一:多项目并行开发(前后端同时修改)
背景:开发者需要同时处理前端 UI 缺陷和后端 API 调整,两个项目在不同目录,且依赖关系复杂,频繁切换容易混淆上下文。
步骤:
- 在前端目录启动独立会话:
cd ~/frontend && claude --name "fix-login-ui" - 在终端新窗口启动后端会话:
cd ~/backend && claude --name "fix-auth-api" - 前端会话中完成 UI 修复后,
/export导出记录 - 后端会话修改完接口后,通过
--continue "fix-auth-api"在次日继续
结果:
- 两个会话完全隔离,前端不会加载后端无关文件,后端也不会看到前端 node_modules
- 每个会话有独立的对话历史和记忆,AI 始终清楚当前项目的上下文
- 开发者通过终端多窗口管理,互不干扰,效率提升明显
场景二:紧急 Bug 修复与会话恢复
背景:周五下班前修复了一个紧急 Bug,周一需要继续完善相关测试和文档,但周末期间启动了多个其他临时会话。
步骤:
- 周五修复时命名会话:
claude --name "hotfix-payment-race-condition" - 周一路由到项目目录,查看会话列表:
claude --list-sessions - 精确恢复目标会话:
claude --continue "hotfix-payment-race-condition" - AI 自动加载之前的上下文和已修改的文件,直接继续编写缺失的测试
结果:
- 无需重新解释问题背景,AI 记住上周五的代码变更和分析结论
- 避免了新建会话导致的历史信息丢失
- 命名清晰的会话让在众多历史记录中快速定位成为可能