给 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 的插件生态还在早期,大有可为。欢迎一起玩~


相关链接

相关推荐
dogstarhuang1 小时前
OpenAI GPT-5.6 降价后如何重算 API 账单?多模型路由与成本治理实战
服务器·网络·人工智能·大模型·api·ai应用开发·接口管理
CRMEB定制开发1 小时前
2026年最值得推荐的10大开源商城系统盘点
开发语言·人工智能·开源·商城系统·小程序商城
MobotStone1 小时前
AI让一个人像一家公司,但没让普通人突然变成老板
人工智能
Pika1 小时前
DeepSeek Harness 架构拆解
人工智能
智购科技自动售卖机厂家2 小时前
2026自动售货机OTA升级系统设计:从全量升级到差分升级的带宽优化工程实践~YH
大数据·人工智能·numpy·pyqt·fastapi
武子康2 小时前
登录不是授权:高能力 AI 的连续身份保证链
人工智能
安逸sgr2 小时前
AI 应用怎么评测?离线评测、人工评估和线上反馈如何结合?
人工智能·ai·大模型·agent·智能体
代码青铜2 小时前
1 万用户的图片短视频交易市场,829 元/月能跑起来?Zion+AI让开发看得懂、改得动
人工智能
JJJennie7772 小时前
Anthropic 发布 Claude Academy,AI 教学开始告别提示词速成班
人工智能