dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DSH 自由工作台插件 —— tab 化多会话 · 自由分栏 · 每窗格宿主原版对话框 (DeepSeek Harness plugin)
DSH 自由工作台插件 —— 把 DeepSeek Harness 的对话区变成一个 tab 化、可自由分栏的多会话工作台。每个窗格都是宿主原版对话框(markdown / 工具卡 / 输入框 / 模型选择全在),不是自绘投影。

conversation.content factory 渲染的原版对话框。# 方式一:Release 下载 tgz 直装(免构建,推荐)
# 从 https://github.com/Asthmatic123/dsh-newtype-multititle/releases 下载 .tgz
dsh plugin --profile desktop add <下载的>.tgz
# 方式二:本地路径安装(web profile 同理加 --profile web)
dsh plugin --profile desktop add <本仓库克隆路径>
# 方式三:从源码构建后安装
git clone https://github.com/Asthmatic123/dsh-newtype-multititle.git
cd dsh-newtype-multititle && npm install && npm run build
dsh plugin --profile desktop add .
| dsh 版本 | 状态 |
|---|---|
| 0.1.7-rc.2 | ✅ 主验证线 |
| 0.2.0-rc.2 | ✅ 已验证(desktop profile 实装) |
兼容口径:peerDependencies 跨 minor 区间(>=0.1.7-rc.2 <0.2.1)。0.1.7 与 0.2.0 的六个接缝(conversation.content factory / SessionProvider 座位 / sidebar.panellist / sidebar.right.pane.tab / 拖拽协议 / 基础 CSS 变量)逐条比对一致。
npm run typecheck # tsc --noEmit
npm test # node --test(纯逻辑层)
npm run build # tsdown → lib/index.js(服务端 ESM)+ lib/client.js(客户端 CJS,__ModuleLoader__ 包装)
src/
index.ts 服务端半:cordis 插件,图页只读文件服务(127.0.0.1 白名单根,2MB 上限)
client/
index.tsx 客户端入口:slots 注入(main newtype / sidebar.panellist / 右栏产出物)
workbench/
WorkbenchView.tsx trellis 工作台(布局持久化 / 拖拽桥 / 空态预置)
HostConversationPane.tsx 宿主 factory 窗格(retain 状态机 + 启动退避重试)
SessionPane.tsx 降级兜底(eventSource 只读投影)
SessionAccessories.tsx tab 配件(齿轮菜单 / 右栏开关 / 浏览器按钮)
client/newtype.module.css 样式(lightningcss 内联,内容指纹 tagId 注入)
设计要点:
@deepseek-ai/dsh-client-ui-slots 等由宿主 loader 冻结模块表提供;跨插件 value import 构建期直接报错(bundle purity gate)。<style> 以 sha1(css) 前 8 位为 tagId,热更新只清同 tagId,多 CSS 模块互不覆盖。dsh-newtype.* 前缀:布局 / 图页策略 / 打开方式选择在改名前后互通。