יצירת תבנית פייפליין
תבניות פייפליין נכתבות בהגדרות סביבת העבודה. הפריט פייפליינים בסרגל הצד של סביבת העבודה הוא תור ההרצות, ולא רשימת התבניות — אין בו פעולה של “יצירת תבנית”.
לפירוש של כל סוג שלב, מפתח גוף ושדה תצורה, ראו סוגי שלבי פייפליין.
יצירת תבנית
קטע בשם “יצירת תבנית”- עברו אל הגדרות ← סביבת עבודה ← תבניות פייפליין
(
/workspaces/<workspace-id>/settings/pipelines). - לחצו על תבנית חדשה.
אין תיבת דו־שיח למזהה. העורך נפתח מיד על שלד מוכן מראש בשם פייפליין חדש, עם
מזהה שמוקצה אוטומטית (pipeline_1, ואחריו pipeline_2, …). לחצו על הכותרת
בראש העורך כדי לשנות את שמו.
הקנבס אינו ריק: צומת כניסה טריגר, צומת סוכן הנחיה אחד שכותרתו Step וזקיף סופי שמסיים את ההרצה. הזקיף אינו מצויר. העורך מחווט מחדש את הזקיף המוסתר אל כל כיור שאפשר להגיע אליו, כך שעבודה שתלוו אחרי Step עדיין רצה.
הוספת צמתים
קטע בשם “הוספת צמתים”סרגל הצד ספריית צמתים יושב דרך קבע משמאל לעורך. סננו אותו בתיבת חיפוש צמתים וגררו פריט אל הקנבס — הצומת נוחת במקום שבו שחררתם אותו, בלי חיבור נכנס.
| צומת בפלטה | סוג שלב | מה הוא עושה |
|---|---|---|
| Bash script | listen | מריץ סקריפט מעטפת עם החלפת {{state}}; לא נשלח סוכן |
| Open conversation | listen | פותח את המרחב הגלוי היחיד של ההרצה ואת הצ׳קאאוט שלו; צומתי סוכנים מצטרפים למרחב הזה |
| Clone PR branch | listen | מגלה את ענף הראש של ה-PR באמצעות gh pr view ומשבט אותו לתיקיית ההרצה |
| Post PR comment | listen | מפרסם את הממצאים המאוחדים ב-PR כהערת סקירה ב-GitHub |
| Reviewer (prompt) | listen | שולח סוכן סוקר מתמחה; משהה עד שהסוכן מגיש את תוצאתו |
| Consolidate (join) | join | ממתין לכמה ענפים במעלה הזרם, ואז מבקש מסוכן לאחד את הפלטים שלהם |
| Custom prompt | listen | צומת כללי מונחה הנחיה, מנותב דרך הגוף promptAgent |
| Post to space | listen | שולח הודעה אל מרחב הודעות |
| Condition / switch (router) | router | מסתעף את הזרימה לפי ערך מצב |
| If file exists (router) | router | מנתב "true" כשנתיב קיים תחת השיבוט, אחרת "false" |
| Any file exists (OR router) | router | מנתב "true" כשאחד מהנתיבים ברשימה קיים |
| All conditions (AND router) | router | מנתב "true" רק כשכל הנתיבים ברשימה קיימים |
| Team dispatch | listen | שולח צוות שלם ומשהה עד שיסיים |
| Approval gate | listen | עוצר לצורך החלטת אישור |
| For each (map) | forEach | מרנדר הנחיה לכל פריט, ואז שולח את הסוכן פעם אחת כשההנחיות האלה מחוברות זו לזו |
| Call sub-pipeline | listen | מריץ תבנית אחרת כשלב מקונן |
| Clean up worktrees | listen | מסיר עצי עבודה מבודדים ומיושנים; דטרמיניסטי, לא נשלח סוכן |
הספרייה מקבצת אותם תחת זרימה ולוגיקה, סקירת PR, סוכנים, הודעות וקוד. אין קבוצת Demo.
חיבור הצמתים זה לזה
קטע בשם “חיבור הצמתים זה לזה”לכל צומת עבודה יש פורט פלט עגול בקצהו הימני. גררו מהפורט הזה אל צומת אחר כדי
לחבר ביניהם. טריגרי ההתחלה זהים: לכל אחד פורט משלו, כך שחוט מלוח זמנים אינו
יוצא גם מהרצה ידנית. לחצו על הוספת שלב (+) ממש אחרי צומת כדי להוסיף
אחריו סוג. רחפו מעל נקודת האמצע של קשת קיימת ולחצו על × כדי לנתק.
אפשר לערוך חיבורים גם מהצומת ש_מקבל_ אותם:
- בחרו את הצומת שבמורד הזרם. לוח התצורה שלו נפתח מימין.
- גללו אל טריגרים מ־ והקישו על הצ’יפ של כל צומת במעלה הזרם שצומת זה אמור להאזין לו. הקשה על צ’יפ נבחר מסירה את החיבור.
- אם צומת במעלה הזרם הוא נתב, מופיע מתחת לצ’יפים אזור מפתחות ניתוב עם שדה
מפתח ניתוב מ-<node> אחד לכל קשת של נתב. הזינו את המפתח שהקשת הזו
יורה עליו —
trueאוfalseעבור נתבי קיום הקבצים, או שם המקרה עבור מיתוג.
כל צומת טריגר הוא נקודת כניסה. צומת יכול להאזין לכמה צמתים במעלה הזרם (fan-in) ולהזין כמה צמתים במורד הזרם (fan-out), והגרף חייב להישאר חסר מעגלים — שום דבר בעורך לא עוצר בעדכם מליצור מעגל, אז בדקו את העבודה שלכם.
הזקיף הסופי מסונן מהקנבס, ולכן אי אפשר לבחור בו. העורך מחווט אותו מחדש אל כל כיור שאפשר להגיע אליו בכל פעם שהגרף משתנה, כך שעבודה שתלוו אחרי ה-Step הנזרע עדיין רצה. גרף ריק (טריגר בלי ממשיכי עבודה) מציג את הטריגר עצמו, כך שההרצה מסתיימת מיד.
הגדרת צומת
קטע בשם “הגדרת צומת”בחרו צומת כדי לפתוח את לוח התצורה שלו. אילו שדות מופיעים תלוי בגוף של הצומת.
לכל צומת יש תווית, מפתחות קלט (מפתחות מצב מופרדים בפסיקים, הנקראים בזמן ההרצה) ותחת מתקדם — Reducer, זמן קצוב (ms), ניסיונות חוזרים, המשך אם שלב זה נכשל וסכמת פלט (JSON). צמתי listen ו-join יכולים גם להחליף את הסוג שלהם בין השניים.
Open conversation
קטע בשם “Open conversation”מוסיף בורר מאגרים לשיבוט (אילו מאגרים של סביבת העבודה לבצע להם צ׳קאאוט; ריק פירושו ללא), שם המרחב, ותיבת סימון פתיחת שיחה בתוכו. כשהתיבה מסומנת, שדה שם השיחה מגדיר את השיחה שאיתה נפתח המרחב. צומתי סוכנים מצטרפים למרחב הזה — הם לא פותחים אחד משלהם.
סוכן הנחיה
קטע בשם “סוכן הנחיה”מוסיף סוכן (איזה סוכן לשלוח), תבנית הנחיה (השתמשו ב-{{key}} כדי להפנות
לקלטים או לפלטים של צמתים במעלה הזרם) ומפתח פלט.
זמן קצוב (ms) נמדד ב_מילישניות_, לא בשניות — 900000 הם 15 דקות. הזנת 900
נותנת לשלב 0.9 שניות.
למצב השיחה שצומת סוכן הנחיה רץ בו אין שדה בעורך על צומת הסוכן. הוא נוסע על
extras['mode'] (chat, plan או review) בצומת Open conversation שיצר את
המרחב (ברירת מחדל review). הגדרה שלו על שלב סוכן מתעלמים ממנה. המפתח מותאם
בהתאמה מדויקת: כל איות אחר מתעלמים ממנו בשקט.
Bash script
קטע בשם “Bash script”מוסיף סקריפט. אין שדות של תיקיית עבודה או של משתני סביבה, מפני ששניהם אינם ניתנים להגדרה:
- כל שלב bash בהרצה חולק את תיקיית העבודה הנוכחית
<cc_root>/pipelines/<runId>/. GITHUB_TOKENמוזרק ממאגר פרטי הגישה, כך ש-ghו-git clone https://x-access-token:$GITHUB_TOKEN@…עובדים בלי הגדרה.- הסקריפט מופעל כקובץ ההרצה המילולי
bash, ולכןbashחייב להיות ב-PATHשל מארח השרת. זה שיקול שכדאי לזכור ב-Windows.
נתב מעריך תנאי ומחזיר מפתח ניתוב; המנוע מפעיל רק את הקשת שבמורד הזרם שמפתח הניתוב שלה תואם, ואת שאר הענפים הוא מסמן כדולג.
בחירה בנתב מחליפה את השדה מפתח פלט בעורך התנאי. בחרו אחד מארבעת המצבים שלו:
- קבצים קיימים — אחד לפחות — מנתב
"true"כשאחד מהנתיבים ברשימה קיים. - קבצים קיימים — כולם — מנתב
"true"רק כשכל הנתיבים ברשימה קיימים. - השוואה — משווה ערך מצב מול ערך מילולי.
- מיתוג — מנתב לפי הערך של מפתח מצב, עם מקרה ברירת מחדל.
לאחר מכן הגדירו את מפתחות הניתוב המתאימים בקשתות היוצאות (ראו חיבור הצמתים זה לזה).
קבוצות בוליאניות and / or / not נתמכות בגוף, אבל אי אפשר לכתוב אותן מהטופס
הזה — הן דורשות עץ פרדיקטים כתוב ביד תחת extras.predicate. אוצר המילים המלא של
פרדיקטים ואופרטורים נמצא ב
סוגי שלבי פייפליין.
איחוד
קטע בשם “איחוד”אין לו תצורה משלו: הוא ממתין לכל השלבים שלפניו במעלה הזרם.
Approval gate
קטע בשם “Approval gate”השער שולח את סוכן המאשר אל שיחה מוסתרת עם הנחיית השער ומשהה את ההרצה. המאשר מבקש
את החלטתכם בשיחה ומגיש אותה עם submit_output כ-
{ "decision": "approved" | "rejected", "reason": "..." }. ההחלטה נוחתת תחת
מפתח הפלט (ברירת מחדל approval_decision), כך שנתב מיתוג במורד הזרם יכול להסתעף
לפיה.
הגדירו את סוכן למאשר ואת תבנית הנחיה לשאלת השער. השער נפתר דרך
submit_output כ-{ "decision": "approved" | "rejected", "reason": "..." }.
צמתי Reviewer (prompt) מגישים באותה דרך.
Team dispatch
קטע בשם “Team dispatch”מוסיף מזהה צוות ומצב שיגור. הבורר מציע בדיוק שני מצבים:
allParallel— משימה אחת לכל חבר, ומשהה עד שכולם מסיימים.manager— שולח את המוביל, והוא מאציל.
כל ערך אחר שנשמר מתנהג כמו allParallel. הגדירו את Reducer ל-append כדי
לאסוף את התוצאה של כל חבר לרשימה תחת מפתח הפלט.
For each ו-Call sub-pipeline
קטע בשם “For each ו-Call sub-pipeline”For each ממפה כברירת מחדל מעל מפתח המצב items (extras.iterableKey /
extras.itemKey בצומת). הוא מרנדר את ההנחיה שלו פעם אחת לכל פריט ({{item}}
כברירת מחדל) ושולח את הסוכן פעם אחת כשההנחיות האלה משורשרות זו לזו. אוסף ריק
מסתיים מיד עם רשימה ריקה. זה אינו שיגור מקבילי אחד לכל פריט.
Call sub-pipeline משהה עד שהרצת הבן מגיעה למצב סופי, ואז ממזג את המצב הסופי
של הבן תחת מפתח הפלט (ברירת מחדל subflow_result). כוונו אותו אל בן באמצעות
extras.templateId. תבנית אינה יכולה לקרוא לעצמה; בן שנכשל או בוטל מכשיל את שלב
האב, והכישלון הזה כפוף למדיניות הניסיונות החוזרים ולמדיניות ההמשך בעת כשל של אותו
שלב.
הצהרת קלטים והתרת הרצות ידניות
קטע בשם “הצהרת קלטים והתרת הרצות ידניות”שניהם נמצאים מאחורי הרצה ידנית בכותרת העורך.
- לחצו על הרצה ידנית.
- הפעילו את התרת הרצה ידנית. המתג הזה נשמר מיד — הוא יוצר (או מוחק) את
שורת הטריגר
manualשמציגה את התבנית בבורר ההרצה. - הגדירו מקסימום הרצות במקביל אם אתם רוצים תקרה (השאירו ריק ללא הגבלה).
התחלות נוספות ממתינות במצב
queuedעד שמתפנה מקום. - לחצו על הוספת קלט עבור כל שדה טופס שהרצה ידנית אמורה לאסוף:
| שדה | תיאור |
|---|---|
| מפתח | מפתח המצב שהערך נשמר תחתיו; הפנו אליו כ-{{key}} |
| תווית | תווית תצוגה (ברירת מחדל: המפתח) |
| סוג | טקסט, טקסט מרובה שורות, מספר, מתג, בחירה, מאגר |
| אפשרויות | אפשרויות מופרדות בפסיקים, עבור בחירה בלבד |
| ערך ברירת מחדל | ערך שממולא מראש |
| מציין מקום | טקסט רמז בתוך השדה הריק |
| טקסט עזרה | טקסט עזר מתחת לשדה |
| חובה | האם טופס ההרצה נחסם כשיש ערך ריק |
קלט מסוג מאגר מציג בורר מעל המאגרים של סביבת העבודה ומאכלס את repo_id,
repo_local_path, repo_full_name וגם — כשהמאגר מחזיק remote של GitHub — את
repo_owner ו-repo_name במטען ההרצה.
- לחצו על שמור בתיבת הדו־שיח. עריכות הקלט נכנסות אל הטיוטה ונשמרות כשתשמרו את התבנית.
שמירה והפעלה
קטע בשם “שמירה והפעלה”- לחצו על שמור בכותרת העורך. עד שתעשו זאת, הכותרת מציגה “שינויים שלא נשמרו”.
- חזרו אל הגדרות ← סביבת עבודה ← תבניות פייפליין ובדקו שהמתג בשורה של התבנית דלוק. המנוע מסרב להפעיל תבנית מושבתת, ותבנית מושבתת לא מופיעה לעולם בבורר ההרצה.
- כדי להפעיל אותה אוטומטית, גררו טריגר מספריית הצמתים אל הקנבס — ראו הגדרת טריגרים לפייפליין.