Marinara Engine की समस्याएँ सुलझाना

अपनी दिक्कत ढूँढें, फिर उसका हल अपनाएँ। ज़्यादातर समस्याएँ Marinara को उसके लॉन्चर (start.bat, start.sh या start-termux.sh) से दोबारा शुरू करने पर ठीक हो जाती हैं।

सबसे पहले ये आज़माएँ

  1. पेज को हार्ड रिफ़्रेश करें: Windows या Linux पर <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>R</kbd>, Mac पर <kbd>⌘</kbd>+<kbd>Shift</kbd>+<kbd>R</kbd>।
  2. सर्वर कंसोल (वह टर्मिनल विंडो जिसमें Marinara चलता है) में लाल एरर लाइनें देखें। असली दिक्कत आमतौर पर उन्हीं में लिखी होती है।
  3. मदद माँगनी हो तो पहले Debug mode (डीबग मोड) चालू करें। देखें ज़्यादा मदद पाना।

मेरा कैरेक्टर जवाब नहीं देता

इन्हें इसी क्रम में जाँचें।

  1. कोई टोस्ट (स्क्रीन के नीचे दिखने वाला छोटा संदेश) देखें। उसमें आमतौर पर समस्या लिखी होती है। देखें कनेक्शन और जेनरेशन की एरर।
  2. जाँचें कि चैट के पास अकाउंट और मॉडल है: Chat Settings (चैट सेटिंग्स) खोलें और कनेक्शन देखें। कोई न हो, तो Connections (कनेक्शन) में एक अकाउंट जोड़ें। देखें किसी AI प्रोवाइडर से कनेक्ट करना।
  3. जाँचें कि API कुंजी सही है और अकाउंट में क्रेडिट है। गलत कुंजी या खाली बैलेंस एक आम वजह है।
  4. मॉडल का नाम जाँचें। Ollama या LM Studio जैसे लोकल सर्वर के लिए यह भी देखें कि सर्वर चल रहा है।
  5. अपना संदेश दोबारा भेजें, या कोई दूसरा मॉडल चुनें।

अगर कुछ काम न आए, तो Debug mode चालू करें और सर्वर कंसोल पढ़ें। देखें ज़्यादा मदद पाना।

मोबाइल या दूसरे डिवाइस पर ऐप लोड नहीं होता

फ़ोन, टैबलेट या किसी दूसरे कंप्यूटर से Marinara नहीं खुल रहा?

ज़्यादातर इन तीन में से कोई एक वजह होती है:

और वजहें:

रिमोट एक्सेस और अक्सर पूछे जाने वाले सवाल देखें। अगर अपडेट के बाद आप लॉक आउट हो गए थे, तो अपडेट के बाद लॉक आउट हो जाना देखें।

सेव ब्लॉक होना, या सेटिंग्स का टिक न पाना

सेव होता हुआ लगता है, पर पेज दोबारा लोड करने पर पुरानी वैल्यू लौट आती है। क्रॉस-साइट सुरक्षा (CSRF) उसे रोक रही है, क्योंकि वह इस ब्राउज़र पते पर भरोसा नहीं करती। आपको एक लाल बैनर दिखता है जो कहता है कि सेव चुपचाप फ़ेल हो जाएँगे, या Save blocked: missing CSRF header, Save blocked: cross-site request rejected या Save blocked: origin not trusted शीर्षक वाला टोस्ट दिखता है।

लूपबैक, प्राइवेट नेटवर्क पते, Tailscale और Docker ब्रिज अपने आप भरोसेमंद माने जाते हैं। ऐसा ज़्यादातर पब्लिक IP या डोमेन नाम पर होता है। उस पते को .env में CSRF_TRUSTED_ORIGINS में जोड़ें, एक से ज़्यादा हों तो कॉमा से अलग करके। बैनर में एक Copy (कॉपी करें) बटन है जो यह लाइन भर देता है। रीस्टार्ट की ज़रूरत नहीं है।

CSRF_TRUSTED_ORIGINS=http://203.0.113.10:7831,https://chat.example.com

कनेक्शन और जेनरेशन की एरर

जेनरेशन की एरर स्क्रीन के नीचे टोस्ट के रूप में दिखती है। टोस्ट में वजह लिखी होती है, और वह इतनी देर टिकता है कि उसे कॉपी किया जा सके।

संदेश या लक्षणहल
No API connection configured for this chatचैट के पास कोई अकाउंट नहीं है। Connections में एक अकाउंट जोड़ें, फिर उसे चैट के लिए चुनें। देखें किसी AI प्रोवाइडर से कनेक्ट करना।
मॉडल कोई पैरामीटर स्वीकार नहीं करताChat Settings → Advanced Parameters (चैट सेटिंग्स → एडवांस्ड पैरामीटर) खोलें और टोस्ट में बताए गए पैरामीटर के आगे वाला स्विच बंद करें।
मॉडल कहता है कि कोई पैरामीटर ज़रूरी हैउस पैरामीटर का स्विच चालू करें।
This model's chat template needs user and assistant messages to take turnsकुछ लोकल मॉडल, जैसे llama.cpp पर चलने वाले Mistral पर आधारित मॉडल, बारी-बारी से आने वाले संदेश ही स्वीकार करते हैं। Marinara लगातार आए संदेशों को आपस में मिला देता है और एक बार फिर कोशिश करता है। अगर फिर भी यह दिखे, तो Chat Settings → Advanced Parameters में Post-Processing Messages (संदेशों की पोस्ट-प्रोसेसिंग) को Single User Message (एक ही यूज़र संदेश) पर सेट करें, या मॉडल को कम सख्त चैट टेम्पलेट के साथ चलाएँ।
The AI returned an empty response. Try sending your message again.दोबारा भेजें। बार-बार ऐसा हो, तो कोई दूसरा मॉडल या अकाउंट आज़माएँ।
A generation is already in progress for this chatएक जवाब अभी स्ट्रीम हो रहा है। इंतज़ार करें, या Stop पर क्लिक करें, फिर दोबारा कोशिश करें।
No connections are marked for the random poolरैंडम रूटिंग चालू है, पर पूल में कोई अकाउंट नहीं है। एक अकाउंट जोड़ें, या रैंडम रूटिंग बंद करें।
हर संदेश नेटवर्क एरर के साथ फ़ेल होता है, और आपका कंप्यूटर इंटरनेट तक सिर्फ़ किसी प्रॉक्सी के ज़रिए पहुँचता हैMarinara को उस प्रॉक्सी के बारे में बताएँ। देखें बाहर जाने वाली रिक्वेस्ट के लिए HTTP प्रॉक्सी।

