{/* 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 |
| 相关 skill | p5js, claude-design, manim-video |
参考:完整 SKILL.md
以下是 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-automationskill。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-automationskill)。复杂素材通过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 的带下来。除非结果明显更差,否则不要推翻之前的指令——若推翻,说出来并说明原因。
输出格式:
- 第一行给分数;第二行给 "Tier N"(最高完全通过的门禁)。 1b. 若给了之前的判决:LANDED / PARTIAL / NOT DONE 列表。
- "Blocking:" 下一层门禁的具体失败。构建者必须先清掉这些,其他才算数。点名元素和改动,带量级:"岩石:把堆叠的卵圆巨石换成一整块连续断裂板;裂缝宽 2-5cm、内部深暗、加表面纹理,别让它们看着平/塑料"——而不是"岩石看着假"。
- 然后最多 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。