morlay/better-session--packages-session-branch0

@morlay/session-branch

Provider abstraction + high-level service for rewind / retry / fork over DeepSeek Harness event-sourced sessions.

包名
@morlay/session-branch
版本
0.0.3
许可证
MIT
最近更新
2026年8月17日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:morlay/better-session#8ec5bcec558e8e419ae563d81367c7fb6637bbf3&path:packages/session-branch

@morlay/session-branch

分支式会话编辑的契约层:定义数据层分支原语 SessionBranchProvider (rewind / forkFrom / readBranchPrefix)、高层服务 SessionBranchctx.sessionBranch)与共享的版本树投影 buildTimeline

与上游 SessionPersistence 的关系

上游 PersistenceBackend本包 SessionBranchProvider
覆盖持久读写 + 崩溃修复(append-only)显式回退 + 闭合边界派生(分支面)
原语loadStored / appendBatch / commitRepairreadBranchPrefix / forkFrom / rewind
实现方JSONL / RDB 等RDB 等(@morlay/session-rdb 同时实现两者,形成闭环)

Provider 抽象

interface SessionBranchProvider {
  readBranchPrefix(id, atSeq?, mode?, signal?): Promise
;
  forkFrom(sourceId, options?, signal?): Promise;
  rewind(id, toBoundary, signal?): Promise;
}
  • readBranchPrefix:定位 atSeq 锚定的闭合 turn/end 边界并返回前缀; mode: "after"(包含目标轮,fork 语义)/ "before"(排除目标轮,编辑 / 重掷 / 重试语义)。
  • forkFrom:纯 append——新会话(parentSession / seedLength),seed = 边界前缀 + seedSuffix,不触碰源会话。
  • rewind:唯一改写事件 log 的操作,事务整体提交或回滚;支持 live 会话(内存 log 截断 + 派生缓存复位 + coordinator cursor 同步,见 @morlay/session-rdbSessionBranchRdbProvider)。
  • syncLiveCursor(sessionId):编排层把 ignorable 版本效果 push 进 live log 后(不发布、不进 write-behind 缓冲),用其对齐 coordinator cursor,避免 后续 append 的 seq 校验错位(默认空实现,rdb 覆写)。

版本树

buildTimeline(snapshots, readOwnEvents, sessionId) 从会话快照(header lineage)+ 每会话自有后缀(seq >= seedLengthsession-branch/version 事件)投影完整版本树。

版本效果事件携带 ignorable: true(对核心可跳过、不进 canonical log), live 会话从内存 log 读到效果,cold 会话 timeline 只有 lineage 骨架。

安装

nub install @morlay/session-branch   # peer: @deepseek-ai/cordis, dsh-session, dsh-session-persistence