अपडेट के बाद

अपडेट के ठीक बाद आने वाली समस्याएँ, पहले आसान शब्दों में:

खाली, पुरानी या पुराने वर्ज़न जैसी दिखने वाली स्क्रीन

सर्वर चल रहा है, पर ब्राउज़र खाली पेज दिखाता है, या अपडेट के बाद ऐप पुराना दिखता है। ब्राउज़र ने वेब ऐप की एक कैश की हुई कॉपी रखी हुई है।

  1. हार्ड रिफ़्रेश करें।
  2. इससे बात न बने, तो Settings → Advanced → Updates (सेटिंग्स → एडवांस्ड → अपडेट) खोलें और Refresh App पर क्लिक करें।

Refresh App ब्राउज़र का सर्विस वर्कर (बैकग्राउंड में चलने वाली वह स्क्रिप्ट जो ऐप को कैश करती है) और कैश साफ़ करता है, फिर पेज दोबारा लोड करता है। यह आपका डेटा नहीं बदलता और सर्वर अपडेट नहीं करता। ऐप को खुद अपडेट करने के लिए Marinara Engine को अपडेट करना देखें।

अपडेट के बाद खाली पेज या JavaScript की जगह HTML मिलना

text/html टाइप के साथ "Failed to load module script" जैसी एरर का मतलब है कि ब्राउज़र ने ऐसी JavaScript फ़ाइल माँगी जो बिल्ड में मौजूद नहीं है। अपना डेटा मिटाने से यह ठीक नहीं होता।

  1. सर्वर रोकें।
  2. start.bat, start.sh या start-termux.sh दोबारा चलाएँ। लॉन्चर शुरू होने से पहले अधूरी क्लाइंट फ़ाइलें दोबारा बिल्ड करता है। हाथ से किए गए इंस्टॉल में पहले रिपॉज़िटरी के रूट से pnpm build चलाएँ।
  3. अगर पेज फिर भी खाली रहे, तो हार्ड रिफ़्रेश करें या प्राइवेट विंडो आज़माएँ।

फिर भी काम न बने, तो लॉन्चर आउटपुट के साथ फ़ेल होने वाली फ़ाइल का पूरा URL, HTTP स्टेटस, Content-Type और जवाब की पहली लाइन रिपोर्ट करें।

अपडेट के बाद डेटा गायब लगता है

कोई भी डेटा फ़ोल्डर न हटाएँ। Marinara अपना मौजूदा डेटा अपने डेटा फ़ोल्डर के अंदर storage फ़ोल्डर में रखता है। storage को packages/server/data/ और data/ में देखें। सर्वर शुरू होते समय वे फ़ोल्डर प्रिंट करता है जो उसने तय किए।

पुराने वर्ज़न पर जाने के बाद चैट में संदेश नहीं दिखते

Marinara के नए वर्ज़न हर चैट के रिकॉर्ड (संदेश, स्वाइप, यादें, इमेज) उसकी अपनी फ़ाइलों में रखते हैं, जिससे लंबी चैट तेज़ी से सेव होती हैं। पुराने वर्ज़न यह लेआउट नहीं पढ़ सकते, इसलिए चैट खाली दिखती हैं। डेटा अब भी डिस्क पर है।

Marinara साफ़ दिखने वाले डाउनग्रेड (पुराने वर्ज़न पर जाना) रोकता है। लॉन्चर ऐसा अपने आप होने वाला अपडेट छोड़ देता है जो किसी असंगत वर्ज़न पर ले जाए, और इन-ऐप अपडेटर ऐसी एरर दिखाता है जो इसी सेक्शन की ओर इशारा करती है।

अगर आपने अपडेट किया और फिर पुराने वर्ज़न पर लौट गए, तो अपडेट से पहले बनाया गया बैकअप रिस्टोर करें। देखें पुराने वर्ज़न पर वापस जाना। तकनीकी जानकारी नीचे है।

आपका डेटा अब स्टोरेज फ़ॉर्मैट 10 पर है। फ़ॉर्मैट 8, 9 और 10 में 3D अवतार की सेटिंग्स (पहले MMD, फिर GLB और FBX) और कनेक्शन के अकाउंट लिंक जुड़ते हैं, जिन्हें पुराने बिल्ड सुरक्षित तरीके से नहीं पढ़ सकते। अगर आपका डेटा फ़ॉर्मैट 8 या उससे नए फ़ॉर्मैट तक पहुँच चुका है, तो पुराना बिल्ड इस्तेमाल करने के लिए उस अपग्रेड से पहले बनाया गया पूरा बैकअप रिस्टोर करें। नीचे दी गई कमांड सिर्फ़ चैट फ़ाइलों के पुराने लेआउट को बदलती है। फ़ॉर्मैट का नंबर हाथ से न बदलें। देखें पुराने वर्ज़न पर वापस जाना।

फ़ॉर्मैट 8 से नीचे के डेटा के लिए चैट फ़ाइलों का लेआउट बदलें:

  1. Marinara सर्वर रोकें।
  2. Marinara फ़ोल्डर से यह चलाएँ:
   node scripts/protect-launcher-data.mjs unshard
  1. पुराने वर्ज़न पर जाएँ और उसे शुरू करें।

यह कमांड हर चैट की फ़ाइलों से सिंगल-फ़ाइल लेआउट फिर से बनाती है। कुछ भी मिटाया नहीं जाता। हर चैट की फ़ाइलें <table>.post-unshard-<timestamp> नाम के फ़ोल्डरों में बनी रहती हैं, और .pre-shard वाली मूल फ़ाइलें भी बनी रहती हैं। दोबारा अपग्रेड करने पर Marinara आपका डेटा वापस बदल देता है।

Docker या Podman में डेटा marinara-data वॉल्यूम में रहता है। कंटेनर रोकें, नीचे दी गई कमांड चलाएँ, फिर पुरानी इमेज शुरू करें:

docker compose run --rm marinara node scripts/protect-launcher-data.mjs unshard

इंस्टॉल और लॉन्च की समस्याएँ

Termux: CANNOT LINK EXECUTABLE "node"

Termux cannot locate symbol या library ... not found के साथ CANNOT LINK EXECUTABLE "node" दिखाता है। Node.js को बाकी Termux के बिना अपग्रेड कर दिया गया है। तब Android ऐप Could not verify that this Marinara Android build can safely read your stored data दिखाकर रुक सकता है। इसकी वजह आपका डेटा नहीं है, और APK दोबारा इंस्टॉल करने से यह ठीक नहीं होता।

  1. Termux में यह चलाएँ:
   pkg upgrade -y
  1. Android ऐप में Install / Start Marinara पर टैप करें। हाथ से किए गए इंस्टॉल में cd "$HOME/Marinara-Engine" && ./start-termux.sh चलाएँ।

