Back to home@lussey820

dsh-essentials-bundle

DSH (DeepSeek Harness) Web UI all-in-one essentials pack — a bundled collection, not a single-feature plugin: chat wallpaper / token usage stats / session manager / per-turn undo with artifact rollback / built-in file explorer & editor. Zero-dependency, inject-only, never overrides core.

Stars
0
Language
JavaScript
Created
Aug 26, 2026
Updated
Aug 27, 2026

Introduction

dsh-essentials-bundle

DSH(DeepSeek Harness)Web UI 基础核心全家桶插件

All-in-one essentials pack —— 一个插件覆盖聊天壁纸 / 用量统计 / 会话管理 / 每轮撤销 / 文件工具五大日常场景,是「全家桶」,不是单点功能插件。

DSH Version License

零依赖 · 不覆盖核心模块 · 只注入 CSS / 设置项 / 插槽 / 路由

曾用名:dsh-backdropdsh-toolboxdsh-essentials-bundle


和同类插件有何不同

DSH 生态里有不少「单点功能」插件(只做回退、或只做归档等)。本插件刻意选择不同的定位:做成一套可开箱即用的全家桶,而非叠加多个小插件。

维度本插件(dsh-essentials-bundle)单点同类竞品(如 dsh-rewind / dsh-turn-rewind / dsh-turn-delete / dsh-unarchive)
定位全家桶:5 类场景一个包搞定通常只解决一个功能点,需要装多个插件才能凑齐
覆盖壁纸 + 用量统计 + 会话管理 + 每轮撤销 + 文件浏览器/编辑器多为回退或归档单一能力
独占卖点带产物回退的每轮撤销(fork + 文件快照回退 + 子代理清理)、文件浏览器 / 就地编辑器多为纯消息层回退,不带文件/子代理回收
生态入口dsh-plugin / cordis-plugin topic 收录,便于发现分类更分散
变更原则只注入不覆盖,零依赖,跨小版本内置 fail-open 降级各自实现,契约侵入深浅不一

一句话:如果只想补一个功能,装对应的小插件即可;如果你想要一套开箱即用的 DSH 基础体验,装这一个 bundle 就够了。


功能模块

围绕 DSH 聊天工作流的日常使用,这个 bundle 把 5 类高频能力打包进一个插件,开箱即用。

🖼 模块一:聊天界面换张背景

不想再看默认的纯白/纯黑聊天窗?在 设置 → 通用 → 壁纸背景 上传一张本地图,或直接粘贴一个图片 URL,聊天区立刻变成你的风格。

  • 支持透明度、暗化、对齐、模糊、缩放、暗角、覆盖范围、场景增强逐项微调;
  • 配置保存到浏览器 localStorage,下次打开依旧是你的设定;
  • 适合用一张半透明的氛围图,把聊天区打造成专注的 workspace。

📊 模块二:实时盯着 token 花了多少

代码写嗨了怕超额度?在 设置 → 查看用量 查看统计面板:

  • 汇总输入 / 输出 / 缓存读取 token消息条数
  • 下方列出每个会话的明细,找出最费 token 的那轮;
  • 60s 自动刷新,不用手动点。

🗂 模块三:整理越来越长的会话列表

会话一多就乱?在 设置 → 会话管理 集中管理:

  • 删除会话,带运行中保护(agent 还在跑时不给删)+ 二次确认防误删;
  • 一键清空子代理记录,释放磁盘并让列表更清爽。

↩️ 模块四:撤销点错的那一轮

AI 这轮答歪了、还顺手改乱了文件?在每个 AI 回复的操作行点撤销图标:

  • 整轮对话被移除,并回退该轮产生的文件产物(基于文件快照);
  • 一并清理这轮新开的子代理记录,回到干净状态。

📁 模块五:不开文件管理器就在旁边翻文件

