Skip to main content
Docsتدفق العمل في مجال البناءنوع الخطوة

8 أنواع

استخدام وإحالة ميدانية للعميل الوحيد، المجموعة، الوكيل القائمة، الشفرة، المصنّف، الولاية.

تقدم Braidrun حاليًا 8 أنواع من الخطوات. يجب تحديد وضع رئيسي واحد فقط لكل خطوة؛ الحقول الأخرى عبارة عن تحسينات (إعادة المحاولة، والحالة، والموافقة اليدوية، وما إلى ذلك).

1. واحد - وكيل واحد

الخطوة الأكثر شيوعًا: مطالبة الوكيل بأداء مهمة.

yaml
  - step: plan
    agent: planner
    input: "Plan a daily report pipeline"
    depends_on: [intro]
    retry:
      maxAttempts: 3
      backoff: exponential

التحسينات المدمجة المسموح بها: parallelrepeat_untiliterate_over.

2.group_chat — مناقشة متعددة الوكلاء

يتناوب العديد من الوكلاء في التحدث حول نفس الموضوع. يمكنك تحديد ترتيب التحدث، أو ترك الأمر للمنسق.

yaml
  - step: peer_review
    group_chat:
      agents: [coder, reviewer]
      topic: "Review the change"
      max_rounds: 6
      repeat_until: "score >= 8"

repeat_until سيتم تقييم التعبير الشرطي بعد كل جولة؛ إذا تم استيفاء ذلك، ستنتهي الدردشة الجماعية.

3. agent_based — التفويض الديناميكي

يقوم الوكيل المنسق باختيار العاملين وإرسال المهام الفرعية في وقت التشغيل. بالمقارنة مع الدردشة الجماعية الثابتة، فهي أكثر ملاءمة لسيناريو "لا أعرف من هو المناسب، دع المخطط يقرر".

yaml
  - step: delegate
    agent_based:
      orchestrator: planner
      workers: [coder, analyst, writer]
      input: "{{steps.plan.output}}"

4. الكود — نص حتمي

Supports 7 languages: Python / JavaScript / TypeScript / Bash / Ruby / Lua / CLI. في الإنتاج، يَرْكضونَ في a حاوية صندلِ مِنْ قِبل الفشلِ.

yaml
code_preamble:
  python:
    inline: |
      import json, os

workflow:
  - step: transform
    code:
      language: python
      timeout: 30
      script: |
        data = json.loads(os.environ.get("STEP_INPUTS", "{}"))
        print(json.dumps({"rows": len(data)}))
بادئة الرمز المشترك

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

5. المصنف - متغير التوجيه

اسمح للوكيل بأخذ "الفئة التي ينتمي إليها السياق الحالي" كإخراج وكتابتها في متغير توجيه لاستخدامه حسب الشرط في الخطوات اللاحقة.

yaml
  - step: classify_request
    classifier:
      agent: router
      input: "Classify the user intent"
      categories:
        - name: coding
          description: Needs code changes
        - name: analysis
          description: Needs investigation only
      output_variable: route

  - step: coding_path
    agent: coder
    condition: route == coding
    depends_on: [classify_request]

مُستَحسَن classifier + condition بدلا من المعقدة on_success.next مصفوفة السلسلة.

6.state_machine — آلة الحالة المتداخلة

تعمل كعقدة DAG مركبة، ويمكن أن تحتوي على العديد من الحالات والانتقالات بداخلها.

yaml
  - step: triage
    state_machine:
      initial: ingest
      states:
        - name: ingest
          agent: planner
          transitions:
            - condition: route == analysis
              next: analyze
            - condition: route == coding
              next: code
        - name: analyze
          agent: analyst
          transitions:
            - next: DONE
        - name: code
          agent: coder
          transitions:
            - next: DONE

لا تقم بتكوين موازية في الخطوات الخارجية؛ لا يوجد سوى تدفق واحد يدخل إلى حالة_الجهاز.

7. sub_workflow — وحدة سير العمل الفرعية

استدعاء وحدة منشورة أخرى. يلتزم الإدخال/الإخراج بالعقد المعلن بواسطة الوحدة؛ يتم إجراء الكشف عن الحلقة في وقت التشغيل.

yaml
  - step: fetch_report
    sub_workflow:
      workflow_id: 0d2c…ab12        # UUID of the published module
      version_strategy: pinned
      pinned_version: "2.0.1"
      inputs:
        app_id: "{{var:app_id}}"
        window: last_7d
      outputs:
        report_path: report_path    # parent variable <- module output

