让 DSH Web 界面告别单调,支持背景图、装饰图、自定义 CSS 和用户脚本------一切配置实时生效,无需重启。
前言
最近 DeepSeek Harness(DSH)火得一塌糊涂,GitHub Star 已经破了 15 万。作为一个"一切皆插件"的 Agent 框架,DSH 的插件生态也在爆发式增长------目前已经有 1800+ 插件。
我日常重度使用 DSH Web,但默认的界面实在有点素------就是一个纯聊天框。虽然社区有 dsh-web-ui 这类全家桶插件能把界面升级成专业工作台,但我想要的其实更简单:**换张背景图、。
一、这个插件能做什么?
简单说,这个插件在 DSH Web 的设置面板里新增了一个「自定义样式 / Custom CSS」页面,主要功能就是换背景图片。两种模式,背景范围选【对话界面,整个界面】。 对话界面就是工作区和对话区分别设置一张图片,整个界面就是整个body是一个界面。

1. 背景图片------三层可叠加
我把背景能力拆成了三层,按需组合:
- 主背景 (
backgroundImage):铺在对话区或整个页面。支持网络图片、data URI、CSS 渐变,甚至本地图片。 - 左侧工作区背景 (
sidebarBackgroundImage):单独给侧边栏换背景,和主背景互不干扰。 - 左/右装饰图片 (
leftImage/rightImage):在对话区左下角和右下角各放一张独立图片------适合放吉祥物、LOGO 或装饰边框。
主背景还可以选择铺的范围:conversation(只铺中间对话区)或 page(整个页面,含侧边栏和详情面板)。
每个背景图都可以独立调节尺寸(backgroundSize)、位置(backgroundPosition)、重复方式(backgroundRepeat)和不透明度(backgroundOpacity)。
2. 自定义 CSS------可视化规则列表
除了直接写原始 CSS 文本,插件还提供了一个可视化 CSS 规则列表:每条规则包含选择器、样式声明和备注,方便管理和复用。
3. 本地图片------解决浏览器不能读本地文件的痛点
浏览器页面无法直接读取 file:// 路径,所以插件把一个本地目录通过 HTTP 提供给页面。默认目录是 $DSH_HOME/custom-css/assets(即 ~/.dsh/custom-css/assets)。
把图片放进去后,在设置里填 /api/custom-css/assets/图片名.png 就行了,支持子目录。
二、怎么安装和使用?
安装
bash
bash
npm i -g @runcross/dsh-simple-background
dsh plugin --profile web add @runcross/dsh-simple-background
# 重启 dsh web
dsh web
使用
- 打开 DSH Web 右上角「设置」
- 进入「自定义样式 / Custom CSS」
- 勾选「启用自定义样式」,填好背景配置,点「保存」------立即生效,无需重启
三、从技术角度聊聊怎么实现的
如果你也想给 DSH 写插件,这部分可能会有参考价值。
DSH 插件的基本架构
DSH 采用 Cordis 插件架构,一个 bundle 插件同时扮演两个角色:
- Host 面(Node) :运行在服务端进程,注册工具、服务、HTTP 路由、会话事件。入口是包根的
lib/index.js。 - Client 面(浏览器) :运行在浏览器端,往 UI 里注入组件和逻辑。通过
package.json的dsh.client声明,被dsh-client-modules扫描进window.__DSH_BOOT__名册。
安装命令 dsh plugin --profile web add <包名> 会把包加入 profile manifest 的 dsh.profile.bundles 层列表,插件的 cordis.patch.yml 作为补丁层把插件行插进组合树。
本插件的实现思路
Host 面主要负责三件事:
-
注册 settings namespace :在 DSH 的设置系统里注册
customCss这个 namespace,保存用户的所有配置(背景图地址、CSS 文本、JS 代码等)。 -
提供 HTTP 路由:
GET /api/custom-css/user.js------ 返回用户 JS 文件GET /api/custom-css/assets/*------ 从本地图片目录返回静态文件(做了路径穿越防护)
-
文件读写 :把用户 JS 代码写入
$DSH_HOME/custom-css/user.js
Client 面主要负责:
- 在设置面板插入新页面:在 DSH Web 的设置里新增「自定义样式 / Custom CSS」选项卡。
- 动态注入/移除
<style>:用户保存配置后,立即在页面中插入或移除样式,无需刷新。 - 背景图渲染 :根据
backgroundMode决定把背景图渲染在对话区还是整个页面;backgroundOpacity小于 1 时用独立图层渲染,避免压暗整个页面。 - 暴露
window.dshCustomCss:提供setCss、setRule、removeRule、setBackground、setSideImages、reload等 API。
四、写在最后
这个插件已经发布到 npm:@runcross/dsh-simple-background,代码在 GitHub 上开源。
如果你也在用 DSH Web,觉得默认界面太素,可以装上试试。如果你对 DSH 插件开发感兴趣,这个插件的源码也是一个不错的参考------从 settings 到 HTTP 路由到 client 端 UI 注入,覆盖了一个完整 Web 插件的常见要素。
DSH 的插件生态还在早期,大有可为。欢迎一起玩~
相关链接:
- npm:
@runcross/dsh-simple-background - github
- DSH 官方:DeepSeek Harness
- DSH 插件开发手册:dsh-handbook