前言¶
在 DeepSeek Harness(DSH)里写多路对话时,输入框里还没发出去的文字往往不会变成侧边栏里一条「看得见」的会话。切到别的会话再回来,未发送内容可能丢、也可能只能靠内核自己的恢复逻辑;连续点「新建会话」还容易堆出一串空占位行。Cursor 一类客户端会把未发送输入当成草稿行挂在列表里,可预览标题、可点回、可丢弃。
下面介绍社区插件 dsh-cursor-sessions(维护者 Allenbyz,GitHub:Allenbyz/dsh-cursor-sessions)。它是纯 Web 客户端插件,在 DSH Desktop / Web 侧边栏实现「草稿即会话行」、空草稿复用与一键丢弃,不改内核文件。设计思路与部分实现改编自 ne-ilyxa/dsh-session-drafts(BSD-3-Clause),并针对 DSH 0.2.1-rc.2 做了补丁点迁移与标题时序等调整。目录页:skillhub.cn/plugins/Allenbyz/dsh-cursor-sessions。
这是什么¶
dsh-cursor-sessions 给 DSH 侧边栏加上 Cursor 风格的草稿聊天管理:未发送输入不再「隐形」,而是成为可看见、可点回、可丢弃的会话行;新建会话时优先复用已有空草稿,避免空行堆积。形态为 Host 半边空实现的 Web 客户端插件,运行时无额外依赖;自有代码 MIT,改编部分见仓库 THIRD-PARTY-NOTICES.md。
package.json 声明引擎范围为 dsh >=0.2.1-rc.1 <0.3.0-0;README 写明在 DSH 0.2.1-rc.2 上已验证,0.2.0-rc.2 及更早未验证。
核心功能¶
草稿即会话行¶
- 未发送文字实时成为列表标题(最多 60 字符预览)。
- 有未发送编辑时标题变灰,行首显示「编辑中」铅笔标志(轻微呼吸动画);空占位保持常规颜色。
- 清空输入后标题立即回退为「新会话」,灰色与铅笔同时消失。
不堆空占位¶
点「新建会话」时,若本工作区已有空草稿,会先跳到该草稿并 adopt 同一 sessionId;只有所有草稿都有文字时才真正新建 blank 会话。快捷键 Ctrl+Alt+N 与按钮遵循同一规则。
切走保留、切回继续¶
草稿行在切换会话后仍保留在列表中;点回草稿行时,未发送文字由内核自动恢复,并继续随输入更新标题(README 说明这与 @ne-ilyxa/dsh-session-drafts 0.6.1 的行为有区别)。
一键丢弃与「毕业」¶
悬停草稿行时,尾部出现唯一操作 ×,执行归档丢弃(session log 保留)。发出一条消息后,草稿变为普通聊天,行上的 ⋯ 菜单恢复。
运行时实现(只读、可逆)¶
插件在运行时只做三件事,不修改内核文件:
- 列表投影:影子
sessions.list.getSnapshot,把「无已发送 turn」的会话投影为blank:false与实时标题。 - 新建规则:影子
uiWorkspace.connectBlank,普通新建先 adopt 空草稿,全占用才 mint;带options的入口保持内核语义。 - 行标记:
MutationObserver+data-dcs-draft属性与 CSS 行内样式。
内部推导只读原始快照,不写编辑器、不新建持久化;影子属性可逆,卸载时逐项还原。无网络请求、无遥测;只读内核 localStorage 键与 DOM。
安装与启用¶
在已安装 DSH CLI 的环境中,使用 README 给出的命令(Desktop profile):
# 从 GitHub
dsh plugin --profile desktop add github:Allenbyz/dsh-cursor-sessions
# 卸载
dsh plugin --profile desktop remove dsh-cursor-sessions
安装后随 Host 重启或 HMR 进入 Web boot graph;若界面没有变化,刷新一次(Ctrl+R)。
典型用法与交互对照¶
日常操作可按下面理解(与 README 交互表一致):
| 操作 | 行为 |
|---|---|
| 新建会话(本工作区有空草稿) | 跳到该空草稿,不新增 |
| 新建会话(所有草稿都有文字) | 新建一个 blank 会话 |
| 在草稿里输入 | 标题逐键更新,行变灰并显示铅笔 |
| 切到别的会话 | 草稿行与标题保留 |
| 点回草稿行 | 未发送文字由内核自动恢复 |
| 删光输入 | 标题立即回到「新会话」 |
| 悬停草稿行 → 点 × | 归档丢弃(日志保留) |
| 发出一条消息 | 草稿「毕业」为普通聊天 |
Ctrl+Alt+N |
任意位置新建(同上规则) |
维护者在仓库中提供了语法检查与测试入口,供二次开发时本地验证:
node --check client.js
node tests/core.test.mjs # 21/21
node tests/apply.test.mjs # 7/7
适用场景与注意¶
适合谁:经常在 DSH 里并行起草多条未发送消息、希望侧边栏行为接近 Cursor 草稿列表的 Desktop / Web 用户(基线 0.2.1-rc.2)。
已知边界(来自 README):
- 空且非当前的历史 blank 不列入列表(避免脏行),但新建时仍会复用它们。
- 图片/文件附件不持久化(内核行为),恢复时只有文字。
- 草稿文字存放在浏览器
localStorage,按 origin 隔离;桌面端与远程网页端不共享。
安装前建议:插件以当前 DSH 进程权限在客户端运行,会挂钩工作区 UI 并读取 DOM / localStorage。安装前应自行查看 GitHub 源码 与许可证(自有 MIT + 改编部分 BSD-3-Clause)。DSH 社区目录站点(如 skillhub.cn)为独立生态索引,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-cursor-sessions 用纯客户端补丁把「未发送输入」变成可管理的草稿会话行,并收紧「新建会话」的空占位逻辑。若你已在 0.2.1-rc.2 上使用 DSH,可按上文命令安装,再结合 Ctrl+Alt+N 与悬停 × 完成起草与丢弃闭环。
- 目录页:https://www.skillhub.cn/plugins/Allenbyz/dsh-cursor-sessions
- 仓库:https://github.com/Allenbyz/dsh-cursor-sessions