SessionDB & Schema

SessionDB 外键关联与运行时热更新迁移机制

解密 SessionDB 表约束关系及 try-except 动态 alter 自动容错升级细节
数据库 Schema
📊 图 4-2-1:SessionDB 核心数据表、外键约束与索引分布 ER 结构图

📂 1. SessionDB 的核心数据表外键关联

数据库 state.db 采用高内聚的三表星型关联设计以加速查询:

  • sessions:主会话表,保存会话状态、活跃模型配置及前缀缓存的 system_prompt
  • messages:消息历史表,保存各轮次的角色、内容及 `reasoning_content`,外键联接主会话。
  • checkpoints:状态快照表,存储智能体在每一轮工具调用时的变量回滚快照。
写锁竞争
📊 图 4-2-2:多智能体并发写冲突与热变更操作锁机制图

🛠️ 2. 运行时 ALTER TABLE 动态在线热迁移

在版本升级期间,若新代码新增了列(如 finish_reason),旧数据库在读写时会抛出未定义列异常。系统在 SessionDB 中在异常发生时自动捕捉:

# 捕获未知列后触发的在线热变更自愈
try:
    conn.execute("ALTER TABLE messages ADD COLUMN finish_reason TEXT;")
except sqlite3.OperationalError:
    pass # 证明字段已被添加,静默容错