morlay / better-session

목록에 있음

better session

main세션 소스 보기

설치

npx -y @deepseek-ai/dsh plugin --profile web add github:morlay/better-session

이 설치 명령은 GitHub 저장소 주소에서 생성된 확인되지 않은 시작점입니다.

README

유지 관리자가 작성한 문서 스냅샷입니다.

GitHub에서 보기 ↗
커밋 2c5b4cf동기화 2026. 8. 18.

better-session

DeepSeek Harness 的分支式会话编辑 monorepo:在不修改上游 @deepseek-ai/* 代码的前提下,为会话提供 就地编辑 / 重试 / 分支 (rewind / retry / fork)闭环——GUI 里直接编辑用户消息、重试任意回合, 重写同一会话(session id 不变),只有分支才派生新 id。

快速开始

1. 安装(发布后)

一个 bundle 包装齐全部依赖组件:

dsh plugin --profile web add "@morlay/better-session" --config.@morlay:registry=https://npm.pkg.github.com/

安装 @morlay/better-session 会自动带上子包(@morlay/session-branch@morlay/session-rdb@morlay/ui-conversation-message-actions),并由 bundle 的 patch 自动装配:

  • ctx.sessionPersistence ← RDB(SQLite / PostgreSQL)持久化后端
  • ctx.sessionBranch ← rewind / fork 数据层
  • ctx.sessionEditor ← edit / retry / fork 编排(HTTP:/session-editor
  • conversation.chat.node ← 渲染替换(user 消息行内编辑 / 重试按钮)

2. 使用

装配后即可在 GUI 会话中:

  • 编辑 user 消息 → 就地重写并重放(重新生成回复)
  • 重试 任意闭合回合 → 就地重放该回合输入(带确认弹窗)
  • 分支(fork)→ 从任意闭合边界派生新会话

也可以直接调用服务:

// 编排层(host)
await ctx.sessionEditor.retry({ action: "retry", sessionId, turn: 2, cascade: "truncate" });
// 数据层
await ctx.sessionBranch.rewind(sessionId, 5);
await ctx.sessionBranch.forkFrom(sourceId, { atSeq: 6, childSessionId });

3. 配置(rdb)

$DSH_HOME/settings.yaml

session-rdb:
  type: sqlite # 或 postgres + connectionString
  path: /abs/path/to/sessions.sqlite

本地开发(monorepo)

just dep      # 安装依赖
just build    # 构建全部包(tsdown)
just test     # vitest(含 PostgreSQL 契约测试,需 TEST_PG_URL)
just lint     # oxlint
just dev      # build + setup-dsh + 启动 web(dsh --profile web,DSH_HOME=.dsh-store)

包一览

职责文档
@morlay/session-branch契约层:SessionBranchProvider 抽象 + SessionBranch 服务 + 版本树投影README
@morlay/session-rdb实现层:RDB 持久化(PersistenceBackend)+ 分支 provider(SessionBranchProvider)双服务README
@morlay/ui-conversation-message-actions编排层 + UI:edit / retry / fork 编排 + conversation.chat.node 渲染替换README
@morlay/better-sessionprofile 聚合 bundle:装配以上全部 + 官方 web-app本文件

设计要点

  • 不改上游代码:全部在插件层实现。
  • 就地编辑:edit / retry / reroll 用 rewind 截断 + append 重写同一 会话(session id 不变、版本树单根);只有 fork 创建新 id。
  • rewind 支持 live 会话:GUI 打开中的会话也能就地编辑(截断 RDB 与 内存 log、同步 coordinator cursor、重置 agent 轮次游标)。
  • ignorable 版本效果:分支版本事件不进 canonical log,非 branch 读者 安全跳过。

프로젝트 파일 및 신호

표시된 항목은 디렉터리 스냅샷에서 감지된 공개 저장소 신호입니다.

테스트감지됨
문서감지됨

저장소 정보

언어
TypeScript
라이선스
MIT
마지막 업데이트
2026. 8. 18. AM 8:17

신중하게 설치하기

소스 코드, 권한, 수명 주기 스크립트, 의존성 및 네트워크 접근을 검토하고 신뢰하지 않는 플러그인은 격리 환경에서 테스트하세요.