अगर अपग्रेड पूछे कि कोई कॉन्फ़िगरेशन फ़ाइल रखनी है या नहीं, तो अपनी फ़ाइल रखने के लिए Enter दबाएँ। मौजूदा लॉन्चर और Android ऐप यह अपग्रेड अपने आप चला देते हैं।

Termux: क्लाइंट बिल्ड करते समय JavaScript हीप कम पड़ना

Vite Reached heap limit या JavaScript heap out of memory के साथ रुक जाता है। अपडेट करें, फिर ./start-termux.sh दोबारा चलाएँ। क्लाइंट बिल्ड अपने अलग 1536 MiB हीप के साथ चलते हैं। यह डिवाइस की RAM के आधे तक सीमित रहता है, लेकिन 1280 MiB से कभी कम नहीं होता। NODE_OPTIONS में आपकी सेट की हुई हीप सीमा पहले लागू होती है, इसलिए पुराना 1024 MiB ओवरराइड हटा दें। दोबारा कोशिश करने से पहले दूसरे ऐप बंद करें। लगभग 3 GB से कम RAM वाले फ़ोन पर मेमोरी फिर भी कम पड़ सकती है। बिल्ड की गड़बड़ी ठीक करने के लिए अपनी चैट या प्रोफ़ाइल न मिटाएँ।

डेस्कटॉप: क्लाइंट की टाइप-चेकिंग के दौरान JavaScript हीप कम पड़ना

बिल्ड रुक जाता है और The client type-check needs about 2.5 GiB of Node.js heap दिखाता है। आपके NODE_OPTIONS में दी गई सीमा बहुत छोटी है, और आपकी सेट की हुई सीमा को बिल्ड वैसे ही रखता है। --max-old-space-size को 2560 या उससे ज़्यादा करें। अगर NODE_OPTIONS में --max-old-space-size-percentage है, तो उसकी जगह उसे बढ़ाएँ, क्योंकि वह दूसरे विकल्प पर भारी पड़ता है। या दोनों विकल्प हटा दें। फिर लॉन्चर दोबारा चलाएँ। आपके डेटा पर कोई असर नहीं पड़ता।

Termux: मल्टीप्लेयर गेस्ट फ़ाइल गायब है

शुरू होते समय packages/client/dist/multiplayer/guest.js गायब होने का संदेश आता है। Marinara अपडेट करें और ./start-termux.sh दोबारा चलाएँ, जो पूरा क्लाइंट बिल्ड चलाता है। मल्टीप्लेयर चालू करने की ज़रूरत नहीं है।

Termux: Marinara खोलते ही सर्वर रुक जाता है या Sharp लोड नहीं होता

Sharp वह इमेज लाइब्रेरी है जिसे Marinara थंबनेल और स्प्राइट के लिए इस्तेमाल करता है। Android पर यह WebAssembly फ़ॉलबैक के ज़रिए चलती है। Marinara अपडेट करें और लॉन्चर को डिपेंडेंसी दोबारा इंस्टॉल करने दें। अगर अपडेट कर पाने से पहले ही सर्वर रुक जाए, तो Termux में इंस्टॉल को हाथ से ठीक करें:

cd ~/Marinara-Engine
rm -f node_modules/.modules.yaml
SHARP_IGNORE_GLOBAL_LIBVIPS=1 pnpm --config.trustPolicy=off --config.confirmModulesPurge=false install --frozen-lockfile --prefer-offline
./start-termux.sh

आपकी चैट और सेटिंग्स पर कोई असर नहीं पड़ता। अगर Sharp फिर भी लोड न हो, तो Marinara इमेज प्रोसेसिंग बंद रखकर चलता रहता है। पहले से बने थंबनेल दिखते रहते हैं, नए थंबनेल की जगह पूरे आकार की इमेज इस्तेमाल होती है, और स्प्राइट बनाना और बिल्ट-इन तरीके से बैकग्राउंड हटाना उपलब्ध नहीं रहते। Sharp को किसी दूसरे वर्ज़न से न बदलें। रिपोर्ट के लिए पूरा एरर आउटपुट रखें।

स्टार्ट पूरा होने से पहले ब्राउज़र खुल जाता है

अपडेट करें और लॉन्चर से दोबारा शुरू करें। लॉन्चर ब्राउज़र तभी खोलता है जब सर्वर बताता है कि वह तैयार है। अगर स्टार्ट फ़ेल हो जाए, तो कोई टैब नहीं खुलता, इसलिए टर्मिनल की एरर सँभालकर रखें। ऐप खुद खोलना हो, तो AUTO_OPEN_BROWSER=false सेट करें।

Windows: pnpm इंस्टॉल करते समय EPERM या corepack सिग्नेचर एरर

pnpm वह पैकेज मैनेजर है जिससे Marinara अपना कोड इंस्टॉल करता है। EPERM: operation not permitted या corepack की सिग्नेचर एरर का मतलब है कि corepack, Node के इंस्टॉल फ़ोल्डर में लिख नहीं पाया। कोई एक उपाय आज़माएँ, फिर लॉन्चर दोबारा चलाएँ:

  1. अपने टर्मिनल पर राइट-क्लिक करें, Run as administrator चुनें, और लॉन्चर चलाएँ।
  2. pnpm खुद इंस्टॉल करें: npm install -g pnpm@12.15.0
  3. एडमिनिस्ट्रेटर टर्मिनल में corepack अपडेट करें: npm install -g corepack

pnpm वर्ज़न एरर, या 'pnpm' is not recognized

Marinara pnpm 12.15.0 इस्तेमाल करता है। लॉन्चर आपके लिए सही वर्ज़न ले आता है, और पहले pnpm के पुराने ग्लोबल वर्ज़न को बदलने की ज़रूरत नहीं है। Marinara अपडेट करें (अगर लॉन्चर न कर पाए, तो उसके फ़ोल्डर में git pull चलाएँ), फिर लॉन्चर दोबारा चलाएँ। फिर भी काम न बने, तो ठीक वही वर्ज़न इंस्टॉल करें और लॉन्चर दोबारा चलाएँ:

npm install -g pnpm@12.15.0

Linux: इंस्टॉल के दौरान ERR_PNPM_ENAMETOOLONG

