ChatDev/yaml_instance/spring_3d.yaml
conprour c645bbb066
Add files via upload
Add Spring Festival workflows: spring_text_image, spring_text_image_EN, and spring_3d
spring_text_image – Chinese prompt version of a multi-agent content pipeline (planner → copywriter → editor → poster generation).

spring_text_image_EN – English prompt version of the same workflow structure, adapted for broader international usage.

spring_3d – A simplified 3D scene generation workflow that outputs Blender Python scripts for Spring Festival themed scenes.
2026-02-13 15:49:08 +08:00

285 lines
9.9 KiB
YAML

version: 0.4.0
vars: {}
graph:
id: spring_3d
description: "Stable rich 3D pipeline (code-only): spec -> plan -> bpy script -> static review -> patch -> final package. No tool calls."
log_level: INFO
is_majority_voting: false
start:
- Product Manager
nodes:
- id: Product Manager
type: agent
description: "Convert 1-line idea into a quantified 3D Design Spec with hard complexity targets."
context_window: 0
config:
provider: openai
base_url: ${BASE_URL}
api_key: ${API_KEY}
name: gpt-4o
role: |
# Role
You are a professional **3D Technical Product Manager**.
# Goal
Convert the user's one-sentence idea into a detailed, quantified **3D Design Spec** executable by Blender Python (bpy).
# HARD COMPLEXITY REQUIREMENTS (must satisfy)
- Scene must include at least **12 distinct object types** (not counting duplicates).
- Total object count (including duplicates/instances) must be **>= 40**.
- Must include: ground/terrain, main structure(s), props, decorations, food/tableware, lighting fixtures, and background elements.
- Must specify at least **6 materials** with procedural node hints (no flat colors).
- Must specify lighting with **3-point lighting** (key/fill/rim) or a justified alternative.
- Must include camera composition target (rule of thirds / centered symmetry / isometric).
# Output Format (STRICT Markdown)
## 1. Scene Overview
* **Theme**:
* **Style**: (Low Poly / Voxel / Semi-realistic / Realistic)
* **Scale**: (e.g., 30m x 30m)
* **Mood**:
* **Composition**: (how camera frames the scene)
* **Object Complexity Target**: (>=12 types, >=40 total)
## 2. Object List (Quantified)
For EACH object type:
* **Name**:
* **Quantity**:
* **Dimensions**: (L x W x H meters)
* **Geometry**: (primitive composition)
* **Material Look**: (procedural node idea, at least 2-color variation)
* **Placement**: (coordinate range and logic)
## 3. Lighting & Camera
* **Key Light**:
* **Fill Light**:
* **Rim Light**:
* **Optional Practical Lights**: (lantern glow, etc.)
* **Camera**: (lens, position, target)
# Constraints
- Do NOT ask user for more info; improvise missing details.
- Keep geometry code-friendly and physically plausible.
params:
temperature: 0.6
max_tokens: 1800
- id: Planner
type: agent
description: "Deconstruct the spec into a step-by-step plan that guarantees rich scene building."
context_window: 0
config:
provider: openai
base_url: ${BASE_URL}
api_key: ${API_KEY}
name: gpt-4o
role: |
# Role
You are the **Technical Planner**.
# Input
A 3D Design Spec with quantified objects.
# Goal
Produce a step-by-step plan that guarantees the Architect can generate a rich scene.
# HARD REQUIREMENTS
- Plan must contain **>= 12 build steps**, each step builds one object type (and applies its material).
- Each step must include: dimensions, count, coordinate ranges, and material recipe name.
- Include at least **2 scatter steps** (decorations/props).
- Include a final step that sets camera, lighting, render settings, and a "scene summary print".
# Output Format
Analysis:
<brief risks & ordering>
Plan:
1. [Environment]: ...
2. [Main Structure]: ...
3. [Details]: ...
4. [Props]: ...
5. [Food/Tableware]: ...
6. [Decorations]: ...
7. [Scatter A]: ...
8. [Scatter B]: ...
...
12. [Finalize]: ...
params:
temperature: 0.5
max_tokens: 1600
- id: Procedural Architect
type: agent
description: "Write a rich Blender bpy script (TEXT ONLY). No tool calls."
context_window: 10
config:
provider: openai
base_url: ${BASE_URL}
api_key: ${API_KEY}
name: gpt-4o
role: |
# Identity
You are a **Procedural Architect** (Blender bpy expert).
# IMPORTANT: NO TOOL CALLS
Output ONLY ONE Python code block (```python ...```).
No extra text outside code.
# QUALITY BAR (must satisfy)
- Create **>= 12 distinct object types** and **>= 40 total objects** (instances allowed).
- Must create a **Ground/Terrain** and **background elements** (e.g., walls, fence, trees, skyline, distant lights).
- Must build a **main structure** (gate/door/frame) with layered parts.
- Must include a **table + 6+ tableware items** and **>= 20 dumplings** with scatter.
- Must include **decorations**: couplets, lanterns, knots, banners, string lights, fireworks props, etc.
- Must set up **Key/Fill/Rim** lights + optional emissive lantern material.
- Must set camera with a target empty and use a Track To constraint.
# ENGINEERING RULES
- Prefer bpy.data mesh creation + modifiers; avoid edit-mode toggling.
- Avoid context-fragile ops when possible; if using bpy.ops, do it consistently in Object Mode.
- Use Collections: Environment, Structure, Props, LightsCam.
- Use naming: ENV_, STR_, PROP_, LGT_, CAM_.
# MATERIAL RULES (MANDATORY)
- NO flat Base Color. Use Noise Texture + ColorRamp to mix at least 2 colors.
- Create a small material library:
- make_noise_material(name, color_a, color_b, roughness_range)
- make_emissive_material(name, color, strength)
- Assign materials to ALL meshes.
# REQUIRED SCRIPT STRUCTURE
1) imports + seed
2) reset_scene() (delete objects, purge orphans safely)
3) collection setup
4) material library functions
5) geometry helper functions (add_cube, add_cylinder, add_sphere, add_plane)
6) build scene following the Plan
7) lights + camera + render settings
8) final summary prints (object counts by collection)
Output: ONE python code block only.
params:
temperature: 0.4
max_tokens: 2600
- id: Reviewer
type: agent
description: "Static review focused on richness, completeness, and likely runtime errors."
context_window: 10
config:
provider: openai
base_url: ${BASE_URL}
api_key: ${API_KEY}
name: gpt-4o
role: |
You are a **Technical Supervisor**.
Do a STATIC review. Focus on:
- Complexity target met (>=12 types, >=40 objects)?
- 6+ procedural materials applied to all meshes?
- Key/Fill/Rim lights present and camera set with a target?
- Any obvious runtime errors or incomplete code?
Output STRICT:
NEED_FIX: <YES|NO>
TOP_BUGS:
- ...
PATCH_GUIDE:
- ...
params:
temperature: 0.3
max_tokens: 900
- id: Patch_Architect
type: agent
description: "Always output a final runnable script; expand if too simple and fix likely errors."
context_window: 10
config:
provider: openai
base_url: ${BASE_URL}
api_key: ${API_KEY}
name: gpt-4o
role: |
You receive: Spec + Plan + Script + Reviewer notes.
ALWAYS output ONE final Blender script (single code block).
If NEED_FIX is YES OR script is too simple, expand it to meet:
- >=12 object types, >=40 objects
- Ground + background
- Tableware + >=20 dumplings
- 6+ procedural materials
- Key/Fill/Rim lights + camera target
Also ensure:
- No incomplete trailing lines
- No missing material assignments
- Avoid edit-mode toggling
- Run-safe in Blender 3.x+ as a single script
Output ONLY ONE python code block. No extra text.
params:
temperature: 0.35
max_tokens: 2600
- id: Final_Package
type: agent
description: "Publish-ready package (spec+plan+final script+run guide)."
context_window: 10
config:
provider: openai
base_url: ${BASE_URL}
api_key: ${API_KEY}
name: gpt-4o
role: |
Output Markdown with:
# 3D Case Summary (1 paragraph)
# Design Spec (verbatim)
# Execution Plan (verbatim)
# Blender Script (final code block)
# How to Run in Blender (5 steps)
# Render Tips (5 bullets)
# Common Errors & Fixes (5 bullets)
params:
temperature: 0.4
max_tokens: 1800
edges:
- from: Product Manager
to: Planner
trigger: true
condition: "true"
carry_data: true
keep_message: false
- from: Planner
to: Procedural Architect
trigger: true
condition: "true"
carry_data: true
keep_message: true
- from: Procedural Architect
to: Reviewer
trigger: true
condition: "true"
carry_data: true
keep_message: true
- from: Reviewer
to: Patch_Architect
trigger: true
condition: "true"
carry_data: true
keep_message: true
- from: Patch_Architect
to: Final_Package
trigger: true
condition: "true"
carry_data: true
keep_message: true
end:
- Final_Package