תוכניות AI Workspace

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

הסולם הוא שמונה רשומות עם category ai_workspace בתוך PLAN_OBJ (config.json:2206 לחינמית, ואחריה :2225, :2245, :2265, :2285, :2305, :2325 ו-:2345). כל אחת נושאת id, name, storage, category, price, ai_credits, size, price_id ומערך features של שבעה משפטי שיווק, ובשבע הדרגות בתשלום גם member_price_id, ולא יותר מזה. אין rank, אין price_note ואין flags, בתוך אובייקט שבו שש קטגוריות אחרות נושאות rank, שלוש עשרה נושאות flags ואחת נושאת price_note. הדרגה עצמה היא השדה ai_workspace_plan במסמך החשבון בתוך xuda_accounts, שברירת המחדל שלו היא free_ai_workspace ברגע שנוצר לקוח Stripe (stripe_module:2213 ו-:4823), ולצידו נחתמת חותמת זמן ai_workspace_plan_changed בכל פעם שהוא זז. כל מחיר, כל ספירת קרדיטים וכל תווית אחסון בעמוד הזה נקראו ישירות משמונה הרשומות האלה. מספר הטוקנים שקרדיט קונה לא נקרא משם, כי אי אפשר: הנוסחה נמצאת ב-repo, סכום השימוש המחייב מגיע מפונקציית list של CouchDB שאיננה שם, והקוד משנה את קנה המידה של האחד כדי להגיע לשני. לכן העמוד הזה אומר זאת במקום לנחש.

שמונה רשומות, מ-$0 עד $230
מחיר לקרדיט, מ-$0.0400 ועד $0.0230
אין נתון של קרדיטים לטוקן, והנה הסיבה
דרגת workspace היא מחרוזת אחת בחשבון שלך, ורשומת קונפיג אחת קובעת כמה היא עולה.
8

דרגות ai_workspace בתוך PLAN_OBJ ב-config.json

4 מתוך 8

מזהי דרגה שהמספר בהם אינו הקרדיטים שהם מעניקים

7

נקודות קריאה שמנפיקות קרדיטים בספר החשבונות, ואף אחת מהן אינה דרגת workspace

2

דרגות שמזהה המחיר שלהן ב-Stripe עדיין מציין מקום TODO

תיקון

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

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

מה שהעמוד שפורסם אומר
מה שהמקור אומר
ניתוב מודליםכל שלב בבנייה מותאם למודל מתאים, כך שעבודה שגרתית אינה מחויבת בתעריפים הגבוהים ביותר.בחירה אוטומטית קיימת בפונקציה אחת, pick_dashboard_model (ai_module:11152-11163), הנקראת משורה אחת במסלול עוזר הפרויקט, ולה שתי תוצאות. הדרגה החזקה שלה נופלת אל gpt-3 משום ש-strong_ai_model חסר מ-config.json, ולכן gpt-4 ו-gpt-5 לעולם אינם מגיעים אוטומטית.
GPT-5.5GPT-5.5 הוא המודל היקר שהניתוב מרחיק אותך ממנו.GPT-5.5 אינו שם בקטלוג. זהו מפתח כינוי ב-config.json:625 שמצביע על הקוד gpt-5, שמזהה המודל האמיתי שלו הוא gpt-5.6-sol. הכינוי עדיין נוחת על רשומת קטלוג חיה, ולכן דבר אינו מחויב בתעריף מיושן, אבל השם אינו מודל.
הדרגה החינמיתה-workspace החינמי נותן 30 קרדיטי AI חודשיים.לא חודשיים ולא הענקה אחת. טעינת קבלת פנים חד פעמית של 30 קרדיטים (misc_module:938), ובנוסף קרדיט תקופה אחד בכל 24 שעות לחשבונות שעדיין על free_ai_workspace (account_module:9597). קרדיטי תקופה אינם מתגלגלים קדימה; טעינת קבלת הפנים יושבת עד שהיא מנוצלת.
טבלת התוכניותטבלה של שש דרגות, עם קרדיטים ואחסון על כל אחת.שש מתוך השמונה: 200_ai_workspace ו-1500_ai_workspace חסרות. מספרי הקרדיטים הם אלה שמלפני העדכון מול האחסון הנוכחי, ולכן ארבע משש השורות שלה מציגות קרדיטים בחסר, והטבלה אינה נושאת שדה מחיר כלל.
שמונה הרשומות

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

