{/* This page is auto-generated from the skill's SKILL.md by website/scripts/generate-skill-docs.py. Edit the source SKILL.md, not this page. */}

Dream Loop

通过概念图保真循环构建惊艳的 3D 场景。

Skill 元数据

来源可选 — 通过 hermes skills install official/creative/dream-loop 安装
路径optional-skills/creative/dream-loop
版本1.0.0
作者Anshu Chimala(由 Nous Research 改编)
许可证MIT
平台linux, macos
标签3d, games, webgl, threejs, image-generation, visual-fidelity, creative
相关 skillp5js, claude-design, manim-video

参考:完整 SKILL.md

INFO

以下是 Hermes 在触发本 skill 时加载的完整 skill 定义。这是 agent 在 skill 激活时所看到的指令内容。

Dream Loop Skill

一个构建极其惊艳视觉效果的自主流程,尤其针对 3D 场景(游戏、app,通常是浏览器 three.js/WebGL):生成理想结果的照片级概念图,构建它,给运行中的构建截图,让一个裁判对照有门禁的阶梯给截图 vs 概念图打分,然后迭代直到收敛。目标:在目标平台可接受的帧率下(例如浏览器 60fps、现代手机 120fps),拿到视觉上最惊艳的结果。

本 skill 不覆盖通用 web app 功能、2D UI 设计或非视觉质量——只覆盖视觉保真循环。

何时使用

  • 用户说"dream loop",或要求把游戏/场景/app 做到极高图形保真度。
  • 对已有视觉产品做后续精修(见下文后续循环)。

前置条件

  • 概念图:image_generate 工具。若不可用,停下并向用户要一张概念图(或一个可连接的图片生成 API)。
  • 截图:browser_exec——本地起服务(静态构建用 python3 -m http.server),然后 new_tab(url)、wait_for_load()、capture_screenshot()。
  • 评判:vision_analyze(见 Judge 节关于每次调用一张图的变通)。
  • 可选:用 Blender 做素材建模——见 blender-3d-automation skill。delegate_task 用于并行素材工作和全新上下文评判。

若你没有跑完整循环所需的工具,尽早向用户说明并停下。

快速参考

阶段做什么产物(.dream-loop/)
1. 目标获取/确认用户描述notes
2. 概念生成"引擎内截图"式概念图concept.png
3. 预算记录时间预算与开始时间(若给了)notes
4. 构建一次性尽量把概念实现好source、plans
5. 截图以概念图分辨率截取运行中的构建round-N.png
6. 自检评判前严格并排审查assessment log
7. 评判阶梯打分对比,给出可执行指令verdict log
8. 迭代/退出处理指令或按准则退出—

流程

1. 目标概念

若用户给了游戏、场景或 app 的描述,就继续——除非太模糊到没法生成概念图,否则不要追问。若没给,就问。

把工作上下文/文件放进 .dream-loop/ 并 gitignore 它(除非另有指示)。

2. 概念图

概念是一个写实、高质量、惊艳的目标:当下 AAA 游戏实时运行的样子。物理上可信的材质(湿石头、拉丝金属、布料、玻璃),带真实粗糙度和法线细节,正确比例,氛围(雾、霾、雨、尘、体积光),电影级打光,有明确主光和丰富阴影。它不应是风格化或艺术演绎——它应看起来像理想结果的真实截图。

用 image_generate 生成时避免这些失败模式:

  • 过度渲染:摄影般杂乱、胶片颗粒、成百上千个独特小物件、每个表面都过度细节而读成噪点。带建模素材的实时构建对不上这个,而且它本身也不好看。
  • 过度简化:卡通或玩具感、平面着色、blob 状原始形、空表面。无聊;打动不了用户。

瞄准中间地带:着色器能很好渲染的漂亮表面和材质、强氛围和打光、有意思的调色板,以及聚焦的主角元素——带吸引眼睛的精细细节(而不是每个元素都抢注意力)。

提示词要"引擎内截图"而非"概念艺术",并劝退噪点/颗粒感。用 vision_analyze 看图;若命中失败模式,把它以 edit 模式传回 image_generate,让它修。存为 .dream-loop/concept.png。

