last30days-skill-cn
Jesseovo
last30days-cn 是一个 AI Agent 技能(Skill),能够自动搜索中国互联网 8 大主流平台最近 30 天的内容,综合分析后生成有据可查的研究报告。
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:yu502950715yang/dsh-use-wallpaper
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
把 Wallpaper Engine 的 scene(场景)壁纸搬进 DeepSeek Harness 的 Web GUI —— 在浏览器里实时渲染粒子、水波、云卷、布料摆动,让动态壁纸成为你写代码时的背景。
不需要 Wallpaper Engine 在后台运行,不需要 WebGPU,不重新分发任何第三方素材。
下面两段动图都是在 DSH Web GUI 的真实页面上录的(不是离线贴图,也不是设计稿):壁纸由插件在浏览器里实时渲染,DSH 界面叠加在其上。
|
Crimson Horizon · 星空雪山 Landscape
|
Knight in a red cloak · 红披风骑士 Anime
|
录制方式(如实说明):两段动图与视频都是在真实运行的 DSH 页面上、由本插件的生产构建(
lib/)实时渲染本机 workshop 壁纸后录制的浏览器画面,未做后期合成;壁纸通过插件自身的切换入口window.__wallpaperEngine.select(id)切换,因此画面里只有 DSH 界面与壁纸本身。画面已裁掉浏览器地址栏。壁纸素材版权归原作者所有,此处仅作效果展示,不再分发。
| 能力 | 说明 | |
|---|---|---|
| 🎨 | Scene 动态壁纸 | 在浏览器里实时算出来,不是静态图贴上去:背景图层与粒子系统各司其职,背景的缩放、透明度、亮度按原作者的设定还原 |
| 🌊 | 粒子效果完整 | 雪、雨、花瓣、火星、雾、气泡等都按壁纸里的原始参数运动:重力、风向、湍流、寿命、颜色与大小渐变 |
| 🖼️ | 各种纹理都能解 | 主流压缩格式(DXT1/3/5、RGBA、R8、RG88)与多帧精灵动画(火把、雾、光晕)都能正确解出原图,不糊、不露黑边 |
| 🎞️ | 视频 / 网页 / 图片壁纸 | 视频循环播放;网页壁纸在沙箱里加载;图片壁纸用预览图 + 缓慢缩放动效 |
| 🧩 | 常见特效会动 | 水波、涟漪、水流、云飘、植物摆动、抖动、脉冲、淡入淡出,以及模糊、泛光、光轴、局部对比度这类需要多趟渲染的特效(少数特效仍然看不到,见下节) |
| 🛡️ | 永不白屏 | 任何壁纸渲染失败,自动退回它的预览图,界面始终可用 |
| ⚙️ | 开箱即用 | 自动探测 Steam 壁纸目录(注册表 + Steam 库配置 + 常见路径),也可手动填写;改设置立刻生效,不用重启 |
| 🚫 | 不依赖运行时 | 不需要 Wallpaper Engine 在后台运行;所需的引擎内置素材在你本机读取,不随插件分发第三方素材 |
💬 换了几张壁纸却发现某张显示不正常? 那是我们需要知道的——请按下方「使用前请了解」末尾的说明提交 Issue,附上壁纸名称与 ID 即可。
从 GitHub 安装(推荐,最新)
dsh plugin --profile web add github:yu502950715yang/dsh-use-wallpaper
dsh plugin --profile web install
从 npm 安装
dsh plugin --profile web add "@dsh-use/wallpaper-engine"
dsh plugin --profile web install
已发布到 npm,最新版本 0.4.3。发布包只含
lib+dist+cordis.patch.yml(构建产物已随包提交,装完无需本地构建)。npm 版与 GitHub 版的差别:npm 走版本发布,更新节奏慢于仓库
main;想第一时间拿到修复请用上面的 GitHub 方式。
本地开发(link: 符号链接,改码即时生效)
# 必须在**本仓库根目录**执行:link:. 会被锚定到当前目录
dsh plugin --profile web add link:E:/code/dsh-use-wallpaper
仓库根
package.json已声明dsh.bundle,bundle 由cordis.patch.yml自动注册 —— 不要手动改 profile 的package.json,也不要往 profile 的cordis.patch.yml插条目(重复 insert 会报duplicate loader entry id)。
dsh web,打开 GUI。D:/Steam/steamapps/workshop/content/431960D:/Steam/steamapps/common/wallpaper_engineGET /wallpapers/list 返回 JSON 壁纸数组。[three] scene loaded id=… background=N particleLayers=M(M ≥ 1 表示粒子层已建)。设置面板暴露的是目录与选择;其余是插件设置字段(可写在 profile cordis.patch.yml 的 config 中):
| 字段 | 默认 | 说明 |
|---|---|---|
selectedWallpaperId |
空 | 选中的壁纸(空 = 恢复 DSH 默认背景) |
wallpaperDir |
空 | Steam workshop 壁纸目录 |
weAssetsDir |
空 | Wallpaper Engine 安装目录(读内置粒子/效果纹理) |
overlayOpacity |
0.35 |
壁纸层上方遮罩的不透明度 |
blurEnabled / blurRadius |
false / 12 |
背景模糊与半径 |
kenBurns |
true |
图片壁纸的缓慢缩放动效 |
优先级:用户设置 > profile cordis.patch.yml 的 config > 缺省。
⚠️ 如实说明:
overlayOpacity/blurEnabled/blurRadius/kenBurns目前只有设置字段,设置面板里没有对应控件 —— 要调整需走 profile 配置。(此前 README 称「面板里可实时调节」,与代码不符,此处已订正。)
这一节帮你判断自己的壁纸能不能正常显示。壁纸库越冷门、效果越复杂,越可能命中下面几条。
如果你的壁纸出现异常,请务必拉到本节末尾 —— 那里写了反馈方式。壁纸写法千差万别,你的反馈是项目改进的主要来源。
画面表现
环境要求
发现壁纸有问题?欢迎反馈
上面几条是已知情况,但壁纸库非常庞杂(每张壁纸都是原作者自己搭的效果,写法千奇百怪),没被覆盖到的异常一定还有。如果你发现某张壁纸渲染不对,请提 issue —— 这类反馈是项目最主要的改进来源。
👉 提交 Issue
为了能快速定位,麻烦带上这几项(第一项最关键):
3765967112」。ID 可以在设置面板的壁纸目录里找到(workshop/content/431960/<ID>/)。[three] 或 [warn] 相关的行,贴出来。若某张壁纸能稳定复现问题,把它设为唯一变量(其他设置保持默认)会让排查快很多。
想看实现细节、效果链覆盖率和工程现状(如显存实测、性能门槛状态、未接入的备用路径),见 docs/technical-notes.md。
面向开发者与贡献者 —— 只想用的话可以跳过这一节。
src/host/ Node 侧(Cordis 插件):扫描壁纸目录、解包 PKGV0001、HTTP 路由、Steam 路径探测、settings
src/client/ 浏览器侧(esbuild → dist/client.js),渲染主路径在这里
├─ threejs-player.ts three.js 播放器(背景 Mesh + 粒子 billboard)
├─ three-renderer.ts 生产接线(loadSceneToThree + resize/dpr + 材质混合解析)
├─ tex-loader.ts TEXV0005 解码(RGBA/DXT/RG88/R8 + 幂填充裁剪 + sprite 帧 + 行序)
├─ object-effects.ts 对象级效果链编排(ObjectEffectStage)
├─ effect-runner.ts 效果执行器(uniform 绑定 / 纹理槽 / pass 推进)
├─ wasm-renderer.ts 旧 WebGPU 渲染器(**运行时未接入**,保留备用)
├─ scene-json / scene-renderer / scene-assets / alignment / visibility 场景解析与几何
└─ index / wallpaper-controller / background-layer / settings / styles 引导、控制、背景层、设置
src/shared/ 跨 host/client 类型(WallpaperInfo、SceneDescription、SceneObject 等)
wasm/ Rust 引擎(wasm-bindgen):lib / coords / scene / tex / particle / render(备用)
scripts/ build-client.mjs(esbuild 打包 + wasm 复制)
tests/ vitest 单测(node + jsdom 双环境)
docs/ 开发配置(dev-setup.md);设计文档与实施计划(superpowers/*);技术细节(technical-notes.md);效果视频(videos/*)
渲染回退链
three.js 播放器(背景图层 + 粒子)
│ 模块加载/创建失败,或渲染出 0 个可见对象
▼
preview 图 + Ken Burns(永不白屏)
pnpm install
pnpm run build # tsc -p tsconfig.json → lib/(host 编译,strict)
pnpm run build:wasm # cd wasm && wasm-pack build --target web --release --features render → wasm/pkg/
pnpm run build:client # node scripts/build-client.mjs → dist/client.js
pnpm test # vitest run(node + jsdom 双环境)
wasm/(Rust)必须先 build:wasm 再 build:client —— client 复制的是 wasm/pkg 的现成产物,顺序反了会复制旧 wasm。dist/)通常自动热重载:web profile 始终挂载 @deepseek-ai/dsh-client-hmr,轮询 bundle 的 mtime/size 变化并推 rebuilt 帧。lib/)必须重启 dsh web(host 模块热重载默认 disabled)。dsh plugin --profile web remove "@dsh-use/wallpaper-engine"
dsh plugin --profile web install
# 重启 dsh web
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: wallpaper-engine。