किसी पुराने इंस्टॉल ने लंबे फ़ोल्डर पथ पीछे छोड़ दिए हैं। Marinara फ़ोल्डर से यह चलाएँ:

rm -rf node_modules .pnpm .pnpm-store

फिर ./start.sh दोबारा चलाएँ। हाथ से किए गए इंस्टॉल में pnpm install चलाएँ।

इंस्टॉल में "Ignored build scripts: @google/genai" दिखता है

यह नोटिस नुकसान नहीं करता। pnpm approve-builds न चलाएँ, क्योंकि यह Marinara की ट्रैक की जाने वाली एक फ़ाइल बदल देता है। अगर अपडेट के बाद भी नोटिस दिखता रहे, तो Marinara फ़ोल्डर में node_modules/.modules.yaml हटा दें और लॉन्चर दोबारा चलाएँ।

इंस्टॉल के दौरान ERR_PNPM_TRUST_DOWNGRADE

यह लगभग हमेशा अधूरे इंस्टॉल की वजह से होता है। लॉन्चर दोबारा चलाएँ। हाथ से किए गए इंस्टॉल में Marinara फ़ोल्डर से यह चलाएँ:

pnpm --config.trustPolicy=off --config.confirmModulesPurge=false install --frozen-lockfile

बिल्ट-इन मॉडल की समस्याएँ

Built-in model (बिल्ट-इन मॉडल) बिना API कुंजी के आपके कंप्यूटर पर चलता है। कुछ एरर संदेशों में इसे sidecar कहा जाता है। सेटअप के लिए बिल्ट-इन मॉडल का सेटअप देखें।

मेमोरी और सारांश

Memory Recall कुछ याद नहीं रखता

Memory Recall (मेमोरी रिकॉल) पिछले संदेशों में खोजता है और सबसे मिलते-जुलते संदेश वापस प्रॉम्प्ट में जोड़ देता है।

  1. Chat Settings → Memory Recall खोलें और पक्का करें कि Enable Memory Recall चालू है।
  2. Access memories for this chat खोलें। Memories for This Chat में हर चंक की स्थिति देखें।
  3. Waiting for vector का मतलब है कि याद अभी प्रोसेस हो रही है। रुकें, फिर दोबारा चैट करें।
  4. Embedding unavailable का मतलब है कि कोई एम्बेडिंग सोर्स काम नहीं कर रहा। कोई एम्बेडिंग अकाउंट सेट करें, या बिल्ट-इन मॉडल को लोड होने दें। हर चैट के लिए एक ही सोर्स इस्तेमाल करना हो, तो Connections के Defaults (डिफ़ॉल्ट) सेक्शन में Embeddings (एम्बेडिंग) के नीचे उसे चुनें।

कोई याद बनने से पहले कम से कम 5 नए संदेश चाहिए। रिकॉल सिर्फ़ वही यादें दिखाता है जो आपके नए संदेश से काफ़ी मिलती-जुलती हों, इसलिए यादें मौजूद होने पर भी कुछ न मिलना मुमकिन है।

Advanced Memory कहता है कि सीन पर ध्यान देना ज़रूरी है

Chat Settings बटन पर स्थिर बिंदु, या यह नोटिस कि Advanced Memory को समस्याएँ मिली हैं, बताता है कि कुछ सीन की यादें अस्पष्ट, पुरानी पड़ चुकी या गायब हैं।

  1. Chat Settings → Memory Recall खोलें, या नोटिस में Fix (ठीक करें) पर क्लिक करें।
  2. Fix पर क्लिक करें। यह सहायक मॉडल से हर वह सीन ठीक करता है जिसे ठीक किया जा सकता है, और आपके एडिट किए सारांश कभी नहीं बदलता।
  3. need your review (आपकी समीक्षा ज़रूरी) के नीचे हर सीन नंबर चुनें, Access memories for this chat में उसका टेक्स्ट और कैरेक्टर जाँचें, और Save correction (सुधार सेव करें) पर क्लिक करें।

अगर Fix किसी एरर पर रुक जाए, तो सहायक मॉडल का अकाउंट जाँचें, फिर Resume processing (प्रोसेसिंग फिर शुरू करें) या दोबारा Fix पर क्लिक करें। देखें मेमोरी की समस्याएँ ठीक करना।

सारांश नहीं बन रहे

सारांश के लिए एक चालू टेक्स्ट अकाउंट चाहिए।

डाउनलोड किए जाने वाले एजेंट की समस्याएँ

Card Browser की समस्याएँ

Card Browser (कार्ड ब्राउज़र) पब्लिक कैरेक्टर साइटें खोजता है। इसे Characters (कैरेक्टर) या Personas (पर्सोना) पैनल के ऊपर मौजूद Download (डाउनलोड) बटन से खोलें।

मीडिया जेनरेशन की समस्याएँ

जटिल सीन में स्प्राइट का बैकग्राउंड ठीक से नहीं हटता

जेनरेट किए गए स्प्राइट आम तौर पर नेटिव ट्रांसपेरेंसी या सपाट बैकग्राउंड इस्तेमाल करते हैं, जिसे Marinara हटा देता है। फ़ोटो खींचा हुआ कमरा, बारीक नज़ारा, गहरी परछाइयाँ, या बैकग्राउंड से मिलते रंग होने पर वैकल्पिक AI फ़ॉलबैक की ज़रूरत पड़ सकती है:

pnpm backgroundremover:install

फिर Marinara दोबारा शुरू करें और स्प्राइट जेनरेशन विंडो में Reapply Cleanup पर क्लिक करें। Marinara पहले बिल्ट-इन क्लीनअप आज़माता है और AI मॉडल तभी इस्तेमाल करता है जब किनारा एक-सा न दिखे। इंस्टॉल फ़ेल हो जाए तो:

Game Mode या Roleplay के स्टोरीबोर्ड नहीं दिखते

स्टोरीबोर्ड पूरे हो चुके नैरेशन को कीफ़्रेम इमेज और वैकल्पिक क्लिप में बदलते हैं। देखें Storyboard एजेंट गाइड और Game Mode: शुरुआत।

Game Mode की वर्ल्ड जेनरेशन में JSON एरर दिखती है

अगर मॉडल टूटा हुआ JSON (संरचित टेक्स्ट) लौटाए, तो Marinara टर्न फेंकने के बजाय Repair JSON विंडो खोलता है।

  1. एडिटर में ब्रैकेट, कॉमा या फ़ील्ड ठीक करें। टेक्स्ट सही पार्स होने पर बैनर में JSON is valid. दिखता है।
  2. लेआउट सुधारने के लिए Format पर क्लिक करें।
  3. जवाब दोबारा जेनरेट किए बिना उसे इस्तेमाल करने के लिए Apply Repaired JSON पर क्लिक करें।

