CCViewer / 帮助中心 / 查找 JSONL 文件位置

如何查找一个 Claude Code session 对应的 JSONL 文件的位置?

更新于 2026-10-12 · CCViewer 帮助中心 · 适用于 Claude Code 2.x

所有会话文件都存放在一个固定目录下:~/.claude/projects/。知道 sessionId 时几秒钟就能定位;不知道时也可以按内容或时间反查。

先搞懂目录命名规则

~/.claude/projects/ 下的每个子目录对应一个项目(工作目录),目录名是项目路径变换而来:路径中的 /、_ 及其他非字母数字字符都被替换成连字符 -。例如:

项目路径                                        会话目录名
/Users/you/Documents/my_app      →  -Users-you-Documents-my-app
/home/you/projects/shop-api      →  -home-you-projects-shop-api

每个会话就是一个独立文件:<sessionId>.jsonl(sessionId 是形如 9a1b2c3d-… 的 UUID)。

情况一:知道 sessionId —— 直接 find

find ~/.claude/projects -name "<sessionId>.jsonl"

sessionId 从哪来?最简单的办法是在对话中输入斜杠命令 /status,输出信息里就包含当前会话的 Session ID;此外终端里 claude --resume 的会话列表、报错信息、或查看器侧栏的「Session ID」字段也能拿到。

情况二:不知道 sessionId —— 按内容反查

记得对话里的某句话(比如你当时的提问),直接全文检索:

# 在所有会话里搜关键词,列出命中的文件
grep -l "修复登录页" ~/.claude/projects/*/*.jsonl

# 只搜当前项目目录
grep -l "修复登录页" ~/.claude/projects/-Users-you-Documents-my-app/*.jsonl

情况三:按时间找最近的会话

# 列出最近修改的 10 个会话文件
ls -t ~/.claude/projects/*/*.jsonl | head -10

图形化方式:交给 CCViewer

不想敲命令?CCViewer 支持直接选择(或拖入)整个 ~/.claude/projects/ 文件夹:它会递归扫描所有 .jsonl,按项目聚类、按时间排序,每个会话显示标题、路径、时间范围、消息数与费用 —— 点开即看,无需知道文件在哪。

CCViewer 文件夹模式:按项目聚类的 Claude Code 会话库

macOS 小技巧:在访达里打开隐藏目录

用 CCViewer 图形化回放你的 Claude Code 会话
打开网页,把 .jsonl 文件或整个 ~/.claude/projects/ 文件夹拖进去即可 —— Markdown 渲染、思考块、工具调用、Token 与费用统计,全程在你的浏览器本地完成,不上传任何数据。

常见问题

为什么我找不到 ~/.claude 这个目录?
因为它以点号开头,默认隐藏。访达里按 ⌘⇧G 输入路径直达,或按 ⌘⇧. 显示隐藏文件;终端里 ls -la ~/.claude 一直可见。
一个项目目录下有很多 jsonl 文件,哪个是我要的?
每个文件等于一次会话。按修改时间(ls -t)或内容(grep -l)筛选最有效;用 CCViewer 导入整个文件夹则直接显示每个会话的标题和统计,肉眼即可分辨。
Windows 上路径是什么?
同样位于用户主目录下的 .claude\projects\,即 %USERPROFILE%\.claude\projects\<项目>\.jsonl。