בסדר מחירים, ישירות מ-config.json: החינמית $0 עבור 30 קרדיטים ו-15 GB, 200_ai_workspace ב-$8 עבור 200 ו-100 GB, 400_ai_workspace ב-$15 עבור 400 ו-500 GB, 600_ai_workspace ב-$25 עבור 800 ו-1 TB, 1500_ai_workspace ב-$45 עבור 1500 ו-2 TB, 2000_ai_workspace ב-$75 עבור 2500 ו-3 TB, 3000_ai_workspace ב-$115 עבור 4000 ו-5 TB, 6000_ai_workspace ב-$230 עבור 10000 ו-10 TB. שבע הרשומות בתשלום נושאות גם member_price_id לצד זה שמוצג כאן; הרשומה החינמית היא היחידה שאין לה מחיר חבר כלל. שתי מגבלות שייכות לטבלה עצמה ולא להערה מתחתיה. טור האחסון הוא תווית: השדה שהקוד באמת קורא לצורך הרשאה הוא size, בבתים, והשניים יכולים לא להסכים. ואלה עותקי ה-repo, שידוע שהם מתפצלים מקונפיג המאסטר החי, ולכן יש להתייחס לכל נתון כאל לא מאומת מול הפלטפורמה הרצה.

מחיר חודשי
ai_credits ברשומה
תווית אחסון
מזהה מחיר ב-Stripe
free_ai_workspace‏0 ‏$3015 GBמזהה מחיר אמיתי
200_ai_workspace‏8 ‏$200100 GBprice_LIVE_200_AI_WORKSPACE_TODO
400_ai_workspace‏15 ‏$400500 GBמזהה מחיר אמיתי
600_ai_workspace‏25 ‏$8001 TBמזהה מחיר אמיתי
1500_ai_workspace‏45 ‏$15002 TBprice_LIVE_1500_AI_WORKSPACE_TODO
2000_ai_workspace‏75 ‏$25003 TBמזהה מחיר אמיתי
3000_ai_workspace‏115 ‏$40005 TBמזהה מחיר אמיתי
6000_ai_workspace‏230 ‏$1000010 TBמזהה מחיר אמיתי
רשומה אחת, מודפסת

המפתח אומר 600. הרשומה מעניקה 800.

בארבע מתוך שמונה הדרגות המספר במזהה הוא תווית מורשת ולא הענקת הקרדיטים. 600 מעניקה 800, 2000 מעניקה 2500, 3000 מעניקה 4000 ו-6000 מעניקה 10000. רק החינמית, 200, 400 ו-1500 עדיין מסכימות עם המפתח של עצמן. מה שקרה גלוי ברשומה: מחרוזת ה-name עודכנה למספר החדש, המפתח נשאר כפי שהיה, ו-PlanCard בלוח הבקרה מציג את name, כך שלקוח לעולם אינו רואה את המזהה. הקומיט 8a9b09673, מתאריך 2026-07-09, ביצע את העדכון ואומר זאת בהודעה של עצמו: שתי דרגות חדשות ובנוסף העלאות קרדיטים בשלבים 600, 2000, 3000 ו-6000. שום דבר בקוד אינו מחלץ מספר מתוך המזהה, ולכן אי ההתאמה קוסמטית מבחינת זמן הריצה ומסוכנת רק לבני אדם שכותבים עליה טקסט.

config.json:2245-2256 . PLAN_OBJ, category ai_workspace
"600_ai_workspace": {
"id": "600_ai_workspace",
"name": "800 AI Credits / 1 TB storage",
"storage": "1 TB",
"category": "ai_workspace",
"price": 25,
"ai_credits": 800,
"size": 1099511627776,
"price_id": "price_... a real Stripe id, elided here",
"member_price_id": "price_... the 10 percent one",
"features": [ seven marketing sentences, collapsed to this line ]
}
מחרוזת ה-name עודכנה בעדכון . מצביעה על שורת ה-name שלמעלה
המפתח לא עודכן, ו-600 הוא כעת רק תווית . מצביעה על שורת ה-ai_credits שלמעלה
אותה צורה חוזרת ב-config.json:2265 (2000_ai_workspace, ai_credits 2500), :2285 (3000_ai_workspace, ai_credits 4000) ו-:2305 (6000_ai_workspace, ai_credits 10000). עוד מספר ששווה לציין בזמן שהרשומה פתוחה: 6000 נושאת size של 10,737,418,240,000 בתים, ו-get_effective_entitlements מחלקת את size ב-1073741824, כך שהנתון שנמסר בפועל הוא 10,000 GB מול תווית שאומרת 10 TB.
מחיר לקרדיט

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