वॉइस, कॉल और TTS

रिमोट या नेटवर्क इंस्टॉल पर Music DJ का Spotify लॉगिन फ़ेल होता है

Music DJ एजेंट का Spotify मोड OAuth इस्तेमाल करता है। यह लॉगिन का एक हैंडऑफ़ है, जिसमें Spotify आपको एक कॉलबैक पते (रीडायरेक्ट URI) पर वापस भेजता है। Spotify सिर्फ़ https:// पते या http://127.0.0.1 स्वीकार करता है, और सादे नेटवर्क IP पते ठुकरा देता है।

सबसे साफ़ हल यही है कि Marinara को HTTPS पर चलाया जाए।

स्टोरेज और डेटा

Restart Server के बाद सर्वर वापस नहीं आता

Marinara को start.bat, start-local.bat, start.sh, start-termux.sh या pnpm start से शुरू करें। ये सर्वर को उसके लॉन्चर से जोड़े रखते हैं और पुराने प्रोसेस के बंद होने के बाद नया शुरू करते हैं। ऐप के अंदर से रीस्टार्ट करने पर चार सेकंड बाद बचे हुए कनेक्शन बंद किए जाते हैं और आठ सेकंड बाद प्रोसेस ज़बरन बंद होता है। ज़बरन बंद होने से लंबित लिखने के काम बीच में रुक सकते हैं। सीधे node से चलाए गए प्रोसेस और डेवलपमेंट वॉचर बदले नहीं जाते: उन्हें खुद रोकें और फिर शुरू करें। Docker अपनी कंटेनर रीस्टार्ट नीति इस्तेमाल करता है। Windows पर लॉन्चर कंसोल में <kbd>Ctrl</kbd>+<kbd>C</kbd> दबाएँ और उसे बंद करने से पहले Shutdown complete का इंतज़ार करें।

जब तक पहला सर्वर चल रहा हो, उसी डेटा फ़ोल्डर पर दूसरा सर्वर शुरू न करें। पहले बचा हुआ प्रोसेस बंद करें।

स्टार्टअप कहता है कि कोई दूसरा प्रोसेस डेटा डायरेक्टरी इस्तेमाल कर रहा हो सकता है

किसी लोकल डेटा फ़ोल्डर में सिर्फ़ एक सर्वर लिख सकता है। अगर स्टार्टअप उस फ़ोल्डर के लिए Another Marinara Engine process ... may be using दिखाए, तो दूसरा Marinara प्रोसेस बंद करें और फिर से शुरू करें।

क्रैश के बाद या Docker वॉल्यूम खिसकाने के बाद स्टार्टअप The storage writer lease ... is incomplete or invalid दिखा सकता है, या ऐसे प्रोसेस का नाम दे सकता है जो अब मौजूद नहीं है।

  1. पक्का करें कि उस डेटा फ़ोल्डर को इस्तेमाल करने वाले सारे Marinara प्रोसेस और कंटेनर बंद हैं।
  2. सिर्फ़ एरर में बताया गया .writer-lease फ़ोल्डर हटाएँ।
  3. Marinara रीस्टार्ट करें। storage फ़ोल्डर या कोई टेबल फ़ाइल न हटाएँ।

जब डेटा फ़ोल्डर लोकल ड्राइव पर हो, तो Linux, Android, कंटेनर और Windows पर Marinara क्रैश हुए प्रोसेस की छोड़ी गई लीज़ अपने आप हटा देता है। नेटवर्क या शेयर्ड स्टोरेज, हटाई जा सकने वाली ड्राइव, और (Windows पर) क्रैश के बाद नया नाम पाए कंप्यूटर के लिए मैन्युअल स्टेप ही फ़ॉलबैक है।

बैकअप या एक्सपोर्ट पर 403 आता है

उसी कंप्यूटर के सेशन बिना एडमिन सीक्रेट के बैकअप बना सकते हैं। किसी दूसरे डिवाइस, नेटवर्क पते, Docker, या उसी कंप्यूटर पर चल रही प्रॉक्सी या टनल से आई रिक्वेस्ट को सीक्रेट चाहिए। इसे सर्वर के अपने कंप्यूटर पर Settings → Advanced → Admin Access में बनाएँ, या सर्वर पर ADMIN_SECRET सेट करें, फिर वही वैल्यू दूसरे डिवाइस पर Admin Access में सेव करें। लूपबैक पर भी इसे ज़रूरी करना हो, तो MARINARA_REQUIRE_ADMIN_SECRET_ON_LOOPBACK=true सेट करें। अगर REQUIRE_AUTH_FOR_LOOPBACK_PROXY=false है, तो आगे भेजे गए विज़िटर को भी लोकल छूट मिलती है। पब्लिक प्रॉक्सी या टनल के लिए इसे चालू रखें।

इंपोर्ट कहता है कि फ़ाइल पढ़ने लायक ZIP आर्काइव नहीं है

Marinara .charx कार्ड, .marinara पैकेज, एजेंट पैकेज और कस्टम एजेंट रिपॉज़िटरी को ZIP आर्काइव के रूप में पढ़ता है। जो आर्काइव खराब हो, या जिसकी सामग्री उसकी फ़ाइल लिस्ट से मेल न खाए, उसे Marinara The file is not a readable ZIP archive (या Could not read .marinara package) के साथ ठुकरा देता है। आम तौर पर इसकी वजह अधूरा डाउनलोड होती है: फ़ाइल दोबारा डाउनलोड करें। अगर आर्काइव आपने खुद बनाया है, तो उसे अपने सिस्टम के कंप्रेस करने वाले विकल्प, zip या 7-Zip से दोबारा बनाएँ।

Package contains too many files का मतलब है कि किसी एजेंट पैकेज या रिपॉज़िटरी में 8,192 से ज़्यादा फ़ाइलें हैं। .marinara package has too many entries का मतलब है कि किसी .marinara पैकेज में 8 से ज़्यादा फ़ाइलें हैं। फ़ालतू फ़ाइलें हटाएँ और फिर से कोशिश करें।

Conversation शेड्यूल या Noodle गलत टाइमज़ोन इस्तेमाल करते हैं, या Etc/Unknown दिखाते हैं

