🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

壁纸皮肤插件 sakka6868/dsh-skin

DeepSeek Harnessv0.4.3
sakka686834 天前有提交已提供中文文档扫描:含敏感能力

DSH 皮肤插件:把 Alphacoders 热门壁纸 设为 DeepSeek Harness Web GUI…

31.4/100
综合分
2
GitHub 星标
127
npm 周下载
—/5
用户评分

数据截至 2026/10/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-skin-alphacoders
npm 源 · dsh-skin-alphacoders 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · vision
装得上吗
实装验证未通过(runtime_never_loaded),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 34 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(runtime_never_loaded · 2026/10/28) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-skin-alphacoders @ 0.4.3
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 08:14:45

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 47 处,展示前 29 条)
  • 发起网络请求
    lib/index.js:284
    const response = await fetch(url, {
  • 读取本地文件
    lib/index.js:363
    chromePath = CHROME_CANDIDATES.find((candidate) => candidate !== "" && existsSync(candidate));
  • 执行外部命令来自配置/变量
    lib/index.js:435
    const child = spawn(chrome, args, {
  • 删除本地文件
    lib/index.js:458
    rm(profile, {
  • 发起网络请求
    lib/index.js:602
    const response = await fetch(url, {
  • 发起网络请求
    lib/index.js:621
    const response = await fetch(url, {
  • 发起网络请求
    lib/index.js:659
    response = await fetch(url, {
  • 发起网络请求
    lib/index.js:1123
    const response = await fetch(url, {
  • 读取本地文件
    lib/index.js:1285
    const raw = await readFile(userDataFile(), "utf8");
  • 写入本地文件
    lib/index.js:1305
    await mkdir(dirname(file), { recursive: true });
  • 写入本地文件
    lib/index.js:1307
    await writeFile(tmp, JSON.stringify(data, void 0, 2), "utf8");
  • 写入本地文件
    lib/index.js:1308
    await rename(tmp, file);
  • 读取本地文件
    lib/index.js:1419
    const raw = readFileSync(settingsFile(), "utf8");
  • 写入本地文件
    lib/index.js:1429
    await mkdir(dirname(file), { recursive: true });
  • 写入本地文件
    lib/index.js:1431
    await writeFile(tmp, JSON.stringify(value, void 0, 2), "utf8");
  • 写入本地文件
    lib/index.js:1432
    await rename(tmp, file);
  • 删除本地文件
    lib/index.js:1780
    await rm(join(localWallpaperDir(), name), { force: true });
  • 读取本地文件
    lib/index.js:1805
    return existsSync(join(localWallpaperDir(), name)) ? record : null;
  • 读取本地文件
    lib/index.js:1864
    const names = (await readdir(dir)).filter((name) => name.startsWith("v-"));
  • 读取本地文件
    lib/index.js:1868
    mtime: (await stat(join(dir, name))).mtimeMs
  • 删除本地文件
    lib/index.js:1871
    for (const stale of stats.slice(VIDEO_CACHE_KEEP)) await rm(join(dir, stale.name), { force: true });
  • 删除本地文件
    lib/index.js:1958
    rm(part, { force: true }).catch(() => {});
  • 删除本地文件
    lib/index.js:1964
    rm(part, { force: true }).catch(() => {});
  • 发起网络请求
    lib/client.js:2003
    const response = await fetch(url, {
  • 发起网络请求
    lib/client.js:2373
    const response = await fetch(url, { headers: { accept: "application/json" } });
  • 发起网络请求
    lib/client.js:3595
    const response = await fetch("/skin-alphacoders/local", {
  • 发起网络请求
    lib/client.js:3637
    fetch("/skin-alphacoders/theme", {
  • 发起网络请求
    lib/client.js:3678
    const response = await fetch("/skin-alphacoders/local", {
  • 发起网络请求
    lib/client.js:3716
    const response = await fetch("/skin-alphacoders/auto-change/now", { method: "POST" });
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-client-ui-theme@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-settings
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 设置网页背景壁纸
  • 图库浏览与搜索
  • 本地上传图片
展开完整介绍(76 字)↓

DSH 皮肤插件:把 Alphacoders 热门壁纸设为 DeepSeek Harness Web GUI 背景——图库、搜索、本地上传图片、明暗遮罩

v0.4.32026-10-01
· 0.4.3 修复 · 组件不再被透明化:皮肤此前把 --dsw-alias-bg-layer-1 也一并半透明化,而这个 token 画的是组件底色——「修改的文件」列表 hover 出的预览卡片(HoverCard .preview)、输入框、菜单、模态、工具轨迹面板都跟着透明,文字直接压在壁纸上。现在只有页面骨架(应用框架、对话区、侧边栏)半透明,所有凸起表面恢复产品原生的不透明底色。 · 适配 DSH 0.2:DSH 0.2 移除了插件侧 settings 服务,改为插件自持 $DSH_HOME/storages/skin-alphacoders/settings.json(原子写 + 串行写队列)。0.4.2 写在 $DSH_HOME/settings.yaml 的 ui-skin 分节不会迁移,升级后重新选一次壁纸即可。 · e2e:修复 DSH 0.2 下设置入口类名漂移、以及上传用例选错文件输入(上传到了 shell 自带的 input)的问题;新增「组件表面保持不透明(悬浮预览文字不被壁纸干扰)」回归断言。76/76 通过。 安装:dsh plugin --profile web add dsh-skin-alphacoders(npm 0.4.3)
v0.4.12026-09-05
· 修复与改动 · DSH 更新后壁纸不渲染——客户端现在声明主题服务依赖,并通过 ctx.theme 读取。DSH 更新(Cordis 4.0.2)后,未声明的服务会解析为 undefined,导致 overrideTokens 从未执行,不透明的 #fff 表面遮住了 z-index:-1 的壁纸层(视频其实一直在后面播放)。 · 浅色/深色共用壁纸——浅色和深色配色方案现在使用同一条壁纸记录。 · /moewalls/video 代理修复——res 超出作用域,流式代理总是 302 重定向;现在改为流式传输,带磁盘缓存和 Range 支持。 · 本地壁纸文件支持 Range/206——上传的大视频会渐进加载,不再一次性返回 200 整块。 · 启动镜像防护——旧版按主题划分的槽位不会再在页面加载时清空背景。
v0.3.12026-08-30
· v0.3.1 — 修复:更新/重启后壁纸丢失 · 修复内容 · 启动竞态:主题服务 theme/change 抢在设置加载前触发时,旧版会用"未加载的默认值"清空壁纸 flat 字段 → 壁纸失效(dsh 更新后/重启后必现)。现在设置未加载完成前不执行主题镜像,并在启动时重试加载 8 次。 · 误删本地文件:镜像同步(flat ↔ 主题槽)被误判为"移除壁纸"→ 触发本地文件 GC,删除用户上传的视频。现在镜像 patch 不触发 GC。 · 自动恢复:启动镜像会用保留完整的主题槽自动修复被清空的 flat 字段。 · E2E 新增 2 项回归断言:清空 flat 后文件保留 + 重启后自动恢复(72/72 通过)。 · 使用 升级后:dsh plugin --profile web add dsh-skin-alphacoders 安装 0.3.1,重启 dsh;之前设置的壁纸记录会自动恢复。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
dsh-skin-alphacoders DSH 皮肤插件:把 Alphacoders 热门壁纸 设为 DeepSeek Harness Web GUI 的背景,并支持 MoeWalls / Pexels 动态壁纸(视频背景)。符合 DSH 插件包规范的双半(Host + Client)Cordis 插件。 壁纸效果预览 设置面板 功能 静态壁纸(Alphacoders) - 壁纸库:设置面板新增「壁纸」分区,浏览 Alphacoders 热门壁纸(每页 15 张、可翻页、懒加载)。 - 搜索:按关键词搜索壁纸(走 Alphacoders 官方搜索页,单页最多 30 条);清除搜索恢复热门列表。 - 一键应用:点击缩略图即应用为背景;只有页面骨架(应用框架、对话区、侧边栏)经主题 token 半透明化透出壁纸;所有凸起表面保持不透明(--dsw-alias-bg-layer-1/2/3 沿用产品原生值)——卡片、输入框、菜单、弹窗与「修改文件」悬浮预览的文字对比度与默认界面一致,不会与壁纸混在一起。 动态壁纸(视频背景,v3) - MoeWalls / DesktopHut 双源:动态壁纸 tab 内可切换两个视频源;分类/搜索/分页浏览缩略图。
展开完整文档(README 剩余 1 节)
dsh-skin-alphacoders

DSH 皮肤插件:把 Alphacoders 热门壁纸 设为 DeepSeek Harness Web GUI 的背景,并支持 MoeWalls / Pexels 动态壁纸(视频背景)。符合 DSH 插件包规范的双半(Host + Client)Cordis 插件。

壁纸效果预览

设置面板

功能

静态壁纸(Alphacoders)

- 壁纸库:设置面板新增「壁纸」分区,浏览 Alphacoders 热门壁纸(每页 15 张、可翻页、懒加载)。
- 搜索:按关键词搜索壁纸(走 Alphacoders 官方搜索页,单页最多 30 条);清除搜索恢复热门列表。
- 一键应用:点击缩略图即应用为背景;只有页面骨架(应用框架、对话区、侧边栏)经主题 token 半透明化透出壁纸;所有凸起表面保持不透明(--dsw-alias-bg-layer-1/2/3 沿用产品原生值)——卡片、输入框、菜单、弹窗与「修改文件」悬浮预览的文字对比度与默认界面一致,不会与壁纸混在一起。

动态壁纸(视频背景,v3)

- MoeWalls / DesktopHut 双源:动态壁纸 tab 内可切换两个视频源;分类/搜索/分页浏览缩略图。
- 下载制(v3.4):点击缩略图跳转原站(moewalls.com / desktophut.com)下载视频文件,再通过「上传本地图片/视频」设为动态壁纸——插件不做在线流式播放,避免被原站限流拖慢。
- 本地上传视频(v3.4):支持 PNG/JPEG/WebP/GIF 图片与 WebM/MP4 视频;视频作为动态壁纸循环播放,文件存于 $DSH_HOME/storages/skin-alphacoders/,重启后恢复;上限 200MB。
- 无缝循环(v3.3):双 接力 + 瞬时切换(无交叉淡化),循环无停顿、无暗亮闪,效果接近 Wallpaper Engine;毛玻璃/遮罩/淡入同样作用于视频层。

视觉与显示

- 毛玻璃(v3):0~30px 背景模糊,只作用于壁纸层——界面与文字在其上层保持清晰。
- Ken Burns 微动效(v3.1):静态壁纸缓慢缩放平移,背景不再死板。
- 渐变分层遮罩(v3.1):边缘压暗 + 中间半透 + 柔光暗角 + 品牌光晕,由单一遮罩滑条驱动;浅色主题白雾、深色主题黑雾,跟随 DSH 主题(light/dark/system)。
- 换壁纸淡入(v3.1):新壁纸 0.8s 淡入,滑条/主题切换不会闪屏。
- 显示控制:四种填充方式(铺满/完整/居中/拉伸)与 0~90% 遮罩强度。

其他(v2)

- 浅深双主题壁纸:浅色与深色主题各保存一张壁纸,切换明暗自动跟随。
- 收藏:画廊卡片右上角 ☆ 一键收藏,持久化于 user-data.json,点击收藏卡即应用。
- 自动更换:定时自动换壁纸——随机(远程新鲜壁纸)/顺序(按收藏顺序轮换)/仅收藏(收藏中随机),另有「立即换一张」按钮;间隔 1~168 小时可调。
- 历史记录(v3.1):应用过的壁纸自动记录(最多 5 条,重复应用自动去重移顶),一键恢复旧壁纸。
- 持久化:偏好存于插件自有文档 $DSH_HOME/storages/skin-alphacoders/settings.json(DSH 0.2 移除了 0.4.2 所用的插件 settings 服务),原子写入;收藏与历史存于同目录 user-data.json。从 ≤0.4.2 升级不会迁移旧的 settings.yaml 分节,升级后重新选一次壁纸即可。
- 性能:背景默认使用 1920px 变体(thumb-1920-<id>),不下载 5K/8K 原图;列表/搜索/动态壁纸均有内存 TTL 缓存。
- 干净卸载:移除插件行后 route、调度器、样式全部消失,GUI 恢复默认外观。

安装

方式一:npm 安装(推荐)

安装到 web profile(含构建产物,无需本地构建)
dsh plugin --profile web add dsh-skin-alphacoders

方式二:从源码构建安装

1. 构建本包(生成 lib/ 产物)
pnpm install && pnpm build # 或 npm install && npm run build

2. 安装进 web profile(从本包所在目录的上级执行)
dsh plugin --profile web add "file:<本包绝对路径>"

两种方式都需在 $DSH_HOME/profiles/web/cordis.patch.yml 中登记插件行:

$DSH_HOME/profiles/web/cordis.patch.yml
- insert:
- id: skin-alphacoders
name: 'dsh-skin-alphacoders'
config:
cacheTtlMs: 3600000 # 可选:列表缓存 TTL(毫秒) requestTimeoutMs: 20000 # 可选:抓取超时(毫秒) localMaxBytes: 209715200 # 可选:本地上传上限(字节,默认 200MB)

重启 dsh web 生效;设置面板 → 「壁纸」分区即可使用。

提示:开发迭代时,可用目录联接把 profile 的 node_modules/dsh-skin-alphacoders 指向源码目录(pnpm 的 file: 依赖默认硬链接复制,修改源码后需要重建联接或重新 add)。

架构

┌─ Host 半(node)─────────────────────────────────────────────┐ │ alphacoders:fetch + 解析 popular-wallpapers?page=N │ │ (服务端渲染的 schema.org ImageObject,15 条/页) │ │ moewalls(v3):REST 列表/分类 → Chrome 抓取降级 → HTML 页 │ │ 详情按页面 URL 解析;视频经本地代理 + 磁盘缓存(LRU 10) │ │ desktophut(v3.5):Node 直抓首页/分类/搜索页, │ │ wallpaper-card 卡片解析(缩略图兼容 /images 与 /img, │ │ 首页解析为空时回退 /popular-live-wallpapers);视频走 │ │ 原站下载制(播放需本地上传) │ │ 内存 TTL 缓存(列表 6h、详情 6h、分类 24h) │ │ settings.json 自有文档(原子写 + 串行写队列) │ │ user-data.json(收藏 ≤200、历史 ≤5,原子写入) │ │ 自动更换调度器(setTimeout 链,按模式选池) │ │ HTTP route(经 ctx.webServer): │ │ GET /skin-alphacoders/wallpapers?page=N | ?query=Q │ │ GET /skin-alphacoders/moewalls/{categories,list,detail,video} │ │ GET /skin-alphacoders/desktophut/list │ │ GET /skin-alphacoders/settings | POST(字段白名单 patch)│ │ GET /skin-alphacoders/user-data │ │ POST /skin-alphacoders/favorites(+ /favorites/remove) │ │ POST /skin-alphacoders/history/remove │ │ POST /skin-alphacoders/theme / auto-change/now │ │ POST /skin-alphacoders/local(图片/视频上传) │ │ GET /skin-alphacoders/health │ └──────────────────────────────────────────────────────────────┘ 同源 fetch(无 CORS 面) ┌─ Client 半(浏览器)─────────────────────────────────────────┐ │ skin-store:GET/POST settings route 的本地快照 + 订阅 │ │ user-data store:收藏/历史快照 │ │ 双主题镜像:theme/change 时把当前主题槽同步到扁平字段 │ │ (带 fromTheme 标记,不产生历史记录) │
│ background:body::before 壁纸层 + ::after 渐变遮罩层 │
│ + 视频接力层(双 瞬时切换,无暗亮闪) │ │ + ctx.theme.overrideTokens 表面半透明 │ │ (签名去重防 theme/change 重入风暴) │ │ settings.section「壁纸」:静态库 + 动态库 + 上传 + 收藏 │ │ + 历史 + 自动换 + 主题 tab │ └──────────────────────────────────────────────────────────────┘

为什么由插件自己持有设置文档

api-proxy 的 settings 协议是 Host 白名单(locale、ui-theme 等),仓库外插件注册的 namespace 只会得到 settings-not-exposed;DSH 0.2 又进一步移除了插件侧的 settings 服务(ctx.settings.register / SettingsScope 已不存在)。因此 Host 侧改为自持一份普通文档 $DSH_HOME/storages/skin-alphacoders/settings.json(promise 队列串行 + 临时文件原子替换),浏览器侧仍只经插件自己的 HTTP route 读写。0.4.2 写在 $DSH_HOME/settings.yaml 的 ui-skin 分节不会迁移。

配置

| 字段 | 默认 | 说明 |
| cacheTtlMs | 3600000 | 壁纸列表页内存缓存时长(毫秒) |
| requestTimeoutMs | 20000 | 抓取远程站点的超时(毫秒) |
| localMaxBytes | 209715200 | 本地上传(图片/视频)大小上限(字节) |

版权与合规

- 壁纸版权归原作者与 Alphacoders / MoeWalls / DesktopHut 所有;本插件仅供个人使用,不批量下载或再分发壁纸。
- 请在网络策略允许访问上述站点与其图片/视频 CDN 的环境中使用。

验证

e2e/verify.mjs 是 Puppeteer(连接本机 Chrome)端到端验证:需先按上述步骤装好插件并启动 dsh --profile web --port 3090(测试实例可用 E2E_URL 环境变量覆盖端口),再执行:

node e2e/verify.mjs

覆盖(70 项断言):画廊渲染、收藏往返、双主题独立壁纸、明暗联动、刷新持久化、历史恢复(含去重)、自动更换、毛玻璃/滤镜增强/Ken Burns/渐变遮罩、搜索、动态壁纸列表/分页/跳转原站、本地上传(图片与视频)、动态壁纸无缝接力、本地壁纸清理、收藏/历史持久化、无页面错误。

另有三个数据源脚本:e2e/bench-desktophut.mjs(抓取层,直打真实站点)、e2e/verify-live-sources-ui.mjs(UI 层,覆盖静态壁纸 / MoeWalls / DesktopHut 三个源,需 E2E_PAGE_URL 指向带 token 的实例)、e2e/net-probe-alt-sites.mjs(源站连通性)。

DesktopHut 壁纸数为 0 的排查顺序

DesktopHut 的列表来自服务端渲染的 HTML,站点改版会让解析静默失败——不报错,只是列表为空。按抓取层 → Host 路由层 → UI 层依次排查:

1) 抓取层(直接打真实站点,不需要启动实例;失败时退出码为 1)
node e2e/bench-desktophut.mjs
期望:ALL PASS,其中 “all (cat="") p1” 的 items ≥ 3

2) Host 路由层(PowerShell;items 不能是空数组) Invoke-RestMethod "http://127.0.0.1:3080/skin-alphacoders/desktophut/list?page=1" | ConvertTo-Json -Depth 3 Invoke-RestMethod "http://127.0.0.1:3080/skin-alphacoders/desktophut/list?cat=anime-live-wallpapers&page=1" | ConvertTo-Json -Depth 3

3) 分类 slug 是否还有效(失效 slug 返回 404 → 该分类为空) Invoke-WebRequest "https://www.desktophut.com/category/<slug>/" -Method Head -UseBasicParsing | Select-Object StatusCode

4) UI 层(需要带 token 的实例地址;断言三个源网格非空、缩略图无需滚动即全部加载,并截图) $env:E2E_PAGE_URL='http://127.0.0.1:3090/?token=<token>'
node e2e/verify-live-sources-ui.mjs

排查要点:

- 默认「全部」页签走的是站点首页 https://www.desktophut.com。站点会不定时改版(2026-09-25 就把首页缩略图从 /images/… 换成了 /img/<W>x<H>/…),解析规则已同时兼容两种路径;若首页再次改版导致解析为空,会自动回退到 /popular-live-wallpapers。
- 分类 slug 会被站点改名且不做跳转。当前表在 src/fetch-desktophut.ts 的 DESKTOPHUT_CATEGORIES(Host 校验与 UI 下拉共用同一份)。要重新同步,从 https://www.desktophut.com/show/all-categories 里读取 /category/<slug> 链接,并用上面的 bench 脚本逐个验证非空。
- 空结果不再进缓存:列表在内存里有 1 小时 TTL 缓存(cacheTtlMs),但从 v3.5.1 起空页不写缓存,所以「本页没有壁纸」时点一次重试就会真正重新抓取。改了 Host 代码后仍需重启 Host;重启后浏览器再硬刷新一次(client 半也更新了)。
- 切换到动态源几乎是瞬时的:进入「壁纸」分区时,插件会并行预热 MoeWalls 与 DesktopHut 的第一页(Host 端按页缓存并合并并发请求),因此首次切换不再付冷抓成本;预热失败不影响任何源的正常加载。
预览分享卡片长什么样 ↓sakka6868/dsh-skin
分享 · DeepSeek Harness Hub
sakka6868/dsh-skin

DSH 皮肤插件:把 Alphacoders 热门壁纸 设为 DeepSeek Harness Web GUI…

这是你的仓库?认领条目

回到顶部