חלוקת המחיר במספר שבמזהה הדרגה מייצרת עקומה שאינה קיימת. חלוקה שלו ב-ai_credits שברשומה עצמה מייצרת את העקומה האמיתית, והיא שטוחה יותר ממה שהמזהים מרמזים: מ-$0.0400 לקרדיט בשלב הזול ביותר בתשלום ועד $0.0230 בגדול ביותר, סך הכול 42.5 אחוז הנחה, פרושה על פני שבעה שלבים ולא מרוכזת בראש הסולם.

  • שבעת השלבים בתשלום, המחיר מחולק ב-ai_credits שברשומה עצמה: $0.0400, $0.0375, $0.03125, $0.0300, $0.0300, $0.02875 ו-$0.0230.
  • העקומה מונוטונית אבל שטוחה במקום אחד. $45 ו-$75 עולים בדיוק אותו הדבר לקרדיט, ולכן הסיבה היחידה לעבור בין שני השלבים האלה היא הטרהבייט הנוסף והתקרה הגבוהה יותר, ולא תעריף טוב יותר.
  • הטבת החברות היא 10 אחוז הנחה על אותו המוצר, נשמרת בכל רשומה בתשלום כ-member_price_id ומופנית אליה כל עוד החברות בתשלום, בעוד המחיר הרגיל חוזר לשימוש כשהיא פוקעת (stripe_module:211-223). הסכומים חיים ב-Stripe ואין שדה קונפיג שמחזיק אותם, ולכן העמוד הזה אינו מדפיס סכום דולרי לחברים. לא מאומת.
  • נתוני ה-repo בלבד. ידוע שקונפיג המאסטר החי מתפצל, ו-config_dev.json מתמחר את אותם שני מזהים, 200_ai_workspace ו-1500_ai_workspace, ב-$1,100 וב-$3,500 עבור מוצרים שונים לגמרי.
מחיר לקרדיט, בעשיריות סנט
200_ai_workspace, $8
$0.0400 לקרדיט
השלב הזול ביותר בתשלום, והקרדיט היקר ביותר בסולם
600_ai_workspace, $25
$0.03125 לקרדיט
$25 מחולק ב-800, לא ב-600. המזהה היה נותן מספר אחר
2000_ai_workspace, $75
$0.0300 לקרדיט
זהה לשלב של $45 שמתחתיו, וזו המדרגה השטוחה בעקומה
6000_ai_workspace, $230
$0.0230 לקרדיט
42.5 אחוז מתחת לשלב של $8, והרצפה של כל הסולם
הצטברות

בחברות חינמית דרגת ה-workspace ששילמת עליה אינה נספרת כלל.

get_effective_entitlements מוסיפה את רשומת ה-workspace אל מכסת החברות רק כאשר membership_plan מוגדר ואינו המחרוזת free (account_module:677-683). בחברות חינמית הרשומה אינה נקראת כלל, ולכן לא ה-ai_credits שלה ולא ה-size שלה נוספים, והחשבון נשאר על מכסת החברות החינמית של 30 קרדיטים ו-15 GB, יהיה אשר יהיה מצב דרגת ה-workspace שברשותו. תוסף ה-Drive שיושב כמה שורות מתחתיה מטופל הפוך במכוון: הוא מצטבר על כל דרגת חברות כולל החינמית (:686-689), עם הערה שאומרת שמניעת שטח שיש לו שורת חשבונית משלו פירושה מכירת כלום. כך שאותה פונקציה מכילה את שתי המדיניויות, מיושמות על שני תוספים, במרחק קומץ שורות. אותו תנאי חברות בתשלום גם חוסם את שני מצבי יצירת התמונות בבונה האתרים, gen_low ו-gen_high, שכל אחד מהם דורש חברות בתשלום ותוכנית workspace שאינה חינמית (ai_module:4608-4625). המגבלה נמצאת בקצה השני של הזרימה, והיא זו שקובעת אם המצב הזה בכלל בר השגה: לא נבדק אם הקופה עוצרת חשבון בחברות חינמית מלרכוש דרגת workspace מלכתחילה. לא מאומת.

חברות חינמית
חברות בתשלום
ה-ai_credits של הדרגה שלךאינם נקראים. הענף ב-:677 לעולם אינו נפתח, ולכן המספר אינו נוסף בשום מקוםנוספים למכסת החברות בתור ההרשאה המוצגת
ה-size של הדרגה שלךגם הוא אינו נקרא, מאותו ענף, ולכן לא נוסף אחסוןנוסף, ו-size הוא שדה הבתים ולא תווית האחסון
מה שנשאר לךמכסת החברות החינמית בלבד: 30 קרדיטים ו-15 GBהחברות ובנוסף דרגת ה-workspace שברשות החשבון
תוסף ה-Driveמצטבר בכל מקרה, בכל דרגה כולל החינמית (:686-689)מצטבר באותה הדרך, דרך אותו מסלול לא מותנה
תמונות שנוצרות בבונה האתריםgen_low ו-gen_high נדחים שניהם (ai_module:4608-4625)שני המצבים זמינים בתוכנית workspace שאינה חינמית
מטוקנים ליתרה

