Zum Hauptinhalt springen
DokumentWorkflow erstellenYaml-syntax

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.

Autorisierender Parser

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-DTOYAML
groupChatgroup_chat
agentBasedagent_based
stateMachinestate_machine
repeatUntilrepeat_until
iterateOveriterate_over
manualApprovalmanual_approval
onSuccess / onFailureon_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:

yaml
agents:
  planner:
    preset: universal
  coder:
    preset: coder
    overrides:
      max_iterations: 2000

Variablenreferenz

  • Workflow-Variablen: {{var:name}}
  • Schrittausgabe: {{steps.step_name.output}}
yaml
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 behandelt
  • contains / contains_cs — Enthält-Prüfung, Groß-/Kleinschreibung beachtend
  • contains_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:

yaml
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 == true

Schreiben Sie nicht:

yaml
condition: "{{var:route}} == coding"      # don't — write the variable name directly
condition: (a == 1 || b == 2) && c == 3   # don't — parentheses are not supported

Klammer-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:

yaml
code_preamble:
  python:
    ref: ./lib/shared_utils.py

Oder nutzen Sie das Inline-Formular:

yaml
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:

yaml
on_success:
  - next: publish

on_failure:
  - notify: slack
    message: implementation failed
    stop: true

Beim Export als Web-DTO entspricht es:

json
{
  "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/parse noch einmal lesen
  • condition enthält keine Template-Variablen, und die Kombination aus && / || verwendet keine Klammern
  • manualApproval / onFailure / repeatUntil Nachdem das DTO-Feld exportiert wurde, wurde es in „snake_case“ konvertiert