Skip to content

Grok Build 的会话记录存在哪 ​

Grok Build 的可见记录是会话目录里的 updates.jsonl,默认位于 ~/.grok/sessions/;GROK_HOME 可以改数据根目录。

$GROK_HOME/sessions/<编码过的 cwd>/<会话 id>/

GROK_HOME 默认 ~/.grok。填相对路径的话按当前工作目录解析,和你在 shell 里手敲一个相对路径一样,而不是相对于 home 目录。

Grok Build 的会话目录里有什么 ​

updates.jsonl          ← 你要的那份记录
summary.json           ← 列表元数据,含 info.cwd
chat_history.jsonl     ← 喂给模型的上下文,不是展示用的记录
events.jsonl
rewind_points.jsonl
prompt_history.jsonl
prompt_context.json
system_prompt.txt
resources_state.json
announcement_state.json
*.lock

这里面有两个看着都像对话记录,但只有一个是:

  • updates.jsonl 是权威的、用户可见的事件流,也就是 CLI 当时渲染给你看的东西。
  • chat_history.jsonl 是喂给模型的:压缩过、重排过、夹着 system 脚手架。把它当记录读,得到的是一份从来没出现在任何人屏幕上的东西。

那些 .lock 文件的存在是因为 Grok 会并发写这些文件。会话可能还活着的话,解析前先拷一份。

会话属于哪个项目 ​

分组目录名里编了工作目录,但权威答案在 summary.json 里:

bash
jq -r '.info.cwd' ~/.grok/sessions/*/*/summary.json | sort | uniq -c | sort -rn

在终端里读 Grok Build 会话 ​

提取用户/助手可见的文本片段,不合并流式片段:

bash
jq -r 'select(.method=="session/update" or .method=="_x.ai/session/update")
  | .params.update
  | select(.sessionUpdate=="user_message_chunk" or .sessionUpdate=="agent_message_chunk")
  | .content | if type=="array" then .[] else . end
  | select(.type=="text") | .text // empty' \
  ~/.grok/sessions/<分组>/<会话 id>/updates.jsonl

不碰记录本体,只看标题和时间:

bash
jq '{title, info}' ~/.grok/sessions/<分组>/<会话 id>/summary.json

因为一个会话就是一个目录,删除意味着删掉整个文件夹,而不是 unlink 一个文件。任何管理 Grok 会话的东西都必须把目录当作操作单元。

怎么恢复这个会话 ​

在项目目录运行 grok --resume SESSION_ID,需要已安装 Grok Build。应用提供终端恢复,不提供 Grok 内置对话。

依据与限制 ​

实现依据:Grok Build 适配器。上游入口:xAI 文档。

**参考范围:**2026-10-05 对照 Sessions Viewer 0.6.0 的适配器源码核对,不代表验证过每个 CLI 版本。Shell 示例使用 macOS/Linux 路径,需要 jq(opencode 用 sqlite3);占位符要替换成实际值,自定义目录以你的配置为准。提取文本不等于完整还原工具、图片或会话树当前分支。命令回归使用可下载的合成样本,不读取私人会话;验证边界见能力与证据矩阵。浏览历史与恢复、编辑数据不同,见隐私与数据处理。

上述命令只提取文本片段,不完整处理工具结果、元数据或后台任务通知。见找不到会话的排障指南。

或者用应用打开 ​

Sessions Viewer 读的是 updates.jsonl,绝不读 chat_history.jsonl,按 info.cwd 归类,并且把目录当作存储单元:删除是把整个文件夹挪进可还原的回收站,不是 rm。它同时还读 Claude Code、Codex、Kimi Code、Pi、Antigravity CLI 和 opencode。