若是你生成的图(用户没提供),在开始构建循环前暂停并确认它符合用户设想。

3. 时间预算

若用户给了时间预算,记录开始时间,每轮之间看钟。不要为了卡预算而降低视觉保真度——力争绝对最好的结果,别赶工去给裁判。并行或分发工作(例如用 delegate_task 做独立素材)来卡时间目标,但不要抄近路:带着有意义、漂亮的进展撞时间上限,胜过一个大体完整但难看的东西。

若没给时间预算,就跑到某个退出准则——但提前警告这可能消耗大量 token。

4. 构建循环

看概念图,一次性实现它,让第一遍就在评分阶梯的每一层都算数:构图、纹理、打光、细节。仔细雕刻和建模素材(或允许时用外部素材);除非美术风格要求,否则别满足于基础程序化元素和平表面。把中间文件/计划写到 .dream-loop/。

  • 若装了 Blender 且概念涉及 3D 素材,优先在 Blender 里建模(见 blender-3d-automation skill)。复杂素材通过 delegate_task 委派给子 agent。
  • 若用户允许外部素材,除非素材简单,否则优先用外部而非自己建模。没明说就假设不用网上外部素材。
  • 关键环境细节别偷懒(景物、地板、建筑):简单形状看起来方块、发亮、平、假。微小细节和纹理很重要,需要自定义雕刻。
  • 用 image_generate 做纹理、法线贴图、天空盒等——比程序化的更好看也更快。

5. 截图

把构建起服务(例如在构建目录 python3 -m http.server),然后经 browser_exec:new_tab('http://localhost:8000')、wait_for_load()、让场景稳定、capture_screenshot()。目标分辨率和宽高比与概念图一致,以便公平对比。存为 .dream-loop/round-N.png。

6. 评判前自检

每次提交候选截图前,先自己看。别提交半成品。把截图和概念并排比,记一份诚实的"可否交给裁判"评估;只有在确信显著提分后才提交。要严格,逐像素审:大处(缺失/错误的物体、错误比例、透视、位置)和小处(渲染故障、扁平无纹理表面、难看的打光、糟糕对比、泛白或过饱和的颜色、斑点、难看的阴影)。一个表面一个表面、一个物体一个物体地扫,列出发现。

7. 评判

评判理想上每轮由一个全新上下文的子 agent 做(delegate_task),以保持客观和低成本。给裁判最新截图、概念图,以及(从第 2 轮起)上一轮的截图和判决。

机制:vision_analyze 每次调用一张图。要么让裁判顺序调用(先概念、再截图、凭它自己描述的记忆对比),要么——更好——用 ImageMagick(convert concept.png shot.png +append compare.png)或 PIL 拼一张带标注的并排合成图,分析这一张图。

裁判提示词:

你是一位艺术总监,在拿实时渲染对照它的概念图审片。把截图和概念图对比,用这个阶梯打 0-10 分。阶梯是有门禁的:一帧在其下方每一层级的全部要求都满足之前,不能超过该层的上限。对门禁要严格。

  • 第 1 层,形状(0-3): 机位、取景、构图,以及每个主要物体的位置和大致尺度与概念图相符。是布局,不是完成度:每个主要元素都在,且在帧内正确区域(约帧宽/高的 10% 以内)、大致正确大小(约 25% 以内)。位置对、轮廓大致对,即使边缘和表面错也过;把精度吹毛求疵留到第 4 层。没做到就封顶 3。
  • 第 2 层,光与色(3-5): 主光方向和颜色、整体曝光(不裁切成纯黑或纯白)、阴影深度、调色板、对比、氛围。注意反射、辉光等。确保场景相对概念图不太亮也不太暗。评整帧,不是小细节(第 4 层)。打光/反射/颜色/对比大致对之前封顶 5。
  • 第 3 层,材质与表面(5-7): 每个表面一眼就看出是对的材质:纹理、粗糙度、半透明、湿润感、反射。素材不能看起来程序化、方块、光滑/塑料;主导画面的元素要正确雕刻和细化。没做到封顶 7。
  • 第 4 层,精细细节(7-9): 小东西。无情吹毛求疵;凑近看每个小物件。布局近乎完美对齐;材质极其可信。没做到封顶 9。
  • 第 5 层,难以区分(9-10): 并排和放大都站得住。逐像素挑刺。

