Referência de sintaxe YAML
Referências variáveis, expressões condicionais, predefinições do agente, code preamble - a referência completa e autoritária para Braidrun YAML.
O Web DTO do Braidrun executa ida e volta em nível de byte YAML, mas usa um estilo de nomenclatura de campo diferente: camelCase vs snake_case.
Verificação e viagem de ida e volta YAML ambos usam a interface de análise de plataforma /api/workflows/parse , para evitar escrever outro conjunto de regras no lado do navegador.
Nomenclatura: camelCase ↔ cobra_case
Web JSON usa camelCase; execução YAML usa snake case:
| DTO da Web | 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 |
Predefinições e substituições de agentes
Recomenda-se usar predefinições para declarar o Agente e usar substituições para cobrir quaisquer campos quando necessário:
agents:
planner:
preset: universal
coder:
preset: coder
overrides:
max_iterations: 2000Referência de variável
- Variáveis de workflow:
{{var:name}} - Saída da etapa:
{{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]Expressão condicional (condição)
A forma básica é "operador esquerdo direito", e o operador deve ter espaços em ambos os lados. Operadores apoiados:
==/!=— Comparação de texto exata, sensível a maiúsculas><>=<=— Comparação numérica; se nenhum dos lados é um número, a condição é tratada como falsacontains/contains_cs— Contém verificação, sensível a maiúsculascontains_ci— Contém verificação, caso- insensível
As comparações múltiplas podem ser combinadas no nível superior com &&(e) e ||(ou); && liga-se mais apertado e é agrupado primeiro. Exemplo:
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 == trueNão escreva:
condition: "{{var:route}} == coding" # don't — write the variable name directly
condition: (a == 1 || b == 2) && c == 3 # don't — parentheses are not supportedO agrupamento parenthesized não é suportado — quando você precisa de lógica de agrupamento mais complexa, use classifier para produzir uma variável de roteamento ou dividi-la em várias etapas. Escreva nomes de variáveis claramente; não use sintaxe variável- modelo dentro de uma condição. Uma condição que não pode ser analisada é tratada como falsa, e o passo é ignorado.
code_preamble — preâmbulo de código compartilhado
Quando várias etapas de código precisam compartilhar as funções de importação ou helper, use o preamble de código de nível superior. É agrupado por linguagem de programação e, em tempo de execução, automaticamente pré-preparado para os scripts de passos de código na mesma linguagem:
code_preamble:
python:
ref: ./lib/shared_utils.pyOu use o formulário embutido:
code_preamble:
python:
inline: |
import json, os
def log(msg):
print(f"[workflow] {msg}")Ação de Transição(on_success / on_failure)
Use o formato de objeto de ação em vez de array de strings:
on_success:
- next: publish
on_failure:
- notify: slack
message: implementation failed
stop: trueQuando exportado como Web DTO, corresponde a:
{
"onSuccess": [{"next": "publish"}],
"onFailure": [
{
"notify": "slack",
"message": "implementation failed",
"stop": true
}
]
}Verificar lista de cláusulas
- Uso de referência variável
{{var:name}} - O YAML exportado ainda é aprovado
/api/workflows/parseleia de volta - A condição não tem variáveis de modelo, e a combinação && / / om uses no parênteses
manualApproval/onFailure/repeatUntilApós a exportação do campo DTO, ele foi convertido em Snake_case