המספר שהופך ליתרה שלך מחושב מחוץ למאגר הזה.

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

הממצא הוא צורת הפער, לא מספר שממלא אותו. מה ששורד את הפער הוא יחס אחד, והוא תלול: על פני חמשת מודלי הטקסט תעריף הכניסה נע בין 0.05 ל-5.00 למיליון טוקנים ותעריף היציאה נע בין 0.40 ל-30.00 (config.json:520-619), פער של 100x בכניסה ו-75x ביציאה. הקונפיג אינו נוקב בשום מטבע בשום מקום, והתעריפים הם למיליון רק משום שכל צרכן מחלק ב-1e6.
מה מחייב

פונקציה אחת כותבת כל חיוב, ותווית המקור שלה היא כל שובל הביקורת.

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

  • שבע עשרה נקודות קריאה חיות: חמש עשרה ב-ai_module, אחת ב-voice_module:3812 ואחת בפרוקסי של Xucode ב-http_module:327, וביניהן נכתבות שש עשרה תוויות מקור שונות. שתיים מתוך השבע עשרה אינן יכולות לכתוב רשומה כלל, משום שהן אינן מעבירות account_profile_info והפונקציה זורקת שגיאה בשורה הראשונה שלה.
  • עיבוד דואר אלקטרוני מחויב כ-submit chat על gpt-1, דרך שתי נקודות קריאה לסיכום, אחת לגוף טקסט ואחת לגוף HTML (email_module:2885 ו-:2898). העשרת אנשי קשר מגיעה לאותו מונה דרך ארבע מתודות של ai_module שנקראות ממסלול אנשי הקשר: get_business_info, is_business_contact_has_person, get_person_info ו-get_name_from_email_addr.
  • שיחת קול בזמן אמת צוברת טוקנים בכל response.done ושוטפת רשומה אחת בניתוק, מתומחרת לפי voice-2, הרשומה היקרה ביותר בקטלוג. תמלול נמדד אחרת לגמרי: 0 טוקני כניסה, וספירת התווים של התמלול שהוחזר בתור טוקני יציאה מול whisper-1. זה מה שהקוד עושה, וזה אינו מחיר אודיו לדקה. שתי יכולות הקול כבויות בקונפיג.
  • רמת מאמץ החשיבה היא ארגומנט לכל קריאה, לא יכולת של תוכנית ולא הגדרת משתמש. ארבעה ערכים עם פסקי זמן משלהם לבקשה, ו-internal_ai_effort חסר גם מ-config.json וגם מ-config_dev.json, ולכן כל משימה פנימית נופלת אל הערך הקבוע שבקוד. לרמת המאמץ אין מחיר משלה והיא מזיזה את החשבון רק דרך ספירת הטוקנים.
תוויות שתחתן נרשם חיוב
submit chat, ולשם נוחת גם סיכום הדואר האלקטרוני
conversation chat, לפי המודל שהסוכן מוגדר אליו, כשברירת המחדל היא gpt-1
execute codex request, תמיד על קוד קטלוג אמיתי
code run, המסיים שברקע, כשהמודל נלקח מהריצה
xucode run, נכתב על ידי הפרוקסי שמודד את הריצה עצמה
create image, על img-1 או img-2
transcribe, על whisper-1, מחויב לפי תווי התמלול
profile avatar, virtual avatar, agent avatar ו-profile image
voice call, רשומה אחת נשטפת כשהשיחה מסתיימת
מה אינו מחייב

משטח הצ'אט הגדול ביותר בפלטפורמה בודק את היתרה שלך ולעולם אינו מחייב אותה.

dashboard_chat קוראת ל-validate_credits_limit ב-ai_module:11513 ומסרבת באפס קרדיטים, ואין record_ai_usage בשום מקום בגוף שלה, משורה 11340 עד שורה 12142. היא קוראת את היתרה ולעולם אינה מזיזה אותה. ל-chat_studio אין לא את השער ולא את הרשומה: היא מריצה תוסף npm פרטי בתוך NodeVM שכל סביבתו היא couch, app_id, uid, userName ו-agent_info, וה-OPENAI_API_KEY השייך לפלטפורמה מוזרק אל הגדרות התוסף. בניית תוסף AI ושינויו עוברים דרך אותו בונה. misc_module.submit_chat_gpt_prompt היא לקוח OpenAI שני ללא חיוב מכל סוג. שתי מגבלות שייכות לבלוק הזה. חבילת הבונה היא npm פרטי והיא נעדרת מהמאגר הזה, ולכן השאלה אם היא מודדת את עצמה בדרך שאינה נראית כאן היא לא מאומתת; שום דבר בארגז החול שנמסר לה אינו מספק מדידה כזאת. היעדר השער והיעדר הרשומה בצד של Xuda מאומתים בקריאת הקבצים. ושום דבר בשום מקום אינו אומר אם dashboard_chat אמורה להיות חינמית או שחסרה בה קריאה.

