Storage

SDK Session 布局

本地 SDK Agent 的 Session 文件布局与数据边界

SDK Session 布局

本地 SDK Agent 的 Session 默认落盘到:

<projectRoot>/.downcity/agents/<agentId>/sessions/<sessionId>/
└── messages/
    ├── active.jsonl
    ├── assistant_message.json
    ├── meta.json
    └── segments/
        └── <start_sequence>-<end_sequence>.jsonl

agentId 隔离同一项目中的多个 Agent,sessionId 隔离每条连续对话。

  • active.jsonl:上次 Compact 后保留的完整 SessionMessage 快照。
  • assistant_message.json:唯一的运行中 Assistant 完整草稿。
  • segments/*.jsonl:不可变历史段;真实 Message 在前,累计 Summary footer 在最后。
  • meta.json:标题、模型、时间戳、消息数和存储字节数等轻量索引。

Segment 文件名使用 12 位补零 sequence,例如 000000000001-000000000900.jsonl。目录不使用 manifest,扫描文件名即可确定历史顺序。Summary 不属于 Message,也不占 sequence。

应用应调用 session.messages() 读取 Active,通过 before_sequence 逐段读取旧历史。不要直接写入这些文件。

完整推进、Compact 和恢复逻辑见 Session 元数据与落盘