Skip to main content
Docsتدفق العمل في مجال البناءYAML Syntax

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 الأفعى

ويب دي تي أويامل
groupChatgroup_chat
agentBasedagent_based
stateMachinestate_machine
repeatUntilrepeat_until
iterateOveriterate_over
manualApprovalmanual_approval
onSuccess / onFailureon_success / on_failure

الإعدادات المسبقة للوكيل والتجاوزات

يوصى باستخدام الإعداد المسبق للإعلان عن الوكيل، واستخدام التجاوزات لتغطية أي حقول عند الضرورة:

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

مرجع متغير

  • متغيرات سير العمل: {{var:name}}
  • إخراج الخطوة: {{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]

التعبير الشرطي (الشرط)

الاستمارة الأساسية هي "المشغل الصالح" ويجب أن يكون لدى المشغل مساحات على كلا الجانبين. المشغلون المدعومون:

  • == / != — مقارنة الخيط الدقيق، مع مراعاة الحالات
  • > < >= <= — مقارنة رقمية، إن لم يكن أي من الجانبين رقماً، فالشرط يُعامل على أنه زائف
  • contains / contains_cs — فحص الحاويات، ومراعاة الحالات
  • contains_ci — فحص الحاويات، وعدم مراعاة الحالات

يمكن الجمع بين المقارنات المتعددة على أعلى المستويات مع &&)و( ||(أو)؛; && يربط أضيق ويتجمع أولاً مثال:

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

لا تكتب:

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

التجمّع الأبوي ليس مدعوماً عندما تحتاج إلى منطق أكثر تعقيداً classifier لإنتاج متغير أو تقسيمه إلى خطوات متعددة اكتبي أسماء متغيرة بشكل واضح لا تستخدمي النسيج المميز داخل حالة ما الشرط الذي لا يمكن طرده يُعامل على أنه زائف والخطوة مُخطوبة.

code_preamble - ديباجة الكود المشترك

وعندما يلزم اتخاذ خطوات رمزية متعددة لتقاسم الواردات أو وظائف المساعدين، ينبغي استخدام الرمز الأعلى مستوى. إنها مُجمّعة بصيغة البرمجة، وفي الوقت الحاضر، مُعدّة تلقائياً لنصوص الخطوات الرمزية بنفس اللغة:

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

أو استخدم النموذج المضمن:

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

إجراء النقل (on_success / on_failure)

استخدم نموذج كائن الإجراء بدلاً من صفيف السلسلة:

yaml
on_success:
  - next: publish

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

عند تصديره كـ Web DTO، فإنه يتوافق مع:

json
{
  "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، تم تحويله إلى حالة ثعبان