← 返回列表
未验证
为 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
扫码进群