拖节点搭 GLSL 并实时预览导出材质
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/11 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Moolight/dsh-shader-workbench该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · tool
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 24 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 89 处,展示前 41 条)
- 写入本地文件host/index.js:83
appendFileSync( - 读取本地文件host/index.js:593
return { ...overview, exists: existsSync(overview.root) }; - 写入本地文件host/workspace.js:154
await mkdir(full, { recursive: true }); - 写入本地文件host/workspace.js:184
await mkdir(dirname(full), { recursive: true }); - 写入本地文件host/workspace.js:185
await writeFile(full, content); - 读取本地文件host/workspace.js:202
return JSON.parse(await readFile(full, 'utf8')); - 读取本地文件host/workspace.js:222
if (!existsSync(dir)) return []; - 读取本地文件host/workspace.js:234
entries = await readdir(base, { withFileTypes: true }); - 读取本地文件host/workspace.js:349
if (!existsSync(dir)) return []; - 读取本地文件host/workspace.js:350
const entries = await readdir(dir, { withFileTypes: true }); - 读取本地文件host/workspace.js:395
if (!existsSync(texDir)) return []; - 写入本地文件host/workspace.js:518
if (existsSync(src)) await copyFile(src, join(target, file)); - 写入本地文件host/workspace.js:560
if (existsSync(src)) await copyFile(src, join(dir, file)); - 写入本地文件host/workspace.js:579
await rename(dir, target); - 读取本地文件host/routes.js:400
data: await readFile(file.full), - 读取本地文件host/routes.js:595
if (!existsSync(full) || !statSync(full).isFile()) { - 读取本地文件host/routes.js:595
if (!existsSync(full) || !statSync(full).isFile()) { - 读取本地文件host/routes.js:610
const info = statSync(full); - 读取本地文件host/routes.js:629
createReadStream(full, { start, end }).pipe(res); - 读取本地文件host/routes.js:639
createReadStream(full).pipe(res); - 读取本地文件host/settings.js:50
parsed = JSON.parse(readFileSync(settingsPath(), 'utf8')); - 写入本地文件host/settings.js:95
mkdirSync(dirname(file), { recursive: true }); - 写入本地文件host/settings.js:98
writeFileSync(tmp, `${JSON.stringify(next, null, 2)}\n`, 'utf8'); - 写入本地文件host/settings.js:99
renameSync(tmp, file); - 读取本地文件host/node-library.js:47
names = readdirSync(dir).filter((name) => name.toLowerCase().endsWith('.json')).sort(); - 读取本地文件host/node-library.js:54
const info = statSync(join(dir, name)); - 读取本地文件host/node-library.js:84
entries.push({ name, json: JSON.parse(readFileSync(join(dir, name), 'utf8')) }); - 读取本地文件host/asset-loader.js:40
if (!existsSync(dir)) throw new Error(`材质不存在:${project}/${material}`); - 读取本地文件host/asset-loader.js:93
if (existsSync(texDir)) await scanDir(texDir, 'textures', out); - 读取本地文件host/asset-loader.js:106
entries = await readdir(absDir, { withFileTypes: true }); - 读取本地文件host/asset-loader.js:144
if (!existsSync(dir)) throw new Error(`材质不存在:${project}/${material}`); - 读取本地文件host/asset-loader.js:147
if (!existsSync(src)) throw new Error(`源文件不存在:${src}`); - 读取本地文件host/asset-loader.js:148
if (!statSync(src).isFile()) throw new Error(`源路径不是文件:${src}`); - 写入本地文件host/asset-loader.js:174
await copyFile(src, join(targetDir, fileName)); - 读取本地文件host/examples.js:45
if (!existsSync(root)) return []; - 读取本地文件host/examples.js:46
const entries = await readdir(root, { withFileTypes: true }); - 读取本地文件host/examples.js:53
project = JSON.parse(await readFile(join(dir, 'project.json'), 'utf8')); - 读取本地文件host/examples.js:59
const files = await readdir(join(dir, 'materials'), { withFileTypes: true }); - 读取本地文件host/examples.js:88
if (!existsSync(dir)) return out; - 读取本地文件host/examples.js:91
const files = await readdir(join(dir, sub), { withFileTypes: true }); - 写入本地文件host/examples.js:151
await mkdir(to, { recursive: true });
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 拖节点搭建GLSL
- 实时预览着色器
- 导出材质资源
节点式 GLSL 工作台(DSH / DeepSeek Harness 插件):拖节点出图 → Shadertoy 兼容实时预览 → 热重载 → 本地材质资源管理。零第三方运行时依赖,7 个自带示例,104 个用例。
README
由 DeepSeek 最新模型翻译生成dsh-shader-workbench
简体中文 · English
DSH Shader 工作台:节点式搭 GLSL → Shadertoy 兼容实时预览 → 热重载 → 本地材质资源管理。
装在 DSH(DeepSeek Harness) 里是一个侧栏入口 + 一整块工作台面板,同时给智能体开放 9 个工具,让它能直接建项目、搭节点图、编译、导出、打快照。
- 零第三方运行时依赖:没有构建链,全是手写 ESM JavaScript,装上去就是一个目录。
- 节点图 = 程序:内置节点库只放 55 个通用件;效果专用逻辑一律拆成图上能展开编辑的普通节点,不做黑盒。
- 重复是语言结构:组的「重复次数」> 1 就是循环,循环体只写一遍(IFS 隧道 99 步、贝塞尔 24 段都靠它,图和着色器小两个数量级)。
- 可扩展、免重启:用户节点丢个 JSON 进 <工作区>/library/nodes/ 就能加;节点分类和项目名都支持多级。
- 面板和智能体共用一套工具与工作区:存储位置能在面板里改,两边看到的永远是同一份数据。
- 104 个用例:含真机 WebGL2 编译校验、GPU 像素回读、真鼠标拖拽交互、1080p 性能度量。
展开完整文档(README 剩余 1 节)
dsh-shader-workbench 简体中文 · English DSH Shader 工作台:节点式搭 GLSL → Shadertoy 兼容实时预览 → 热重载 → 本地材质资源管理。 装在 DSH(DeepSeek Harness) 里是一个侧栏入口 + 一整块工作台面板,同时给智能体开放 9 个工具,让它能直接建项目、搭节点图、编译、导出、打快照。 - 零第三方运行时依赖:没有构建链,全是手写 ESM JavaScript,装上去就是一个目录。 - 节点图 = 程序:内置节点库只放 55 个通用件;效果专用逻辑一律拆成图上能展开编辑的普通节点,不做黑盒。 - 重复是语言结构:组的「重复次数」> 1 就是循环,循环体只写一遍(IFS 隧道 99 步、贝塞尔 24 段都靠它,图和着色器小两个数量级)。 - 可扩展、免重启:用户节点丢个 JSON 进 <工作区>/library/nodes/ 就能加;节点分类和项目名都支持多级。 - 面板和智能体共用一套工具与工作区:存储位置能在面板里改,两边看到的永远是同一份数据。 - 104 个用例:含真机 WebGL2 编译校验、GPU 像素回读、真鼠标拖拽交互、1080p 性能度量。 装上 cd ~/.dsh/profiles/desktop package.json:dependencies 加 "dsh-shader-workbench": "file:<本仓库路径>" dsh.profile.bundles 加 "dsh-shader-workbench" node <pnpm.cjs 路径> install 然后重启 DSH,侧栏会出现「Shader 工作台」。存储位置、配置项、加载排查见安装与配置。 七个自带示例 面板资源树里点 载入示例 即可。一个新节点都没加,全部用现有组件搭出来。 IFS 隧道(Phantom Star 移植)99 步累积 = 一个重复组,和原版逐像素一致 DFT 本轮画心形每个旋转向量一个节点,轨迹靠 BufferA 反馈 9 抽样高斯模糊双 Pass,半径可拖三次贝塞尔24 段采样是一个重复组,四个控制点可拖 另外三个(傅里叶级数 / 谐波频谱 / 景深)和每个示例的做法见 示例说明。 文档 | 文档 | 内容 | | 安装与配置 | 装上、存储位置与优先级、安全边界、加载排查 | | 使用手册 | 界面、画布操作与快捷键、节点库 55 个节点、9 个工具、工作区结构 | | 扩展指南 | 加节点的三条路:用户节点 / 组与重复组 / 内置节点 | | 开发与验证 | 开发命令、真机验证与实测性能、体积、本版没做的 | | 接口契约 | HTTP 动作、节点定义与代码生成契约(改代码前先看这份) | | 架构说明 | 分层、数据流、关键设计取舍与踩过的坑 | | 验收报告 | 各里程碑的真机验收记录 | | 示例说明 | 7 个示例分别演示了什么、怎么搭的 | 详细文档目前以中文为主;英文的 issue / PR 一样欢迎。 仓库 - 仓库:<https://github.com/Moolight/dsh-shader-workbench> - 问题反馈:<https://github.com/Moolight/dsh-shader-workbench/issues> - 许可:MIT 名字里的 "workbench" 是字面意思:它是个工作台,不是渲染引擎 ——引擎只有 WebGL2,剩下的是「让你能一边连节点一边看画面」的那些东西。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Moolight/dsh-shader-workbench
拖节点搭 GLSL 并实时预览导出材质
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,330已汉化DeepSeek 客户端
74.5
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,826已汉化DSH
72.2
花束设计alchaincyf/huashu-design
一句话生成网页、原型、PPT 与信息图等可交付设计
★ 28,638已汉化DSH
71.7
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,311已汉化DSH
71.4
这是你的仓库?认领条目