dsh-soup
No description
- Stars
- 1
- Language
- JavaScript
- Created
- Aug 19, 2026
- Updated
- Aug 25, 2026
Introduction
dsh-soup
DeepSeek Harness 本身是一大锅汤——营养丰富,但尝起来略显寡淡,不太好喝。dsh-soup 给它加上点 UI 调料,让它变得美味起来。
为什么叫 soup
DSH(DeepSeek Harness)功能很强:会话、工具、轨迹、Goal 一应俱全,营养都在汤里。但 UI 上略显寡淡——文件散在终端里、预览要跳出去、模型在跑你却看不到速度、长一点的目标被截成一行省略号。
dsh-soup 不重写 DSH,而是像下厨一样给这锅汤加几样调料:
- 🧅 葱 —— 右侧文件树,提鲜点缀,让项目结构在会话旁长出来;
- 🫚 姜 —— 会话内「预览」tab,去腥增香,Markdown / 代码 / 图片 / PDF / Notebook 就地看;
- 🧄 蒜 —— 多行 GoalBar,味重提味,把那条总被截断的目标条熬成完整一行行;
- 🧂 盐 —— 输入框上方的实时
t/s速率徽标,百味之首,虽小却提味,实时知道模型跑得多快。
四样调料,一个插件,三平台通用(macOS / Linux / Windows)。装上之后——DSH 还是那锅汤,只是变得美味了。