Conversation शेड्यूल के लिए Conversation Chat Settings या किसी कैरेक्टर के शेड्यूल एडिटर में Schedule timezone चुनें। Use device से यह रीसेट होता है।

Noodle या सर्वर के दूसरे कामों के लिए .env से कोई भी खाली TZ= लाइन हटाएँ और Marinara दोबारा शुरू करें, ताकि वह होस्ट का टाइमज़ोन इस्तेमाल करे। टाइमज़ोन खुद सेट करना हो, तो TZ=Europe/Warsaw जैसा IANA नाम इस्तेमाल करें।

Android की समस्याएँ

Android ऐप Connecting या Waiting for Server पर अटक जाता है

Android ऐप, Termux के ऊपर एक छोटा सा खोल है। Termux, Android का एक Linux टर्मिनल ऐप है, जो असली Marinara सर्वर चलाता है।

  1. Install / Start Marinara पर टैप करें।
  2. अगर Android, Termux इंस्टॉल करने को कहे, तो पूछे जाने पर मंज़ूरी दें।
  3. अगर Android, Termux में कमांड चलाने की अनुमति माँगे, तो अनुमति दें।
  4. लॉन्चर के सर्वर शुरू करने का इंतज़ार करें, फिर ऐप पर लौटें।

ऐप अपना निजी localhost क्रेडेंशियल बनाता है और अपने आप साइन इन करता है। आपको कभी कोई सीक्रेट पेस्ट नहीं करना पड़ता। CSRF_TRUSTED_ORIGINS में null, http://null या APK का सीक्रेट न जोड़ें।

यह भी पक्का करें कि ऐप और Termux एक ही पोर्ट इस्तेमाल करते हैं। डिफ़ॉल्ट 7860 है। अगर आपने ऐप किसी दूसरे पोर्ट के साथ बनाया है, तो Termux की .env में वही PORT सेट करें।

Android localhost लॉगिन पेज खोलता है या 401/503 लौटाता है

APK से मैनेज किए गए Termux इंस्टॉल localhost को हर इंस्टॉल के अलग निजी सीक्रेट से सुरक्षित करते हैं, और ऐप अपने आप साइन इन करता है। अगर ऐप के अंदर लॉगिन पेज दिखे, तो नया APK इंस्टॉल करें, फिर से Install / Start Marinara पर टैप करें और Termux का काम पूरा होने पर लौटें।

ऑरिजिन null का नाम लेने वाली एरर का मतलब है कि APK और सर्वर की जोड़ी पुरानी है। .env बदलने से यह ठीक नहीं हो सकता। APK और Marinara अपडेट करें।

उसी फ़ोन पर ब्राउज़र खोलने के लिए Android लॉन्चर में Open in browser (ब्राउज़र में खोलें) पर टैप करें, फिर Retry connection (कनेक्शन फिर आज़माएँ) पर। सर्वर रीस्टार्ट होने या सेशन खत्म होने के बाद इसे इसी तरह दोबारा खोलें। लॉन्चर पर लौटने के लिए Settings → General → App Behavior → Open Android launcher (app or browser) (सेटिंग्स → जनरल → ऐप का व्यवहार → Android लॉन्चर खोलें (ऐप या ब्राउज़र)) इस्तेमाल करें।

पुराने APK cat ~/.marinara-engine/android-secret से मिली वैल्यू के साथ /android-login पर साइन इन करते हैं। ब्राउज़र लिंक एक ही बार काम करता है और एक मिनट बाद एक्सपायर हो जाता है, इसलिए लॉन्चर से नया लिंक खोलें।

लोकल mari कमांड वही फ़ाइल अपने आप पढ़ती है। सीक्रेट को स्क्रीनशॉट और इश्यू रिपोर्ट से बाहर रखें।

Android अपडेट exit status 134 पर रुक जाता है

बिल्ड के किसी चरण में Android की मेमोरी खत्म हो गई। लॉन्चर दोबारा चलाएँ:

./start-termux.sh

फिर भी रुक जाए, तो दूसरे ऐप बंद करें, Termux दोबारा खोलें और फिर कोशिश करें।

Marinara चलते समय Termux बंद या रीस्टार्ट हो जाता है

सर्वर चलने के दौरान लॉन्चर wake lock माँगता है और हर सेशन को ~/.marinara-engine/logs/ में सेव करता है। अचानक रीस्टार्ट के बाद रिपोर्ट में सबसे नई server-*.log फ़ाइल जोड़ें। अगर फ़ाइल के अंत में Marinara या Node की एरर नहीं है, तो संभवतः Android या फ़ोन निर्माता ने Termux को बंद किया था।

Android सेटिंग्स में Termux को बैकग्राउंड में चलने दें और उसके लिए बैटरी ऑप्टिमाइज़ेशन हटाएँ। termux-wake-lock और termux-wake-unlock मानक Termux के साथ आते हैं। ये सेटिंग्स निर्माता के हर तरह के प्रोसेस किल को नहीं रोक सकतीं।

Termux को फ़ोरग्राउंड में लाने तक Marinara जवाब देना बंद कर देता है

चैट "Opening chat..." पर अटकी रहती हैं, ऐप Server unreachable बताता है, Support Diagnostics की कॉपी में सर्वर वाली फ़ील्ड पर Unreachable (request timed out) दिखता है, और Termux खोलते ही सब कुछ ठीक हो जाता है। Android के cached-app freezer ने Termux प्रोसेस को रोक दिया है। फ़ोन कनेक्शन तो स्वीकार कर लेता है, पर फ़्रीज़ हुआ सर्वर कभी जवाब नहीं देता। wake lock इसे नहीं रोकता। सेशन लॉग में एरर के बजाय फ़्रीज़ वाले समय के टाइमस्टैम्प में खाली अंतराल दिखता है।

Termux को बैटरी ऑप्टिमाइज़ेशन से छूट दें, उसे बैकग्राउंड में चलने की अनुमति दें, अगर आपका फ़ोन सपोर्ट करता है तो हाल के ऐप्स वाली स्क्रीन में Termux को लॉक करें, और उसकी नोटिफ़िकेशन दिखती रहने दें। फिर भी फ़्रीज़ होता रहे, तो Marinara इस्तेमाल करते समय Termux को फ़ोरग्राउंड में रखें या स्क्रीन चालू रखें।

डिपेंडेंसी इंस्टॉल करते समय Android अपडेट की जगह खत्म हो जाती है

