SDK Session 布局

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

本地 SDK Agent 的 Session 保存在 City 注入的存储根目录下;使用本地 Provider 时通常是 ~/.downcity:

~/.downcity/agents/<agent_id>/sessions/<origin_type>/<session_id>/
├── session.db
└── attachments/

Session 以 (origin.type, session_id) 作为稳定身份,默认分区是 chat。其他非空来源类型会被 安全编码为单个目录段,例如 automation/daily 不会产生嵌套目录。项目目录不会创建 .downcity。

session.db 的核心表:

  • session_state:身份、Workspace 归属、标题、模型标签、时间戳与 system snapshot。
  • messages:User/Agent Message envelope。
  • message_parts:按 sequence 保存每个 Part 的具体内容。

Composer Policy 可以在同一数据库中维护自己的 composer_<policy>_* 派生表。派生表可以删除重建, 不会改变 canonical Message。应用应调用 session.messages() 读取消息,不要直接写数据库。

完整设计见 Session 元数据与落盘。