关于 session-recovery
用于诊断和恢复 Claude Code 会话历史的技能,重点处理会话存储路径、HOME 配置及旧会话迁移问题。
主要功能
- 01诊断会话存储位置问题
- 02检查 HOME 相关配置
- 03排查会话缺失或位置错误
- 04提供旧会话迁移指引
适用场景
- 01调查 claude -r 找不到会话的原因
- 02定位写入意外目录的会话
- 03环境变更后恢复会话历史可见性
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ terrylica/ cc-skills --skill session-recovery安装后在 Claude Code 中输入/session-recovery确认已加载。
附带文件references/evolution-log.mdTROUBLESHOOTING.md
详细介绍
Claude Code 会话恢复技能
自我演进技能:此技能会在使用过程中不断改进。如果说明有误、参数发生偏移或需要变通方案,请立即修复此文件,不要拖延。仅针对真实且可复现的问题进行更新。
何时使用此技能
在以下情况下使用此技能:
- 运行
claude -r时出现“No conversations found to resume” - 新会话未创建会话文件
- 会话出现在错误的位置(
/tmp/而非~/.claude/projects/) - 环境变更后会话历史记录缺失
- IDE/终端设置影响会话创建
- 需要迁移或恢复 600 多个旧会话
快速参考
官方会话存储位置
标准位置: ~/.claude/projects/
结构:
~/.claude/projects/
├── -home-username-my-project/ # Encoded absolute path
│ └── 364695f1-13e7-4cbb-ad4b-0eb416feb95d.jsonl
└── -tmp-another-project/
└── a8e39846-ceca-421d-b4bd-3ba0eb1b3145.jsonl
格式: 每行一个 JSON 事件(JSONL),文件名基于 UUID
重要注意事项:HOME 变量
问题
Claude Code 使用 $HOME 环境变量来确定会话存储位置。如果 $HOME 不正确,会话就会保存到错误的目录,或者消失。
症状
claude -r显示“No conversations found to resume”- 新会话可以正常运行,但预期位置没有出现文件
- 在
/tmp/或其他意外路径中找到会话 - 在一台机器上正常,在另一台机器上却不正常
诊断
/usr/bin/env bash << 'PREFLIGHT_EOF'
# Step 1: Check current HOME
echo "Current HOME: $HOME"
# Step 2: Check system expectation
echo "Expected HOME: $(getent passwd $(whoami) | cut -d: -f6)"
# Step 3: Find where Claude is actually writing
find /tmp -name "*.jsonl" -path "*/.claude/projects/*" 2>/dev/null
PREFLIGHT_EOF
参考文档
如需详细的诊断步骤和解决方案,请参阅:
- 故障排除指南 - 详细的诊断流程和修复方法
故障排除
| 问题 | 原因 | 解决方案 |
|---|---|---|
| “No conversations found” | HOME 变量错误 | 确认 $HOME 与预期的用户目录一致 |
| 会话位于 /tmp/ | HOME 设置不正确 | 修正 shell 配置文件中的 HOME,然后重启终端 |
| 会话文件缺失 | 磁盘空间或权限问题 | 检查 ~/.claude/projects/ 的权限和磁盘空间 |
| 显示了错误项目的会话 | 路径编码不匹配 | 检查编码后的路径是否与当前工作目录一致 |
| 会话未持久化 | 文件系统问题 | 确认对 ~/.claude/projects/ 具有写入权限 |
| IDE 会话彼此独立 | 不同环境使用了不同的 HOME | 确保终端和 IDE 使用一致的 HOME |
| 看不到旧会话 | 未完成迁移 | 参阅 TROUBLESHOOTING.md 中的迁移部分 |
| UUID 文件名损坏 | 写入不完整 | 检查是否存在部分写入的 .jsonl 文件,并删除损坏的文件 |
执行后复盘
此技能执行完成后,在结束前检查:
- 命令是否成功? — 如果没有,请修复导致失败的说明或错误表格。
- 参数或输出是否发生变化? — 如果底层工具的接口发生了变化,请更新用法示例和参数表,使其保持一致。
- 是否需要变通方案? — 如果你不得不临时采用变通方法(不同的标志、额外步骤),请更新此 SKILL.md,避免下次调用时还需要同样的变通方法。
仅在问题真实且可复现时进行更新,不要基于推测进行更新。
评论
支持 Markdown