better-session
by morlay
DeepSeek Harness 的 分支式会话编辑 monorepo:在不修改上游 @deepseek-ai/ 代码的前提下,为会话提供 就地编辑 / 重试 / 分支 (rewind / retry / fork)闭环——GUI 里直接编辑用户消息、重试任意回合, 重写 同一会话 (session id 不变),只有分支才派生新 id。
better session
安装
dsh plugin --profile web add github:morlay/better-sessionGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
DeepSeek Harness 的分支式会话编辑 monorepo:在不修改上游
@deepseek-ai/* 代码的前提下,为会话提供 就地编辑 / 重试 / 分支
(rewind / retry / fork)闭环——GUI 里直接编辑用户消息、重试任意回合,
重写同一会话(session id 不变),只有分支才派生新 id。
快速开始
1. 安装(发布后)
一个 bundle 包装齐全部依赖组件:
dsh plugin --profile web add "@morlay/better-session"
安装 @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-session |
profile 聚合 bundle:装配以上全部 + 官方 web-app | 本文件 |
设计要点
- 不改上游代码:全部在插件层实现。
- 就地编辑:edit / retry / reroll 用
rewind截断 +append重写同一 会话(session id 不变、版本树单根);只有fork创建新 id。 rewind支持 live 会话:GUI 打开中的会话也能就地编辑(截断 RDB 与 内存 log、同步 coordinator cursor、重置 agent 轮次游标)。ignorable版本效果:分支版本事件不进 canonical log,非 branch 读者 安全跳过。
原始 README: https://github.com/morlay/better-session/blob/main/README.md ↗
同类插件
查看全部 →
archify
Agent 技能:生成美观、可校验的架构图、工作流图、时序图、数据流图与生命周期图——自包含 HTML、带动画与清晰导出

dsh-turn-rewind
对话回退:基于持久 Change Ledger 回滚会话与工作区状态。

dsh-plugin-cc
把 DeepSeek Harness 接入 Claude Code:评审、批评、委派与会话导入

dsh-interconnect
跨实例互联:经 interconnect 服务在多个 DSH 实例间转发消息与事件。

dsh-chat-import
把 13 家 coding agent(Claude Code、Codex、ChatGPT、Cursor、Gemini、opencode 等)的完整对话历史导入为可续聊的 DeepSeek Harness 会话,并支持反向导出回 Claude Code。

dsh-crew
DSH 插件:从 Claude Code / Codex 向 DSH agent 派活——原生 subagent 进度、宿主内 worker 会话(分级预设),以及为纯文本宿主补上视觉与图像生成的多模态桥