בניתי את האתר הזה עם AI. הנה מה שאף אחד לא מספר לכם - Guides_×

Claude Code

בניתי את האתר הזה עם AI. הנה מה שאף אחד לא מספר לכם

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

Evyatar Yizhak14 דקות קריאה

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

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

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

זה המדריך שהייתי רוצה לקרוא לפני שהתחלתי.

מה יושב מתחת למכסה המנוע

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

שכבהמה בחרתיכמה זה עולה
דומייןCloudflare Registrar$10.46 לשנה, מחיר קבוע
הרצהCloudflare Workersחינם בהיקפים שלי
מסד נתוניםCloudflare D1 (SQLite)חינם בהיקפים שלי
מייליםResendחינם עד 3,000 בחודש
תמונות AIGemini Flash Image$0.039 לתמונה
אנליטיקסCloudflare Web Analyticsחינם, בלי קוקיז

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

באג ראשון: הדף הראשי הגיש את האתר הישן

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

חוץ מדבר אחד: הכתובת החשופה. evyataryizhak.com בלי שום המשך.

החוק שכתבנו כיסה את /he/* ואת /en/*. הוא לא כיסה את /. וכך הדרך הכי נפוצה בעולם להגיע לאתר - להקליד את השם בשורת הכתובת - הייתה הראוט היחיד שעקף את החסימה והגיש את העיצוב הישן.

באג שני: הבדיקות היו אדומות ואף אחד לא ראה

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

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

והבדיקה על הדף הראשי? היא עברה. היא עברה כי העמוד הישן סיפק בדיוק את מה שהיא ביקשה. הבדיקה שהייתה אמורה לתפוס את הבאג הראשון היא זו שנתנה לו לעבור.

חבילת בדיקות שאף אחד לא מריץ היא לא רשת ביטחון. היא תפאורה.

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

באג שלישי: ההגבלה שלא הגבילה כלום

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

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

כלומר: הייתה לי הגנה על הארנק שנראתה קיימת לגמרי, ולא הגבילה אף אחד.

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

מה בניתי במקום

שני שערים נפרדים, שניהם במסד הנתונים:

  1. מכסה לכל מבקר, לתמיד

    שלוש תמונות ונגמר, לא מתחדש למחרת. נספר גם לפי עוגייה שחיה 10 שנים וגם לפי כתובת IP מגובבת. מחקתם עוגיות? ה-IP עוד סופר. החלפתם רשת? העוגייה עוד סופרת.

  2. תקרה חודשית גלובלית

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

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

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

באג רביעי, והאהוב עליי: האנליטיקס שדיווח אפס לנצח

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

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

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

"מופעל" זה לא "עובד". תמיד תבדקו שהנתון באמת נוחת, לא שהמתג דלוק.

והדבר שכמעט הרס הכל: התאמה לפי משך

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

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

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

מה שעשיתי במקום: השוויתי את האודיו עצמו. חילצתי מקטע מכל קובץ והרצתי קורלציה. התאמות אמיתיות יצאו 0.96 עד 1.00, והמועמד הבא בתור ישב על אפס. הפרדה חדה, בלי ניחושים.

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

מה זה אומר על עבודה עם סוכן

כל הבאגים שסיפרתי עליהם נכתבו על ידי AI, ורובם גם נתפסו על ידי AI. זה לא סתירה, זו הנקודה.

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

שלושת הכללים שאני עובד לפיהם עכשיו

  1. אל תסתפקו ב"זה עובד", תבקשו ראיה. לא "הפעלתי אנליטיקס" אלא "המונה עלה מ-6 ל-7 אחרי ביקור". לא "הוספתי הגבלה" אלא "הקריאה הרביעית חזרה חסומה".
  2. תחשדו בהצלחות שקטות. אם משהו עבר בפעם הראשונה ולא הפתיע אתכם בכלום, יש סיכוי טוב שהוא לא באמת נבדק.
  3. תשאלו מה יקרה כשזה ייכשל. ההבדל בין הצייר שעולה $40 בשנה לצייר שעולה $400 הוא לא איכות הקוד. הוא השאלה "מה קורה אם מישהו יריץ את זה בלולאה".

מה זה עולה בפועל

אתר חי, עם מסד נתונים, מיילים אוטומטיים, מנוע תמונות ואנליטיקס:

פריטלשנה
דומיין$10.46
הרצה, מסד נתונים, אנליטיקס$0
מיילים$0
מנוע התמונות, בתקרה שהגדרתיעד $38
סה"כפחות מ-$50

המספר הזה אפשרי רק בגלל התקרות. בלי הן, שורה אחת הייתה "תלוי כמה אנשים ישחקו", וזה לא מספר שאפשר לישון איתו.

השורה התחתונה

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

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

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

Got a question about any of this, or want to learn to do it yourself?

All the guides