dsh-skin-alphacoders
DSH skin plugin: Alphacoders popular wallpapers as the DeepSeek Harness Web GUI background
安装
此插件尚未提供可验证的 bundle,或兼容性检查未通过。请先阅读仓库说明。 阅读完整 README ↗
说明文档
阅读完整 README ↗dsh-skin-alphacoders
English | 中文
DSH 皮肤插件:把 Alphacoders 热门壁纸 设为 DeepSeek Harness Web GUI 的背景。符合 DSH 插件包规范的双半(Host + Client)Cordis 插件。
功能
- 壁纸库:设置面板新增「壁纸」分区,浏览 Alphacoders 热门壁纸(每页 15 张、可翻页、懒加载)。
- 搜索:按关键词搜索壁纸(走 Alphacoders 官方搜索页,单页最多 30 条);清除搜索恢复热门列表。
- 一键应用:点击缩略图即应用为背景;主表面(对话区、侧边栏)经主题 token 半透明化透出壁纸;设置面板与浮层(
--dsw-alias-bg-layer-2)保持不透明,设置窗口文字清晰可读。 - 显示控制:四种填充方式(铺满/完整/居中/拉伸)与 0~90% 遮罩强度,保证文字可读。
- 明暗联动:跟随 DSH 主题(
light/dark/system)自动切换遮罩色(浅色白雾、深色黑雾)。 - 持久化:偏好经 Host 的 settings 命名空间
ui-skin写入$DSH_HOME/settings.yaml,重启后自动恢复。 - 性能:背景默认使用 1920px 变体(
thumb-1920-),不为背景下载 5K/8K 原图;列表与搜索有内存 TTL 缓存。 - 干净卸载:移除插件行后 route、样式全部消失,GUI 恢复默认外观。
安装
# 1. 构建本包(生成 lib/ 产物)
pnpm install && pnpm build # 或 npm install && npm run build
# 2. 安装进 web profile(从本包所在目录的上级执行)
dsh plugin --profile web add "file:"
# 3. 在 $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 # 可选:抓取超时(毫秒)
重启 dsh web 生效;设置面板 → 「壁纸」分区即可使用。
提示:开发迭代时,可用目录联接把 profile 的
node_modules/dsh-skin-alphacoders指向源码目录(pnpm 的file:依赖默认硬链接复制,修改源码后需要重建联接或重新 add)。
架构
┌─ Host 半(node)─────────────────────────────────────────────┐
│ fetch + 解析 alphacoders popular-wallpapers?page=N │
│ (服务端渲染的 schema.org ImageObject,15 条/页) │
│ fetch + 解析 search/view?q=(单页 ≤30 条) │
│ 内存 TTL 缓存(默认 1 小时) │
│ ctx.settings.register('ui-skin', SkinSettingsSchema) │
│ HTTP route(经 ctx.webServer): │
│ GET /skin-alphacoders/wallpapers?page=N | ?query=Q │
│ GET /skin-alphacoders/settings │
│ POST /skin-alphacoders/settings (字段白名单 patch) │
│ GET /skin-alphacoders/health │
└──────────────────────────────────────────────────────────────┘
同源 fetch(无 CORS 面)
┌─ Client 半(浏览器)─────────────────────────────────────────┐
│ skin-store:GET/POST settings route 的本地快照 + 订阅 │
│ background:对话区(centerCol)伪元素壁纸层 + 遮罩层 │
│ (不修改任何主题 token,表面保持不透明) │
│ settings.section「壁纸」:搜索框 + 画廊网格 + 控制区(React) │
└──────────────────────────────────────────────────────────────┘
为什么不用 settingsScope 传输
api-proxy 的 settings 协议是 Host 白名单(locale、ui-theme 等),仓库外插件注册的 namespace 只会得到 settings-not-exposed。因此本插件在 Host 侧仍用 SettingsScope.update 持久化(owner seam 无白名单限制),浏览器侧改为经自己的 HTTP route 读写,持久化文档仍是 $DSH_HOME/settings.yaml 的 ui-skin 分节。
配置
| 字段 | 默认 | 说明 |
|---|---|---|
cacheTtlMs | 3600000 | 壁纸列表页内存缓存时长(毫秒) |
requestTimeoutMs | 20000 | 抓取 alphacoders.com 的超时(毫秒) |
版权与合规
- 壁纸版权归原作者与 Alphacoders 所有;本插件仅供个人使用,不批量下载或再分发壁纸。
- 请在网络策略允许访问
alphacoders.com与其图片 CDN(images*.alphacoders.com)的环境中使用。
验证
e2e/verify.mjs 是 Puppeteer(连接本机 Chrome)端到端验证:需先按上述步骤装好插件并启动 dsh --profile web --port 3090,再执行:
node e2e/verify.mjs
覆盖:画廊渲染、应用壁纸、明暗联动、刷新持久化、移除恢复、无页面错误。