YAML Syntax reference
Variable references, conditional expressions, agent preset, code preamble - the complete and authoritative reference for Braidrun YAML.
يقوم Braidrun's Web DTO بإجراء رحلة ذهابًا وإيابًا على مستوى بايت YAML، ولكنه يستخدم نمطًا مختلفًا لتسمية الحقول: camelCase vs snake_case. تشرح هذه الصفحة بوضوح التعيين والمتغيرات والشروط والقواعد المعدة مسبقًا التي تحتاج إلى معرفتها.
التحقق والرحلة ذهابا وإيابا، يستخدم كلاهما واجهة فرز الرصيف /api/workflows/parse لتجنّب كتابة مجموعة أخرى من القواعد على جانب الأخوة.
التسمية: حالة الجمل ↔ حالة الثعبان
ويب يون يستخدم جمل كلاس؛ ويستخدم تنفيذ 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 |
الإعدادات المسبقة للوكيل والتجاوزات
يوصى باستخدام الإعداد المسبق للإعلان عن الوكيل، واستخدام التجاوزات لتغطية أي حقول عند الضرورة:
agents:
planner:
preset: universal
coder:
preset: coder
overrides:
max_iterations: 2000مرجع متغير
- متغيرات سير العمل:
{{var:name}} - إخراج الخطوة:
{{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]التعبير الشرطي (الشرط)
الاستمارة الأساسية هي "المشغل الصالح" ويجب أن يكون لدى المشغل مساحات على كلا الجانبين. المشغلون المدعومون:
==/!=— مقارنة الخيط الدقيق، مع مراعاة الحالات><>=<=— مقارنة رقمية، إن لم يكن أي من الجانبين رقماً، فالشرط يُعامل على أنه زائفcontains/contains_cs— فحص الحاويات، ومراعاة الحالاتcontains_ci— فحص الحاويات، وعدم مراعاة الحالات
يمكن الجمع بين المقارنات المتعددة على أعلى المستويات مع &&)و( ||(أو)؛; && يربط أضيق ويتجمع أولاً مثال:
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لا تكتب:
condition: "{{var:route}} == coding" # don't — write the variable name directly
condition: (a == 1 || b == 2) && c == 3 # don't — parentheses are not supportedالتجمّع الأبوي ليس مدعوماً عندما تحتاج إلى منطق أكثر تعقيداً classifier لإنتاج متغير أو تقسيمه إلى خطوات متعددة اكتبي أسماء متغيرة بشكل واضح لا تستخدمي النسيج المميز داخل حالة ما الشرط الذي لا يمكن طرده يُعامل على أنه زائف والخطوة مُخطوبة.
code_preamble - ديباجة الكود المشترك
وعندما يلزم اتخاذ خطوات رمزية متعددة لتقاسم الواردات أو وظائف المساعدين، ينبغي استخدام الرمز الأعلى مستوى. إنها مُجمّعة بصيغة البرمجة، وفي الوقت الحاضر، مُعدّة تلقائياً لنصوص الخطوات الرمزية بنفس اللغة:
code_preamble:
python:
ref: ./lib/shared_utils.pyأو استخدم النموذج المضمن:
code_preamble:
python:
inline: |
import json, os
def log(msg):
print(f"[workflow] {msg}")إجراء النقل (on_success / on_failure)
استخدم نموذج كائن الإجراء بدلاً من صفيف السلسلة:
on_success:
- next: publish
on_failure:
- notify: slack
message: implementation failed
stop: trueعند تصديره كـ Web DTO، فإنه يتوافق مع:
{
"onSuccess": [{"next": "publish"}],
"onFailure": [
{
"notify": "slack",
"message": "implementation failed",
"stop": true
}
]
}التحقق من قائمة البنود
- استخدام المرجع المتغير
{{var:name}} - لا يزال YAML المُصدَّر يمر
/api/workflows/parseاقرأ مرة أخرى - The condition has no template changes, and the " / , combination uses no parentheses
manualApproval/onFailure/repeatUntilبعد تصدير حقل DTO، تم تحويله إلى حالة ثعبان