给 DeepSeek Harness Web 写了一个美化插件

让 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

使用

  1. 打开 DSH Web 右上角「设置」
  2. 进入「自定义样式 / Custom CSS」
  3. 勾选「启用自定义样式」,填好背景配置,点「保存」------立即生效,无需重启

三、从技术角度聊聊怎么实现的

如果你也想给 DSH 写插件,这部分可能会有参考价值。

DSH 插件的基本架构

DSH 采用 Cordis 插件架构,一个 bundle 插件同时扮演两个角色

  • Host 面(Node) :运行在服务端进程,注册工具、服务、HTTP 路由、会话事件。入口是包根的 lib/index.js
  • Client 面(浏览器) :运行在浏览器端,往 UI 里注入组件和逻辑。通过 package.jsondsh.client 声明,被 dsh-client-modules 扫描进 window.__DSH_BOOT__ 名册。

安装命令 dsh plugin --profile web add <包名> 会把包加入 profile manifest 的 dsh.profile.bundles 层列表,插件的 cordis.patch.yml 作为补丁层把插件行插进组合树。

本插件的实现思路

Host 面主要负责三件事:

  1. 注册 settings namespace :在 DSH 的设置系统里注册 customCss 这个 namespace,保存用户的所有配置(背景图地址、CSS 文本、JS 代码等)。

  2. 提供 HTTP 路由

    • GET /api/custom-css/user.js ------ 返回用户 JS 文件
    • GET /api/custom-css/assets/* ------ 从本地图片目录返回静态文件(做了路径穿越防护)
  3. 文件读写 :把用户 JS 代码写入 $DSH_HOME/custom-css/user.js

Client 面主要负责:

  1. 在设置面板插入新页面:在 DSH Web 的设置里新增「自定义样式 / Custom CSS」选项卡。
  2. 动态注入/移除 <style> :用户保存配置后,立即在页面中插入或移除样式,无需刷新。
  3. 背景图渲染 :根据 backgroundMode 决定把背景图渲染在对话区还是整个页面;backgroundOpacity 小于 1 时用独立图层渲染,避免压暗整个页面。
  4. 暴露 window.dshCustomCss :提供 setCsssetRuleremoveRulesetBackgroundsetSideImagesreload 等 API。

四、写在最后

这个插件已经发布到 npm:@runcross/dsh-simple-background,代码在 GitHub 上开源。

如果你也在用 DSH Web,觉得默认界面太素,可以装上试试。如果你对 DSH 插件开发感兴趣,这个插件的源码也是一个不错的参考------从 settings 到 HTTP 路由到 client 端 UI 注入,覆盖了一个完整 Web 插件的常见要素。

DSH 的插件生态还在早期,大有可为。欢迎一起玩~


相关链接

相关推荐
乱世刀疤7 分钟前
AI Fabric智能算网:重塑AI算力基座,开启智算效能革命
人工智能
资讯综合12 分钟前
2026年GEO服务商评测:Deepseek适配与网站优化能力成为合作重点
大数据·人工智能
cxr82812 分钟前
从“结论“到“假说“:VentureMind 的本体论革命
人工智能
xu_徐18 分钟前
品牌在DeepSeek、Kimi缺少正面信息?亚孖酷奇如何提升AI可见度
人工智能
hey you~22 分钟前
语音机器人如何减少进线客户等待时长?提速方案
人工智能·智能客服·asr·ivr·语音机器人·呼叫中心·等待时长
hans汉斯31 分钟前
【计算机科学与应用】层级评论上下文依赖识别数据集构建与研究——以小红书旅游评论数据为例
人工智能·算法·yolo·目标检测·cnn·旅游
极客智造33 分钟前
EtherCAT伺服通用PDO对象字典完整技术文档
人工智能·运控
word33 分钟前
别急着上框架:先用 Python 手搓一个可恢复的 AI Agent Loop
人工智能
程序员差不多先生35 分钟前
政企智能化落地核心挑战与轻量化工程解决方案——基于Agent与存量系统融合场景
人工智能·deepseek-v4-pro·kimi-k3·glm-5.3·qwen3.7-max