अपडेट के दौरान अस्थायी रूप से बहुत जगह घिरने की वजह आमतौर पर pnpm का डिपेंडेंसी स्टोर होता है, खास तौर पर कई रिलीज़ के बाद या बीच में रुके रीइंस्टॉल के बाद। मौजूदा लॉन्चर पुराने पैकेज हटा देता है, और ऐप के अंदर होने वाले अपडेट सिर्फ़ Android वाले पैकेज इंस्टॉल करते हैं। अगर किसी पुराने लॉन्चर ने डिवाइस भर दी है, तो जगह खाली करें और फिर कोशिश करें:

cd Marinara-Engine
git pull --ff-only
pnpm store prune
./start-termux.sh

data, storage या marinara-engine.db न हटाएँ, क्योंकि इनमें आपकी चैट और सेटिंग्स हो सकती हैं। फिर भी रुक जाए, तो Installing dependencies से आगे की लाइनें कॉपी करें और रिपोर्ट में फ़ोन की खाली जगह और मेमोरी भी बताएँ।

Android पर Stable और Staging के बीच बदलने पर इन-ऐप अपडेट फ़ेल होता है

चैनल बदलने पर लगभग पूरी डिपेंडेंसी दोबारा इंस्टॉल होती है, जो Termux के स्टोरेज पर धीमी होती है। इन-ऐप अपडेटर हर चरण को अतिरिक्त समय देता है। अगर अपडेट फिर भी फ़ेल हो, तो एरर फ़ेल हुए चरण का नाम बताती है और उसके आउटपुट का आखिरी हिस्सा दिखाती है। डिपेंडेंसी या लॉकफ़ाइल की असली एरर वहीं दिखती है। आप एरर के संकेत में दी गई कमांड से Termux में हाथ से भी अपडेट कर सकते हैं, या पहले जगह खाली कर सकते हैं:

cd Marinara-Engine
pnpm store prune
./start-termux.sh

Docker की समस्याएँ

वॉल्यूम माउंट पर कंटेनर की परमिशन एरर

Raspberry Pi 4 पर Lite कंटेनर क्रैश होता है

अगर Raspberry Pi 4 या उस जैसे किसी ARM डिवाइस पर lite इमेज हर AI रिक्वेस्ट भेजते ही रीस्टार्ट हो जाए, तो एग्ज़िट कोड देखें। Exit 132 या SIGILL (CPU को ऐसा निर्देश मिला जिसे वह चला नहीं सकता) कुछ ARM चिप पर lite इमेज के Node बिल्ड की एक जानी-पहचानी अपस्ट्रीम गड़बड़ी की ओर इशारा करता है। उस डिवाइस पर सामान्य इमेज इस्तेमाल करें।

कोई Server Extension कहता है कि सपोर्टेड सैंडबॉक्स उपलब्ध नहीं है

Server Extensions और Professor Mari के रॉ शेल कमांड सिर्फ़ macOS Seatbelt या Linux Bubblewrap के साथ चलते हैं। नेटिव Linux होस्ट पर bwrap इंस्टॉल करें और Marinara दोबारा शुरू करें। आधिकारिक Docker इमेज में Bubblewrap शामिल है, लेकिन डिफ़ॉल्ट कंटेनर उसके नेस्टेड नेमस्पेस नहीं बना सकता, इसलिए Marinara ये सुविधाएँ बंद रखता है।

अगर आपको कंटेनर के ज़्यादा बड़े अधिकार मंज़ूर हैं, तो इसे docker-compose.yml के बगल में docker-compose.override.yml नाम से सेव करें, फिर कंटेनर दोबारा बनाएँ:

services:
  marinara:
    environment:
      MARINARA_DOCKER_USER: root
    cap_add:
      - SYS_ADMIN
    security_opt:
      - apparmor=unconfined

Warning: सर्वर को SYS_ADMIN के साथ और बिना AppArmor प्रोफ़ाइल के root के रूप में चलाना अधिकारों में बड़ी बढ़ोतरी है। सिर्फ़ यह संदेश छिपाने के लिए इसे चालू न करें।

Docker की डिफ़ॉल्ट seccomp प्रोफ़ाइल जोड़ी गई क्षमताओं के हिसाब से ढल जाती है, इसलिए मौजूदा Docker पर seccomp=unconfined की ज़रूरत नहीं होनी चाहिए।

Windows, Android और दूसरे असमर्थित होस्ट Server Extension चलाने से मना कर देते हैं। Browser Extensions फिर भी अपने सैंडबॉक्स में चलते हैं।

एक्सटेंशन की समस्याएँ

Addons में External Extensions नहीं दिखता

यह सेक्शन तब तक छिपा रहता है जब तक दोनों गेट न खुल जाएँ।

  1. होस्ट की .env में ENABLE_EXTERNAL_EXTENSIONS=true सेट करें।
  2. थोड़ा रुकें, फिर Settings → Advanced → Danger Zone (सेटिंग्स → एडवांस्ड → डेंजर ज़ोन) खोलें, डेटा मिटाने वाले कंट्रोल से नीचे स्क्रॉल करें, और Allow third-party extension imports चालू करें।

अगर स्विच दबाया न जा सके, तो होस्ट का फ़्लैग अब भी false है या ऐप ने बदलाव नहीं देखा है। पक्का करें कि आपने वही चालू .env फ़ाइल बदली है जो सर्वर कॉन्फ़िगरेशन में बताई गई है। Docker पर यह आमतौर पर /app/data/.env होती है।

जब तक कोई भी गेट बंद है, बाहरी एक्सटेंशन के रिकॉर्ड न दिखते हैं, न चल सकते हैं। गेट दोबारा खोलने पर वे अपने आप चालू नहीं होते।

इंपोर्ट किया गया ब्राउज़र एक्सटेंशन दिखता तो है, पर काम नहीं करता

Settings → Addons → External Extensions (सेटिंग्स → ऐडऑन → बाहरी एक्सटेंशन) में उसे खोलें और Requested access पढ़ें। क्षमताओं की घोषणा के बिना वाले पुराने marinara.extension v1 पैकेज Full page access दिखाते हैं। सिर्फ़ उसी हैश को मंज़ूरी दें जिसे आपने खुद जाँचा हो और जिस पर आपको भरोसा हो।

क्षमताओं की खाली लिस्ट के साथ दोबारा एक्सपोर्ट किया गया पैकेज सुरक्षित सैंडबॉक्स एक्सटेंशन माना जाता है, और पेज के DOM पर निर्भर कोड काम नहीं करेगा। उसके मैनिफ़ेस्ट में full_page_access तभी जोड़ें जब आपको मंज़ूर हो कि उस कोड को पूरा पेज, ब्राउज़र स्टोरेज, नेटवर्क API और आपका सेशन मिल जाएगा।

