← Back to home@milkly909-code

dsh-space-background

深空背景 — DeepSeek Harness 主题与外观插件:设置「通用」分区提供深空背景开关,银河/星座/行星/流星在窗口底层流动,界面经官方主题令牌半透明化

Stars
0
Language
JavaScript
Created
Oct 26, 2026
Updated
Oct 26, 2026

Introduction

深空背景 · Deep Space Background

DSH 的全域通透沉浸式宇宙视界插件:直接将界面各层背景置为 100% 全透以完整展现深空星空,界面彻底无模糊(0px blur),银河、随机星座、星云、行星与流星在窗口底层缓缓流动。

聊天框与全界面保持高度统一的全透无模糊一致性,经太空全息 HUD 文字防晕散立体微阴影保护,星空从底层透出而所有文字清晰可读;关闭即撤销全部效果、立即恢复原样。不占用侧边栏面板、不侵入通用设置——直接嵌入插件详情页展现项目技术架构与总开关。

  • 接入点:plugins.detail.section(插件详情页技术全景说明)+ shell.overlay(全窗覆盖层挂底层星空画布与右下角快捷悬浮调控球)。
  • 零模糊与全域穿透:禁用常规背景模糊,界面各层容器(中栏/侧栏/设置/插件详情/底栏/聊天框)彻底全透。
  • 吸底座席深空平滑渐隐与防穿透:吸底底座定制深空羽化渐变(顶部自然羽化、底部完全不透),彻底杜绝历史消息向下滚动时露在聊天框下方和状态栏处;输入卡片自身为防穿透深空悬浮舱(rgba(13, 18, 30, 0.96)),彻底杜绝历史消息上滑在打字区透出,四周留白完整显露星空。
  • 底部状态栏纯白高对比字体:底栏运行状态、步数、Token 用量、TPS、缓存命中率与上下文仪表盘全部采用纯白(#FFFFFF)高对比立体文字与纯白图标,清晰醒目,一目了然。
  • 弹窗高对比防穿透:点击底部步数、token 用量、上下文统计及下拉菜单绝不完全透明,采用高对比深空暗色卡片背景(rgba(13, 17, 28, 0.96)),保证弹出数据清晰可辨。
  • 右下角快捷悬浮调控球(支持外部点击自动收起):随时点击右下角浮动按钮,即可快速调节航行速度与星空粒子数量;支持点击浮层外部任意区域自动关闭面板。
  • 视窗径向微暗角:中央阅读区柔和光学微暗角压暗(保持 0 模糊),四周边缘纯透灿烂,实现视觉高信噪比与防疲劳。
  • 聊天框无缝穿透与聚焦微光:底部会话框消除厚重深灰实体色块与模糊灰斑;聚焦输入框时激发全息冰蓝微光边界。
  • 深空极简细轨滚动条:5px 超窄全透轨道与冰蓝微光滑块,消除原生粗糙灰条割裂感。
  • 代码块与引用块微光盾:Markdown pre、code、blockquote 全息护盾容器,保障密集语法高亮清晰分明。
  • 天体动力学引擎与微视差:360° 正弦无缝流动银河、3D 相机正交投影星座、光环行星、高光流星,并支持鼠标阻尼微视差(Parallax Micro-Drift)随指针轻柔偏转。
  • 超低能耗节能架构:30fps 上限、天幕 0.6 倍离屏双缓冲降采样绘制、1.2 万颗星点分帧填充、Page Visibility 页面隐藏自动休眠挂起;关闭即销毁引擎,零后台开销。
  • 状态本地持久化,默认开启;不联网、不上报。

⚠️ 安装前必读:包名必须与安装目录一致

DSH 的 Loader 按 cordis.patch.yml 里的 name: 作为包名去 node_modules 解析。 如果 package.json 的 name 与它被安装到的目录名不一致,解析会直接失败:

Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@local/dsh-space-background'

而客户端卡片仍会显示「运行中」(client 半走 __ModuleLoader__ 的另一条通道), 于是症状变成「插件看起来装好了,但完全没有效果」——非常容易误判。

三处名字必须完全一致(本仓库已对齐为 @local/space-background):

位置值
package.json → name@local/space-background
cordis.patch.yml → name:@local/space-background
client.js → __ModuleLoader__.load({ id })@local/space-background
安装目录<profile>/node_modules/@local/space-background

官方文档原文(app.asar 内《UI plugins in the Web page》):

The browser artifact registers a lazy factory whose id equals the package name.


安装

dsh plugin --profile <你的profile> add "<本仓库路径>"

本机 desktop profile 已按同构方式手工接入(junction + link 依赖 + bundles 注册)。

卸载(注意:本地插件是 Junction)

dsh plugin --profile X add 建立的是指向本目录的 Junction。 不要对 profile 里的链接用 Remove-Item -Recurse——会穿透 Junction 删掉本目录源码。

dsh plugin --profile <你的profile> remove @local/space-background

若残留孤儿链接,只删链接本身:

cmd /c rmdir "<profile>\node_modules\@local\space-background"

使用

操作效果
插件管理 →「深空背景」详情页控制面板:查看项目全景技术说明,提供一键启停总开关
全界面全透浏览聊天工作区、设置、插件管理全部全透无模糊,底层星空锐利直透
聊天对话聊天底栏与输入框全透无模糊穿透,文字受太空 HUD 阴影保护
等待十几秒天幕交叉淡入一片新星域(不同银河弯曲 / 星座 / 星云 / 行星组合)
期间偶尔流星划过、大行星(含光环)从近处掠过

加载诊断

client.js 会把装配进度写进 window.__sbgApply。刷新页面后在控制台执行:

JSON.stringify(window.__sbgApply, null, 1)

正常输出应包含:

apply:enter → locale:register:ok → locale:bind:ok → store:created
→ toggle:ready → shell.overlay:registered → plugins.detail.section:registered
→ apply:done

以及组件渲染时的 SpaceLayer:render hasUseStore=… enabled=…、SpaceLayer:effect:start。

现象含义
输出 undefinedclient 半根本没加载(包名 / 路径问题,见上方「安装前必读」)
停在 apply:enterctx.locale.register 抛错(locale 服务未注入)
有 apply:done 但无 SpaceLayer:render槽位注册成功但组件未被渲染
enabled=false持久化状态被关掉了:点开关,或清 localStorage['space-background/v1']

兼容性

  • 针对 DSH 0.2.1-rc.3 开发并实测。
  • 依赖出厂槽位与服务的声明方:shell.overlay(ui-layout)、settings.general.item (ui-settings-general)、theme 服务(ui-theme),并通过 dsh.client.inject 保证前两者先于本插件加载;theme 服务经 ctx.inject 等待就绪,无顺序依赖。
  • 升级 DSH 后:令牌覆盖走官方别名(--dsw-alias-*),不依赖类名哈希,通常无需改动; 若通用分区槽位名有变,仅需更新 client.js 中两处 ctx.slots.inject 的槽位名。

实现要点

  • 免构建客户端插件:window.__ModuleLoader__.load 直接注册,仅 require 平台基表 (react / @deepseek-ai/dsh-client-store),无 JSX。
  • 引擎为闭包工厂 createSpaceEngine(root, opts);开关关闭 / 插件卸载即 dispose() (rAF / ResizeObserver / 监听器 / 画布 / 令牌覆盖层一并释放)。
  • 无缝天幕:银河带为整周期正弦曲线(左右边缘天然对齐),天体越界在对侧补画 (预渲染精灵保证逐像素一致),360° 环绕无接缝。
  • list 槽位带 id、order 断言、label thunk、按钮 appearance:none、主题 token + 兜底。

开发

npm run check     # 语法 + 契约测试(node test/run.cjs)

preview.html 是独立演示页(真实加载 client.js):模拟 DSH 设置页中的真实 「深空背景」开关行 + 底层星空联动。需本地服务器打开(React 走 CDN):

python -m http.server 8765 --bind 127.0.0.1 --directory .
# 浏览器访问 http://127.0.0.1:8765/preview.html

目录结构:

package.json        DSH 清单(manifestVersion / bundle.patch / client.platform / engines.dsh)
cordis.patch.yml    插件图插入点
index.js            Host 半(纯客户端插件,空 apply)
client.js           全部逻辑:天体动力学引擎 + 详情页专属项目技术架构 + 底层星空层 + 全域全透与无模糊
locale/{zh,en}.json 插件管理页元信息
icon.svg            图标底稿
preview.html        浏览器演示页(真实组件)
test/run.cjs        零依赖契约测试(61 项)

License

MIT