边聊边改代码,还要切出去看文件?装了这个插件,右侧会有个常驻文件面板

  • 折叠树懒加载会话工作目录,不用一次读全;
  • 按文件名搜索快速定位;
  • Markdown / 代码高亮预览,直接看内容;
  • 就地编辑Ctrl+S 保存)与新建文件夹,改代码不用离开页面。

适配版本

说明
适配 DSH仅验证 v0.1.1-rc.2(组件由 DSH web 启动时注入,client 模块清单在启动时构建,升级 DSH 后如失效请重启)
兼容性低版本未测试。 插件的撤销 / 会话管理依赖较新的 DSH 内部契约(sessions.fork(atSeq)workspaceRegistry 等),这些 API 无文档保证,跨小版本可能变更签名;相关调用已做 fail-open 降级,但在旧版本上可能退回基础行为,请以 v0.1.1-rc.2 为准
插件版本1.0.4
平台DSH Web

安装

本插件作为 profile 的外部包(out-of-tree / file 依赖) 使用。

# 1. 打包(在插件目录)
npm pack

# 2. 在 DSH 的 web profile(如 ~/.dsh/profiles/web)里作为 file 依赖安装
#    package.json 增加:
#      "dependencies": { "dsh-essentials-bundle": "file:/path/to/dsh-essentials-bundle-<ver>.tgz" }
cd ~/.dsh/profiles/web
pnpm install

# 3. 本插件自带 dsh.bundle(cordis.patch.yml),会自动 insert 进 profile 的 Loader entries。
#    其 cordis 插件名 = 包名 dsh-essentials-bundle(与 lib 导出的 name 一致)

安装后重启 DSH web,插件即以 dsh-essentials-bundle 的 cordis 名称加载(client 模块清单在启动时构建,改名/换装后需重启)。


界面入口

功能入口位置
🖼 壁纸背景设置 → 通用 → 壁纸背景
📊 查看用量设置 → 查看用量(顶级节)
🗂 会话管理设置 → 会话管理(顶级节)
↩️ 撤销该轮对话每条 AI 回复操作行 → 撤销图标(复制按钮旁)
📁 文件浏览会话头部 → 文件浏览按钮,打开右侧常驻面板

后端路由(/dsh-toolbox/*,沿用历史前缀;同源只读 / 有限写)

方法路径作用
GET/usageToken 用量汇总 + 按会话
GET/subagents统计子代理记录
POST/subagents/clear清空全部子代理记录
GET/files列目录(白名单内)
GET/read读取文本文件(≤256KB,拒二进制)
POST/write编辑已存在文本文件(写前快照)
GET/search递归按文件名搜索
POST/mkdir新建文件夹
GET/cwd取最新会话工作目录
POST/upload上传背景图(≤16MB)
GET/file/<name>读取已上传的背景图(作为壁纸 img src
POST/session/delete删除会话(防误删 + 路径双保险)
POST/session/undo-seq解析可撤销信息(fork 边界 / 时间窗 / 文件清单)
POST/session/undo-artifacts回退该轮产物(文件快照 + 子代理记录)

配置与数据

  • 持久化设置:全部壁纸配置存浏览器 localStorage(键前缀沿用历史 dsh-toolbox:)。
  • 上传图 / 撤销快照:存放于用户数据目录(沿用历史命名 ~/.dsh/toolbox/,含 uploads/snapshots/)。

设计要点

  • 零依赖:原生 node: API + 内联少量实现(简易 Markdown 渲染 / 轻量语法高亮),无第三方运行时依赖。
  • 不覆盖核心:仅注入插槽与 dsh.client 声明,所有路由都是只读 / 有限写。
  • 安全
    • 会话删除:agents running 保护 + SESSION_ID_RE 白名单 + 路径穿越双保险。
    • 文件操作:允许根白名单(ALLOWED_ROOTS)+ 大小上限 + 二进制拒读。
    • 上传:扩展名 / Content-Type 白名单 + 去路径穿越文件名清洗。

License

MIT