כרטיס כותרת עם הכיתוב "בניית לופ סוכן פרואקטיבי על Claude Opus 5.5", עם כתובית משנה על חמישה שלבים, מודל אחד, וכל מה שהאפליקציה הצרכנית של Anthropic לא נותנת לך, מעל ארבע תגיות מעוגלות עם מסגרת המסומנות Scheduler, Cached prompt, Approval gate ו-Failover, ומוטיב גיאומטרי בהיר של מלבנים מעוגלים מוזחים בצד ימין.
Guides & Insights

בנה לולאת סוכן פרואקטיבית על Claude Opus 5.5

מחבר

Rowan Sterling

תאריך פרסום

מודלים אחרונים · 20צפו בכל המודלים →
בנצ'מרקים: Artificial Analysis · מתעדכן יומית
חזרה לכל הפוסטים

החלק הלא־נוח בבנייה של סוכן פרואקטיבי משלך הוא שהעבודה המעניינת אינה קריאת המודל. אפשר להריץ את Claude Opus 5.5 עונה על שאלות בתוך אחר צהריים אחד. לגרום לו להתעורר לפי לוח זמנים, לקרוא רק את מה שהשתנה מאז הפעם הקודמת, להחליט אם משהו ראוי להתערבות אנושית, לנסח את הפעולה, ואז לעצור ולהמתין — זה כבר שבועות, וכמעט כלום מזה לא קורה בתוך המודל. Anthropic השיקה גרסה של הלופ הזה בשם Claude Duet, והדבר השימושי במוצר הזה למי שבונה מערכת משלו אינו רשימת התכונות שלו אלא ההחלטות שניכרות באופן שבו הוא מורכב. אין לו API מפורסם ואי אפשר להפנות אותו מחדש למערכות שלך, אז אם אתה רוצה את הלופ ולא את האפליקציה, אתה בונה אותו. להלן הארכיטקטורה, שלב אחר שלב, עם העלות הכנה של כל אחד מהם.

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

An architecture card titled The loop, stage by stage, showing five numbered stages from left to right, Scheduler firing every few hours rather than continuously, Digest reading a diff of what changed since the last sweep, Decide where Claude Opus 5.5 reads the diff against a byte-identical system prompt and tool schema, Approval gate as a separate service that can say no, and Act executing only the approved action, with a blue callout on Decide and a cyan callout noting the gate can refuse.

שלב ראשון: מתזמן שמופעל כל כמה שעות

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

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

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

שלב שני: קידומת זהה בייט-בייט, נשמרת במטמון

כאן המספרים שפורסמו עושים את העבודה הרבה ביותר. Claude Opus 5.5 ב-OrcaRouter הוא 4.00 דולר למיליון אסימוני קלט, 20.00 למיליון אסימוני פלט, עם חלון הקשר של 1M אסימונים וקריאות מטמון ב-0.20 למיליון, במחיר המחירון של הספק עם 0 אחוז תוספת. יש להתייחס לנתונים האלה כאילוץ תכנוני ולא כמחירון: עלותה של קריאת מטמון היא אחד מעשרים מעלותו של אסימון קלט חדש, ולכן כל בייט שאתם שומרים יציב לאורך סבבים הוא בייט שאתם מפסיקים לשלם עליו מחיר מלא.

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

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

שלב שלישי: תקציר לכל חיבור, לא הצפת תיבת דואר

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

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

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

שלב רביעי: שלב החלטה שמפיק אובייקט, לא פרוזה

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

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

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

שלב חמישי: שער אישור שיכול באמת לומר לא

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

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

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

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

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

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

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

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

מעבר לגיבוי, והיכן ניתוב מסייע בפועל

לאחר שהלופ נבנה, נפתחת אפשרות ארכיטקטונית שאין לעיצוב של ספק יחיד. ה-DSL לניתוב של OrcaRouter מרכיב כמה מודלים לקריאה אחת, ומיזוג מודלים מריץ פאנל של מודלים שעונים במקביל; שניהם מציבים יותר ממודל אחד מאחורי בקשה אחת. השימוש המעשי כאן אינו זוהר: להפנות מודל זול יותר לסיכום התמצית, שבו העבודה היא דחיסה ולא שיפוט, ולהשאיר את Claude Opus 5.5 בשלב ההחלטה, שבו נוצרת ההצעה. אותו מפתח יחיד תואם OpenAI מגיע ליותר מ-200 מודלים, כך שהחלפת המודל שמשרת כל שלב היא שינוי תצורה ולא כתיבה מחדש.

OrcaRouter's own Claude Opus 5.5 model page. The site navigation lists Products, Models, Pricing, Docs and Blog, and the page hero carries the model name Claude Opus 5.5 above a specifications card showing a 1M-token context window, input priced at 4.00 dollars per million tokens, output at 20.00 dollars per million tokens, cached reads at 0.20 dollars per million tokens, zero percent markup, and access to more than 200 models through one OpenAI-compatible key.

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

OrcaRouter's own model catalogue page, headed Every frontier model, one key, with a subhead reading 200+ models from 20+ providers with a single OpenAI-compatible API, a search field for the models, a row of vendor filter pills, and a list where each row gives the model, its vendor, its context length and its input and output price, with Claude Opus 5.5 at 1M context and $4.00 and $20.00 visible in view.

למה אתה בעצם נרשם

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

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

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

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

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

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