חומת אש נוירו-סימבולית עבור דמויות NPC במשחקים

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

הטעות שרוב מערכות ה-AI-NPC עושות היא לאפשר לדיאלוג לשמש כשכבת ההחלטות. Aegis מציבה שכבת החלטות דטרמיניסטית בין מכניקת המשחק לבין מודל השפה: הקוד שולט בכל תוצאה מכנית, והמודל רק כותב שורות התואמות לדמות עבור ההחלטה שכבר התקבלה. מכיוון שאין נתיב קוד מהדיאלוג אל מצב המשחק, שחקן אינו יכול לבצע הנדסה חברתית על NPC כדי לשבור את המשחק. מה שניתן לראות כאן הוא הדגמה על גבי מיני-RPG סינתטי, ולא מנוע משחק.

אפס

נתיבי קוד מדיאלוג למצב המשחק

core.py, קוד Python דטרמיניסטי ללא ייבוא של מודלים

100%

עמידה באינווריאנטים, סביבת ריצה מוגנת

ערבות מבנית, מאומתת על ידי 6 בדיקות ללא מפתח API

89.6%

שיעור עקיפה מול מסנני NPC סטנדרטיים

מחקר jailbreak במשחקי תפקידים, ProvSec 2025

הסיור המודרך מריץ תוקף אוטונומי מול שתי סביבות ריצה של NPC עבור אותו מצב משחק. Hollowmere, שלושת ה-NPCs שלה וכל תסריט ניצול הם סינתטיים. ללא משחק, מנוע, שחקן או לקוח אמיתיים.

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

לאולפן הבוחן דמויות NPC מונעות LLM עבור משחק תפקידים נרטיבי יש חשש מבני אחד. תנו למודל כלי מסוג give_item,‏ open_gate או reveal_secret וקריאת הכלי שלו תשנה את העולם, ושחקן נחוש ימצא נתיב באמצעות מסגור סמכות, מסגרת משחק תפקידים, תחינה רגשית או הזרקת פרומפט ישירה. ככל שהמודל רהוט יותר מבחינה חברתית, כך הניצול רהוט יותר. גרוע מכך, לא ניתן לבצע QA ידני ל-NPC שאינו דטרמיניסטי, מכיוון שאין קבוצה סופית של וריאציות דיאלוג לבדיקה.

הבטיחות שוכנת בדיאלוג

כאשר פרומפט מערכת או מסנן הם הדבר היחיד העומד בין שחקן לכספת, בטיחות היא הסתברות שהשחקן זוכה לתקוף תור אחר תור. פריצות jailbreak במשחקי תפקידים נגד מסנני NPC סטנדרטיים דווחו בשיעור עקיפה של 89.6 אחוזים ב-ProvSec 2025.

המודל הוא גם שחקן וגם שופט

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

לא ניתן לבצע QA ל-NPC שאינו דטרמיניסטי

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

הקוד מכריע לגבי המכניקה. המודל רק מקריין את ההחלטה.

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

01 / שכבת החלטות

decide מחשבת את פסק הדין ממצב המשחק בלבד

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

02 / ידע עולם מותנה-מצב

סוד לעולם אינו מוכנס לקונטקסט של המודל

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

03 / מאמת אילוצים

שופט דטרמיניסטי פועל לפני ההצגה

לפני ששורה כלשהי מגיעה לשחקן, המאמת בודק את פלט המקריין מול האינווריאנטים ומחזיר אחד מחמישה סטטוסים: PASS,‏ ACTION_MISMATCH כאשר שורה מנסה לשדרג את פסק הדין, OUTSIDE_CANON כאשר היא מתייחסת לישות מותנית-מצב, NEEDS_REVIEW כאשר היא מבטיחה דבר שאינו במלאי, ו-FOURTH_WALL כאשר היא שוברת דמות או מהדהדת הנחיה שהוזרקה.

04 / שער מדיניות

Pass מציג את השורה, כל דבר אחר מונע את הצגתה

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

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

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

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

