Aller au contenu principal
DocumentCréer un flux de travailSyntaxe YAML

Référence de syntaxe YAML

Références de variables, expressions conditionnelles, préréglage d'agent, code_preamble - la référence complète et faisant autorité pour Braidrun YAML.

Le Web DTO de Braidrun effectue un aller-retour YAML au niveau des octets, mais utilise un style de dénomination de champ différent : camelCase vs snake_case. Cette page explique clairement le mappage, les variables, les conditions et les règles prédéfinies que vous devez connaître.

analyseur faisant autorité

La vérification et l'aller-retour YAML utilisent tous deux l'interface d'analyse de la plateforme. /api/workflows/parse , pour éviter d'écrire un autre ensemble de règles du côté du navigateur.

Dénomination : camelCase ↔ Snake_case

Web JSON utilise camelCase ; l'exécution YAML utilise Snake_case :

DTO WebYAML
groupChatgroup_chat
agentBasedagent_based
stateMachinestate_machine
repeatUntilrepeat_until
iterateOveriterate_over
manualApprovalmanual_approval
onSuccess / onFailureon_success / on_failure

Préréglages et remplacements d'agent

Il est recommandé d'utiliser un préréglage pour déclarer l'agent et d'utiliser des remplacements pour couvrir tous les champs si nécessaire :

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

Référence variable

  • Variables du flux de travail : {{var:name}}
  • Sortie d'étape : {{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]

Expression conditionnelle (condition)

La forme de base est « opérande gauche opérateur opérande droite » ; un espace est obligatoire de part et d'autre de l'opérateur. Opérateurs pris en charge :

  • == / != — Comparaison exacte de chaînes, sensible à la casse
  • > < >= <= — Comparaison numérique ; si l'un des côtés n'est pas un nombre, la condition est traitée comme false
  • contains / contains_cs — Test d'inclusion, sensible à la casse
  • contains_ci — Test d'inclusion, insensible à la casse

Plusieurs comparaisons peuvent être combinées au niveau supérieur avec && (et) et || (ou) ; && a une priorité plus élevée et se combine en premier. Exemple :

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

N'écrivez pas :

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

Le regroupement par parenthèses n'est pas pris en charge — pour une logique de regroupement plus complexe, utilisez classifier pour produire une variable de routage ou scinder en plusieurs étapes. Écrivez le nom de la variable tel quel, sans utiliser la syntaxe des variables de modèle dans condition. Une condition non analysable est traitée comme false, et l'étape est ignorée.

code_preamble — shared code preamble

Lorsque plusieurs étapes code doivent partager des import ou des fonctions utilitaires, utilisez code_preamble au niveau supérieur. Regroupé par langage de programmation, il est automatiquement concaténé à l'exécution en tête du script des étapes code du même langage :

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

Ou utilisez le formulaire en ligne :

yaml
code_preamble:
  python:
    inline: |
      import json, os
      def log(msg):
          print(f"[workflow] {msg}")

Transition Action(on_success / on_failure)

Utilisez le formulaire d'objet d'action au lieu du tableau de chaînes :

yaml
on_success:
  - next: publish

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

Lorsqu'il est exporté en Web DTO, il correspond à :

json
{
  "onSuccess": [{"next": "publish"}],
  "onFailure": [
    {
      "notify": "slack",
      "message": "implementation failed",
      "stop": true
    }
  ]
}

Vérifier la liste des clauses

  • Utilisation de référence variable {{var:name}}
  • YAML exporté passe toujours /api/workflows/parse relire
  • condition n'utilise pas de variables de modèle, et la combinaison && / || n'utilise pas de parenthèses
  • manualApproval / onFailure / repeatUntil Une fois le champ DTO exporté, il a été converti en Snake_case