mirror of
https://github.com/OpenBMB/ChatDev.git
synced 2026-04-25 19:28:09 +00:00
- Remove invalid 'version' field - Restructure to match DevAll YAML schema (graph at top level) - Move start/end nodes to end of graph block - Validation now passes: 'Workflow OK. Design is valid.'
138 lines
4.4 KiB
YAML
138 lines
4.4 KiB
YAML
graph:
|
|
id: loop_timer_comprehensive_demo
|
|
description: |
|
|
Comprehensive LoopTimer demonstration with both standard and passthrough modes.
|
|
|
|
STANDARD MODE BRANCH:
|
|
StandardWriter → StandardCritic → Standard Timer Gate (2 min) → StandardFinalizer
|
|
|
|
The Standard Timer Gate suppresses messages for 2 minutes, then emits a time limit
|
|
message to StandardFinalizer. The feedback loop (StandardCritic → StandardWriter)
|
|
continues running but outputs are blocked by the gate until time expires.
|
|
|
|
PASSTHROUGH MODE BRANCH:
|
|
PassthroughWriter → PassthroughCritic → Passthrough Timer Gate (2 min) → PassthroughFinalizer
|
|
|
|
The Passthrough Timer Gate allows messages through immediately, maintains a parallel
|
|
feedback loop (PassthroughCritic → PassthroughWriter), and after 2 minutes emits a
|
|
time limit message before becoming transparent.
|
|
log_level: INFO
|
|
is_majority_voting: false
|
|
nodes:
|
|
# ===== STANDARD MODE BRANCH =====
|
|
- id: StandardWriter
|
|
type: literal
|
|
description: Standard mode - outputs draft messages that get blocked by timer gate.
|
|
config:
|
|
content: "[STANDARD] Draft iteration from Writer"
|
|
role: assistant
|
|
|
|
- id: StandardCritic
|
|
type: literal
|
|
description: Standard mode - provides feedback to keep the loop running.
|
|
config:
|
|
content: "[STANDARD] Please revise again"
|
|
role: user
|
|
|
|
- id: Standard Timer Gate
|
|
type: loop_timer
|
|
description: |
|
|
Standard mode (passthrough=false) - Suppresses messages for 2 minutes.
|
|
After 2 minutes elapsed, emits time limit message and allows passage to StandardFinalizer.
|
|
Timer resets after emission (reset_on_emit=true).
|
|
config:
|
|
max_duration: 2
|
|
duration_unit: minutes
|
|
reset_on_emit: true
|
|
message: "[STANDARD] Time limit reached after 2 minutes - releasing output"
|
|
passthrough: false
|
|
|
|
- id: StandardFinalizer
|
|
type: literal
|
|
description: Standard mode - receives output only after timer expires.
|
|
config:
|
|
content: "[STANDARD] Final summary released"
|
|
role: assistant
|
|
|
|
# ===== PASSTHROUGH MODE BRANCH =====
|
|
- id: PassthroughWriter
|
|
type: literal
|
|
description: Passthrough mode - outputs draft messages that pass through immediately.
|
|
config:
|
|
content: "[PASSTHROUGH] Draft iteration from Writer"
|
|
role: assistant
|
|
|
|
- id: PassthroughCritic
|
|
type: literal
|
|
description: Passthrough mode - provides feedback to keep the loop running.
|
|
config:
|
|
content: "[PASSTHROUGH] Please revise again"
|
|
role: user
|
|
|
|
- id: Passthrough Timer Gate
|
|
type: loop_timer
|
|
description: |
|
|
Passthrough mode (passthrough=true) - Allows messages through immediately.
|
|
After 2 minutes elapsed, emits time limit message.
|
|
Then becomes transparent gate (no reset, continues passing through).
|
|
config:
|
|
max_duration: 2
|
|
duration_unit: minutes
|
|
reset_on_emit: false
|
|
message: "[PASSTHROUGH] Time limit reached after 2 minutes - now transparent"
|
|
passthrough: true
|
|
|
|
- id: PassthroughFinalizer
|
|
type: literal
|
|
description: Passthrough mode - receives output immediately and continues receiving after timer.
|
|
config:
|
|
content: "[PASSTHROUGH] Final summary released"
|
|
role: assistant
|
|
|
|
edges:
|
|
# ===== STANDARD MODE EDGES =====
|
|
# Main forward path
|
|
- from: StandardWriter
|
|
to: StandardCritic
|
|
|
|
- from: StandardCritic
|
|
to: Standard Timer Gate
|
|
|
|
# Feedback loop (blocked until timer expires)
|
|
- from: StandardCritic
|
|
to: StandardWriter
|
|
trigger: true
|
|
condition: 'true'
|
|
carry_data: true
|
|
keep_message: false
|
|
|
|
# Timer gate output (only after 2 minutes)
|
|
- from: Standard Timer Gate
|
|
to: StandardFinalizer
|
|
|
|
# ===== PASSTHROUGH MODE EDGES =====
|
|
# Main forward path
|
|
- from: PassthroughWriter
|
|
to: PassthroughCritic
|
|
|
|
- from: PassthroughCritic
|
|
to: Passthrough Timer Gate
|
|
|
|
# Feedback loop (always active)
|
|
- from: PassthroughCritic
|
|
to: PassthroughWriter
|
|
trigger: true
|
|
condition: 'true'
|
|
carry_data: true
|
|
keep_message: false
|
|
|
|
# Timer gate output (immediate passthrough + timer message at 2 min)
|
|
- from: Passthrough Timer Gate
|
|
to: PassthroughFinalizer
|
|
|
|
start:
|
|
- StandardWriter
|
|
end:
|
|
- StandardFinalizer
|
|
- PassthroughFinalizer
|