Pi 的会话记录存在哪
Pi 一个会话一个追加式(append-only)JSONL 文件:
<会话根目录>/--<编码过的项目路径>--/<时间戳>_<uuid>.jsonl真实路径长这样:
~/.pi/agent/sessions/--Users-me-apps-blog--/2026-08-23T09-49-28-819Z_01a02e06-6f73-7b54-8a4a-63e19fdca249.jsonl文件名以 ISO 8601 时间戳打头,所以直接 ls 出来就是按时间排好的。
会话根目录怎么定
Pi 的根目录有三个地方可以配,优先级从高到低:
PI_CODING_AGENT_SESSION_DIR环境变量(设了且非空)<agent 目录>/settings.json里的sessionDir- 默认值,
<agent 目录>/sessions
agent 目录本身由 PI_CODING_AGENT_DIR 指定,默认 ~/.pi/agent。所以什么都不配的话,会话就在 ~/.pi/agent/sessions。
命令行上那个一次性的 --session-dir 参数会写到别处去,但 Pi 不会给它建索引,事后没有任何东西找得到。想让会话以后还能被找到,就改根目录,别用那个参数。
项目目录名怎么来的
项目绝对路径把 / 换成 -,前后各裹一对 --:
/Users/me/apps/blog → --Users-me-apps-blog--前后那两对短横是用来和「名字里本来就带短横的目录」区分的,所以光看列表就能按项目归类。
agent 目录里还有什么
~/.pi/agent/
├── sessions/
├── extensions/ ← 生命周期扩展
├── settings.json
├── mcp.json
├── memory/
├── models-store.json
└── auth.json ← 凭据,别读这个任何读 Pi 数据的东西都应该只待在 sessions/ 里。旁边那些文件装的是认证、模型和信任配置。
在终端里读 Pi 会话
打印对话:
bash
jq -r 'select(.type) | .text // .content // empty' \
~/.pi/agent/sessions/--Users-me-apps-blog--/*.jsonl某个项目最近的一个会话:
bash
ls -1 ~/.pi/agent/sessions/--Users-me-apps-blog--/*.jsonl | tail -1按项目统计会话数:
bash
for d in ~/.pi/agent/sessions/*/; do
printf '%4d %s\n' "$(ls "$d"*.jsonl 2>/dev/null | wc -l)" "$(basename "$d")"
done | sort -rn或者用应用打开
Sessions Viewer 按和 Pi 一样的顺序解析会话根目录,先看环境变量,再看 settings.json,最后用默认值,并且只读会话记录,绝不碰旁边的 auth 和凭据文件。它同时还读 Claude Code、Codex、Grok Build、Kimi Code、Antigravity CLI 和 opencode。