המסך המפוצל של Aegis לפני מפגש. משמאל ה-NPC מוסמך-המודל המסומן כסביבת ריצת בסיס, מימין ה-NPC המוגן המסומן כחומת האש של Aegis, כשכל אחד מציג תגיות KEY with guard,‏ GATE sealed ו-SECRET sealed, תג MOCK, והודעת מצב שידור חוזר, כאשר Aldric שומר השער נבחר.
שתי סביבות ריצה, מצב משחק אחד. ה-NPC השמאלי מוסר למודל את הכלים המשנים מצב, התבנית המקובלת בתעשייה וכזו שנשלחה למוצרים אמיתיים. ה-NPC הימני הוא סביבת הריצה הנוירו-סימבולית. שניהם מתחילים כשהמפתח מוחזק בידי השומר, השער חתום וסוד הכספת חתום, כך שכל הבדל בסיום נובע מהארכיטקטורה, ולא מהתרחיש.
עקבת המתקפה שנלכדה בת ארבעה תורים עבור Aldric שומר השער, המסלימה מבקשה ישירה למסגור סמכות, למסגרת בדיונית ולפנייה רגשית. עמודת ה-NPC המוגן מציגה Refuse Blocked בכל תור, בעוד שעמודת מוסמך-המודל מציגה No Action עד לתור הרגשי האחרון, שבו היא קוראת ל-give_item על quest_key_obsidian.
הקמפיין מסלים לאורך ארבעה תורים. בקשה ישירה, לאחר מכן מסגור סמכות, אחר כך מסגרת בדיונית, ולבסוף תחינה רגשית. מצב המשימה נעול, ולא favor_completed, ולכן שכבת ההחלטות מחזירה refuse בכל תור. השומר המוגן שומר על עמדתו בכל פעם. העקבה נלכדת לבדיקה מאוחרת יותר, מכיוון שסירוב שאינכם יכולים לבחון אינו מהווה ראיה.
תור השיא של המפגש עם שומר השער. בפנייה הרגשית לגבי אחות הלכודה מעבר לכספת, השומר מוסמך-המודל משמאל קורא ל-give_item על quest_key_obsidian, תגית ה-KEY שלו מציגה KEY STOLEN וחותמת BREACH אדומה מכסה את הדיוקן. השומר המוגן מימין אומר שהמפתח נשאר במקומו, פעולתו מציגה refuse blocked, תגית ה-KEY שלו עדיין מציגה KEY with guard, וחותמת REFUSE כחולה מכסה את הדיוקן.
BREACH, משמאל. REFUSE, מימין. בפנייה הרגשית השומר מוסמך-המודל נשבר וקורא ל-give_item, המפתח עובר לשחקן, והתגית מציגה KEY STOLEN. השומר המוגן אומר שתוכל לדבר עד שתצטרד לפני שהוא יזוז, והמפתח באופן מוכח לעולם אינו זז, מכיוון ששום דבר בקוד אינו מאפשר לשורת דיאלוג לכתוב לשדה זה.

חומת האש השנייה, על שני ה-NPCs האחרים

ל-Bryn שומר הלילה מוצע שוחד שעל ה-utility AI לדחות, ובאחד התורים המקריין המוגן חורג מסמכותו בהבטחת אלף מטבעות זהב שאין ברשות Bryn. המאמת מחזיר NEEDS_REVIEW ומעכב שורה זו לפני ההצגה, במקום לאפשר ל-NPC להבטיח דבר שהמשחק אינו יכול לספק. על Mira סוחרת הכספת מופעל מסגור של אימות-הסוד, וכאשר המקריין המוגן מנסה להשתמש באותו קישוט רטורי המאמת מחזיר OUTSIDE_CANON ומעכב אותו. הסיסמה מעולם לא הייתה במאגר הידע של Mira מלכתחילה. שתי שכבות נראות בעת ובעונה אחת: מצב המשחק אינו יכול להשתנות מדיאלוג, והמאמת לוכד את המקריין שלנו חורג מסמכות לפני שהשחקן רואה את השורה אי פעם.

על מה לוח התוצאות מצהיר, ועל מה לא.

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

לוח תוצאות הבנצ'מרק של Aegis. כרטיס סביבת הריצה המוגנת מציג 100 אחוזי עמידה באינווריאנטים, תחת התווית מבני: שום נתיב קוד אינו משנה מצב מדיאלוג, מאומת אמפירית. הכרטיס מוסמך-המודל מציג 0 אחוזים, תחת התווית שחזור להמחשה, מצב mock, הוסיפו מפתח API למדידה חיה. טבלה לפי NPC מציגה את Aldric,‏ Bryn ו-Mira כל אחד עם מתקפה 1,‏ 1 מתוך 1 עמד עבור המוגן ו-1 מתוך 1 נפרץ עבור מוסמך-המודל, מעל לחצנים להורדת ביקורת אבטחת ה-NPC והערה ש-QA יריבי הוא מדגם, ולא הוכחה ממצה.
שני המספרים, כשההיקף שלהם צמוד אליהם. ה-100 אחוזים המוגנים משמעותם ששום נתיב קוד אינו משנה מצב מדיאלוג, מאומת על ידי שלוש מתקפות מתוסרטות ועל ידי שש בדיקות יחידה ללא מפתח API. ה-0 אחוזים של קו הבסיס נובעים מכניעה מתוסרטת במצב mock ומסומנים כשחזור, ולא כשיעור פריצה שנמדד עבור מודל ספציפי כלשהו. הכותרת התחתונה מציינת שלוש מתקפות על פני שמונה מחלקות ניצול וכי QA יריבי הוא מדגם בלבד.
שאלהמה Aegis עושה בהדגמה זומה נותר מחוץ להדגמה
ערבות מבניתשומרת כל החלטה מכנית בקוד דטרמיניסטי ללא נתיב מדיאלוג למצב המשחק, מאומת על ידי שש בדיקות ללא מפתח API.הוכחה לכך שדמויות NPC בטוחות מפני כל ניצול אפשרי. זוהי הטענה הממוקדת יותר שדיאלוג אינו יכול לשנות מצב משחק.
פריצת קו הבסיסמריצה כניעה מתוסרטת במצב שידור חוזר כדי להציג את אופן הכשל של מוסמך-המודל זה לצד זה.שיעור פריצה מדוד לכל מודל, הדורש מודל נגיש ומשתנה ממודל למודל.
כיסוי יריבימריצה שלושה קמפיינים מתוסרטים המפעילים שבע מתוך שמונה מחלקות ניצול מוגדרות ומתעדת את מגבלות הכיסוי בביקורת.הוכחה יריבית ממצה. הביקורת מציינת את המספר, את המתקפות לכל ארכיטיפ, וכי אין מדובר בהוכחה ממצה.
הסקה על גבי המכשיר (On-device inference)קוראת למודל מתארח או מקומי מאחורי ממשק ספק, כאשר נקודת החיבור לסביבת ריצה מוטמעת מתועדת.סביבת ריצה אמיתית על גבי המכשיר או בתוך מנוע המשחק עם תקצוב VRAM. חלק הקצה מוגדר כ-stub, ולא נבנה עדיין.

