דלגו לתוכן

צ'אט עם סוכן

המדריך הזה מראה כיצד לעבוד עם סוכן במרחב.

  1. עברו אל מרחבים בסרגל הצד
  2. לחצו על כפתור ה־+ שלצד הכותרת מרחבים
  3. הקלידו שם — זהו שדה חובה. שם ריק נדחה; תיבת הדו־שיח נשארת פתוחה
  4. אפשר להוסיף סוכנים מסביבת העבודה
  5. אם בסביבת העבודה יש מאגר כלשהו, מופיע בורר מאגרים. הוא מתחיל כשכולם נבחרים; צמצמו אותו (כולל ביטול הבחירה של מאגר בודד) למאגרים שהמרחב הזה אמור להקצות עבורם עצי עבודה
  6. אשרו

Control Center פותח את המרחב ומתחיל להקצות ברקע עץ עבודה בהעתקה בעת כתיבה לכל מאגר נבחר.

הקלידו את ההודעה בתיבת הכתיבה ולחצו על Enter. הסוכן נשלח ומתחיל להזרים את תגובתו.

אם המרחב עדיין בהקצאה, ההודעה שלכם מושהית ולא אובדת — תיבת הכתיבה מחזיקה אותה ושולחת אותה אוטומטית ברגע שעצי העבודה מוכנים.

בזמן שהסוכן עובד אתם רואים את התור שלו נזרם פנימה: מקטעי חשיבה, קריאות כלים (קריאה וכתיבה של קבצים ופקודות מעטפת) וטקסט תשובה, הכול בתוך הודעת תור אחת של הסוכן.

בזמן שסוכן עובד, טקסט שיחה רגיל אינו ממתין בתור כתור חדש. הוא הופך לכרטיס היגוי בתור ברצועה שמעל תיבת הכתיבה, ומוזרק להרצה החיה בגבול התור הבא. אין טוסט — הכרטיס הוא המשוב.

שלושה דברים משנים את ההתנהגות הזו:

  • הודעה שמכילה אזכור ב־@ נשלחת תמיד כהודעה, ולעולם לא כהיגוי
  • הודעה שמתחילה בפקודת קו נטוי מטופלת תמיד כאותה פקודה
  • הודעה עם קובץ מצורף נשלחת תמיד כהודעה — תור ההיגוי מיועד לטקסט בלבד
  • אם כל ההרצות החיות כבר הסתיימו, הטקסט עובר הלאה ונשלח כהודעה רגילה

כשסוכן נתקל בפעולה שמעקות הבטיחות שלו מגבילים — פקודה הרסנית, כלי בעל הרשאות — השרת חוסם את ההרצה ומפרסם בקשת אישור לכל לקוח מחובר. אם השיחה הזו פתוחה אצלכם, הבקשה מופיעה בצ’אט, מעל תיבת הכתיבה, כאותו כרטיס עם אפשרויות ממוספרות שמשמש את ask_user (דחייה, אישור, ובאופן אופציונלי אישור לשמונה שעות). אין דילוג: סוכן חסום ממתין להחלטה.

אם אתם במקום אחר באפליקציה, חלונית שתמיד למעלה במסגרת היישום עדיין מציגה את מה שממתין, כך שתוכלו לשחרר את הסוכן בלי לחפש את המרחב. שכבת־העל מסתירה בקשה ברגע שהשיחה של אותו מרחב נמצאת על המסך, כך שלעולם לא תענו פעמיים על אותה בקשה.

אין הגבלת זמן: סוכן חסום ממתין עד שמישהו יחליט. אותה בקשה מופיעה גם ברצועת תשומת הלב של דואר הנכנס וגם בלקוח הטלפון.

סוכן שזקוק להעדפה, לדרישה חסרה או לפיצול אמיתי חייב לקרוא ל־ask_user. כתיבת השאלה כהודעת צ’אט מסיימת את התור ואתם תצטרכו לשלוח הנחיה מחדש. הכלי מציג כרטיס ממוספר בשיחה — אפשרויות, טקסט חופשי אופציונלי, או שניהם — וההרצה ממתינה לתשובתכם.

הקישו על אפשרות בודדת כדי לשלוח אותה (המספר שבקצה הופך לחץ במעבר עכבר). בחירה מרובה ותשובות מוקלדות משתמשות ב־המשך (⌘↵ / Ctrl↵). דילוג אומר לסוכן לבחור בברירת מחדל סבירה ולא לשאול שוב.