若提供了之前的判决和截图:你是序列中的一位评审,不是第一个。保持一致。先对照新截图把每条之前的指令标为 LANDED(已落地)、PARTIAL(部分)或 NOT DONE(未做);把 PARTIAL 或 NOT DONE 的带下来。除非结果明显更差,否则不要推翻之前的指令——若推翻,说出来并说明原因。

输出格式:

  1. 第一行给分数;第二行给 "Tier N"(最高完全通过的门禁)。 1b. 若给了之前的判决:LANDED / PARTIAL / NOT DONE 列表。
  2. "Blocking:" 下一层门禁的具体失败。构建者必须先清掉这些,其他才算数。点名元素和改动,带量级:"岩石:把堆叠的卵圆巨石换成一整块连续断裂板;裂缝宽 2-5cm、内部深暗、加表面纹理,别让它们看着平/塑料"——而不是"岩石看着假"。
  3. 然后最多 4 条来自更高层的进一步指令,同样风格,按可挽回的分数排序。

不要不可执行的反馈("这看着像合成的")——点名具体原因。每条指令这一轮都必须可执行。不要四舍五入:门禁没完全过,上限就守住。

8. 退出准则

  • 分数 >= 8 且目标 FPS 可接受:完成。给用户看最新截图;问要不要再多迭代。
  • 分数 >= 8 但 FPS 不可接受:优化——先无损的胜手,再视觉影响最小的。之后重判确认无回归。
  • 接近停滞(最佳分数连续 2 轮没涨满一分,或裁判 3 次点名同一个缺口):停止增量微调。退一步问:是方法的什么在封顶分数。在一轮里做一个大的结构性改变:换素材策略(Blender 里雕刻、允许的话拉真实模型/纹理/HDRI)、重写光照模型、重建构图、换机位。仔细自检——大改动会搞坏东西。只有当你能说清这次为什么会奏效时,才重复参数调优。
  • 已停滞(已试过一次大结构改变、分数平了 3 轮、裁判在吹毛求疵或要求无解的东西比如在无 GPU 机器上光线追踪):停下,告诉用户你为什么被卡住,给出选项。
  • 其他:这一轮解决全部或大部分重量级缺口,不只是最上面那个——轮次很贵。优先动得最多的缺口(打光、纹理、网格细节)。只有当分数掉了整整一分或更多才回退;小跌是裁判噪声,整轮回退会把好改动和坏的一起扔了。若某一条改动明显回归,只撤那一条。循环。

后续循环

在已有产品上继续构建时(或用户重新调用 skill 做精修),不要凭空造新概念图——它可能和已有东西分叉。相反,截取当前产品的实时截图,让 image_generate 渲染它能做到的最好版本(当前截图 → 同一镜头的 AAA 级图形版),然后用它当目标。若需要,多个屏幕可以并行跑评判循环,代价是更高 token。

常见坑

  • 概念图过度渲染或过度简化(见失败模式)——先修概念图再照着构建。
  • 把半成品截图交给裁判;自检门禁存在是有原因的。
  • 截图分辨率/宽高比和概念图不同——不公平对比,判决有噪声。
  • 裁判说你方向偏了,你还钻在增量微调里。
  • 一次 vision_analyze 调用里判两张图——它只吃一张图;先合成。
  • 场景还没加载/稳定就截图——在 wait_for_load() 后加等待,让素材流式加载和动画预热。

验证

  • .dream-loop/concept.png 存在,且通过失败模式审查(若为生成图,还有用户确认)。
  • 每轮都有截图、记录的自评、以及带分数+层级+指令的裁判判决。
  • 只通过明确的退出准则退出;最终截图连同最终分数和 FPS 测量展示给用户。

改编自 Anshu Chimala 的 dream-loop(MIT)。上游许可证以 LICENSE.txt vendored。