速览
| 调料 | 是什么 | 一句话 |
|---|---|---|
| 🧅 右侧文件树 | 和左侧工作区并列的右列文件浏览器 | 提鲜点缀,结构在旁长出来 |
| 🫚 会话内预览 | 会话区顶部新增「预览」标签页 | 去腥增香,内容就地入味 |
| 🧄 多行 GoalBar | 不再被截断的多行目标条 | 味重提味,目标完整入味 |
| 🧂 速率徽标 | 输入框上方的彩色 t/s 指示 | 百味之首,小而提味 |
它能给你什么
🧅 右侧文件树(主打 · 葱 · 提鲜点缀)
一个真正和左侧工作区并列的文件浏览器——不悬浮、不遮挡,配色与宽度都与左侧一致(默认 280px,拖左缘在 264–420px 间调整)。
- 跟随会话:自动展示当前会话的工作目录,切会话/工作区时跟着走。
- 右键菜单:预览、用系统打开、重命名、移到废纸篓、复制完整路径、下载到本机。
- 多选与拖拽:⌘/Ctrl 加选、Shift 连选;文件拖进目录即移动;系统文件拖入即上传(>1MB 自动分块,带实时进度)。
- 类型图标:按品牌色区分文件类型(notebook 橙、markdown 紫、json 黄、pdf 红…)。
- 沙箱围栏:所有文件操作只能落在你的工作区与会话目录内,越界自动拒绝。
- 自动刷新:每 3 秒轻量探测一次目录签名(mtime),有变化才重拉——agent 或终端里的文件增删改无需手动刷新即可出现;面板关闭且无预览时零开销;宿主不可达(如 DSH 重启中)自动指数退避(封顶 60s)。
- 一键刷新:顶部 ⟳ 重拉整个文件树,已展开的子目录保持展开不收起。
🫚 会话内文件预览(主打 · 姜 · 去腥增香)
双击文件、或右键「👁 预览」,会话区顶部就会新增一个**「预览」标签页**,和「对话 / 轨迹」同级——看文件不用跳出当前会话。
- 多文件子标签:单个「预览」tab 内用子标签条管理多个文件,切走再切回内容不丢;最多同时开 5 个,超出按先进先出挤掉最早的。
- 只读预览(⟳ 可重载,不提供编辑/保存),按类型自动选渲染方式:
- Markdown:渲染为富文本(复用 DSH 聊天同款渲染器)。
- HTML:可交互沙箱(脚本被隔离,碰不到 GUI 的 DOM/存储)。
- JSON:格式化 + 语法着色。
- CSV / TSV:表格视图(引号感知、首行作表头、最多 500 行 × 64 列)。
- 代码:常见语言语法高亮(Shiki,主题跟随 DSH 明暗)。
- PDF:浏览器原生查看器(≤20MB,含缩放/搜索)。
- Notebook(.ipynb):GitHub 风格静态渲染(代码高亮 + 图片/输出内联)。
- 图片:png/jpg/gif/webp/svg 等内联展示(≤8MB)。
- 其余:二进制给出提示,超大文本截断为纯文本。
- 跟随会话:切到别的项目时,范围外的预览自动关闭。
- 自动重读:正在看的文件被外部(agent / 编辑器)修改时,预览内容几秒内自动更新,无需手动点「⟳ 重载」。
🧄 多行 GoalBar(附赠 · 蒜 · 味重提味)
把 DSH 原生那条总是被截断成一行、末尾 … 的 GoalBar,放开成多行完整显示,编辑控件也从单行 input 换成 textarea。
- 数据与工具完全复用原生:goal 的增删改查仍走 DSH 原生
create_goal/get_goal/update_goal,不替换、不遮蔽数据。 - 操作一致:暂停 / 恢复 / 编辑 / 清除按钮与原生 GoalBar 相同;编辑时
Ctrl/⌘ + Enter保存、Esc取消。 - 不改 DSH 源码:以更低优先级遮蔽默认实现,主题跟随桌面明暗。
🧂 模型实时速率徽标(附赠 · 盐 · 百味之首)
输入框正上方的一枚小徽标,模型生成时出现、结束自动消失——让你对「现在到底在等还是在跑、跑得多快」有直观感受。
- 等待阶段:灰色「正在等待模型...」(省略号 1→2→3 原地循环)。
- 流式阶段:token 计数 + 彩色
t/s速率(≥50 青 / ≥30 绿 / ≥15 黄 / 其余红)。 - 数据可信:来自模型真实流(不是浏览器端估算);用近 2 秒滑动窗口算瞬时速率,中途停顿会回到等待态,不会被摊成个位数。
安装
需要 DSH Desktop(或任何支持
dsh plugin add的 DSH 安装)。
dsh plugin add @lyhue1991/dsh-soup
或在 DSH Desktop「设置 → 插件 → 插件市场」搜索 dsh-soup 安装。安装后重启 DSH 即可生效。
上手
- 打开文件树:点击 Session log 右侧的 📁;空白新会话则在输入框上方右端找 📁。
- 预览文件:在文件树里双击文件,或右键选「👁 预览」。
- 看速率:向任意会话发一条消息,输入框上方即出现徽标。
- 多行 GoalBar:创建 goal 后自动以多行展示。
更新日志
- 0.3.0(当前) —
- Markdown 预览渲染相对路径图片:
经同源/api/dsh-soup/img端点内联加载(confine 围栏 + 仅图片类型 + 拒跨站)。 - 自动刷新:资源管理器与预览页每 3 秒轻量探测目录/文件签名(mtime),变了才重拉;面板关闭且无预览时零开销;宿主不可达时指数退避(封顶 60s)。
- 顶部 ⟳ 刷新按钮:重拉整棵树并保持已展开子目录不收起;空白右键「刷新」项同步升级为同一枚图标。
- 工具栏按钮升级:头部 ⟳/⬆/✕ 与预览「重载」对齐 JupyterLab 设计(26px 触达区 + SVG 图标,BSD-3 引用);修复关闭按钮渲染异常。
- Markdown 预览渲染相对路径图片:
- 0.2.0 — 改名
dsh-tree → dsh-soup(npm 包@lyhue1991/dsh-soup)。 - 0.1.18 — 下载进度行 + 完成通知自动消失。
- 0.1.17 — 大文件流式下载(一次性票据 URL + 流式发送),替代 base64-over-JSON,任意大小零内存放大。
- 0.1.16 — 下载菜单项 + 复制完整路径修复 + 目录展开态图标。
- 0.1.15 — 只读文件预览系统:会话区新增「预览」tab(md/html/json/csv·tsv 渲染 + 图片/PDF/Notebook/代码高亮 + 纯文本兜底);宿主新增
read动作;路由安全加固。 - 0.1.12 — 吞吐徽标状态修复:流式即显 token 计数、滑动窗口瞬时
t/s、停顿检测回等待态。 - 0.1.11 — 空白新会话入口(输入框上方右端 📁)。
- 0.1.10 — GoalBar 改用原生 goal 工具 + 多行展示(textarea)。
- 0.1.7 — 速度徽标稳定化(贴附 Deep diving 状态行)。
- 0.1.5 — 跨平台:文件核心走
node:fs;新增模型吞吐徽标。 - 0.1.3 — 修复 details 插槽优先级与布局实例引用。
开发
纯 JS 产物,无需构建:
lib/index.js— 宿主半区(注册/api/dsh-soup文件操作路由 +llm/stream速率统计)。lib/client.js— 浏览器半区(右侧文件树面板 + 预览 tab + 速率徽标 + 多行 GoalBar,内联 CSS)。cordis.patch.yml— 在组合中插入ui-dsh-soup。
git clone https://github.com/lyhue1991/dsh-soup.git
cd dsh-soup