साझा स्मृति और ब्लैकबोर्ड पैटर्न
Type: Learn + Build
Languages: Python (stdlib, threading)
Prerequisites: Phase 16 · 04 (Primitive Model), Phase 16 · 09 (Parallel Swarm Networks)
Time: ~75 minutes
समस्या
मल्टी-एजेंट सिस्टम को एजेंटों के लिए तथ्यों को साझा करने के लिए एक स्थान की आवश्यकता होती है। एक शाब्दिक विकल्प "संदेशों में सब कुछ पारित करना" है लेकिन जो अतिरिक्त प्रतिलिपि के साथ साझा राज्य को फिर से आविष्कार करता है। एक और "हर किसी को एक वैश्विक लॉग दें" लेकिन वैश्विक लॉग असीमित बढ़ते हैं और आसानी से जहर देते हैं। एक तीसरा है "एजेंट पर एक दृश्य परियोजना" स्केलेबल लेकिन स्कीमा-भारी।
जब किसी एजेंट ने हलुसिनाशन किया और यह हलुसिनाशन साझा स्थिति में लिखा, तो उस स्थिति को पढ़ने वाला प्रत्येक डाउनस्ट्रीम एजेंट हलुसिनाशन को तथ्य के रूप में अपनाता है। जब तक मानव नोटिस करता है, तब तक तर्क श्रृंखला पांच कदम गहराई से है और मूल कारण कभी लिखा गया तीसरा संदेश है। मल्टी-एजेंट सटीकता गिरावट को डिबग करना दुर्घटना को डिबग करने से अधिक कठिन है।
यह मेमोरी विषाक्तता है। यह MAST टैक्सोनोमी में दूसरा सबसे अधिक प्रलेखित विफलता परिवार है (Cemri et al., arXiv:2503.13657) और यह संरचनात्मक हैः मूल के बिना किसी भी साझा-स्मृति डिजाइन और एक अलिखित सत्यापनकर्ता इसे अंततः प्रदर्शित करेगा।
अवधारणा
दो मुख्य टॉपलॉजीज
Full message pool.प्रत्येक एजेंट हर संदेश पढ़ता है। ऑटोजेन ग्रुपचैट और मेटाजीपीटी इस का उपयोग करते हैं। सरल, पारदर्शी, निरीक्षण योग्य, लेकिन ~ 10 एजेंटों से परे नहीं स्केल करता है क्योंकि प्रत्येक एजेंट का संदर्भ अन्य एजेंटों के काम से भर जाता है।
agent-A ──write──▶ ┌────────────────┐ ◀──read── agent-D
│ message pool │
agent-B ──write──▶ │ │ ◀──read── agent-E
│ (global log) │
agent-C ──write──▶ └────────────────┘ ◀──read── agent-FBlackboard with subscription.एजेंट विषयों में रुचि व्यक्त करते हैं; सब्सट्रेट मार्ग केवल प्रासंगिक संदेशों का उपयोग करते हैं। CA-MCP (arXiv:2601.11595) और मैट्रिक्स विकेंद्रीकृत ढांचे (arXiv:2511.21686) इसका उपयोग करते हैं। आगे पैमाने पर, लेकिन सदस्यता को सार्थक बनाने के लिए अग्रिम योजना डिजाइन की आवश्यकता होती है।
┌─ topic: prices ──┐
agent-A ──pub────▶ │ │ ──▶ agent-D (subscribed)
├─ topic: orders ──┤
agent-B ──pub────▶ │ │ ──▶ agent-E (subscribed)
├─ topic: alerts ──┤
agent-C ──pub────▶ │ │ ──▶ agent-F (subscribed)
└──────────────────┘जब हर एक जीतता है
- Full poolजब एजेंट कम (< 10) होते हैं, तब वे सफल होते हैं, जब वे विषम होते हैं और बातचीत छोटी होती है।
- Blackboardजब एजेंट कई होते हैं, तो भूमिका समान होती है लेकिन उदाहरण में कई होते हैं (स्वर्म्स), और बातचीत लंबी होती है। रूटिंग टोकन लागत और संदर्भ प्रदूषण को बचाता है।
उत्पादन प्रणालियों को अक्सर मिश्रित किया जाता हैः ऊपर एक छोटा पूरा पूल (योजना स्तर), नीचे ब्लैकबोर्ड (कार्यकर्ता स्तर) ।
एक परिदृश्य में स्मृति विषाक्तता
तीन एजेंट अनुसंधान कार्य पर काम करते हैं एजेंट ए एक खोज एजेंट है एजेंट बी एक संक्षेपकर्ता है एजेंट सी एक विश्लेषक है
- एक पृष्ठ लाता है और साझा स्टेटस को एक संदेश लिखता हैः "अध्ययन में 42% सटीकता में सुधार की रिपोर्ट है।"
- प्राप्त पृष्ठ वास्तव में कहा "4.2% सुधार।" एक दशमलव का भ्रम।
- B, साझा स्थिति पढ़कर लिखता हैः "बड़ी 42% सटीकता वृद्धि रिपोर्ट (स्रोत: ए) ।"
- सी, साझा राज्य पढ़कर लिखता हैः "अनुशंसा दत्तक 42% वृद्धि परिवर्तनकारी है।"
- अंतिम रिपोर्ट में 42% संख्या का उल्लेख किया गया है जो कभी अस्तित्व में नहीं थी।
कोई एजेंट दुर्घटनाग्रस्त नहीं हुआ, कोई परीक्षण विफल नहीं हुआ, सिस्टम "काम किया" एक एजेंट के संदर्भ से प्रत्येक डाउनस्ट्रीम एजेंट के तर्क में साझा स्थिति के माध्यम से पलायन हुआ।
यह संरचनात्मक क्यों है
बिना साझा स्थिति के, एजेंट ए का भ्रम ए के संदर्भ में रहता है। डाउनस्ट्रीम एजेंट फिर से ले जाएंगे या फिर से व्युत्पन्न होंगे और त्रुटि को पकड़ सकते हैं। भोले साझा स्थिति के साथ, ए का संदर्भ सभी का संदर्भ बन जाता है, और भ्रम वास्तविकता में धोया जाता है।
समस्या साझा राज्य नहीं है यह साझा राज्य है without provenance and without an independent verifierतीन उपाय इस पर ध्यान देते हैंः
- Attribute provenance on every write.साझा राज्य रिकॉर्ड में प्रत्येक प्रविष्टि को किसने लिखा, कब, किस संकेत के तहत, और (यदि लागू हो) एजेंट ने किस स्रोत का हवाला दिया। डाउनस्ट्रीम एजेंटों ने उत्पत्ति के लिए संदेह के साथ पढ़ा।
- Version writes; treat them as append-only.एक सुधार एक नया प्रविष्टि है जो पुराने को बदल देता है, स्थान पर अपडेट नहीं। लेखा परीक्षा ट्रेल संरक्षित है।
- Keep at least one agent that cannot write to shared state.एक केवल-पढ़ने योग्य सत्यापन एजेंट प्रविष्टियों का नमूना लेता है, स्रोतों को फिर से प्राप्त करता है, और असंगतताओं को चिह्नित करता है। क्योंकि यह पूल में नहीं लिख सकता है, इसलिए इसे पूल द्वारा जहर नहीं दिया जा सकता है।
ब्लैकबोर्ड का पूर्वानुमान (हैस-रोथ, 1985)
ब्लैकबोर्ड पैटर्न चार दशकों से एलएलएम एजेंटों से पहले है। हेयर्स-रोथ (1985, "नियंत्रण के लिए एक ब्लैकबोर्ड वास्तुकला") ने विशेषज्ञ ज्ञान स्रोतों का वर्णन किया जो वैश्विक ब्लैकबोर्ड का निरीक्षण करते हैं, आंशिक समाधानों में योगदान देते हैं, और अन्य स्रोतों को ट्रिगर करते हैं। 2026 ब्लैकबोर्ड (CA-MCP, मैट्रिक्स) ज्ञान स्रोतों और आंशिक समाधानों के रूप में JSON ब्लेब के रूप में LLM एजेंटों के साथ एक ही पैटर्न है। पुराने साहित्य में विवाद, अवसरवादी नियंत्रण और सुसंगतता लिखने के लिए समाधानों का दस्तावेजीकरण किया गया है जो आधुनिक प्रणालियों ने फिर से खोज लिया है।
पूर्ण दृश्य के विरुद्ध प्रोजेक्शन
एक शुद्ध ब्लैकबोर्ड प्रत्येक ग्राहक को एक ही प्रोजेक्शन (विषय-विस्तारित) देता है। एक अधिक आक्रामक डिजाइन है per-agent projectionLangGraph के राज्य घटाने वाले 2026 के कैनोनिक कार्यान्वयन हैं घटाने वाला फ़ंक्शन वैश्विक राज्य को भूमिका-विशिष्ट स्लाइस में मोड़ता है।
प्रति एजेंट प्रक्षेपण आगे पैमाने पर है, लेकिन एक योजना की जरूरत है एक के बिना, आप प्रत्येक एजेंट के संकेत में एक तदर्थ प्रक्षेपण पुनर्निर्माण.
लेखन-सामग्री पैटर्न
एक ही समय में कई एजेंट लिखना एक समवर्ती समस्या है, न कि केवल एक एलएलएम समस्या। तीन पैटर्न काम करते हैंः
- Sequential writer (single producer).सभी लिखता है एक समन्वयक एजेंट के माध्यम से जाता है जो serializes. सरल, लेकिन एक बोतल गला.
- Optimistic concurrency with versioning.प्रत्येक प्रविष्टि का एक संस्करण है; लेखक संस्करण असंगतता और पुनः प्रयास करने में विफल रहते हैं। क्लासिक डेटाबेस तकनीक।
- Topic partitioning.अलग-अलग एजेंटों के पास अलग-अलग विषय हैं। कोई क्रॉस-टॉपिक विवाद नहीं है। विभाजन सीमाओं को डिजाइन करने की आवश्यकता है।
अधिकांश 2026 फ्रेमवर्क अनुक्रमिक लेखक के लिए डिफ़ॉल्ट हैं क्योंकि एलएलएम कॉल इतनी धीमी होती हैं कि विवाद दुर्लभ होता है और बोतल गला चोट नहीं पहुंचाता है।
अनलिखी सत्यापनकर्ता
सबसे अधिक भार सहन करने वाली कमीकरण केवल पढ़ने के लिए सत्यापित करने वाला है। कार्यान्वयन नियमः
- सत्यापितकर्ता टीम के साथ राज्य साझा करता है (ब्लैकबोर्ड या पूल पढ़ता है) ।
- सत्यापनकर्ता के पास केवल एक अलग सत्यापन चैनल के लिए साझा राज्य के लिए कोई लेखन हैंडल नहीं है।
- सत्यापनकर्ता स्वतंत्र रूप से स्रोतों को लिखता है।
- सत्यापितकर्ता के स्वयं के आउटपुट को एक मानव या एक अलग निर्णय एजेंट को भेजा जाता है, कभी भी पूल में वापस नहीं दिया जाता है।
इस पृथक्करण के बिना, सत्यापितकर्ता के आउटपुट पूल में नए प्रविष्टियों में बदल जाते हैं, जिसका अर्थ है कि एक जहरयुक्त पूल सत्यापितकर्ता को जहर देता है, जो उसके सत्यापन को जहर देता है।
इसे बनाओ
code/main.pyस्टडीलिब पायथन में दोनों टॉपॉलजी लागू करता है प्लस एक खिलौना जहर हमले और तीन mitigations.
MessagePoolपूर्ण-पढ़ने के साथ केवल धागे-सुरक्षित अनुलग्नक लॉग।Blackboardप्रति एजेंट सदस्यता के साथ विषय-कुंजी पब/सब्।ProvenanceEntryप्रत्येक लेखन रिकॉर्ड (लेखक, समय टिकट, prompt_hash, source_uri) ।PoisoningScenarioतीन एजेंट अनुसंधान कार्य चलाता है जहां एजेंट ए दशमलव का भ्रम बनाता है। अंतिम रिपोर्ट प्रिंट करता है।Verifierएक केवल-पढ़ने वाला एजेंट जो स्रोतों को फिर से प्राप्त करता है और असंगति को चिह्नित करता है। सत्यापनकर्ता मौजूद होने के साथ एक ही परिदृश्य चलाता है।
दौड़ें:
python3 code/main.pyअपेक्षित उत्पादनः
- रन 1 (कोई सत्यापनकर्ता नहीं): भ्रमग्रस्त 42% अंतिम रिपोर्ट तक फैलता है।
- रन 2 (वेरिफायर के साथ): वेरिफायर असंगति को चिह्नित करता है, पूल को "चिह्नित" के साथ लेबल किया जाता है, अंतिम रिपोर्ट में एक वापसी शामिल है।
इसका प्रयोग करें
outputs/skill-memory-auditor.mdयह एक कौशल है जो किसी भी मल्टी-एजेंट सिस्टम के मूल, संस्करण और सत्यापनकर्ता पृथक्करण के लिए साझा स्मृति डिजाइन का ऑडिट करता है। इसे उत्पादन से पहले नए मल्टी-एजेंट वास्तुकला पर चलाएं।
इसे भेजें
किसी भी साझा स्मृति डिजाइन के लिएः
- प्रत्येक लेखन पर मूल दर्ज करें:
(writer, timestamp, prompt_hash, tool_calls_cited, source_uri). . - लॉग को केवल ऐड-ऑन बनाएं। सुधार नए प्रविष्टियों के लिए हैं जो प्रतिस्थापित किए गए को संदर्भित करते हैं।
- स्वतंत्र स्रोत पहुंच के साथ कम से कम एक केवल-पढ़ने योग्य सत्यापन एजेंट को तैनात करें।
- मार्ग सत्यापनकर्ता आउटपुट को एक अलग चैनल में, साझा पूल में वापस नहीं।
- लेखों का अनुपात जो उपवास हैं एक बढ़ता अनुपात है भ्रम पैटर्न के प्रारंभिक सबूत है।
व्यायाम
- दौड़ें
code/main.py. 1 रन में पगलापन फैलता है और 2 रन में उसे पकड़ता है. - एक दूसरा भ्रम जोड़ेंः एजेंट बी एक डेटासेट आकार का आविष्कार करता है। सत्यापितकर्ता को दोनों को पकड़ना चाहिए बिना किसी के लिए हाथ से ट्यून किए जाने के लिए।
- विषय विभाजन के साथ एक बोर्ड पर पूरे पूल स्विच (
prices,summaries,analyses) विषय विभाजन किस विषैले घटनाओं को कठिन बनाता है, और किस घटना में यह मदद नहीं करता है? - हेयर्स-रोथ (1985, "ए ब्लैकबोर्ड आर्किटेक्चर फॉर कंट्रोल") पढ़ें। इस पाठ में चर्चा नहीं किए गए पेपर से दो नियंत्रण पैटर्न की पहचान करें जिनसे 2026 प्रणालियों को लाभ होगा।
- CA-MCP (arXiv:2601.11595) पढ़ें। अपने साझा संदर्भ स्टोर को या तो संदेशपूल या ब्लैकबोर्ड वर्ग में मानचित्रित करें
code/main.py. क्या आदिम CA-MCP ऊपर जोड़ता है?
प्रमुख शर्तें
| Term | What people say | What it actually means |
|---|---|---|
| Message pool | "Shared chat history" | Append-only log that every agent reads. Full transparency, poor scaling. |
| Blackboard | "Shared workspace" | Topic-keyed pub/sub. Agents subscribe to relevant topics. Scales farther. |
| Provenance | "Who wrote what" | Metadata on each write: writer, timestamp, prompt, sources. |
| Memory poisoning | "Hallucinations spreading" | One agent's error enters shared state, downstream agents adopt it as fact. |
| Append-only | "No in-place updates" | Corrections are new entries that supersede. Preserves audit trail. |
| Unwritable verifier | "Independent auditor" | Read-only agent that re-fetches sources and flags inconsistencies. |
| Projection | "Scoped view" | Per-agent view computed from global state. LangGraph reducers are the canonical case. |
| Knowledge Source | "Specialist agent" | Hayes-Roth's 1985 term for a blackboard participant. |
आगे पढ़ना
- Cemri et al. — Why Do Multi-Agent LLM Systems Fail? MAST वर्गीकरण; स्मृति विषाक्तता एक समन्वय-असफलता उप-परिवार है
- CA-MCP — Context-Aware Multi-Server MCP समन्वित MCP सर्वर के लिए साझा संदर्भ भंडारण
- Matrix — decentralized multi-agent framework केंद्रीय ऑर्केस्ट्रेटर के बिना संदेश-सूची आधारित ब्लैकबोर्ड
- LangGraph state and reducers उत्पादन में प्रति एजेंट प्रक्षेपण पैटर्न
- Anthropic — How we built our multi-agent research system उत्पादन तैनाती से प्राप्त प्रवासन और सत्यापन नोट
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.