· 8 min read
Pi 把「一次会话」抽象成一颗 JSONL 树。每条 entry 是一个节点,节点之间靠 id 和 parentId 串成父子关系;当前活跃的位置是「叶子」。
- 存储:JSONL 树形文件,按工作目录分组存到
~/.pi/agent/sessions/ - 数据格式:每行一条 entry,类型由
type字段区分,节点靠id/parentId串成树 - 消息模型分两层:
pi-ai给基础 LLM 类型,pi-coding-agent扩展出BashExecution/Custom等专用消息 BashExecution是 Pi 特有:把!、!!命令结构化地放进会话,跟普通 tool result 分开customvscustom_message:前者只存盘不进入 LLM context,后者进入 context- 树形的设计:撑起分支探索、无损压缩、多事件流并行
Pi 把 Session 设计成树而不是线,不是「数据结构的偏好」,而是支撑所有核心能力的基础。