DeepSeek Harness Hub
← 返回列表

ne-ilyxa/dsh-session-drafts

DeepSeek 客户端兼容 / 相关生态spec-screened在 GitHub 查看 ↗
未验证

为 DeepSeek HarnessDSH打造的 Cursor…

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/26 · 已提供中文文档

DeepSeek Harness(DSH)的 Cursor 风格草稿聊天:新建会话会复用空草稿——只有当所有草稿都含有未发送文本时,才会生成一个新草稿——因此空占位符永远不会堆积,与 Cursor(或 Telegram)的聊天列表完全一致。

综合分
29.1
GitHub 分
29.1
用户评分
★ Stars
2
周下载量
兼容 / 相关生态插件(非 dsh 原生,请按其对应运行时安装)
git clone https://github.com/ne-ilyxa/dsh-session-drafts.git
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-session-drafts

CI

为 DeepSeek Harness(DSH)打造的 Cursor 风格草稿聊天:新建会话会复用空草稿——只有当所有草稿都含有未发送文本时,才会创建一个全新的草稿——因此空占位符永远不会堆积,与 Cursor(或 Telegram)的聊天列表完全一致。每个草稿都以普通行的形式存在于侧边栏树中:未发送文本的预览标题、创建时间、铅笔标记和灰色调,在页面刷新和宿主重启后依然保留。没有弹窗,没有草稿菜单。

原版 Web 外壳会复用工作区的单个空白会话,无论是否输入了文本(每个工作区一个空聊天,静默丢弃你的草稿),并在树中隐藏所有其他空白会话。本插件取代了这两种行为。

它的功能

1. 在每条创建路径上都不再堆积空草稿。 connectWorkspace 是原版运行时用于所有这些路径的汇聚点(原版 startSession、启动时的初始选择、hero 工作区选择器),因此规则正是修补这个位置:连接时首先跳转到该工作区已有的空草稿(一个空白会话,其输入框中没有未发送文本),只有当所有草稿都被占用时,才会创建一个全新的持久会话(session.create 会在宿主侧持久化 Session 实体)。创建路径刻意保留原版方法——其按工作区的进行中去重会将快速双击合并为一次创建。已输入内容的草稿会作为各自的聊天保留在原处;空占位符永远不会增殖——无论是通过按钮、文件夹 +、Ctrl+Alt+N、选择器,还是启动时。原版的目标策略得以保留:显式工作区 → 当前会话的工作区 → 最近的工作区;完全没有工作区时仍会清空为纯粹的“新建会话”视图。(相比之下,原版方法会复用工作区的空白会话,无论是否输入了文本——每个工作区一个空聊天,静默丢弃你正在写的草稿。)
2. 草稿作为树行(v0.2 模型)。 原生树会隐藏除当前会话以外的空白会话,因此该插件覆盖的是数据而非渲染器:sessions.list.getSnapshot 在实时 store 对象上被遮蔽(身份稳定、HMR 安全),以将每个非子代理的空白会话投射为 blank: false 并带有草稿标题。随后原生树会将每个草稿渲染为其工作区下的一等行——尾部单元格中显示创建时间,点击即可打开。第一条发送的消息会在宿主上将 blank 翻转,该行随即变为普通聊天(包含完整的 ⋯ 菜单),不再受覆盖层影响。同一覆盖层还会中和 connectWorkspace 内部的空白复用扫描(它读取同一个列表),这正是防止在打过补丁的 connect 判定需要新建时,原生新建路径复活旧空白会话的原因——选择器、启动选择和按钮都遵循相同的空草稿规则(见 1)。
3. 唯一操作:×。 草稿是占位符,不是聊天——重命名/复刻/归档是聊天操作,因此原生 ⋯ 菜单在草稿行上被禁用。唯一的尾部控件是 ⋯ 自身悬停单元格中的一个 ×:在行悬停前隐藏,灰色,与 ⋯ 一样为 16px,单击即可丢弃草稿(工作区归档——该行消失,会话日志保留)。在第一条发送的消息之后,该行升级为普通聊天,并恢复其完整的 ⋯ 菜单。
4. 实时预览标题。 草稿的行标题是其未发送的编辑器文本(Telegram 风格,空白折叠,60 个字符),通过 conversation.input 实时读取并镜像到 localStorage,以便预览在重新加载后仍然保留;空编辑器显示本地化的 New Session。
5. 视觉草稿标识。 草稿行获得灰色标题(主题感知设计令牌——深色主题中为 gray-next-to-white,浅色主题中为 muted-next-to-black),并在行的空状态槽中显示铅笔图标,由 MutationObserver 标记绘制,该标记通过行的会话 id 识别行(通过行的 React fiber 解析——绝不通过文本,因为文本可能与已升级聊天的标题冲突);文本前缀匹配仅作为无法访问 fiber 的运行时形态的回退方案保留。纯粹是外观性的且可自愈:如果 DOM 形态发生偏移,行仍可正常工作,只会失去色调(在扁平的“In one list”视图中该槽不存在,因此扁平行保留灰色色调但没有图标)。
6. 零核心修改。 实例级属性遮蔽由 Symbol.for 标记保护(跨 HMR 幂等),在插件卸载时恢复,在任何同步失败时回退到原生行为。不修改任何 harness 文件——安装插件即可使用。