फ़ुल पेज वाला एक्सटेंशन बंद करने के बाद अगर कोई टूलबार आइटम, ओवरले या लिसनर बचा रह जाए, तो Marinara दोबारा लोड करें। सफ़ाई पूरी होगी, इसकी गारंटी नहीं, क्योंकि पेज का कोड ऐसे असर छोड़ सकता है जिन्हें Marinara ट्रैक नहीं करता।

मल्टीप्लेयर कनेक्शन या टर्न की समस्याएँ

लक्षणहल
कंट्रोल उपलब्ध नहींसही Marinara की .env में MULTIPLAYER_ENABLED=true डालें, उसे रीस्टार्ट करें, फिर सेटिंग अलग से चालू करें। Android नेटिव रैपर जॉइन नहीं कर सकता।
होस्ट उपलब्ध नहींअलग और पहुँच में आने वाला HTTPS रूम पोर्ट, सही सर्टिफ़िकेट चेन और होस्टनेम, और निमंत्रण से मेल खाता फ़िंगरप्रिंट इस्तेमाल करें। TLS जाँच बंद न करें, भरोसेमंद ऑरिजिन में null न जोड़ें, सामान्य API बाहर न खोलें, और होस्ट का दिया हुआ क्लाइंट न खोलें।
मंज़ूरी का इंतज़ारहोस्ट को Players में आपको मंज़ूरी देनी होगी। मंज़ूरी से पहले आपको कोई इतिहास नहीं दिखता। निमंत्रण की समय-सीमा खत्म हो गई हो, तो नया माँगें।
डिस्कनेक्टअपना Marinara चालू रखें। सेशन चालू रहने तक यह उसी होस्ट से दोबारा जुड़ता है, और न भेजे गए ड्राफ़्ट बने रहते हैं। रीस्टार्ट के बाद फिर से जॉइन करें। वही पर्सोना नाम रखना हो, तो पहले होस्ट से अपनी पुरानी सीट हटाने को कहें।
Game इंतज़ार कर रहा हैPlayers खोलें। डिस्कनेक्ट हुए खिलाड़ी अपने आप पास नहीं होते। होस्ट Pass, Kick या Pause चुन सकता है।
जेनरेशन बीच में रुकीराउंड दोबारा न भेजें। होस्ट सेव हुआ नैरेशन और स्थिति जाँचे, फिर रूम आगे बढ़ाए या बंद करे। मल्टीप्लेयर किसी अस्पष्ट रिक्वेस्ट को कभी दोबारा नहीं चलाता और दुनिया पर उसका असर दो बार लागू नहीं करता।
कमांड पर रोक या मीडिया गायबरूम सिर्फ़ टेक्स्ट ले जाते हैं। कंपैटिबिलिटी तालिका देखें। किसी साथी की दी हुई फ़ाइल या एक्सटेंशन इंस्टॉल न करें।

कनेक्शन एरर रिपोर्ट करते समय मोड, प्लैटफ़ॉर्म, दिखने वाली एरर और मंज़ूरी काम आई या नहीं, यह भी बताएँ। निमंत्रण, रूम के पासवर्ड, सेशन टोकन, निजी इतिहास या API कुंजियाँ पोस्ट न करें।

लॉगिन के पीछे Android Chrome पर PWA के रूप में इंस्टॉल करना फ़ेल होता है

HTTPS वाला पता इस्तेमाल करें, साइन इन करें, और Marinara अपडेट करने के बाद पेज रीलोड करें। ऐप अपना मैनिफ़ेस्ट क्रेडेंशियल के साथ माँगता है, इसलिए लॉगिन चालू रह सकता है। अगर इंस्टॉल का विकल्प अब भी उपलब्ध न हो, तो देखें कि आपकी प्रॉक्सी /manifest.json को लॉगिन पेज या एरर के बजाय JSON के रूप में भेजती है।

ज़्यादा मदद पाना

  1. Settings → Advanced → Message Tools (सेटिंग्स → एडवांस्ड → संदेश टूल) खोलें और Debug mode चालू करें। यह प्रॉम्प्ट और जवाब को सर्वर कंसोल में लॉग करता है।
  2. अपना ऑपरेटिंग सिस्टम, Node.js वर्ज़न और कंसोल से पूरी एरर का टेक्स्ट नोट करें।
  3. कुछ भी साझा करने से पहले API कुंजियाँ, एक्सेस टोकन, एडमिन सीक्रेट और निजी चैट की सामग्री हटा दें।

फिर कम्युनिटी से पूछें:

मिलती-जुलती गाइड

GitHub से बने सोर्स आर्काइव के बाइट हमेशा एक जैसे रहेंगे, इसकी कोई गारंटी नहीं, भले ही उनके कमिट की सामग्री न बदले। मेल न खाने की समस्या को कभी इस तरह "ठीक" न करें कि यूज़र की मशीन पर दिखे बाइट स्वीकार कर लिए जाएँ या वेरिफ़िकेशन कमज़ोर कर दिया जाए। रनटाइम इनपुट दोबारा पिन करना सिर्फ़ रिव्यू किए गए Engine बदलाव में ही करें:

  1. कोई न बदलने वाला अपस्ट्रीम रिविज़न या रिलीज़ एसेट चुनें और अपस्ट्रीम के बदलाव रिव्यू करें।
  2. आर्टिफ़ैक्ट को किसी अस्थायी फ़ोल्डर में डाउनलोड करें, उसके बाइट की सटीक गिनती नोट करें, और उसका SHA-256 डाइजेस्ट अलग से निकालें।
  3. runtime-integrity-manifest.ts में रिविज़न, URL, साइज़ और डाइजेस्ट अपडेट करें। MLX के लिए Apple Silicon/Python 3.12 पर पिन किए गए uv वर्ज़न के साथ packages/server/src/assets/mlx-runtime-requirements.lock को उसकी .in फ़ाइल से दोबारा बनाएँ, हर डिपेंडेंसी बदलाव रिव्यू करें, और requirementsLockSha256 अपडेट करें।
  4. pnpm regression:runtime-integrity, pnpm check चलाएँ, और प्रभावित प्लैटफ़ॉर्म पर एक असली, साफ़ रनटाइम इंस्टॉलेशन करके देखें।
  5. यूज़र से दोबारा कोशिश करने को कहने से पहले रिव्यू किया हुआ Engine अपडेट रिलीज़ करें। चेकसम को हाथ से बदलने का विकल्प न दें।