אזכור סוכנים ב־@
המדריך הזה מראה כיצד לאזכר סוכנים ועמיתים במרחב.
אזכור של סוכן
קטע בשם “אזכור של סוכן”הקלידו @ בתיבת הכתיבה ובחרו סוכן מההשלמה האוטומטית, או הקלידו את השם בעצמכם:
@alice fix the login bugהסוכן המאוזכר נוסף למרחב כמשתתף אם אינו כזה כבר, ומשוגר עם ההקשר והמצב של המרחב. משתתפים שלא אוזכרו רואים את ההודעה אך אינם משוגרים.
אם תשלחו הודעה בלי אזכור של סוכן, Control Center בוחרת מגיב בעצמה: הסוכן שדיבר אחרון בשיחה, ואם אין כזה — הבעלים של השיחה כשיש לה כזה, ואם אין — הסוכן הראשון ברמה העליונה מבין משתתפי המרחב. במרחב עם סוכן אחד זה תמיד הסוכן היחיד.
איך מתבצעת התאמה של שם
קטע בשם “איך מתבצעת התאמה של שם”אסימון אזכור מותאם בלי תלות ברישיות, לפי שם מדויק או קידומת. כך @arch מגיע לסוכן בשם architect ו-@Alice מגיע ל-alice.
שתי השלכות שכדאי להתחשב בהן בתכנון:
- אסימון קצר אינו שגיאה. אם שני סוכנים חולקים קידומת, הראשון שנמצא מנצח, ומי הוא תלוי בסדר — ולא בכלל שובר־שוויון כלשהו. השתמשו בשם המלא בכל פעם ששמות חופפים.
- רק אותיות, ספרות וקווים תחתונים הם חלק מאסימון. המנתח מתאים
@(\w+), ולכן@code-reviewerנקרא כאסימוןcodeו-@my agentכ-my. סוכן ששמו מכיל מקף, נקודה או רווח אינו ניתן לאזכור באופן מהימן — גם לא דרך ההשלמה האוטומטית, שמכניסה את השם כטקסט רגיל. תנו לסוכנים שמות במילה אחת, או עם קווים תחתונים.
אזכורים מוסרים מהטקסט לפני שהוא מגיע לסוכן. הודעה שהיא רק אזכורים (@alice) לכן אינה משגרת דבר — תנו לה משהו לעשות.
אזכור של כמה סוכנים בבת אחת
קטע בשם “אזכור של כמה סוכנים בבת אחת”@alice refactor the auth module. @bob write tests for it.שני הסוכנים משוגרים במקביל לאותה שיחה, ושניהם מקבלים את ההודעה המלאה.
הם גם חולקים את עצי העבודה של אותו מרחב. עצי עבודה של מאגרים מוקצים לפי מרחב, ולא לפי סוכן; כל סוכן מקבל ספריית עבודה בשכבת־על משלו עבור ה-AGENTS.md, המיומנויות והתצורה שלו, כשהמאגרים המשותפים מקושרים בקריאה־כתיבה. כך שני סוכנים שאוזכרו יחד יכולים לראות זה את העריכות של זה — ולהתנגש בהן.
אזכור של עמית
קטע בשם “אזכור של עמית”כל @token שאינו מותאם לסוכן נבדק מול החברים האנושיים של סביבת העבודה, לפי שם המשתמש, עם אותו כלל של התאמה מדויקת או קידומת בלי תלות ברישיות.
אזכור אנושי שנפתר אינו משגר דבר. הוא נוסע על המטא־נתונים של ההודעה רק כדי שנתב ההתראות יוכל להתריע לאותו אדם.
שמות של סוכנים נבדקים תמיד ראשונים, ואסימון שסוכן תבע לעולם אינו מוצע לרשימת החברים — @word אחד יכול להיפתר רק לישות ראשית אחת.
מה הסוכן מקבל
קטע בשם “מה הסוכן מקבל”סוכן משוגר מקבל בהנחיה שלו קטע “Summons” שמציין מי זימן אותו ומפרט את סגל המרחב — הסוכנים האחרים (מסומנים כברמה העליונה או ככפופים) והחברים האנושיים — כדי שיידע למי הוא יכול להעביר. הקטע גם אומר לו שאזכור של סוכן אחר בתשובתו מעורר את אותו סוכן, ושאזכור של עצמו מתעלמים ממנו.
כשסוכן מזכיר סוכן
קטע בשם “כשסוכן מזכיר סוכן”סוכן יכול להעביר הלאה בתשובתו שלו. כשהתור מסתיים באופן נקי, האזכורים בטקסט שלו נפתרים, והסוכנים האלה נוספים למרחב ומשוגרים לאותה שיחה, כשהתור המאזכר הוא ההנחיה שלהם. תור שנכשל או הופסק אינו מעורר איש — הוא נעצר באמצע המחשבה.
הכללים מחמירים במכוון מאלה של תיבת הכתיבה, משום שאיש אינו צופה כדי לתקן ניחוש שגוי:
- שמות מדויקים בלבד. בלי התאמת קידומת.
@archמגיע ל-architectכשאדם מקליד אותו; מסוכן הוא אינו מגיע לאיש. גם שם שמתאים לשני סוכנים אינו מגיע לאיש. - קוד אינו פרוזה. אזכורים בתוך בלוקים מגודרים או
`backticks`מתעלמים מהם, ולכן ציטוט של הערה@Overrideאו שלpip install foo@1.2בטוח. גדר שאינה נסגרת מרוקנת את כל מה שאחריה. @שנדבק לאסימון הקודם אינו אזכור —sam@host.com,pkg/@scopeו-node@20אינם נפתרים לאיש.- מקפים נשמרים, ולכן
@code-reviewerנפתר כעצמו ולא כאסימוןcode. - לכל היותר שלושה סוכנים בתור. סוכן שמפרט שישה עמיתים בסיכום מפרט אותם, ולא מזמן אותם.
שרשרת התעוררות חסומה באותה דרך שבה חסומה האצלה: עומק 3, וסוכן שכבר נמצא על השרשרת אינו יכול להיות מועורר שוב על ידה (אין A → B → A). גם זוג סדור מוגבל בקצב בין שרשראות. התעוררות שנדחתה מפרסמת הודעת מערכת בשיחה שאומרת איזה אזכור לא נמסר ולמה — שם שאינו נפתר אינו עושה זאת, שאחרת כל @ במשפט היה מתאר את עצמו.
להעברה שאסור שתהיה תלויה בפרוזה — בקשת/תשובה, או הגעה לסוכן מחוץ למרחב — השתמשו במקום זאת בכלים send_to_agent, ask_agent ו-delegate_task.