安装

dsh plugin --profile web add link:/path/to/dsh-session-drafts
or from a published copy:
dsh plugin --profile web add @ne-ilyxa/dsh-session-drafts

然后重启 DSH web 宿主(配置文件启动会将客户端 bundle 组合进启动图;此插件不会尝试热激活)。

发布渠道
- npm — @ne-ilyxa/dsh-session-drafts;由维护者手动发布(npm login && npm publish --access public —— prepack 会构建软件包)。CI 从不接触注册表。
- 预构建 tarball —— 推送 v 标签会运行 release.yml:检查 → pnpm pack → 将 dsh-session-drafts.tgz 附加到 GitHub Release。无需 npm 即可安装,也无需 pnpm 的 allowBuilds 构建批准;这是应用商店偏好的产物。

键盘快捷键

| 快捷键 | 操作 |
|---|---|
| Ctrl+Alt+N | 从任意位置新建会话 —— 与按钮规则相同:跳转到空草稿,仅当所有草稿都被占用时才创建(与布局无关 —— 匹配物理 KeyN,包括俄语布局) |

(v0.1 的 Ctrl+Alt+D 弹出层切换随弹出层一起消失了。)

验证其是否正常工作

1. 在工作区下有一个空草稿时,点击 New Session —— 你会落到那个空草稿上;不会创建任何新内容(空占位符从不堆叠)。
2. 在其中输入一些内容,然后再次点击 New Session —— 现在会创建并选中一个新草稿;已输入的那个仍留在树中,标题改为你未发送的文本。刷新页面 —— 一切仍然存在。
3. 悬停在一个草稿行上 —— 在其他行显示 ⋯ 的位置会出现一个灰色 ×;点击它以丢弃该草稿。在其中发送一条消息,它就会升级为普通聊天行(⋯ 菜单恢复)。
4. 宿主真相:仅在应当创建时才会创建 —— 会话在页面刷新和宿主重启后仍然存在。

截图

DSH Web UI 中的插件 —— 草稿存在于侧边栏树中:

DSH 侧边栏中的草稿

使用草稿

开发

pnpm install
pnpm run check     # typecheck + build + node --test tests/.test.mjs
pnpm run build     # host no-op + browser bundle (lib/client.js, module-loader wrapped)
pnpm test:e2e      # full UI flow on an isolated DSH host (needs a harness checkout + Chrome)
node scripts/capture-screens.mjs   # re-shoot assets/drafts-*.png against a live isolated host

E2E 冒烟测试会启动一个一次性的 DSH Web 宿主(它有自己的 DSH_HOME 临时配置文件,并安装了此检出),在无头 Chrome 中驱动真实 UI,并断言宿主侧会话真相以及树 DOM。当环境缺失时,它会以退出码 0 跳过 —— 通过 E2E_DSH_ROOT(harness 检出,默认 /home/ilya/deepseek-harness)和 CHROME_PATH(默认 /usr/bin/google-chrome)进行配置。

布局:

- src/index.ts —— 宿主部分,刻意不执行任何操作(该软件包必须是可加载的 Profile Bundle;所有行为都在浏览器侧)。
- src/client/index.tsx —— 浏览器部分:startSession 补丁、sessions.list 草稿投影(projectDraftList)、实时预览镜像、DOM 行标记、热键、zh/en 词典。没有 React,没有插槽 —— 原生树渲染草稿。
- tests/ —— 针对构建后 bundle(VM 加载)的纯逻辑测试 + 软件包布局防护;tests/e2e/ —— 隔离宿主 UI 冒烟测试。
兼容性

- DSH 客户端运行时 0.1.0-rc.8 时代的服务形态(workspaces.startSession、sessions.list、sessions.create、conversation.input)。
- 这些补丁以降级方式运行,响亮但安全:如果运行时形态发生偏移,会触发控制台警告,相应的部分保持原样。

许可证

BSD-3-Clause © ne-ilyxa

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群