Yaml-syntaxreferenz
Variablenreferenzen, bedingte Ausdrücke, Agentenvoreinstellungen, code_preamble – die vollständige und maßgebliche Referenz für Braidrun YAML.
Das Web-DTO von Braidrun führt einen YAML-Roundtrip auf Byteebene durch, verwendet jedoch einen anderen Feldbenennungsstil: camelCase vs snake_case. Auf dieser Seite werden die Zuordnungen, Variablen, Bedingungen und voreingestellten Regeln, die Sie kennen müssen, klar erläutert.
Sowohl die Verifizierung als auch der YAML-Roundtrip nutzen die Plattform-Parsing-Schnittstelle /api/workflows/parse , um zu vermeiden, dass auf der Browserseite ein weiterer Regelsatz geschrieben wird.
Benennung: camelCase ↔ Snake_case
Web JSON verwendet camelCase; Ausführung YAML verwendet Snake_case:
| Web-DTO | YAML |
|---|---|
groupChat | group_chat |
agentBased | agent_based |
stateMachine | state_machine |
repeatUntil | repeat_until |
iterateOver | iterate_over |
manualApproval | manual_approval |
onSuccess / onFailure | on_success / on_failure |
Agentenvoreinstellungen und -überschreibungen
Es wird empfohlen, die Voreinstellung zum Deklarieren des Agenten zu verwenden und bei Bedarf Überschreibungen zu verwenden, um alle Felder abzudecken:
agents:
planner:
preset: universal
coder:
preset: coder
overrides:
max_iterations: 2000Variablenreferenz
- Workflow-Variablen:
{{var:name}} - Schrittausgabe:
{{steps.step_name.output}}
variables:
topic: workflow
workflow:
- step: plan
agent: planner
input: "Plan for {{var:topic}}"
- step: implement
agent: coder
input: "Implement based on {{steps.plan.output}}"
depends_on: [plan]Bedingter Ausdruck (Bedingung)
Die Grundform ist „linker Wert Operator rechter Wert“, wobei auf beiden Seiten des Operators ein Leerzeichen stehen muss. Unterstützte Operatoren:
==/!=— Exakter String-Vergleich, Groß-/Kleinschreibung beachtend><>=<=— Numerischer Vergleich; ist eine Seite keine Zahl, wird die Bedingung als false behandeltcontains/contains_cs— Enthält-Prüfung, Groß-/Kleinschreibung beachtendcontains_ci— Enthält-Prüfung, Groß-/Kleinschreibung ignorierend
Mehrere Vergleiche lassen sich auf oberster Ebene mit && (und) und || (oder) kombinieren; && hat die höhere Priorität und bindet zuerst. Beispiel:
condition: route == coding
condition: score >= 8
condition: status == done && score >= 8
# && binds tighter — reads as (a == 1 && b != done) || retry == true
condition: a == 1 && b != done || retry == trueSchreiben Sie nicht:
condition: "{{var:route}} == coding" # don't — write the variable name directly
condition: (a == 1 || b == 2) && c == 3 # don't — parentheses are not supportedKlammer-Gruppierung wird nicht unterstützt — für komplexere Gruppierungslogik verwenden Sie classifier , um eine Routing-Variable zu erzeugen, oder teilen Sie in mehrere Schritte auf. Schreiben Sie den Variablennamen direkt aus und verwenden Sie in condition keine Template-Variablen-Syntax. Nicht auswertbare Bedingungen werden als false behandelt, und der Schritt wird übersprungen.
code_preamble – gemeinsame Code-Präambel
Wenn mehrere code-Schritte gemeinsame Imports oder Hilfsfunktionen benötigen, verwenden Sie das code_preamble auf oberster Ebene. Es ist nach Programmiersprache gruppiert und wird bei der Ausführung automatisch dem Skriptkopf der code-Schritte derselben Sprache vorangestellt:
code_preamble:
python:
ref: ./lib/shared_utils.pyOder nutzen Sie das Inline-Formular:
code_preamble:
python:
inline: |
import json, os
def log(msg):
print(f"[workflow] {msg}")Transition Action(on_success / on_failure)
Verwenden Sie die Aktionsobjektform anstelle des String-Arrays:
on_success:
- next: publish
on_failure:
- notify: slack
message: implementation failed
stop: trueBeim Export als Web-DTO entspricht es:
{
"onSuccess": [{"next": "publish"}],
"onFailure": [
{
"notify": "slack",
"message": "implementation failed",
"stop": true
}
]
}Überprüfen Sie die Klauselliste
- Verwendung variabler Referenzen
{{var:name}} - Exportiertes YAML besteht weiterhin
/api/workflows/parsenoch einmal lesen - condition enthält keine Template-Variablen, und die Kombination aus && / || verwendet keine Klammern
manualApproval/onFailure/repeatUntilNachdem das DTO-Feld exportiert wurde, wurde es in „snake_case“ konvertiert