ניסוי paseo - הפעלת סוכנים ב Docker Sandbox
דוקר סנדבוקס הוא מכונה וירטואלית שנדלקת מהר ונועדה להרצת סוכנים בלי לסכן את המחשב שלכם. סוכן שרץ ב Docker Sandbox יכול להגיע לקבצים של הפרויקט ובגדול זהו - הוא יצטרך טיפול מיוחד כדי לתפוס פורטים על המכונה המארחת, אין לו אפשרות להגיע לקבצים אחרים במכונה המארחת ובמיוחד הוא לא יכול לצאת החוצה לרשת בלי אישור שלכם.
לדוקר סנדבוקס יש ממשק ניהול שמראה את כל המכונות שרצות בכל רגע נתון ואפשר להכנס אליו אחרי ההתקנה פשוט עם הפקודה sbx. משם גם אפשר ליצור מכונות חדשות ולהפעיל בתוכן את הסוכנים. כל זה טוב ויפה אבל בעבודה שוטפת יכול להיות קצת מעייף כל פעם שרוצים לבצע משימות במקביל ליצור מכונה וירטואלית חדשה מהמסוף או לעבור בין הסוכנים שפועלים על המכונות האלה.
מה עושים? כאן paseo.sh נכנס לתמונה. פסאו הוא כלי לניהול סוכנים שתוך בסוכנים שרצים על מכונות מרוחקות או בסביבות וירטואליות ומראה את כל הסוכנים במסך ניהול אחד. בדיוק מה שאנחנו צריכים בשביל לתכנת בצורה נוחה.
פסאו גם יוצר git worktree אוטומטית דרך כפתור "הקמת סביבה" המובנה שלו מה שנותן לנו שיטת עבודה קלה ובטוחה:
- מתוך paseo כל פעם שרוצים סביבה מקבילית נוספת לוחצים על יצירת סביבה.
- פסאו יוצר worktree חדש.
- נכנסים לסוכן בתוך הסביבה החדשה ומבקשים מ paseo שהסוכן הזה ירוץ בתוך Docker Sandbox.
עכשיו מתוך מסך הניהול אני רואה את כל הסוכנים שלי שעובדים בסביבות שלהם ומקבל עדכונים כשאחד מסיים, וכל סוכן רץ על מכונה משלו עם כל הפורטים שלו, קבצים שלו ואם צריך גם בסיסי נתונים שלו.
מה צריך? בסך הכל לא הרבה.
מתקינים Docker Sandbox מכאן: https://docs.docker.com/ai/sandboxes/
מתקינים paseo מכאן: https://paseo.sh/
ומוסיפים לקובץ ההגדרות של paseo שנקרא ~/.paseo/config.json את הבלוק הבא שמגדיר סוכן שרץ בתוך ארגז חול של דוקר:
"agents": {
"providers": {
"sandbox-codex": {
"extends": "codex",
"label": "Codex in sandbox",
"command": [
"bash",
"-c",
"set -eu; if [ -z \"${PASEO_AGENT_CWD:-}\" ]; then exec sbx exec -i paseo-codex-discovery codex \"$@\"; fi; workspace=\"$PASEO_AGENT_CWD\"; sandbox=\"paseo-$(printf '%s' \"$workspace\" | cksum | awk '{print $1}')\"; sbx run --detached --name \"$sandbox\" codex \"$workspace\" >&2; exec sbx exec -i --workdir \"$workspace\" \"$sandbox\" codex \"$@\"",
"paseo-sandbox-codex"
]
}
}
}
קצת מכוער אני יודע כי כל החיבורים אצלנו אבל עובד ממש יופי.
חסרונות? גם יש:
כל מכונה וירטואלית צריכה מעבד, זכרון ודיסק. תרימו יותר מדי מהן והמחשב שלכם יתחיל להתעייף.
אבטחת מידע זה כיף אבל גם כאב ראש. צריך לאשר לסוכן לאיזה אתרים הוא יכול לגשת ואם רוצים שהוא כן יקרא קבצים ממקומות אחרים על הדיסק צריך גם את זה לאשר בנפרד.
עבודה עם git worktree יכולה להיות מבלבלת. ככל שעובדים יותר במקביל קל לאבד ריכוז ולשכוח על איזה ענף אתם. פסאו עוזר בכך שכל סביבת עבודה היא worktree והיא יושבת בטאב אחר, אבל עדיין צריך לזכור שפיצ'ר מסוים נבנה בסביבה אחרת ולא נעלם פתאום.