Back to home@lyhue1991

dsh-soup

No description

Stars
1
Language
JavaScript
Created
Aug 19, 2026
Updated
Aug 25, 2026
GitHub repo

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 还是那锅汤,只是变得美味了。

dsh-soup 界面预览:右侧文件树 + 会话内预览 tab + 速率徽标

速览

调料是什么一句话
🧅 右侧文件树和左侧工作区并列的右列文件浏览器提鲜点缀,结构在旁长出来
🫚 会话内预览会话区顶部新增「预览」标签页去腥增香,内容就地入味
🧄 多行 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 预览渲染相对路径图片![x](view.jpg) 经同源 /api/dsh-soup/img 端点内联加载(confine 围栏 + 仅图片类型 + 拒跨站)。
    • 自动刷新:资源管理器与预览页每 3 秒轻量探测目录/文件签名(mtime),变了才重拉;面板关闭且无预览时零开销;宿主不可达时指数退避(封顶 60s)。
    • 顶部 ⟳ 刷新按钮:重拉整棵树并保持已展开子目录不收起;空白右键「刷新」项同步升级为同一枚图标。
    • 工具栏按钮升级:头部 ⟳/⬆/✕ 与预览「重载」对齐 JupyterLab 设计(26px 触达区 + SVG 图标,BSD-3 引用);修复关闭按钮渲染异常。
  • 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

许可证

MIT