
- Published on
פיתוח HomeAssistant עם Cursor ו-VSCode Remote Containers
- Authors

- Name
- ברוך אודם
- @baruchiro
השרת הביתי שלי (שזה בעצם לפטופ שמריץ שרת אובונטו, מונח בארון מחובר לחשמל ולאינטרנט) מריץ כל מיני אפליקציות על גבי Docker. אחת האפליקציות המרכזיות היא #HomeAssistant שמנהלת לי את הבית החכם.
בגלל שזה שרת ביתי, ותחביב, המורכבות של להרים סביבת בדיקות היא גדולה מידי, ולכן אני עושה שינויים ישירות ב"סביבת המוצר", כמובן בעבודה עם גיט עד כמה שאני יכול כדי לשמור על האפשרות לחזור אחורה.
VSCode Remote SSH
אז כדי לגשת לשרת, לקבצים, למערכת ולטרמינל בקלות, אני משתמש בתוסף מדהים, ותיק ורשמי של VSCode (או האלטרנטיבה שלו של קורסור, זה אותו הדבר). התוסף מאפשר לפתוח את הIDE כרגיל, במכונה הנוכחית, אבל שכל התשתית שלו, הקבצים, התוספים, הטרמינל, בעצם יציגו מכונה מרוחקת דרך חיבור SSH, ככה שבכל פעם שאני רוצה לשנות משהו במערכת, לעדכן קונטיינרים, לבדוק לוגים וכד', אני פותח את קורסור כשהוא מחובר לשרת שלי. (אל תשכחו שיש גם תוספים מאוד טובים לניהול קונטיינרים).
HomeAssistant Vibe Coding
עכשיו, כשאני נמצא בשרת, ויש לי גישה לקבצים של HomeAssistant (כי הvolume ממופה לhost כדי שהקבצים יהיו תחת המעקב של גיט), אני יכול לתת לקורסור לממש אוטומציות חדשות ולעצב מחדש את ממשק המשתמש.
הפעם רציתי ממש לבנות אינטגרציה חדשה. אני לא ארחיב הפעם על איך בדיוק עבדתי עם הAI משלב התכנון עד שלב הביצוע. מה שחשוב לסיפור הפעם הוא שגם פיתוח של אינטגרציה חיצונית, העדפתי לפתח ישירות בתוך HomeAssistant כדי להקל על הבדיקה, ובהמשך להוציא למאגר בפני עצמו.
אז המון קוד נכתב בפייתון, במקום הנכון ובצורה הנכונה פחות או יותר, עובדה שהאינטגרציה הייתה זמינה להתקנה במערכת. אבל אחרי ההתקנה היא הציגה הודעת שגיאה.
Cursor Debug Mode
בסיטואציות כאלה של Vibe Coding, כשאין לי באמת מושג מה אני עושה, ואני גם לא מתכוון להעמיק, אני נותן את האחריות לAI.
עד היום הייתי מנסה לחנך אותו להדריך אותי מה לעשות ולבקש ממני לוגים ותוצאות כחלק מתהליך המחקר. לפעמים הוא ממש היה מוסיף לוגים והייתי שולח לו, ולפעמים הוא לא היה מבין מה אני רוצה.
אז המצב החדש בקורסור מיועד בדיוק לזה. הוא מוסיף לוגים למערכת, הלוגים מודפסים לתוך קובץ ייעודי או נשלחים לשרת לוקאלי שקורסור מרים, והשרת כותב אותם לקובץ ההוא. אני כמשתמש מקבל רשימת צעדים לשחזור, ואם הבעיה משתחזרת, קורסור בודק את הלוגים שנשלחו אליו מותקן בהתאם.
VSCode Remote Containers
כל זה טוב ויפה, אבל זה לא עבד בגלל שאני בעצם עובד עם קבצים שאמנם נמצאים על השרת, אבל שייכים לקונטיינר בתוך השרת.
אין בעיה, לחיצה ימנית על הקונטיינר ובחירה "Attach Cursor", והIDE נפתח בתוך הקונטיינר שבתוך השרת שבבית שלי.

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