dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DeepSeek Harness 0.2.1 side-chat plugin: a docked right-Sidebar chat tab with shared session context, selection-marked questions, streaming replies and a Ctrl+J shortcut
面向 DeepSeek Harness 0.2.1 Web GUI 的侧边聊天插件。
侧边聊天以右侧栏停靠标签页的形式存在,与「工作区文件 / 新建终端 / 浏览器」共用同一个入口: 只有主动打开时才出现,不悬浮、不遮挡主对话。它会自动共享当前会话的对话内容;在主对话中 用鼠标划选一段内容后,可一键将其作为引用带入并直接提问。
github:JiaskyNo1/dsh-sidechat本仓库是可直接导入的 bundle 包:lib/ 已包含构建产物,安装器会自动完成依赖安装、
bundle 选择与配置注册,无需构建、无需手动改配置。
打开 DSH 侧边栏 → 插件(Plugins) → 添加插件。
在 Git 地址栏粘贴:
github:JiaskyNo1/dsh-sidechat
安装完成后启用插件。当前页面通常会热加载;若未出现,重启 DSH 即可。
| 功能 | 说明 |
|---|---|
| 右侧栏停靠 | 注册为右侧栏标签类型(kind: sidechat),与内置的文件 / 终端 / 浏览器标签并列 |
| 快捷键 | Ctrl+J(Desktop)/ Ctrl+Alt+J(Web)打开;指南卡片与快捷键参考显示按键提示 |
| 会话上下文 | 自动注入当前会话最近 40 条消息(含工具调用与结果,按字符预算截断)、项目根目录、Git 分支与工作区 AGENTS.md 指令 |
| 与主对话一致 | 使用与主对话相同的模型与推理等级、路由默认采样参数;思考过程采用主界面的「思考 / 已思考」折叠样式 |
| 划选引用 | 划选主对话文本后点击「添加到侧边聊天」,引用以草稿形式插入输入框;补充问题并发送后才回答 |
| 回答质量 | 不覆盖 temperature/maxTokens,沿用路由默认值;上下文包含主对话的工具调用与结果,便于给出有依据的回答 |
| 流式输出 | 逐字流式显示,可中途停止 |
| 思考过程 | 可折叠的「💭 思考过程」块 |
| Markdown | 标题、代码块、列表、引用、链接、表格 |
| 模型选择 | 标签页内切换模型与推理等级 |
| 会话隔离 | 每个会话维护独立的侧边聊天历史 |
| 清空 | 二次确认后清空当前会话的侧边聊天 |
浏览器 (lib/client.js)
├── ctx.remote.$mount(TYPERT_REMOTE) 挂载 sidechat Remote
├── ctx.sidebarRightTabs.register({ kind }) 注册侧边栏标签类型
├── sidebar.right.pane.tab (key: dsh-sidechat) 停靠标签页正文
├── ctx.shortcuts.register('sidechat.open') Ctrl+J / Ctrl+Alt+J
└── shell.overlay 划选时出现的「添加到侧边聊天」按钮
│
│ Typert Remote(JSON over /api)
▼
宿主 (lib/index.js)
└── SidechatService
├── getContext(sessionId) 项目根 / Git 分支 / 会话最近 12 条消息
├── models() provider / model / reasoning effort 目录
├── start(messages) 调用 llm.stream 生成,返回 job id
├── poll(jobId) 返回累计文本、思考过程、完成状态与错误
└── stop(jobId) 停止任务
设计要点:
zod;@deepseek-ai/* 均为类型导入,安装后无需解析对等依赖。react / react/jsx-runtime / zod。./typert 导出为手写 strict manifest,由 dsh-typert-loader 自动发现并注册。sidebar.right.pane.tab,每个会话自动获得独立实例。| 操作 | 方式 |
|---|---|
| 打开 | 右侧栏「打开右侧边栏」→ 指南页「侧边聊天」卡片;或按 Ctrl+J(Web 为 Ctrl+Alt+J) |
| 关闭 | 标签页上的 ✕ |
| 划选引用 | 选中主对话文字 → 点击「添加到侧边聊天」→ 引用草稿插入输入框 → 补充问题后按 Enter / 点击「发送」 |
| 切换模型 | 标签页底部下拉框选择模型与推理等级 |
| 停止生成 | 生成中点击「停止」 |
| 清空 | 标签页头部「清空」,二次确认 |
侧边聊天是独立问答面:不写入主会话,也不会调用工具。
需要 Node.js 24 与安装好依赖的 DSH 0.2.1 运行时(@deepseek-ai/* 包)。
pnpm install # 安装开发依赖
pnpm run typecheck # tsc --noEmit
pnpm run build # tsc 中间产物 + tsdown 构建
构建产物:
| 文件 | 说明 |
|---|---|
lib/index.js | 宿主半(ESM) |
lib/typert.js | 宿主 strict Typert manifest |
lib/types.js | wire 类型模块(运行时为空) |
lib/client.js | 浏览器 bundle,window.__ModuleLoader__.load 包装,CSS Modules 内联 |
构建中间产物(lib/types/、lib/*.map)已被 .gitignore 排除,不进入仓库。
client-modules 的 bundle 格式、ui-sidebar-right 标签注册、
ui-slots keyed slot、client-shortcuts 命令注册、typert Remote 协议。package.json 的 peerDependencies 与 tsdown.config.ts
中的平台共享模块表。.
├── cordis.patch.yml # bundle 补丁:声明本包
├── src/
│ ├── index.ts # 宿主半:SidechatService
│ ├── typert.ts # 宿主 strict Typert manifest
│ ├── types.ts # wire 类型
│ └── client/
│ ├── index.ts # 浏览器半入口
│ ├── apply.tsx # 标签类型 / 标签正文 / 快捷键 / 划选按钮 / Markdown
│ ├── remote.ts # 浏览器侧 Remote contribution
│ ├── settings.ts # 偏好存储(localStorage)
│ └── sidechat.module.css
├── lib/ # 预构建产物(安装即用)
├── tsconfig.json
└── tsdown.config.ts
版本变化与升级说明见 CHANGELOG.md。