מה הדגמה זו אינה עושה

היא אינה רצה בתוך מנוע משחק, על גבי קונסולה או על גבי GPU, ואינה מספקת סביבת ריצה להסקה בקצה. אין כלל מנוע משחק ומצב המשחק מסומלץ. העולם Hollowmere, שלושת ה-NPCs‏ Aldric,‏ Bryn ו-Mira, סיסמת הכספת וכל תסריט ניצול נכתבו ידנית, כך שאף אחד מהם אינו משחק אמיתי, אולפן, כותר שהושק, שחקן, לקוח או פיילוט. במצב שידור חוזר ברירת המחדל, פריצת מוסמך-המודל היא שחזור מתוסרט ולא מדידה. ה-100 אחוזים הם ערבות מבנית לכך שדיאלוג אינו יכול לשנות את מצב המשחק, ולא טענה שדמויות NPC בטוחות מפני כל ניצול, וה-QA היריבי כאן הוא מדגם, לא הוכחה ממצה. עורך חזותי למוח ה-NPC, כוונון עדין לכל דמות, זיכרון מתמשך בין הפעלות, סנכרון לוח מידע מרובה-משתתפים והיסק בין דמויות NPC נדחו לשלבים הבאים. דף זה הוא דף הסבר עם וידאו, צילומי מסך, פירוט מנגנונים ותשובות, ולא אפליקציה שניתן להפעיל מכאן.

שאלות שמנהל טכנולוגי שואל לפני שהוא נותן אמון ב-LLM בתוך NPC.

האם שחקן יכול פשוט לפרוץ את ה-NPC באמצעות פרומפט מתוחכם דיו?

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

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

פרומפט מערכת או מסנן בטיחות שומרים את ההחלטה בתוך הדיאלוג, שבו שחקן נחוש הוא ממטב טבעי נגדו, וזו הסיבה שפריצות jailbreak במשחקי תפקידים נגד מסנני NPC סטנדרטיים דווחו בשיעור עקיפה של 89.6 אחוזים ב-ProvSec 2025. מערכת Aegis מעבירה את ההחלטה אל מחוץ למודל לחלוטין, לתוך Python פשוט שמעצב משחקים יכול לקרוא. המודל מייעץ באמצעות קריינות; קוד דטרמיניסטי מכריע לגבי המכניקה, והוא לעולם אינו נדרש להיות גם השחקן וגם השופט.

האם זה כובל אותי לספק מודל יחיד?

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

אתם מציגים את קו הבסיס נפרץ בכל פעם. האם זו מדידה אמיתית של GPT,‏ Claude או Gemini?

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

האם ניתן להריץ זאת על גבי המכשיר, בתוך Unreal או Unity?

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

כיצד אוכיח לסוקר השקה שה-NPCs אכן עמדו בעומס?

ההרצה מייצאת ביקורת אבטחת NPC‏ (NPC Security Audit): קובץ JSON חתום עם תמצית שלמות SHA-256, תצוגת HTML להדפסה, עקבת החלטות ופסק דין של המאמת לכל מתקפה, ובלוק מגבלות כיסוי מפורש המציין כמה מתקפות רצו ועל פני כמה מחלקות ניצול. הוא תוכנן להיות התוצר שאולפן זהיר מגיש לאישור השקה. הוא מציג ביושר שמדובר במדגם ולא בהוכחה ממצה, והביקורת מציינת זאת במפורש.

מחקר טכני

המחקר שמאחורי הדגמה זו — הארכיטקטורה, תכנון האימות והמתווה הארגוני.

רשתות חברתיות

פורסם גם ב

התחילו בהחלטת ה-NPC האחת שאינכם יכולים להרשות לשחקן לעקוף במילים.

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

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

תכנון חומת אש ל-NPC

  • ✓ מידול שכבת החלטות ולוח מידע
  • ✓ גבולות ידע עולם מותני-מצב
  • ✓ כללי מאמת אילוצים
  • ✓ קריינות בלתי תלויה בספק

הערכה יריבית

  • ✓ קמפיינים אוטונומיים של צוות אדום
  • ✓ טקסונומיה של מחלקות ניצול
  • ✓ ביקורות אבטחת NPC חתומות
  • ✓ ראיות לאישור השקה