מסרב באפס קרדיטים
כותב רשומת שימוש
dashboard_chat, עוזר הפרויקטכן, validate_credits_limit ב-ai_module:11513לא. שום דבר בשורות 11340 עד 12142
chat_studio, בונה האפליקציות של Studioאין שער בשום מקום במסלולאין רשומה. התוסף רץ ב-NodeVM עם מפתח הפלטפורמה
בניית תוסף AI ושינויואין שער. אותה חבילת בונה, אותו מסלולאין רשומה בצד של Xuda בקריאה
misc_module.submit_chat_gpt_promptאין שער. לקוח OpenAI שני לגמריאין חיוב מכל סוג שהוא
שתי הקריאות של תמונות החולצהאינן חסומות בשערזורקת שגיאה קודם: אין account_profile_info (account_module:9477)
ספר החשבונות

שבע דלתות מנפיקות קרדיט, ודרגת ה-workspace שלך אינה אחת מהן.

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

חיפוש ממצה של record_ai_credit( על פני cpi מחזיר בדיוק שבע נקודות, והן השבע שנמנו למעלה. שווה לנקוב במנגנון שמאחורי הסירוב במדויק, משום שאין כאן הדרה מכוונת אלא אי התאמה של צורה: שני המסלולים מונחי התוכנית קוראים את plan.features?.ai_credits, ורק רשומות חברות נושאות אותו כאובייקט. ברשומת workspace, features הוא מערך של שבעה משפטי שיווק, ולכן הקריאה הזאת מחזירה undefined. הדבר נקרא מהמקור ולא אומת מול ספר חשבונות של חשבון בתשלום חי. לא מאומת, וזו הטענה המסוכנת ביותר בעמוד הזה לשני הכיוונים.
גלגול קדימה

שני מאגרים, ורק אחד מהם שורד את סוף החודש.

כל מסמך קרדיט נושא kind, ויש שניים כאלה (CREDIT_KIND, account_module:9532-9536). ההוצאה יוצאת קודם ממאגר התקופה, וזה הפרט שקובע את כל מה שלמטה: המאגר שפוקע הוא המאגר שמתרוקן ראשון, ולכן חבילה שנרכשה עדיין שם כשמכסת התוכנית מוצאת משימוש. קרדיטי תקופה הם המכסה לחלון חיוב אחד, והחלון הוא תקופת החשבונית של Stripe כשיש כזו חתומה ובתוקף, ואחרת החודש הקלנדרי.

פרט אחד חותך לכיוון ההפוך, ומקומו כאן ולא בהערת שוליים: חריגה מעבר למכסה הישנה נרשמת מול מאגר הטעינות בזמן הגלגול, ולכן קרדיטים שרכשת יכולים לספוג חריגה בקרדיטים שקיבלת, ואי אפשר להשיב אותם בחודש הבא. מגבלה שנייה יושבת על המאגר שאמור להיות קבוע. ai_credit_packs קיים רק ב-config_dev.json, ב-100 קרדיטים עבור $10, 500 עבור $45 ו-1200 עבור $100, והמפתח חסר מ-config.json, ולכן purchase_ai_credits הייתה דוחה שם כל מזהה חבילה (stripe_module:3305). לא ידוע אם קונפיג הייצור החי נושא את המפתח.
הסירוב

המילים המדויקות שתקבל, ואיזו מהן שלך.

_SCOPE_REASON היא מפה בת שש רשומות ב-account_module:8934-8941. השער בוחר את רשומת ה-ledger כשמפתח ההפרה הראשון הוא ledger, ואחרת את הרשומה ששם ההפרה מצביע עליה, ונופל חזרה אל מחרוזת ה-pool. סירובי הקפאה וסירובי גישה למודל אינם מגיעים מהמפה הזאת כלל: הם נושאים מחרוזות משלהם ו-block_kind משלהם. שני משטחים מנסחים מחדש את הסירוב עבור הלקוח במקום להעביר את המחרוזת הגולמית, בונה האתרים ב-ai_module:4597-4599 ועוזר הפרויקט ב-:12093. השורה הראשונה למטה, באותיות קטנות ובלי דקדוק, היא מחרוזת המורשת, והיא זו שחשבון רגיל מקבל, משום שרק Team ומעלה יכולים לשמור כללים בכלל, וחשבון בלי כללים עובר בענף ה-ledger.

scope ledger . מחרוזת המורשת, וזו שחשבון ברירת המחדל מקבל
ai credits reach to hard limit
scope pool
Your account has reached its AI credit limit.
scope profile
This profile has reached its AI credit limit.
scope user
This member has reached their AI credit limit.
scope model
This model has reached its AI credit limit.
scope source
This action has reached its AI credit limit.
לא במפה הזאת כלל . הקפאה, block_kind freeze
This profile is paused.
This member is paused.
גם לא במפה הזאת . גישה למודל, כלל הפרופיל נבדק ראשון
This model is not allowed for this profile.
ומה שבונה האתרים אומר במקום זאת, ai_module:4599
You’re out of AI credits. Top up to keep generating.
ועוזר הפרויקט, ai_module:12093
You’re out of AI credits. Top up to keep chatting.
רק חסימה קשה שולחת דואר אלקטרוני לבעלים, מנוכה כפילויות בתוך התהליך לפעם אחת לכל בעלים, היקף ויום UTC, עם הנושא "AI credit limit reached". הקפאה ודחיית מודל חוזרות לפני הקריאה להתראה, ולכן אף אחת מהן אינה שולחת דואר לעולם.
השער

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

כל קריאת AI עוברת דרך account_module.evaluate_credit_gate(req), שמקבלת uid, profile_id, model ו-source (account_module:8955-9035). ai_module.validate_credits_limit היא מתאם דק שהופך חסימה לשגיאה שנושאת credit_limit_error. ההקפאה יושבת לפני שנקרא שימוש כלשהו, ולכן היא נושכת כבר בקריאה הבאה, בעוד שחריגת תקרה מושווית מול נתון ששמור במטמון. לגישה למודל יש שלושה מצבים: off אינו חוסם דבר, deny חוסם את הקודים המנויים, allow חוסם כל מה שאינו מנוי, ורשימת allow ריקה אינה חוסמת דבר. חמש התקרות מושוות בגדול או שווה, ולכן מגבלה קשה של N מסרבת ב-N. כל הפרה קשה מסרבת עם הסיבה הראשונה בלבד ועדיין מדווחת על הרכות; הפרה רכה בלבד מחזירה block false והקריאה רצה.

שלוש מגבלות שייכות לתמונה הזאת. התקרות לפי היקף מוגשות ממטמון בתוך התהליך בן 45 שניות, ולכן חריגת תקרה יכולה להיות מיושנת בפרק הזמן הזה, בעוד שההקפאה והגישה למודל אינן. הצבירה לפי מודל ולפי מקור סורקת עד 200,000 מסמכים גולמיים על שדה מקונן בלי אינדקס Mango, והקוד אומר להוסיף אחד לפני כל השקה בייצור. ו-docs/ishai_ui_requests.md:168 מתעד את היכולת כמאומתת בסביבת פיתוח עם קונפיג ייצור מוכן ולא מושק נכון ל-2026-07-22. לא מאומת בייצור.
ניהול קרדיטים

ניהול קרדיטים מתחיל ב-Team, ושתי שורות בטקסט שנשלח איתו מגזימות בתיאורו.

_is_team_tier משווה את דירוג תוכנית החשבון מול הדירוג של team (free 0, pro 1, team 2 במחיר $149, agency 3, enterprise_t1 עד t3 בדירוגים 4 עד 6), ו-set_credit_rules מסרבת לכל דבר מתחתיו עם המחרוזת המדויקת "Credit management is available on the Team plan." (:9339). get_credit_management ניתנת לקריאה בכל תוכנית ומחזירה can_edit false, וזו הסיבה שחשבון Free או Pro רואה את עמוד ההצגה ולא עורך. סתירה אחת שיש לסמן ולא לחזור עליה: הקונפיג מצהיר min_plan "pro" על set_credit_rules, ולכן חשבון Pro עובר את שער המתודה ואז נדחה על ידי הקוד. Team היא הטענה הנכונה.

  • מה שבאמת נשמר: מגבלת אזהרה ומגבלת עצירה על המאגר, על כל פרופיל ועל כל חבר; הקפאה לכל פרופיל ולכל חבר; רשימת היתר או רשימת דחייה של מודלים על שניהם; שני ערוצי התראה. שמירה שולחת את אובייקט הכללים כולו דרך set_credit_rules.
  • אחוזים מותרים על pool, profile ו-member בלבד. תקרות של model ושל source נכפות לקרדיטים מוחלטים על ידי המנרמל, ערכים מעל 100 נחתכים ל-100, והאחוז נפתר מול get_effective_entitlements().ai_credits, שהיא מכסת התוכנית. הרמז "About N credits" בעורך מחושב דווקא מהענקת ספר החשבונות החיה, ולכן הרמז הוא הערכה ולא המספר הנאכף.
  • תגיות הסף אינן פעילות. ל-rules.alerts.thresholds יש ברירת מחדל [80, 100], והוא מנורמל, נשמר ומוצג כתגיות של 50, 75, 80, 90 ו-100 אחוז, ואף מסלול קוד אינו קורא אותו. התראות נורות לפי המגבלה הרכה שהוגדרה. credit.vue:135 שמבטיח התראות באחוזים האלה הוא שורה שאין להאמין לה.
  • תקרות לפי פעולה הן הבקרה החלשה ביותר כאן. חמש מחרוזות source בלבד נמסרות אי פעם לשער, ורק שתיים מהן, voice call ו-xucode run, תואמות תווית שתחתיה שימוש באמת נרשם, ולכן שלוש האחרות מחפשות מפתח עם אפס הוצאה ולעולם אינן נורות. העורך הפסיק לחשוף אותן ב-2026-08-11, והן נשמרות אך אינן ניתנות לעריכה.
מה בעלים של Team באמת יכול לשמור
מגבלת אזהרה ומגבלת עצירה על מאגר החשבון
אותו הזוג על כל פרופיל בודד
אותו הזוג על כל חבר בודד
אחוז מהרשאת התוכנית במקום מספר קרדיטים, בשלושת אלה
הקפאה על פרופיל, שחוסמת כל קריאת AI ממנו
הקפאה על חבר, נבדקת מיד אחרי הפרופיל
רשימת היתר או רשימת דחייה של מודלים, לכל פרופיל ולכל חבר
שני ערוצי התראה, בתוך האפליקציה דרך ה-websocket ודואר אלקטרוני לבעלים
שינוי דרגה

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

הכיוון אינו מוצהר על ידי הקורא. _change_direction מחשבת אותו, ומשום שרשומות ai_workspace אינן נושאות rank, המשווה נופל חזרה אל המחיר המספרי (stripe_module:335-386). שני צדדיה של ההשוואה הזאת מתנהגים שונה לחלוטין. שדרוג מעלה הוא כסף עכשיו והחלפה על חשבונית ששולמה. שדרוג מטה הוא לוח זמנים של מנוי ב-Stripe, בלי חיוב, בלי זיכוי, ועם סמן שמסך החיוב קורא כדי להציג שינוי ממתין עם כפתור ביטול לצידו.

אף אחד מהמסלולים אינו כותב את ai_workspace_plan. השדה נכתב מאוחר יותר, על ידי customer.subscription.updated, שעוברת על כל פריט במנוי המאוחד ופותרת כל מחיר בחזרה לרשומה לפי price_id או member_price_id (:1611-1630, :1707-1735). מכיוון שהכיוון הוא סדר מחירים, במקרה הוא תואם את סדר המזהים ב-config.json ואינו תואם אותו ב-config_dev.json. נקרא ממסלול הקוד בלבד. לא נוצר ולא נצפה לוח זמנים חי ב-Stripe. לא מאומת.
היכן הדרגה נכתבת

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

הדרגה היא מחרוזת אחת במסמך החשבון, ai_workspace_plan, שמחזיקה את המפתח מתוך PLAN_OBJ, ומוגדרת ל-free_ai_workspace כשלקוח Stripe נוצר לראשונה. שלושה דברים מזיזים אותה, ורק האחרון כותב אותה. שווה לשאת את זה אל הכרטיס השלישי: בכל קטגוריה אחרת מזהה מחיר של מציין מקום מונפק למחיר Stripe אמיתי מתוך הקטלוג ברכישה הראשונה, לפי מפתח חיפוש שכולל את הסכום. ai_workspace לוקחת ענף נוקשה ב-:474-476 וב-:551-554 וקוראת את המחיר ישירות מרשומת הקונפיג, ולכן שני מזהי ה-TODO נמסרים ל-Stripe כפי שהם. הוסק ממסלול הקוד, לא נוסתה רכישה. לא מאומת.

  1. 01

    הקופה קוראת למתודה אחת

    checkout.vue:233-280 קורא ל-stripe_update_plan בכל קטגוריה, ו-stripe_get_proration מציג את התצוגה המקדימה דרך אותו סיווג, כך שהצעת המחיר שמוצגת לך והחיוב שאתה מקבל מחושבים באותה הדרך. אף אחד מהם אינו כותב את ai_workspace_plan. הממשק מעדכן מצב מקומי לכל קטגוריה ונעצר שם, ובשינוי מתוזמן הוא במכוון אינו מחליף את התוכנית.

  2. 02

    Stripe מחליפה את הפריט

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

  3. 03

    webhook כותב את המחרוזת

    customer.subscription.updated מסנכרן את השדה שאותה קטגוריה ממופה אליו דרך _PLAN_FIELD_BY_CATEGORY וחותם ai_workspace_plan_changed (:358-370, :1733-1735). אם ה-webhook הזה מוחמץ, החשבון שומר על מחרוזת הדרגה הישנה שלו בזמן ש-Stripe מחייבת על החדשה. הקוד נושא ריפוי עצמי להענקת קרדיטי החברות ואין לו ריפוי לשדה הזה, ולכן דבר אינו מבחין בכך ודבר אינו מתקן זאת.

מגבלות בכנות

תשעה דברים שהעמוד הזה לא יגיד לך, ולמה.

  • כל נתון כאן מגיע מעותקי ה-repo של config.json ושל config_dev.json, וידוע שקונפיג המאסטר החי מתפצל מה-repo, ולכן שום מספר בעמוד הזה אינו מאושר מול הייצור.
  • אין למעלה שום נתון של קרדיטים לטוקן ושום נתון של קרדיטים לדולר, משום שהנוסחה נמצאת ב-repo והיחידה המחייבת נמצאת במסמך design של CouchDB שאינו שם. הקוד משנה את קנה המידה של הנתון הגולמי שלו אל התצוגה הזאת, ושלב הכיול הזה הוא הראיה לכך שהשניים שונים.
  • מחיר החבר הוא 10 אחוז הנחה לפי ההערה ב-stripe_module:211-223, אבל הסכומים חיים ב-Stripe ואין שדה קונפיג שמחזיק אותם, ולכן לא מודפס סכום דולרי לחברים.
  • השלבים של $8 ושל $45 נושאים מזהי מחיר של מציין מקום ב-Stripe, ו-ai_workspace היא הקטגוריה היחידה שעוקפת את מנגנון ההנפקה החלופי, ולכן אף אחד מהם אינו שייך עדיין לעמוד עם כפתור רכישה פעיל.
  • config_dev.json מתמחר את אותם שני מזהים ב-$1,100 וב-$3,500 עבור 50,000 ו-200,000 קרדיטים. באיזה מוצר מזהה נוקב תלוי באיזה קונפיג נטען במכונה.
  • ה-ai_credits של דרגת workspace לעולם אינם מועברים ל-record_ai_credit. הם מעלים את ההרשאה המוצגת ולא את היתרה הניתנת להוצאה, ממצא שנקבע בחיפוש ממצה ולא אומת מול חשבון בתשלום חי.
  • ניהול הקרדיטים מתועד כמאומת בסביבת פיתוח עם קונפיג ייצור מוכן ולא מושק נכון ל-2026-07-22, ושום דבר שנקרא בפגישה הזאת אינו מוכיח השקה מאז.
  • תגיות סף ההתראה נשמרות ולעולם אינן נקראות, ותקרות לפי פעולה אינן ניתנות לעריכה ותואמות תווית שימוש שנרשמה רק בשתיים מתוך חמש מחרוזות ה-source שנמסרות אי פעם לשער.
  • ה-size של 6000_ai_workspace הוא 10,737,418,240,000 בתים, שהם 10,000 GiB מול תווית של 10 TB, ו-get_effective_entitlements מחלקת אותו ב-1073741824 ומספקת 10,000 GB.
לפני שמתחייבים

השאלות שמחירון גורם לך לשאול

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

סרטון הדרכה

סרטון ההדרכה שהעמוד הזה יורש.

זו ההקלטה שמסמך workspace_plans הקודם כבר נשא בשדה ה-youtube שלו, ונשמרה כאן ולא הושמטה. עמוד שהורכב ממפתחות קונפיג, נקודות קריאה ומחרוזות סירוב הוא דרך גרועה לראות את המוצר בתנועה, וסרטון ההדרכה הוא החלק במסמך הישן ששום דבר בכתיבה מחדש הזאת אינו מחליף. כלל אחד לצפייה בו. במקום שבו סרטון ההדרכה והעמוד הזה חלוקים לגבי מספר, העמוד הוא זה שנבנה מהמקור באוגוסט 2026, נקרא מתוך config.json וממודולי cpi ולא הועתק קדימה מהניסוח הקודם. הכלל הזה מרוויח את מקומו כאן ואינו נימוס בעלמא, משום שהגרסה שפורסמה של המסמך הזה מנתה שש מתוך שמונה דרגות ה-workspace והדפיסה את נתוני הקרדיטים שמלפני העדכון מול תוויות האחסון הנוכחיות, מה שהותיר ארבע משש השורות שלה מציגות בחסר את הקרדיטים שהן מעניקות. הוא גם לא נשא שדה מחיר כלל. לכן שם דרגה או נתון קרדיטים שנאמרים בקול בסרטון ההדרכה עשויים להיות ישנים יותר מהרשומה שהם מתארים, והטבלאות שלמעלה הן מה שקובץ הקונפיג אומר היום.

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

פתיחת מסך התוכנית וקריאת הרשומה שלך.

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