זהו מנגנון נפרד מכרטיס האישור שלמעלה: אישור הוא “האם מותר לי לעשות את זה?”, ושאלה היא “איזו מהאפשרויות האלה התכוונת?”. השאלה זמינה במנגנון ההרצה המובנה בכל מצב, כולל במצבים לקריאה בלבד (היא אינה משנה דבר), והיא בכוונה אינה עטופה בבקשת אישור — דיאלוג לפני דיאלוג ייכשל באופן סגור בלי מאשר מחובר. הרצה שאין לה שיחה שאליה אפשר להציג פשוט לא מקבלת את הכלי.

כשהרצות פעילות, כפתור השליחה של תיבת הכתיבה הופך לכפתור עצור. נקו את תיבת הכתיבה ולחצו עליו — הפעולה עוצרת כל סוכן שרץ בשיחה הזו.

אין אמצעי עצירה בכותרת המרחב ואין קיצור מקלדת לכך. כדי לעצור הרצה אחת בלבד כשכמה מהן פעילות, פתחו את לשונית הפעילות של אותה הרצה — הכותרת שלה נושאת השהיה/חידוש ועצירה בהיקף ההרצה (העצירה מבקשת אישור). ניטור ← בזמן אמת מציג את כל סוכן שרץ בסביבת העבודה עם אותו אמצעי שליטה.

הרצה שנעצרה מסומנת כנעצרה. שלחו הודעה חדשה כדי לשלוח את הסוכן מחדש.

הקלידו / בתיבת הכתיבה כדי לראות את רשימת הפקודות. אלה שמשנות את אופן ההתנהגות של השיחה:

פקודה מה היא עושה
/plan מעביר את המרחב למצב תוכנית. /plan לבדו רק מפעיל את המצב; /plan <request> מפעיל אותו ושולח את ההמשך כהודעה שלכם
/goal <text> רושם את מטרת העבודה של השיחה
/loop <text> מבצע איטרציות על משימה עד להשלמתה
/compact מקפל היסטוריה ישנה לסיכום מעוגן וממשיך על ההקשר המקופל
/todo … מציג ועורך את רשימת המשימות השמורה של השיחה הזו

מיומנויות מופיעות באותה רשימה תחת מרחב השמות skill: שלהן, כך שהן לעולם אינן מתנגשות עם הפקודות שלמעלה — מיומנות בשם plan או compact נשארת נגישה:

פקודה מה היא מריצה
/skill:<name> מיומנות שמותקנת בסביבת העבודה, או שמצורפת לסוכן
/skill:<repo>:<name> מיומנות שאחד המאגרים שבוצע להם checkout במרחב הזה מספק

מיומנויות של מאגרים מסומנות בתג של המאגר שממנו הגיעו, כי שם לבדו אינו אומר אילו מוסכמות של איזה שירות הוא מקודד, ושני מאגרים עשויים לספק כל אחד testing משלו. אין צורך להקליד את הקידומת כדי למצוא אחת: הקלדת שם המיומנות בלבד מתאימה גם לערכים עם מרחב השמות.

סוכן נושא תמיד רק את המיומנויות של המאגר שהוא עובד בו כעת — ראו מיומנויות בהיקף מאגר. תיבת הכתיבה אינה מוגבלת כך: אפשר להפעיל מיומנות של כל מאגר פשוט בשמה.

/compact ו־/todo נתפסות בידי הלקוח ולעולם אינן נשמרות כהודעות — שורת /compact בתמלול תדחוף את נקודת החיתוך של הקיפול הבא תור אחד אחורה. /plan מחליף את המצב השמור של המרחב במקום לנסוע כטקסט. כך שאף אחת מהשלוש אינה “הודעה שאתם שולחים לסוכן”; אל תצפו לראות אותן בהיסטוריה.

לפני שינוי מורכב, העבירו את המרחב למצב תוכנית באמצעות /plan, תפריט המצב הנפתח בסרגל הכלים של תיבת הכתיבה, או Shift+Tab. הסוכן אז חוקר במצב לקריאה בלבד ומספק תוכנית עם טיפוסים שאתם מאשרים לפני שהעבודה מתחילה. ראו שימוש במצב תוכנית.

להגיע לסוכן בלי מרחב ייעודי

קטע בשם “להגיע לסוכן בלי מרחב ייעודי”

אין צורך במרחב נפרד לכל סוכן. בכל מרחב:

@alice can you look at the failing tests in src/auth_test.dart?

הסוכן המוזכר מתווסף למרחב ונשלח עם ההקשר של אותו מרחב. ראו אזכור סוכנים ב־@ לאופן שבו שמות מותאמים.