قائمة بجميع الوحدات المضمنة: وحدة بناء مكتبة.

٨ - سير العمل - النواتج - قراءتها -

خطوة على مستوى المنظومة: فهي تقرأ القيم من النواتج التي تنشر عن طريق تنفيذ تدفق عمل آخر (انظر النشر -النواتج أدناه) وتكتبها في متغيرات سير العمل هذه. عن طريق التقصير، يقرأ زهرة المصدر أحدث تنفيذ ناجح.

yaml
  - step: read_spend_report
    workflow_output_read:
      workflow_id: 7f3a…9c21           # source workflow UUID
      selector:
        mode: latest_successful
      outputs:
        report_url: spend_report_url   # published name -> local variable
      missing_policy: use_default
      defaults:
        report_url: ""
  • selector.mode — (أحدث عملية تنفيذ ناجحة)؛ ويمكنك أيضاً أن تستخدم عملية تنفيذ
  • outputs — المطلوب: رسم خريطة من أسماء النواتج المنشورة إلى الأسماء المتغيرة لسير العمل
  • missing_policy — عندما يكون الناتج ناقصا: الفشل (العجز، أخطاء الخطى)، أو التجاوز (خطوة هذه الخطوة)، أو الاستخدام - التقصير (القيمة من التقصير)
  • require_workflow_status — يجب أن يكون لتنفيذ المصدر مركز مكتمل

التحسينات على مستوى الخطوة

الحقول التالية ليست أنواع خطوت قائمة بذاتها ولكن تعزيز المقابس أضاف إلى خطوة.

manual_approval — الموافقة على الدليل

تضاف بوابة يدوية قبل أي خطوة: يتوقف التنفيذ ويخطر المستعرض، ويستمر عند الموافقة، ويتوقف عن الرفض أو الاستراحة.

yaml
  - step: deploy
    agent: deployer
    input: "Deploy to production"
    manual_approval:
      enabled: true
      approvers:
        - team-lead@company.com
      timeout: 3600
      approval_message: "Ready to ship?"

عرض قائمة المعلمات الكاملة وعملية الموافقة: الموافقة على الدليل.

publish_outputs — النواتج الخارجية

وبعد أن تتكلل خطوة بالنجاح، ننشر نواتج محددة لتدفقات العمل الأخرى لتقرأ عن طريق سير العمل - الناتج - القراء. عن طريق التقصير، لا تُنشر أيّ قطع أثرية داخلية.

yaml
  - step: build_report
    agent: analyst
    input: "Summarize yesterday's spend"
    publish_outputs:
      - name: report_url
        type: url
        source: "{{steps.build_report.output}}"
        description: Latest spend report link
        visibility:
          scope: team
  • source — مطلوب: عبارة نموذجية تم تقييمها في وقت النشر، مثل الإشارة إلى ناتج هذه الخطوة
  • type — التقصير في النص؛ ويدعم أيضا التوقيف، والرقم، والبولان، والورل، والملف، والأكثر
  • visibility.scope — قائمة خاصة (مقبولة، فقط مالك سير العمل)، أو فريق، أو سير العمل - قائمة (مشفوعة بما يسمح به - سير العمل)

structured_output — الناتج النهائي الهيكلي

الخطوات التي يتخذها العُزُل الوحيد فقط: يستدعي الوكيل الأدوات كالمعتاد، ولكن رده النهائي يُدرج في نتيجة منظمة ضد شيمة مسجلة؛ وعندما يوضع الكتابة، تُدرج النتيجة أيضاً في ملف.

yaml
  - step: final_commentary
    agent: analyst
    input: "Write the commentary"
    structured_output:
      schema: ai_commentary_parts
      write_to: "{{var:output_dir}}/commentary.json"
      fail_on_empty: true
  • schema — Required: the name of a registered structured schema
  • write_to — اختياري: طريق الملف للكتابة إليه، بدعم نموذجي متوافر؛ والشكل الكتابي لا يؤيده في الوقت الراهن سوى json
  • fail_on_empty — ما إذا كان الفشل خطوة عندما تكون النتيجة المنظمة فارغة؛ وعجز عن الحقيقة

نظرة سريعة على حدود التحرير والسرد

  • parallel — يمكن تكوين خطوات وكيل واحدة فقط
  • repeat_until — وكيل واحد فقط أو دردشة جماعية
  • iterate_over — وكيل واحد فقط أو رمز واحد
  • structured_output — الخطوات العازلة الوحيدة
  • state_machine — تعمل كعقدة مركبة DAG، ولا تقم بتكوين التوازي في الطبقة الخارجية