会话快照与分支

wesgine 会话的 Checkpoint(快照)与 Branch(分支)管理:时间旅行与对话分叉。


Checkpoint API

方法路径说明
GET/sessions/{sid}/checkpoints快照列表
POST/sessions/{sid}/checkpoints创建快照
POST/sessions/{sid}/checkpoints/{cpid}/restore回滚到快照
POST/sessions/{sid}/checkpoints/{cpid}/fork从快照分叉
DELETE/sessions/{sid}/checkpoints/{cpid}删除快照

Branch API

方法路径说明
GET/sessions/{sid}/branches分支列表
DELETE/sessions/{sid}/branches/{bid}删除分支

Restore(回滚)

回滚到指定快照,恢复该时间点的对话历史。

POST /sessions/{sid}/checkpoints/{cpid}/restore

回滚成功返回整段对话历史。


Fork(分叉)

从指定快照创建新分支,不影响原会话。

POST /sessions/{sid}/checkpoints/{cpid}/fork

分叉后新分支拥有独立的对话历史副本。


Actor 边界(INV-SESS-03)

Checkpoint / Branch 的行身份是 (session_id, id):

跨 session 行为

操作跨 session
Restore硬失败 ErrCheckpointNotInSession → 404
Fork硬失败
Delete幂等成功(区分存在性 = 预言机)

Boot 自动恢复(INV-CKPT-04)

Cell boot 时自动执行:

  1. MarkInterruptedSessions() — 标记中断会话
  2. ListOrphanedRuns() → MarkRunTerminated() — 清理孤儿 Run

消费方无需在 PostBoot 调用 MarkInterrupted。


典型使用场景

场景操作
尝试不同方案创建快照 → 尝试 A → 不满意 → 回滚 → 尝试 B
保留重要节点对话到关键决策点 → 创建快照
分叉探索创建快照 → Fork → 两条独立路线
清理旧快照Delete 过时快照

相关文档