Skip to main content

هندسة الرسوم البيانية: دورة مكثفة

16 مفهوما · من عمود فقري تقرؤه حلقة واحدة إلى رسم بياني يتشاركه ألف وكيل

تعمل حلقتك. تنطلق كل صباح عند الساعة 9، وتقيدها الحاضنة، وينقل عمودها الفقري، وهو ملف progress.md واحد، ما تعلمته أمس إلى اليوم. حلقة واحدة، وملف ذاكرة واحد. كان ذلك كافيا.

والآن راقب ما يحدث عندما تنجح. تضيف حلقة ثانية، ثم حلقة للمراجعة، ثم توزع العمل في أسبوع مزدحم على عشرين وكيلا لمراجعة عشرين ملفا في الوقت نفسه. يبدأ كل وكيل بنافذة سياق فارغة. ويعيد كل منهم اكتشاف ما وجده وكيل آخر قبل ساعة. ويكتب كل منهم نتائجه في سجل محادثة لن يقرأه أي وكيل آخر. تضاعف العمل، ولم تتضاعف الذاكرة. لقد بنيت فريقا بلا عقل مشترك.

تحل هندسة الرسوم البيانية هذه المشكلة. وتتلخص الفكرة في جملة واحدة: ينسى الوكيل، ولا ينسى الرسم البياني. بدلا من ترك ما يتعلمه الوكلاء حبيس سجلات محادثاتهم، تجعلهم يدونونه في شكل سجلات منظمة ومتصلة، من العقد والحواف، يستطيع أي وكيل لاحق الاستعلام عنها. يؤدي رسمان هذا العمل. يتذكر رسم DAG للإيداعات العمل: ماذا جربنا، وماذا نشأ عن ماذا، وماذا أبقينا. ويتذكر الرسم المعرفي الحقائق: ما الكيانات الموجودة، وكيف ترتبط، وأي مصدر يثبت كل ادعاء. تعلمك هذه الدورة كليهما، مستعينة في الرسم الأول بمشروعي autoresearch وAgentHub لأندريه كارباتي، وفي الثاني باستخدام دليل إنشاء الرسم المعرفي ومسارات العمل الديناميكية من Anthropic، وهي من أوضح الأمثلة الموثقة من عام 2026. ولأن الحلقات نفسها تحتاج أيضا إلى توصيل، يضيف الجزء 5 الرسم الثالث، رسم الحوكمة: من يراجع من، ومن يملك هدف من، وأي مقاييس لا تستطيع أي حلقة مجادلتها.

يجب أن تقرأ أولا: هندسة الحلقات وهندسة الحاضنة. علمتك دورة الحلقات النبضة والعمود الفقري وفصل الصانع عن المدقق والسقاطة. وعلمتك دورة الحاضنة الأفعال الخمسة والمخرجات المنظمة. تفترض هذه الدورة أنك تعرف ذلك كله. كان العمود الفقري ذاكرة خاصة لحلقة واحدة. وتشرح هذه الدورة ما يصير إليه ذلك العمود عندما يجب أن تتشاركه وكلاء عديدون. إذا كانت هذه الكلمات جديدة عليك، فاقرأ تلك الدورات أولا.


📚 وسيلة تعليمية

افتح عرض الشرائح كاملا

اعرض العرض التقديمي كاملا: هندسة الرسوم البيانية: دورة مكثفة

صممت الأشكال العشرة أدناه لتدرس بالترتيب نفسه: يحمل كل شكل مفهوما واحدا، ويمكنه أن يقف منفردا في شريحة.


كل ما في هذه الدورة قابل للتشغيل: استنسخ المختبر أولا

لكل مفهوم أدناه سكربت يمكنك تشغيله ومراقبته، لا مجرد القراءة عنه. تحتاج السكربتات إلى bash وgit وjq وpython3 فقط، ولا تحتاج إلى شيء آخر: لا مفتاح API، ولا pip install، ولا شبكة.

git clone https://github.com/panaversity/agentfactory-labs.git
cd agentfactory-labs/crash-course/graph-eng
./verify.sh # runs all 17 demos and asserts each one

عندما يطبع الأمر Everything in this course runs.، أبق المجلد مفتوحا بجوار هذه الصفحة. ينتهي كل مفهوم بالأمر الواحد الذي يبرهنه: ستشاهد git reset يمسح إيداعا، ومخططا يرفض ردا غير صحيح، ومدققا يطالب بحافة مفقودة، وبوابة قبل الإيداع تمنع مخالفة للمخطط. يربط ملف README للمختبر كل مفهوم بالعرض التوضيحي الخاص به.

موقع هذه الدورة في السلسلة: خمس بطاقات للدورات في صف، تربط بينها أسهم، وتضيف كل بطاقة طبقة واحدة. الأولى، هندسة الحلقات، وكيل واحد يعمل من دونك، وتغطي النبضة والعمود الفقري والسقاطة والصانع والمدقق، ومعلمة بأنها متطلب سابق. الثانية، هندسة الحاضنة، جدران حول ذلك الوكيل، وتغطي الأذونات والخطاطيف والمخرجات المنظمة، ومعلمة بأنها متطلب سابق. الثالثة، هندسة الرسوم البيانية، وهي مميزة باللون الذهبي ومعلمة بعبارة «أنت هنا»، وهي ذاكرة مشتركة لوكلاء عديدين، وتغطي رسم DAG للإيداعات والرسم المعرفي والحوكمة. الرابعة، الثقة بالمدقق، وهي دليل على كفاءة المدقق، وتغطي المجموعات الذهبية ومعايير التقييم ونسب النجاح والانحراف، ومعلمة بأنها تأتي لاحقا. الخامسة، مغادرة الحاسوب المحمول، وهي منزل ليس جهازك، وتغطي التشغيل من دون واجهة، والجداول، وأوقات التشغيل المدارة، ومعلمة بأنها تأتي لاحقا. تسرد لوحة أسفل ذلك الكلمات الأربع التي تفترض الدورة أنك تعرفها: النبضة هي تشغيل كامل للحلقة، والعمود الفقري هو الحالة التي تقرؤها الحلقة أولا وتكتبها آخرا، والسقاطة تعني الاحتفاظ بما يحسن فقط، وشجرة العمل هي مجلد معزول لكل وكيل. التذييل: إذا كانت هذه الكلمات الأربع جديدة عليك، فاقرأ هندسة الحلقات أولا، لأن هذه الدورة تبني عليها مباشرة.

هل أنت جديد هنا؟ مراجعة لمدة دقيقتين لما يجب أن تعرفه مسبقا
  • النبضة: تشغيل كامل واحد للحلقة، أي الاكتشاف والتنفيذ والتحقق والإيداع.
  • العمود الفقري: حالة محفوظة، مثل progress.md، تقرؤها الحلقة أولا وتكتبها آخرا، ليعرف النبض التالي ما حدث.
  • الصانع والمدقق: ينشئ وكيل واحد العمل، ويراجعه وكيل آخر أو أمر مختلف.
  • السقاطة: يصبح كل إخفاق مكتشف إصلاحا دائما، لكي لا يتكرر الخطأ نفسه.
  • المخرجات المنظمة: يعيد الوكيل JSON بشكل ثابت، ويتحقق منه الكود قبل أن يثق به أي شيء.
  • أشجار العمل: مجلدات عمل منفصلة لكي لا يستطيع الوكلاء المتوازون الكتابة فوق عمل بعضهم.
  • البوابة البشرية: تذهب القرارات الخطرة إلى إنسان، ولا يصل شيء يعمل بلا مراقبة إلى main.

إذا كان أي من هذه المفاهيم جديدا، فاقرأ دورتي هندسة الحلقات وهندسة الحاضنة أولا. تربط هذه الدورة بين الآليات التي بنتها تلك الدورات.

كلمات أساسية بلغة بسيطة

سترى هذه الكلمات في أنحاء الدورة. اقرأ القائمة مرة الآن، ثم عد إليها كلما بدا مصطلح غير واضح.

المصطلحالمعنى المبسط
الرسم البيانيمجموعة من النقاط (العقد) تربط بينها أسهم (الحواف). للأسهم اتجاه، ويحمل الاتجاه معنى.
العقدةنقطة واحدة في الرسم: كيان، أو ادعاء، أو إيداع، أو مصدر، أو تشغيل لوكيل.
الحافةسهم واحد بين عقدتين يحمل تسمية، مثل supports أو parent_of أو produced أو works_for.
DAGرسم بياني موجه لا دوري: لا تعود الأسهم لتلتف حول نفسها. تاريخ Git هو DAG.
رسم DAG للإيداعاترسم العمل: الإيداعات عقد، وروابط الآباء حواف. ويجيب عن سؤال: «ماذا جربنا، وماذا نشأ عن ماذا؟»
الرسم المعرفيرسم الحقائق: الكيانات عقد، والعلاقات المنظمة حواف. ويجيب عن سؤال: «ماذا يوجد، وكيف يرتبط؟»
الكيانشيء يتتبعه الرسم: شخص، أو شركة، أو ملف، أو مورد، أو حادثة.
العلاقة / الثلاثيةحقيقة واحدة في شكل موضوع-محمول-كائن: (Vendor X، supplied، Component Z).
الصيغة الظاهرةالاسم كما يظهر بالضبط في مستند: «Edwin Aldrin» و«Buzz» و«Col. Aldrin». ثلاث صيغ ظاهرة لشخص واحد.
حل الكياناتتحديد الصيغ الظاهرة التي تشير إلى الشيء الحقيقي نفسه، ودمجها في عقدة معيارية واحدة، من دون فقدان الأسماء الأصلية.
المصدريةالإيصال المرفق بالادعاء: أي مصدر قاله، وأي تشغيل استخرجه، وما مدى الثقة بالاستخراج.
الادعاءعبارة يخزنها الرسم بوصفها محتملة الصحة، مرفقة دائما بالمصدرية، وليست حقيقة مجردة.
الرسم الفرعيشريحة صغيرة وذات صلة من الرسم، مقصوصة لمهمة واحدة. تعطي الوكلاء رسوما فرعية، ولا تعطيها الرسم كله.
الإرساءإجبار إجابة أو حكم على الإشارة إلى حواف حقيقية في الرسم، بدلا من انطباعها الخاص.
السربوكلاء عديدون يستكشفون أو ينفذون أو يقيمون في الوقت نفسه.
المخرج المنظماستجابة من النموذج مقيدة بمخطط، مثل نموذج Pydantic، لكي يتحقق منها الكود قبل أن يصدقها.
MCPبروتوكول سياق النموذج: الطريقة المعيارية لوصول الوكيل إلى نظام خارجي. لا تحتاج إليه ما دام الرسم ملفات. ويصبح هو الجواب عندما يصير الرسم قاعدة بيانات.
رسم الحوكمةالرسم الذي تكون عقده هي الحلقات نفسها، مع البوابات البشرية والمراسي، وتقول حوافه من يغذي من، ومن يراجع من، ومن يقيد من.
حلقة التنفيذحلقة تؤدي عملا متكررا: تفرز المسائل، وتراجع طلب الدمج، وتكتب مسودة سجل التغييرات.
حلقة التحسينحلقة تراقب رقما مقابل هدف، وتضبط النظام الذي يؤدي العمل.
المقياس المضادرقم ثان، تراقبه حلقة ثانية، يكشف تلاعب الحلقة الأولى بالرقم الأول.
المرساةقياس لا تستطيع أي حلقة مجادلته: اختبار تم تشغيله فعلا، أو عميل بقي فعلا، أو مال وصل فعلا.
العقدة المجمدةقاعدة أو ملف لا يجوز لحلقات التحسين تغييره أبدا، للسبب نفسه الذي قد يجعلها ترغب في تغييره.

أعطت دورة الحلقات الحلقات استعارة الجسد: النبضة، والجسد، والعمود الفقري. تضيف هذه الدورة شيئا واحدا: الرسم البياني هو العقل المشترك، أي الذاكرة التي تعيش أطول من نافذة سياق أي وكيل واحد.

اختياري في القراءة الأولى: قصة النشأة وتصحيح الادعاء الرائج

النسخة المختصرة: العمل الأساسي حقيقي ومتاح للعامة، لكن الصياغة الرائجة عنه خاطئة. أما «ملف PDF من 11 صفحة كتبه اثنان من كبار موظفي Anthropic» فهو مذكرة دراسة مستقلة توضح في صفحتها الأولى أنها غير تابعة لكارباتي أو Anthropic، ولم يعتمدها أي منهما. وعبارة «أفضل 1000 مرة» شعار وليست قياسا. اقرأ المصادر الأساسية أولا.

التسلسل الزمني الكامل، وما أخطأت فيه الصورة الرائجة

التسلسل الزمني قصير ومتاح للعامة. في 7 مارس 2026، أصدر كارباتي autoresearch: وكيلا محصورا داخل مستودع تدريب صغير، يجري تجربة واحدة مدتها خمس دقائق كل مرة، ولا يحتفظ إلا بما يحسن المقياس. حصد عشرات الآلاف من نجوم GitHub في غضون أسابيع، وسمت مجلة Fortune النمط «حلقة كارباتي». وبعد ثلاثة أيام، رسم ملامح AgentHub بقوله: «GitHub للبشر. وAgentHub للوكلاء»، وهو مستودع Git مجرد مع لوحة رسائل تنسق الأسراب من خلالها عملها عبر رسم DAG للإيداعات بدلا من فرع رئيسي. وفي 23 مارس 2026، نشرت Anthropic دليل إنشاء الرسم المعرفي، الذي يستبدل مسار معالجة اللغة الطبيعية التقليدي بتعليمات ذات مخرجات منظمة: استخرج الكيانات والعلاقات ذات الأنواع، وحل التكرارات، واجمع رسما بيانيا، ثم استعلم عنه مع الاستشهادات. وتتيح مسارات العمل الديناميكية من Anthropic، التي أُعلن عنها في 28 مايو 2026 وأصبحت متاحة للجميع منذ ذلك الحين، أن يكتب Claude سكربت التنسيق الذي يوزع العمل على وكلاء فرعيين متوازيين، لكل منهم سياق جديد.

في 18 يوليو 2026، منح سؤال بيتر شتاينبرغر المكون من اثنتي عشرة كلمة في منتصف الليل، «هل ما زلنا نتحدث عن الحلقات أم انتقلنا إلى الرسوم البيانية؟»، الموضوع كله اسمه الرائج لذلك الموسم. يروي الجزء 5 تلك القصة ورد كارلوس إي. بيريز عليها. وبعد أيام، جمع منشور رائج كل شيء في ادعاء واحد: «اثنان من كبار موظفي Anthropic حسنا للتو حلقة كارباتي 1000 مرة باستخدام هندسة الرسوم البيانية، ونشرا ملف PDF من 11 صفحة». اقرأ الصفحة الأولى من الملف نفسه قبل تكرار ذلك. تقول بخط مائل إنه جُمّع بصورة مستقلة، ولا يتبع أندريه كارباتي أو Anthropic، ولم يعتمده أي منهما. هذا التجميع مفيد حقا، وتستعين به هذه الدورة، لكنه مذكرة دراسة كتبها مؤلف مستقل، وليس بحثا من Anthropic، وعبارة «أفضل 1000 مرة» شعار وليست قياسا. إنها النزعة نفسها التي حولت سؤال شتاينبرغر إلى عبارة «ماتت هندسة الحلقات». يحلل الجزء 5 ذلك الادعاء. تعامل مع هذا الادعاء بالطريقة نفسها. المصادر الأساسية حقيقية وتستحق وقتك، مع تنبيه واحد: تتاح autoresearch ودليل Anthropic ووثائق مسارات العمل للعامة، بينما حُوّل AgentHub إلى مستودع خاص بعد وقت قصير من إصداره، ولا يبقى الآن إلا في اشتقاقات غير مرخصة (يشرح المفهوم 5 المزيد).

هناك تقارب حقيقي أغفلته الصورة الرائجة، وهو أغرب منها: في 19 مايو 2026، انضم كارباتي إلى فريق التدريب المسبق في Anthropic لبناء مجموعة تركز على استخدام Claude لتسريع أبحاث التدريب المسبق نفسها. لذلك التقى بالفعل تقليد الحلقات وتقليد الرسوم البيانية في هذه الدورة داخل Anthropic، لكن ليس بالطريقة التي ادعاها منشور رائج، ولا في ذلك الملف. (جميع المصادر مدرجة في المصادر والقراءات الإضافية.)

عبارة واحدة وثلاثة معان، وهذه الدورة تعلم اثنين منها

تستخدم الصناعة عبارة «هندسة الرسوم البيانية» لأكثر من شيء. يرتبط اثنان من هذه المعاني ارتباطا وثيقا، وتغطيهما هذه الدورة بالكامل. الأول هو رسم الذاكرة: الحالة الدائمة ذات الأنواع التي تتشاركها وكلاؤك. ويشمل رسم DAG للعمل والرسم المعرفي للحقائق. وهذا هو موضوع الأجزاء 2 إلى 4.

الثاني هو رسم الحوكمة: التوصيلات بين الحلقات نفسها. يسجل من يغذي من، ومن يدقق عمل من، وأين تقع البوابة البشرية، وأي المقاييس لا تستطيع أي حلقة مجادلتها. وهذا هو الجزء 5، المبني على سؤال بيتر شتاينبرغر ومقال كارلوس إي. بيريز.

هذان الرسمان طبقتان من نظام واحد، لا متنافسان. يصل رسم الحوكمة العاملين بعضهم ببعض. ويحفظ رسم الذاكرة ما يعرفه العاملون. يلتقيان في المفهوم 10، حيث يقرأ مدقق من طبقة الحوكمة أدلة من طبقة الذاكرة. وتنتهي دورة الحلقات عند النقطة التي تبدأ منها هذه الدورة بالضبط، بحلقة واحدة مكتملة البناء، ثم تسلم الرسمين إلى هذه الدورة.

هناك معنى ثالث متداول لا تعلمه هذه الدورة. يستخدم بعض الكتّاب «هندسة الرسوم البيانية» للإشارة إلى طوبولوجيا التنفيذ: تكون العقد خطوات بدلا من سجلات أو حلقات، وتكون الحواف اعتماديات بيانات، ويصبح سؤال التصميم ما الذي يمكن تشغيله بالتوازي وأين يجب أن ينتظر التشغيل. هذا مجال أطر التنسيق، وهو أقدم من العبارة نفسها؛ فقد قدم LangGraph العقد والحواف فوق حالة مشتركة في يناير 2024، ويحمل كل من AutoGen من Microsoft وADK من Google نسخته الخاصة. ومع ذلك، تصل أفضل أفكاره إليك هنا في اختبار الأسهم وتقسيم التوجيه في المفهوم 11، وفي قواعد الميزانية والانضمام في المفهوم 14. لكن إذا كنت تبحث عن فصل حول بناء رسم تنسيق، فتلك دورة أخرى. ومن الأنفع أن تختار بين السؤالين قبل البناء بدلا من دمجهما. إن توصيل حلقاتك وشكل تشغيل واحد مشكلتان مترابطتان، لكن لكل منهما إجابة مختلفة.

خطة العمل ذات الخطوات الست، وموضع كل خطوة فيها

يصل معظم القراء إلى هنا عبر نسخة رائجة من خطة العمل مؤلفة من ست خطوات. تجاوزت بالفعل أربعا من خطواتها الست، وهذه الدورة هي الخطوتان الأخريان، إضافة إلى الجزء الذي تغفله القائمة.

الخطوات الست، وموقعها في هذه السلسلة
الخطوة كما يصوغها المنشورحقيقتهاأين تعلمتها
1. ابن حلقة واحدة: أنشئ، وانتقد، وراجعنبضة الصانع والمدقق والسقاطةهندسة الحلقات
2. أضف الأدوات: البحث والكود وقاعدة البياناتالموصلات ومخططات الأدوات التي تقيدهاهندسة الحلقات وهندسة الحاضنة
3. انتقل إلى التوازي: وكلاء في أشجار عمل منفصلةالعزل، حتى لا يتصادم العمل المتزامنهندسة الحلقات وهندسة الحاضنة
4. أضف رسما بيانيا: عقدا وحواف ذات أنواع، لا نصوص محادثاتذاكرة تعيش أطول من الجلسةالأجزاء 2 إلى 4 من هذه الدورة
5. ثبّت تقييم المدقق على الحواف، لا على الانطباعاتتحقق بأدلة قابلة للاستشهادالمفهوم 10 من هذه الدورة
6. يبقى الرسم بعد كل جلسةالمصدرية والإحلال والحالة الدائمةالمفاهيم 8 و13، والجزء 6

لذلك ليست النسخة الصادقة من عبارة «أفضل 1000 مرة» معيار قياس. بل تعني أن الخطوات من 1 إلى 3 تمنحك عاملا قادرا، والخطوات من 4 إلى 6 تمنح ألف عامل ذاكرة مشتركة واحدة. النموذج نفسه، والبنية مختلفة.

التحول في طريقة التفكير، في صورة واحدة

التحول في طريقة التفكير: ذاكرة نصوص المحادثات في مقابل ذاكرة الرسم. اللوحة اليسرى، نصوص المحادثات، أي ذاكرة تموت مع الجلسة: ثلاثة صناديق للوكلاء، ولكل واحد لفافة خاصة به تحمل نص المحادثة ويتلاشى طرفها السفلي. الأسهم المتقطعة بينها مشطوبة. التعليق: يتعلم كل وكيل وحده وينسى وحده. ولكي تشارك أي شيء، يجب أن تنسخ نصوص محادثات كاملة إلى نافذة سياق أخرى، فتمتلئ النافذة. اللوحة اليمنى، رسم بياني، أي ذاكرة تعيش أطول من كل جلسة: الوكلاء الثلاثة أنفسهم حول رسم رمادي مركزي من عقد ذات أنواع، هي الكيان والادعاء والمصدر والإيداع والتقييم، تصلها حواف ذات تسميات، هي يدعم ومشتق من وأنتج وعن. لكل وكيل سهم ذهبي واحد يكتب تحديثا صغيرا ذا نوع، وسهم أخضر واحد يقرأ رسما فرعيا محدودا. تحمل ملاحظة قفل على كل حافة العبارة «المصدرية: المصدر + التشغيل + الثقة». التذييل: الوكيل ينسى، والرسم لا ينسى. اكتب النتائج كعقد وحواف، لا كنثر، ليتمكن أي وكيل لاحق من الاستعلام عما تعلمه أي وكيل سابق.

هناك ملاحظة عن الأدوات، وهي أصغر من نظيراتها في الدورات الشقيقة. كانت لأعمال الحلقات والحاضنة والتقييم صيغ خاصة بالأدوات يجب تعلمها. أما عمل الرسم فلا يكاد يملك أيا منها: الرسم ملفات وGit وjq ومخطط تملكه، لذلك لا يوجد ما تشتريه ولا ميزة منتج تضبطها. لا يظهر Claude Code وOpenCode هنا إلا بوصفهما العاملين اللذين يقرآن منه ويكتبان إليه، وتعمل كل الأوامر أدناه بالطريقة نفسها في كليهما، ويمكن استخدام claude -p وopencode run بالتبادل في كل موضع. لا يرجع هذا الاستقلال عن الأدوات إلى نطاق هذه الدورة مصادفة. بل هو أقوى دليل على أن الرسم ممارسة هندسية لا ميزة في منتج.

ينتمي إلى هذا الموضع مصطلح واحد، لأن القراء يتوقعونه بحق ثم يضعونه في غير مكانه. بروتوكول سياق النموذج (MCP) هو الطريقة المعيارية التي يصل بها الوكيل إلى نظام خارجي: يعرض خادم أدوات، ويستطيع أي وكيل يدعم MCP استدعاءها. لا يظهر MCP إطلاقا بالحجم الذي تتناوله هذه الدورة، وهذا صحيح: الرسم ملفات داخل المستودع، لذلك يقرؤها الوكيل ويكتبها بأدوات الملفات وshell الموجودة لديه بالفعل. يصبح MCP هو الجواب عند الحجم التالي. حين ينتقل الرسم إلى Postgres أو Neo4j ويحتاج وكلاء عديدون على أجهزة مختلفة إلى الوصول إليه، لا تمنح كل وكيل بيانات اعتماد قاعدة البيانات وعميلا مخصصا. بل تضع خادم MCP واحدا أمام المخزن، ويعرض سطحا صغيرا ذا أنواع: حل هوية كيان، واجلب رسما فرعيا محدودا، وأضف ادعاء متحققا منه. عندئذ تعيش كل قاعدة في هذه الدورة داخل ذلك الخادم، حيث تُفرض مرة واحدة، بدلا من تعليمة كل وكيل، حيث لا تعدو كونها طلبا.

افصل بين ثلاث طبقات، لأنه يسهل الخلط بينها. المهارة هي المعرفة التي يحملها الوكيل: كيف نكتب الادعاءات هنا. وMCP هو الوصلة: كيف يصل الوكيل إلى المخزن أصلا. أما الرسم فهو الذاكرة نفسها: ما جرى تذكره فعلا. المهارة بلا رسم نصيحة لا يوجد ما تُكتب فيه. والرسم بلا مهارة يمتلئ بصورة غير متسقة. وليس MCP أيا منهما. إنه شبكة الأنابيب التي تصبح ضرورية لحظة يتوقف فيها المخزن عن كونه ملفا في المجلد نفسه الذي يعمل فيه الوكيل.

ينطبق هذا في أواخر يوليو 2026، مع اختلاف أعمار الصلاحية. يتواصل تطوير autoresearch بنشاط. أما AgentHub فمجمد وخاص، لذلك تعامل مع كل ما يخصه بوصفه تاريخا. أصبحت مسارات العمل الديناميكية متاحة للجميع، وتتغير حدودها وقيمها الافتراضية مع المنتج. والدليل دفتر ملاحظات حي. قبل أن تثق بعلامة أو حد أو اسم نموذج، راجع المصادر الحية: github.com/karpathy/autoresearch، وplatform.claude.com/cookbook، وcode.claude.com/docs، وopencode.ai/docs.

ما تغطيه هذه الدورة

الجزءالموضوعما تتعلمه
1مشكلة الذاكرةلماذا تفشل نصوص المحادثات بوصفها ذاكرة للفريق، وما الرسم البياني، والرسمان اللذان يحتاج إليهما كل سرب
2رسم DAG للعملمسار كارباتي: تكتب autoresearch التاريخ في Git، وتحول AgentHub رسم DAG إلى طبقة التعاون
3رسم الحقائقمسار Anthropic: الاستخراج بالمخطط، وحل الكيانات، والمصدرية على كل حافة
4العمل انطلاقا من الرسمرسوم فرعية بدلا من التفريغات، والمدقق المرتكز إلى الأدلة: عبارة «لم يُعثر على الثلاثية» أفضل من «يبدو خطأ»
5رسم الحلقاتطبقة الحوكمة: من يدقق عمل من، والطرق الأربع التي تنكسر بها حلقة منفردة، والمراسي التي لا تستطيع أي حلقة مجادلتها
6رسم واحد، من البداية إلى النهايةترقية العمود الفقري لحلقة الفرز الصباحية إلى رسم صغير قابل للاستعلام باستخدام الملفات وshell، في الأداتين
7البقاء مرتكزا إلى الأدلةاختيار مستوى، وميزانية التعقيد، ومتى لا تبني رسما، والجسر إلى الدورتين التاليتين
مباشراستخدام الكتاب لنظامهالرسم الأولي الذي يشغله هذا الكتاب بالفعل، والرسم الذي يتعمد ألا يشغله
تدريبالمشروعاتثمانية مشروعات لبناء الرسوم، من السهل إلى الصعب

هل تريد التعلم بالممارسة؟ اقرأ الجزء 6 أولا لترى رسما مكتملا. ثم عد إلى بقية الأجزاء.

طريقتان لقراءة هذه الدورة

هل تقرأها للمرة الأولى؟ اسلك مسار الذاكرة: الأجزاء 1 إلى 4، أي المفاهيم 1 إلى 10، ثم انتقل مباشرة إلى الجزء 6 وابنه. تجاوز الجزء 5 وكل ملاحظة تحمل عبارة «تعمق أكثر». يستغرق ذلك نحو ساعتين، أو قرابة ثلاث إن طبقت الأمثلة بدلا من المرور عليها قراءة. ثم أنجز المشروعات من 1 إلى 3. بعد ذلك، ستتمكن من رسم نظامك بوصفه رسما بيانيا، وحفظ الادعاءات مع مصادرها، وجعل المراجع يستشهد بأدلته.

في القراءة الثانية، بعد أن يجيب رسمك الأول عن سؤال عجزت نصوص محادثاتك عن إجابته، اسلك مسار الحوكمة: الجزء 5، وكل الجزء 7، والمشروعات من 4 إلى 8. يتناول الجزء 5 إبقاء حلقات عديدة صادقة، ولا يصبح ذلك ملحا إلا عندما تكتب أكثر من حلقة في الذاكرة نفسها. وبالمثل، لا تصل تحذيرات المفهوم 15 إلى معناها الكامل إلا بعدما يصبح لديك رسم يغريك بالإفراط في بنائه.

ما يجب تذكره، وما يجب البحث عنه

طبقتان تشيخان بمعدلين مختلفين. تذكر الأولى. وابحث عن الثانية.

  • الطبقة الدائمة. الوكيل ينسى، والرسم لا ينسى. سلالة العمل وحقائق المجال رسمان مختلفان: لا تدمجهما. المخطط أرخص من مسار مدرب. يجب أن يحتفظ الحل بإيصالاته وأن يبقى قابلا للعكس. يحمل كل ادعاء مصدرية، أو يُوسم بأنه استنتاج. أعط الوكلاء رسوما فرعية، لا الرسم كله. اربط حكم المدقق بالأدلة في الحواف. اطرح الأسئلة الستة قبل اختيار مستوى، وأعلن الميزانية قبل التشغيل. اقرن كل حلقة تحسين بحلقة مراقبة تتابع مقياسا مضادا. يجب أن تأتي إشارة واحدة على الأقل في النظام من الواقع، لا من تقرير نموذج آخر. والرسم يضخم حكم الباني، بما في ذلك أخطاؤه.
  • الطبقة الميكانيكية. تشمل كل اسم مستودع واسم نموذج وعلامة وعدد نجوم أدناه. تعامل مع تخطيط ملفات autoresearch، وحدود التزامن في مسارات العمل الديناميكية، وفئات Pydantic الدقيقة في الدليل بوصفها مؤشرات إلى المصدر الحي، لا حقائق تحفظها. إذا اختلفت هذه الدورة مع الوثائق الحية، فالوثائق هي الصحيحة.

الجزء 1: مشكلة الذاكرة

1. الوكيل ينسى، والرسم لا ينسى

شغّل هذا المثال: bash concepts/01-agent-forgets.sh في المختبر المصاحب. قراءته نصف التعلم، ومشاهدته وهو يحدث نصفه الآخر.

ابدأ بما تملكه بالفعل. تحتفظ حلقة الفرز الصباحية بعمود فقري: ملف progress.md، تقرؤه أولا وتكتبه آخرا. هذا الملف ذاكرة، ويؤدي الغرض مع حلقة واحدة. والآن احصر ما يعجز عنه:

  • لا تستطيع حلقة ثانية الوثوق به. ملف progress.md نثر. سيتعين على حلقة سجل التغييرات قراءة يوميات حلقة أخرى وتفسيرها، على أمل ألا ينحرف التنسيق أبدا.
  • لا يستطيع عشرون وكيلا متوازيا مشاركته. وزع العمل على عشرين مدققا، وسيبدأ كل منهم بلا سياق. يكتشف الوكيل 7 أن في utils/dates.ts خطأ في المنطقة الزمنية. وبعد ساعة، يكتشفه الوكيل 14 من جديد. لا شيء يربط بينهما.
  • لا يمكنك الاستعلام عنه. «أي نتائج من الشهر الماضي مست كود المدفوعات وأكدها مراجع؟» لا يستطيع العمود الفقري الإجابة. ستبحث في النثر وتأمل أن تجدها.
  • لا يستشهد بأي شيء. يقول العمود الفقري: «أُصلح الاختبار المتذبذب». أي اختبار؟ وأي تشغيل أثبت ذلك؟ وأي إصلاح لاحق حل محله؟ لا يعرف النثر.

الحل الساذج هو نسخ نصوص المحادثات بين الوكلاء: الصق محادثة الوكيل 7 في سياق الوكيل 14. يفشل هذا الحل في اللحظة التي تحتاج إليه فيها بالضبط. تمتلئ نوافذ السياق، وتتضاعف التكاليف. ثم إن نص المحادثة هو الشكل الخطأ للذاكرة: فهو يسجل كل ما قيل بالترتيب، بدلا من تسجيل ما ثبت مع دليله.

هندسة الرسوم البيانية هي البديل المقصود. يكتب الوكلاء ما يتعلمونه في صورة سجلات ذات أنواع: هذا كيان، وهذا ادعاء عنه، وهذا المصدر الذي يدعم الادعاء، وهذا التشغيل الذي أنتجه. تتصل السجلات بسجلات أخرى بأسهم تحمل تسميات. يستطيع أي وكيل لاحق، سواء في نبضة الغد أو في حلقة أو نموذج مختلف تماما، الاستعلام عن السجلات التي يحتاج إليها ومتابعة العمل. يلخص ملف PDF المستقل الذي أشاع موضوع هذه الدورة الفكرة في خمس كلمات، وهي الكلمات الصحيحة: الوكيل ينسى، والرسم لا ينسى.

بعبارة بسيطة

نص المحادثة سجل للدردشة. أما الرسم فهو نظام لحفظ الملفات. عندما ينضم موظف جديد إلى فريق، لا تسلمه تسجيلات كل محادثة أجراها الفريق في تاريخه. بل تسلمه الملفات: منظمة، وموسومة، ومترابطة بالمراجع. هندسة الرسوم البيانية هي بناء نظام الملفات الذي يستحقه وكلاؤك.

اختبر فهمك

تحتاج حلقة الفرز وحلقة سجل التغييرات كلتاهما إلى معرفة طلبات الدمج التي نُشرت هذا الأسبوع. تشغّل كل واحدة منهما اليوم git log وتستنتج المعلومة من جديد. ما الذي يُهدر، وما إصلاح هندسة الرسوم البيانية؟

أظهر الإجابة

يتكرر إنجاز العمل وتفسيره في كل نافذة سياق، وهذا هو إخفاق «إعادة بناء العالم من الصفر» بعينه. الحل أن تكتب الحلقة التي تثبت أولا أن «طلب الدمج رقم 212 نُشر ويصلح المسألة رقم 98» هذه المعلومة مرة واحدة كسجل ذي نوع يحمل المصدرية، أي بصمة الإيداع. ثم تقرأ الحلقتان السجل. استنتج مرة، واستعلم مرات كثيرة.

2. ما الرسم البياني: العقد والحواف والاتجاه

شغّل هذا المثال: bash concepts/02-nodes-edges.sh في المختبر المصاحب. قراءته نصف التعلم، ومشاهدته وهو يحدث نصفه الآخر.

قابلت هذا التعريف في نهاية دورة الحلقات. وهنا يصبح أداة العمل. الرسم البياني مجموعة من النقاط تسمى عقدا، تصلها أسهم تسمى حوافا. تؤدي ثلاث خصائص العمل كله:

  1. للعقد أنواع. ليست العقدة «صندوقا» فحسب، بل «كيان» أو «ادعاء» أو «مصدر» أو «إيداع» أو «تقييم». يخبر النوع كل قارئ بالأسئلة التي تستطيع العقدة الإجابة عنها.
  2. للحواف تسميات واتجاهات. تعني (claim_441) —supported_by→ (source_readme) شيئا يختلف عن السهم المعاكس. الاتجاه هو المعنى: من يدعم من، وما الذي ينحدر من ماذا، ومن دقق عمل من.
  3. المسارات إجابات. يتحول سؤال «هل المورد X متصل بالحادثة Y؟» إلى «هل يوجد مسار من الحواف المدعومة يصل من عقدة المورد X إلى عقدة الحادثة Y؟» يتحول سؤال عن العالم إلى سير عبر الأسهم.

الخاصية الثالثة هي العائد الحقيقي. يجب قراءة النثر وتفسيره، أما الرسم فيمكن اجتيازه آليا بالكود وبالطريقة نفسها كل مرة. ما إن تصبح ذاكرتك رسما حتى تتحول الأسئلة التي كانت انطباعات إلى استعلامات.

هناك شكل خاص مهم بما يكفي ليحمل اسما. رسم DAG، أي الرسم البياني الموجه غير الدوري، هو رسم لا تعود أسهمه في دائرة إلى نقطة سابقة. لقد استخدمت واحدا سنوات من دون معرفة اسمه: تاريخ Git. يشير كل إيداع إلى أصله. ولا يكون أي إيداع سلفا لنفسه. تذكر هذا المثال، لأن الجزء 2 مبني عليه.

بعبارة بسيطة

العقد أسماء، والحواف أفعال لها اتجاه. الرسم مجموعة من الجمل، أي فاعل وفعل ومفعول به، مرسومة في صورة، حتى يتمكن الحاسوب من تتبع سلاسل الجمل من دون فهم النثر.

اختبر فهمك

يسجل وكيلان أن المورد X ورد قطعة. يكتب الأول جملة «ورد المورد X المكون Z» في سجله. ويكتب الآخر (vendor_x) —supplied→ (component_z) في رسم. كلاهما صحيح. ما الذي يستطيع وكيل لاحق فعله بالثاني ولا يستطيع فعله بالأول؟

أظهر الإجابة

اتباعه. يجب على أي نموذج يرى الجملة أن يقرأها ويفسرها تفسيرا صحيحا. أما الحافة فيمكن اجتيازها آليا وبالطريقة نفسها كل مرة، كما يمكن ربطها في سلسلة: من vendor_x إلى component_z، ثم إلى أي شيء آخر يمس component_z. هكذا يتحول سؤال عن العالم، مثل «هل المورد X متصل بهذه الحادثة؟»، إلى سير عبر الأسهم بدلا من اختبار لفهم المقروء. وتحمل الحافة ذات النوع إيصالها أيضا، وهو ما يفقده النثر عادة.

3. رسمان، ولماذا يجب ألا تدمجهما

شغّل هذا المثال: bash concepts/03-two-graphs.sh في المختبر المصاحب. قراءته نصف التعلم، ومشاهدته وهو يحدث نصفه الآخر.

إليك الفرق الذي ينظم هذه الدورة كلها، وهو ما يخلط فيه المبتدئون غالبا. يحتاج النظام متعدد الوكلاء إلى رسمين مختلفين، لأنه يجب أن يتذكر نوعين مختلفين من الأشياء:

رسم DAG للإيداعات (الجزء 2)الرسم المعرفي (الجزء 3)
يتذكرالعمل: ما جُربالحقائق: ما هو معروف
العقدالإيداعات والتجارب والتشغيلاتالكيانات والادعاءات والمصادر
الحوافparent_of، وderived_fromsupports، وworks_for، وabout
يجيب عنما الذي تغير؟ وما الذي ينحدر من تجربة حجم الدفعة؟ وأي السلالات ما زالت حية؟ما الكيانات الموجودة؟ وكيف ترتبط؟ وأي مصدر يدعم هذا الادعاء؟ وما الادعاءات المتعارضة؟
لديك نسخة منه بالفعلتاريخ Git جزئيا: انظر المفهوم 4لا شيء بعد: يبنيه الجزء 3

الرسمان، جنبا إلى جنب، مرتبطان لكن غير مدمجين أبدا. اللوحة اليسرى هي رسم DAG للإيداعات، وعنوانها يتذكر العمل: ما جُرب، مع شارة تقول حقيقة بحكم البناء. ترتفع وتهبط من اليسار إلى اليمين سلسلة من خمس دوائر ذهبية للإيداعات من c1 إلى c5، تصلها أسهم أصل صلبة، وعلى c5 ملاحظة «احتُفظ به: أفضل مقياس». تغادر الجذع ثلاثة فروع رمادية متقطعة وتنتهي بدوائر باهتة مشطوبة تحمل التسميات أُعيد، وأُعيد، وتعطل. التعليق: العقد إيداعات وتجارب وتشغيلات. الحواف parent_of وderived_from. يجيب عن ما تغير، وما ينحدر من ماذا، وأي السلالات حية. اللوحة اليمنى هي الرسم المعرفي، وعنوانها يتذكر الحقائق: ما هو معروف، مع شارة بلون الأرض تقول ادعاء مع دليل. يتصل صندوق claim_441 ذهبي مركزي بأسهم ذات تسميات بصندوق vendor_x أبيض (عن)، وصندوق contract.pdf كريمي (مدعوم بواسطة، مع ملاحظة ثقة 0.9)، وصندوق claim_238 باهت فوقه (يحل محل، مع ملاحظة استُبدل ولم يُمح أبدا). التعليق: العقد كيانات وادعاءات ومصادر. الحواف supports وabout وsupersedes. يجيب عن ما الموجود، وكيف يرتبط، وأي مصدر يدعمه. تمتد في الأسفل لوحة جسر متقطعة عنوانها مرتبطان، لا مدمجان، مع ملاحظة أن تشغيلا واحدا لوكيل أنجز عملا وتعلم شيئا أيضا: في الوسط شارة agent_run_183 ذهبية، لها سهم modified إلى اليسار نحو صندوق commit_a81f أبيض بتعليق سلالة العمل، وسهم produced إلى اليمين نحو صندوق claim_441 ذهبي بتعليق معرفة المجال. التذييل: دفتر المختبر والموسوعة، احتفظ بكليهما، واربطهما بالمراجع، ولا تدمجهما أبدا.

لماذا نبقيهما منفصلين؟ لأن لكل منهما قواعد مختلفة للحقيقة. الإيداع حقيقة بحكم البناء: لقد حدث، ويضمن Git ذلك. أما الادعاء في الرسم المعرفي فهو عبارة معها دليل: قد يكون خطأ، أو مستخرجا بصورة خاطئة، أو حل محله ادعاء أحدث. لهذا تحمل كل حافة ادعاء مصدرية ودرجة ثقة. إذا دمجت الرسمين، فإما أن تعامل التخمينات كتاريخ، أو تدفن التاريخ تحت التخمينات.

لكنهما يتصلان. يربط نظام الإنتاج بينهما بحواف خاصة به:

(agent_run_183) —produced→   (claim_441)
(agent_run_183) —modified→ (commit_a81f)
(claim_441) —about→ (entity_vendor_x)
(claim_441) —supported_by→ (source_contract_pdf)
(claim_441) —supersedes→ (claim_238)

اقرأ هذه الكتلة ببطء: إنها الدورة كلها في خمسة أسطر. أنجز تشغيل عملا، أي إيداعا، وتعلم شيئا، أي ادعاء. يتعلق الادعاء بكيان، ويدعمه مصدر، ويحل محل ادعاء أقدم. سلالة العمل إلى اليسار، ومعرفة المجال إلى اليمين، مرتبطتان لكن لا تندمجان أبدا.

بعبارة بسيطة

رسم DAG للإيداعات هو دفتر المختبر: تجارب مؤرخة ومرتبة، ولكل منها أصل. احتفظ بالإخفاقات فيه أيضا، وهو خيار يبين المفهوم 4 أن autoresearch ترفضه، ويبين المفهوم 5 أن AgentHub تتبناه. أما الرسم المعرفي فهو الموسوعة التي يكتبها المختبر: ما نعتقد الآن أنه صحيح، مع حواش. المختبر الذي لا يحتفظ إلا بالدفتر لا يستطيع الإجابة عن الأسئلة. والمختبر الذي لا يحتفظ إلا بالموسوعة لا يستطيع عرض عمله. احتفظ بكليهما واربط بينهما بالمراجع.

اختبر فهمك

يبلغ وكيل: «أعدت هيكلة المحلل اللغوي في الإيداع 9fc2، وخلال ذلك أكدت أن API المورد يرفض التواريخ السابقة لعام 1970». أين يعيش كل نصف من هذه الجملة؟

أظهر الإجابة

تعيش إعادة الهيكلة في رسم DAG للإيداعات: الإيداع 9fc2 مع رابط أصله، تلقائيا. أما سلوك API فهو ادعاء للرسم المعرفي: (vendor_api) —rejects→ (pre-1970 dates)، مع مصدرية تشير إلى التشغيل والدليل، أي استجابة الخطأ. تموت هذه الحقيقة الثانية اليوم داخل نص المحادثة. وهذه هي الخسارة التي وُجدت هذه الدورة لمنعها.

قبل أن تتابع: هل تحتاج إلى رسم أصلا؟

ينبغي ألا تبني معظم الأنظمة رسما معرفيا، ومن حقك معرفة ذلك قبل قراءة أربعة أجزاء عن كيفية بنائه. الاختبار المختصر، الذي يرد كاملا في المفهوم 15، هو: إذا كانت مهامك مستقلة، وكانت إجاباتك تأتي من مستند واحد كل مرة، وكانت علاقاتك ثابتة وبسيطة، وكان جدول علائقي يجيب بالفعل عن كل استعلام تطرحه، ولم يكن أحد بحاجة إلى المصدرية، فتوقف هنا. حلقة واحدة ذات عمود فقري هي الإجابة الصحيحة. ولن يشتري لك الرسم إلا أخطاء استخراج وصيانة مخطط، مقابل أسئلة لم يطرحها أحد.

تميل الكفة نحو الرسم عندما يجب على حلقتين تبادل الحقائق، أو يمتد تجميع عبر عاملين عديدين، أو تواصل العلاقات التطور، أو سيسأل شخص يوما: «كيف نعرف ذلك؟» تابع القراءة إذا كان أي من ذلك صحيحا أو على وشك أن يصبح كذلك. يحول المفهوم 14 هذا إلى ستة أسئلة مرتبة.


الجزء 2: رسم DAG للعمل

4. autoresearch: تكتب السقاطة تاريخها في Git

شغّل هذا المثال: bash concepts/04-autoresearch-ratchet.sh في المختبر المصاحب. قراءته نصف التعلم، ومشاهدته وهو يحدث نصفه الآخر.

علمتك دورة الحلقات السقاطة: جرب تغييرا واحدا، وقيّمه، ولا تحتفظ به إلا إذا حسن الرقم، وإلا فتراجع عنه. إن autoresearch لكارباتي، الصادرة في 7 مارس 2026، هي الحلقة نفسها تماما موجهة إلى تدريب تعلم الآلة. وتكمن أهميتها في هذه الدورة في خيار تصميم واحد: ذاكرة الحلقة ليست نص محادثة، بل رسم DAG للإيداعات.

يتكون الإعداد من ثلاثة ملفات داخل مستودع تدريب صغير يستخدم وحدة معالجة رسومية واحدة:

  1. ملف prepare.py لإعداد البيانات وتقييمها بصورة ثابتة. لا يجوز للوكيل لمسه. (عقدة مجمدة، أي قاعدة المنع في دورة الحاضنة مطبقة على ملف.)
  2. ملف train.py: النموذج والمحسن وحلقة التدريب. وهو السطح الوحيد الذي يعدله الوكيل.
  3. ملف program.md: تعليمات بلغة طبيعية، تشمل المقياس والميزانية وقواعد الإيداع والتراجع وموعد التصعيد. (سمت دورة الحلقات هذا «برمجة البرنامج».)

ثم تتكرر النبضة إلى الأبد: اقرأ train.py والتاريخ الحديث، واقترح تغييرا واحدا له مبرر، وأودعه، ودرّب نحو خمس دقائق، ثم قس خسارة التحقق. هل تحسنت؟ يبقى الإيداع. هل ساءت أو تعطلت؟ أعد الضبط إلى آخر إيداع محتفظ به. وفي الحالتين، سجل النتيجة وتابع من دون إنسان داخل الحلقة.

انظر الآن بعناية إلى ما تتركه كل نبضة، لأن المبتدئين وعدة مقالات رائجة يخطئون في فهم autoresearch هنا. لها ذاكرتان، لا واحدة، وتحتفظ كل منهما بأشياء مختلفة:

ما تحتفظ بهمعيار الحقيقة
فرع Gitالتحسينات المحتفظ بها فقط، كسلسلة صاعدة من الإيداعات على فرع مخصص للتجاربمتحقق منه: كل إيداع عليه تفوق على المقياس
results.tsvكل محاولة: بصمة الإيداع، والمقياس، والذاكرة المستخدمة، وهل احتُفظ بها أم رُفضت أم تعطلت، وما الذي جُربكامل: يسجل المحاولات لا الإنجازات

يكمن التفصيل المهم في ما يحدث عند الإخفاق. تقول التعليمات ذلك بوضوح: إذا تحسن المقياس، فتقدم الفرع واحتفظ بالإيداع، وإذا ساواه أو ساء عنه، فنفذ git reset للعودة إلى نقطة البداية. لا يركن هذا الأمر المحاولة على فرع جانبي، بل يزيل ذلك الإيداع من الفرع. لذلك لا تبقى التجربة المرفوضة إلا في results.tsv. ويُترك results.tsv عمدا غير متتبع في Git.

اقرأ ذلك بوصفه تصميما لا سهوا، لأنه أوضح مثال عملي ستجده على المفهوم 3. يحتفظ Git بالعمل الذي ثبتت قيمته. ويحتفظ ملف TSV بالسجل الصادق لكل ما جُرب، بما في ذلك حالات التعطل. يحمل الباحث البشري الفرضيات والمحاولات الفاشلة وتفاعلات المعلمات في ذاكرته العاملة ثم يفقدها. أما autoresearch فتكتب النوعين في موضعين وفق معيارين. ما لا تفعله هو إبقاء السلالات البديلة حية وقابلة للاجتياز: تتحول الفكرة المرفوضة إلى صف نصي لا يستطيع أي وكيل آخر الاستعلام عنه. وهذه الفجوة بالضبط هي ما يملؤه المفهوم 5.

الأرقام المبلغ عنها في الأسابيع الأولى للمشروع، أي نحو 630 سطرا من الكود الأساسي، وقرابة 700 تجربة في يومين، ونحو 20 تحسينا محتفظا به، أقل أهمية من الشكل. حصد المستودع عشرات الآلاف من النجوم، لا لأن التحسينات كانت عميقة، بل لأن النمط سهل الفهم: كود صغير، ومقياس ظاهر، وسجلان صادقان. (راجع المستودع الحي قبل اقتباس أي رقم، فهو يتغير أسبوعيا.)

الشروط الأربعة التي تنجحه هي قائمة التحقق في دورة الحلقات حرفيا: المخرج قابل للتحقق، فهو رقم تحقق؛ والإجراء قابل للعكس، عبر git reset الذي يلغي المحاولة لكنه لا يحفظها؛ والأفق قصير، فالتشغيلات مدتها خمس دقائق؛ والبيئة محدودة، فهي مستودع واحد وملف واحد قابل للتعديل. لا شيء جديد، باستثناء موضع الذاكرة.

بعبارة بسيطة

إن autoresearch هي حلقة السقاطة نفسها بعد نقل الذاكرة من رأس الوكيل إلى ملفين. يحتفظ فرع Git بما نجح. ويحتفظ results.tsv بما جُرب. يمكن أن تتعطل الحلقة وتبدأ من جديد من دون أن تفقد اتجاهها، لأن أيا من الذاكرتين لا يعيش في نافذة سياق. لكن لاحظ الحد الصادق: لا تترك التجربة المرفوضة إلا صفا في ملف نصي، لا عقدة يستطيع أي شخص اجتيازها.

جرب الآن: اقرأ رسم DAG بوصفه ذاكرة (4 دقائق)

افتح أي مستودع عملت عليه مع وكيل، واطرح على رسم DAG الأسئلة التي لا يستطيع العمود الفقري الإجابة عنها:

git log --oneline --graph -20        # the DAG, drawn
git log --follow -- path/to/file.ts # every experiment on one surface
git diff HEAD~5 HEAD -- src/ # what five beats of work changed

ثم اطلب من وكيلك: «اقرأ آخر 20 إيداعا. ما المقياس الظاهر، وأي الإيداعات تبدو تحسينات محتفظا بها؟» لاحظ ما لا يستطيع رسم DAG إخبارك به: أي التجارب جُربت ثم رُميت. تعيش الإجابة في autoresearch داخل results.tsv خارج Git. ويتناول المفهوم 5 تحويل تلك الصفوف إلى عقد.

5. AgentHub: اجتز رسم البحث، ولا تدمج في main

شغّل هذا المثال: bash concepts/05-agenthub-traversal.sh في المختبر المصاحب. قراءته نصف التعلم، ومشاهدته وهو يحدث نصفه الآخر.

نشر كارباتي الخطوة التالية بعد autoresearch بثلاثة أيام: يجب أن تصبح الحلقة «تعاونية على نطاق هائل بين الوكلاء بصورة غير متزامنة، على غرار SETI@home»، أي أن تحاكي مجتمع بحث لا طالب دكتوراه واحدا. إن AgentHub تصوره لتلك الطبقة: ملف تنفيذي واحد بلغة Go، وقاعدة بيانات SQLite واحدة، ومستودع Git مجرد واحد، ومفتاح API لكل وكيل، ولوحة رسائل. وشعارها هو الأطروحة: «GitHub للبشر. وAgentHub للوكلاء».

ابدأ من الفجوة التي تركها المفهوم 4. تمحو سقاطة واحدة إخفاقاتها بإعادة الضبط، لذلك لا يبقى من الفكرة المرفوضة إلا صف في ملف نصي غير متتبع لا يستطيع وكيل آخر الاستعلام عنه. التحول الأساسي في AgentHub هو التوقف عن إعادة الضبط والبدء في الاحتفاظ: يرسل الوكلاء الإيداعات في صورة حزم، ويصبح كل إيداع مدفوع عقدة دائمة، ولا يُطلب من أي شيء التقارب نحو فرع رئيسي. تبقى البدائل حية وقابلة للاجتياز. وهذا هو الفرق بين سجل نصي للإخفاقات ورسم لها.

لماذا يحتاج تعاون الوكلاء إلى بنية توصيل مختلفة؟ لأن الأسراب تقلب كل افتراض يحمله Git البشري:

  • يستكشف الآلاف في الوقت نفسه. تفترض المستودعات البشرية بضعة فروع، بينما يجعل السرب آلاف المحاولات المتزامنة أمرا عاديا.
  • لا تُدمج معظم النتائج، عن قصد. يمثل الفرع غير المدمج للبشر عملا غير مكتمل. أما للسرب فالتجربة الفاشلة دليل: تخبر كل وكيل آخر أن فكرة ما تفشل في ظرف معين.
  • تتغير العملية الأساسية. ليست «ادمج هذا في main»، بل «اجتز رسم البحث». لا يوجد فرع رئيسي مطلوب، ولا طلبات دمج، ولا طابور دمج، ولا افتراض بأن ورقة واحدة هي النسخة المعتمدة.

تجعل واجهة سطر الأوامر هذا التحول ملموسا. كل أمر استعلام عن الرسم باسم مألوف:

ah push                 # publish my commit as a new node
ah children <hash> # what was tried on top of this result?
ah leaves # the frontier: results nobody has built on yet
ah lineage <hash> # the full ancestry path that produced this outcome
ah diff <a> <b> # compare any two experiments, related or not
ah log --agent X # one agent's trail through the search

يسأل children عن الأفكار التي استُكشفت فوق نتيجة ما. ويكشف leaves الجبهة التي لم تُستكشف. ويعيد lineage بناء الطريق الذي أوصل إلى نتيجة. حاول طرح هذه الأسئلة في نموذج الفروع التقليدي، ولاحظ كم تصبح مربكة. أما رؤية رسم DAG بوصفه رسما بيانيا فتجعل لكل سؤال أمرا واحدا.

تحتفظ autoresearch بذاكرتين، وتضيف AgentHub الثالثة. ينبه عنوان فرعي إلى أن إعادة الضبط لا تركن المحاولة الفاشلة على فرع جانبي، بل تزيل ذلك الإيداع من الفرع. في الأعلى، تعرض «نبضة واحدة» أربع مراحل كريمية تصلها أسهم: عدل train.py، وأودع، ودرّب نحو خمس دقائق، وقس val_bpb، مع شارة مقفلة تقول prepare.py مجمد. ثم ينقسم المسار إلى شارة ذهبية تقول تحسن: قدم الفرع، وشارة بلون الأرض تقول مساو أو أسوأ: git reset. أسفلها ثلاث لوحات. الأولى ذات إطار ذهبي، «فرع Git: ما احتُفظ به فقط»، وتحمل شارة «متحقق منه: كل إيداع تفوق على المقياس»: أربعة إيداعات ذهبية من c1 إلى c4 تصعد في سلسلة نظيفة، وبجوارها ثلاث دوائر متقطعة باهتة تحمل علامات استفهام وملاحظة «إعادة الضبط: اختفى من الفرع»، مع تعليق «سقاطة نظيفة وسجل ناقص». اللوحة الثانية، results.tsv، «كل محاولة احتُفظ بها أو لم يُحتفظ»، وتحمل شارة «كامل: المحاولات لا الإنجازات»: جدول صغير بخط ثابت، أعمدته commit وval_bpb وstatus، ويسرد c1 1.58 baseline، وc2 1.53 keep، وشرطة 1.77 discard، وc3 1.51 keep، وشرطة 0.00 crash. تعلوه شريحة بلون الأرض تقول «متروك بلا تتبع من git، عن قصد». اللوحة الثالثة متقطعة، «AgentHub: رسم DAG، البدائل تبقى حية»، وتحمل شارة «قابل للاجتياز: تصبح الإخفاقات عقدا»: رسم متفرع من ست عقد، أربع ذهبية واثنتان بلون الأرض ومشطوبتان، ينتشر في اتجاهات عدة، ومعه ملاحظة «تبقى النتيجة المرفوضة عقدة»، وبجوارها أوامر ah children وah leaves وah lineage بخط ثابت. التذييل: يحتفظ Git بما نجح، ويحتفظ TSV بما جُرب، ولا يتيح إلا الرسم لوكيل لاحق الاستعلام عن كليهما.

لوحة الرسائل هي الطبقة الاجتماعية، وهي تكمل قصة الذاكرة. لا يحتاج الوكيل إلى كل نصوص المحادثات السابقة. بل يستعلم عن السلالات ذات الصلة، ويقرأ بضعة ملخصات، ويجلب إيداعا واحدا، ثم يتابع. يسمي ملف PDF المستقل هذا بدقة: بناء السياق المرتكز إلى الرسم، أي استرجاع الحالة المتصلة اللازمة للقرار الحالي بدلا من إعادة تشغيل التاريخ كله. احتفظ بهذه العبارة، فالمفهوم 9 يعممها.

اختياري في القراءة الأولى: حالة AgentHub وحدودها

تهم ملاحظتان صريحتان كل من يحاول التطبيق.

أولا، تقول كلمات المستودع نفسه: «عمل قيد التقدم. مجرد تصور. نفكر...» لم تملك AgentHub إجابة عن الثقة بين الوكلاء، أو الحزم الخبيثة، أو التخزين على نطاق واسع، أو اكتشاف التكرارات، أو الفهرسة طويلة الأمد. لا يضعف ذلك الدرس، بل يجعله أدق. يحدد التصور التجريدي بالضبط أي التجريدات البشرية تنهار أولا حين يكثر الوكلاء: فرع رئيسي واحد، ومراجعة بسرعة البشر، وذاكرة نصوص المحادثات، وتعاون محوره الدمج.

ثانيا، لم تعد AgentHub متاحة للعامة. جذبت بضعة آلاف من النجوم خلال يوم من إصدارها في مارس 2026، ثم حُولت إلى مستودع خاص. يعيد github.com/karpathy/agenthub الآن خطأ 404. ويأتي أوضح وصف عام من مطور اشتقها قبل ذلك ثم وثق التصميم لاحقا: «فتح كارباتي مصدر AgentHub الأسبوع الماضي، ثم أصبح المستودع خاصا».

تتداول اشتقاقات محفوظة، لكن الأصل لم يحمل ملف ترخيص. تعامل مع أي نسخة بوصفها قطعة تاريخية للدراسة، لا برمجيات مصانة تبني عليها. لا تستخدمها كاعتمادية. ادرس التصميم القابل للنقل: الإيداعات عقد، والحزم وحدة الدفع، والاجتياز العملية الأساسية، ولوحة رسائل تواصل فيها النتيجة المرفوضة التعليم.

بعبارة بسيطة

يفترض GitHub نسخة «رسمية» مشتركة واحدة يعمل الجميع للوصول إليها. لا يريد السرب نسخة رسمية واحدة، بل يريد خريطة لكل ما جُرب، بما في ذلك الطرق المسدودة، لأنها تعلمه. تحتفظ AgentHub بالخريطة وتتخلص من المراسم.

اختياري في القراءة الأولى: مسارات العمل الديناميكية والحدود الحالية

إن AgentHub هي طبقة الذاكرة للسرب، لكن ما زال يجب أن يشغل شيء ما السرب. أوضح مثال إنتاجي هو مسارات العمل الديناميكية من Anthropic، التي أُعلن عنها في Claude Code في 28 مايو 2026 وأصبحت متاحة للجميع منذ ذلك الحين. بدلا من أن تكتب أنت سكربت توزيع، يكتب Claude برنامج تنسيق للمهمة الحالية: طابق الملفات، وأنشئ مدققا لكل ملف، وصفّ النتائج، وأنشئ مراجعين يحاولون دحضها، ثم أنشئ مجمّعا واحدا ينتج تقريرا موثق الاستشهادات. يصف الإعلان الرسمي ذلك بأنه عشرات إلى مئات من الوكلاء الفرعيين المتوازيين في جلسة واحدة، لكل منهم سياق جديد، مع فحص النتائج قبل دمجها، وحفظ التقدم حتى يستأنف التشغيل المنقطع بدلا من البدء من جديد. تبدأ تشغيل أحدها بطلب مسار عمل من Claude، أو بتشغيل إعداد ultracode الذي يرفع مستوى الجهد ويترك قرار الحاجة إلى مسار عمل إلى Claude.

المثال المعلن هو نقل Bun: نقل جاريد سومنر Bun من Zig إلى Rust باستخدام مسارات العمل الديناميكية، فأنتج نحو 750,000 سطر من Rust، مع نجاح 99.8% من حزمة الاختبارات القائمة، خلال أحد عشر يوما من أول إيداع إلى الدمج. وتشير Anthropic إلى أنه لم يصل إلى الإنتاج بعد.

يرافق هذه الميزة تحذيران. تستهلك رموزا أكثر بكثير من جلسة عادية، ولهذا يطلب منك أول مسار عمل التأكيد، ويستطيع المسؤولون تعطيل مسارات العمل تماما. كما يرتكب العاملون المتوازون أخطاء مترابطة: لا تفيد موجة تحقق إلا إذا اختلفت تعليمات المراجعين أو مجموعة أدلتهم أو دورهم. (يقول منشور الإعلان «عشرات إلى مئات»، لكن الوثائق المرجعية أدق، وهي ما ينبغي أن تبني تصميمك عليه: يحدد جدول «السلوك والحدود» حتى 16 وكيلا متزامنا، وأقل على الأجهزة محدودة أنوية وحدة المعالجة المركزية، و1,000 وكيل إجمالا في كل تشغيل. راجع الوثائق لمعرفة الأرقام الحالية قبل أن تبني عليها.) أما السؤال العميق الذي تتركه الميزة بلا إجابة، وهو أين يضع مئات العاملين ذوي السياق الجديد ما يتعلمونه، فهو مهمة الجزء 3.

اختبر فهمك

تفشل تجربة الوكيل A في AgentHub: يتعطل حجم دفعة أكبر عند حد للذاكرة. في طريقة تفكير GitHub، يُهجر الفرع ويُنسى. ماذا يحدث له في طريقة تفكير الرسم، ومن يستفيد؟

أظهر الإجابة

يبقى الإيداع الفاشل في رسم DAG بوصفه عقدة، ويستشهد منشور في لوحة الرسائل بسلالته: «تتجاوز الدفعة 64 الذاكرة على هذا الجهاز. تفرع من تغيير العمق بدلا من ذلك». يرث كل وكيل مستقبلي يستعلم عبر children عن تلك السلالة التحذير من دون إعادة تشغيل التعطل. أصبح الإخفاق ذاكرة مشتركة. وهذا هو الفرق كله بين سرب وحشد.


الجزء 3: رسم الحقائق

منحك Git رسم DAG للإيداعات مجانا، أما الرسم المعرفي فعليك بناؤه. ظل ذلك يعني لعقود مسار معالجة لغة طبيعية مدربا: نموذج كيانات مسماة، ومصنف علاقات، وقاعدة استدلالية لإزالة التكرار، وكل منها يحتاج إلى بيانات موسومة وصيانة. يعرض دليل إنشاء الرسم المعرفي من Anthropic، الصادر في 23 مارس 2026، نسخة عام 2026: يختصر المسار كله إلى تعليمات ذات مخرجات منظمة. أربع مراحل وثلاثة مفاهيم.

المسار ذو المراحل الأربع من المستندات إلى رسم قابل للاستعلام، من دون نموذج مدرب في أي موضع. المرحلة الأولى، المستندات، تعرض ثلاث بطاقات ملفات كريمية بأسماء apollo-brief.md وmission-log.txt وcrew-notes.md مع أسطر نص باهتة، وتعليق «لا وسوم ولا متن ذهبي». يؤدي سهم إلى المرحلة الثانية، الاستخراج، وتحمل عبارتي «نموذج رخيص» و«مقيد بمخطط»، مع شارة claude-haiku-4-5. تسرد خمس بطاقات بيضاء للأشكال الظاهرية Edwin Aldrin (طيار الوحدة القمرية)، وBuzz Aldrin (ثاني شخص على القمر)، وCol. Aldrin (طاقم Apollo 11)، وM. Khan (جراح طيران، 1969)، وM. Khan (مسؤول صحفي، 1972)، مع تعليق «ستهم الأوصاف لاحقا». يؤدي سهم إلى المرحلة الثالثة، الحل، وتحمل عبارتي «نموذج أقوى» و«مهمة استدلال». يعرض صندوق ذهبي الكيان المعتمد buzz_aldrin مع علامة صح، ويسرد الأسماء البديلة المحتفظ بها Edwin Aldrin وBuzz Aldrin وCol. Aldrin، ويقول «دمج ثلاثة في واحد». تحته صندوق متقطع بلون الأرض يحمل علامة خطأ وعبارة «لم يُدمجا»، ويشرح «شخصان، الاسم نفسه، وصفان مختلفان، أبقهما منفصلين». تحمل المرحلة تعليق «قابل للعكس: المبرر ودرجة الثقة». يؤدي سهم إلى المرحلة الرابعة، التجميع، وتحمل عبارة «رسم مع إيصالات»: دائرتا كيان تصل بينهما حافة commanded، وكلتاهما متصلة إلى أسفل بدائرة مصدر عبر حافة from. فوقها لوحة كريمية مقفلة عنوانها «تحمل كل حافة»، وتسرد source_doc أي مستند، وconfidence مقدار اليقين، وproduced_by أي تشغيل، مع تعليق «قابل للاستعلام والتدقيق الآن». التذييل: الدمج الخاطئ هو الإخفاق الكارثي، احتفظ بالأسماء البديلة، واحتفظ بالمبرر، وأبق العملية قابلة للعكس.

6. الاستخراج: المخطط هو بيانات التدريب

شغّل هذا المثال: python3 concepts/06-extraction.py في المختبر المصاحب. قراءته نصف التعلم، ومشاهدته وهو يحدث نصفه الآخر.

تحول المرحلة الأولى النص غير المنظم إلى أجزاء ذات أنواع. تحدد الشكل الذي تريده في مخطط، وتقيد مخرج النموذج به:

اختُصر الشكل أدناه لتسهيل القراءة: عليك أنت تعريف EntityType وExtractedGraph وPROMPT، وتحتوي مفكرة الدليل على النسخة القابلة للتشغيل. ما يهم هنا هو قرارات التصميم الثلاثة، لا عدد الأسطر.

class Entity(BaseModel):
name: str
type: EntityType # your enum: PERSON | ORG | PROJECT | ...
description: str # context, used later for resolution

class Relation(BaseModel):
source: str # subject, a name that must appear in entities
predicate: str # short verb phrase: "commanded", "supplied"
target: str # object, likewise

class ExtractedGraph(BaseModel):
entities: list[Entity]
relations: list[Relation]

def extract(text: str, client) -> ExtractedGraph:
response = client.messages.parse(
model="claude-haiku-4-5", # cheap model: extraction is volume work
max_tokens=4096,
messages=[{"role": "user", "content": PROMPT.format(text=text)}],
output_format=ExtractedGraph, # the schema constrains the reply
)
return response.parsed_output

اقرأ التصميم لا الصياغة البرمجية. تحمل ثلاثة قرارات الدرس:

  • مخطط Pydantic هو «بيانات التدريب» الوحيدة. لا متن موسوم ولا نموذج NER مضبوط بدقة. يحل المخطط مع تعليمة محل ما كان يستغرق ربع سنة من عمل فريق. وأصبح تغيير علم كينوناتك تعديلا لصنف، لا إعادة تدريب مسار.
  • ينجز نموذج رخيص العمل الكبير الحجم. يجري الاستخراج مرة لكل مستند، وربما عبر آلاف المستندات، لذلك يعمل على Haiku. أما أحكام التقدير المكلفة، في المفهوم التالي، فتذهب إلى نموذج أقوى. هذا هو اقتصاد الصانع والمدقق من دورة الحلقات مطبقا على مراحل المسار.
  • حقل description ليس للزينة. فهو يلتقط السياق المحيط بكل كيان، والسياق هو ما يحتاج إليه المفهوم 7 بالضبط ليقرر ما إذا كان اسمان يعودان إلى الشيء نفسه.

هذه أيضا قاعدة المخرجات ذات الأنواع في دورة الحاضنة، بعد ترقيتها من حكم مراجع واحد إلى نظام الذاكرة كله: لا يدخل شيء إلى الرسم كنثر. يتحقق الكود من كل استخراج وفق المخطط قبل أن يصدقه الرسم.

بعبارة بسيطة

لا تعلم النموذج ما الشخص أو الشركة، فهو يعرف ذلك بالفعل. بل تسلمه نموذجا ليملأه، وترفض أي إجابة لا تلائم النموذج. النموذج هو المسار كله.

جرب الآن: استخرج أول ثلاثياتك (5 دقائق)

لا تحتاج الفكرة إلى Python. في مستودع يحتوي README، شغّل العامل من دون واجهة الذي تعرفه بالفعل:

claude -p 'Read README.md. Return ONLY valid JSON:
{"entities":[{"name":"","type":"PERSON|ORG|TOOL|PROJECT","description":""}],
"relations":[{"source":"","predicate":"","target":""}]}
Every relation must connect two extracted entities. Predicates are short verb phrases.'
# OpenCode: opencode run '<same prompt>'

مرر المخرج عبر jq . للتحقق منه. تهانينا: هذه هي المرحلة الأولى من الدليل، بحجم التشغيل.

7. حل الكيانات: شيء واحد وأسماء عديدة

شغّل هذا المثال: python3 concepts/07-resolution.py في المختبر المصاحب. قراءته نصف التعلم، ومشاهدته وهو يحدث نصفه الآخر.

ينتج الاستخراج أشكالا ظاهرية، لا رسما نظيفا. يظهر رائد الفضاء نفسه بأسماء «Edwin Aldrin» و«Buzz Aldrin» و«Col. Aldrin» في ثلاثة مستندات. وإذا تركتها بلا دمج، فسيحتوي رسمك ثلاثة أشخاص منفصلين، وسيفشل بصمت كل سؤال متعدد القفزات يمر عبر ألدرين. حل الكيانات هو تقرير أي الأشكال الظاهرية يعود إلى الشيء الحقيقي نفسه.

لماذا لا نستخدم تشابه السلاسل النصية؟ لأنه يفشل في الاتجاهين معا. يختلف «Edwin Aldrin» و«Buzz Aldrin» في الموضع نفسه الذي يُفترض أن يحدد فيه الاسم هوية شخص، فلا تشترك الأسماء الأولى في شيء، وتهبط درجة التشابه دون أي حد معقول للدمج فيفوت الدمج. وفي الوقت نفسه، يحقق شخصان مختلفان يحملان اسم «Muhammad Khan» تطابقا كاملا، فتخترع درجة التشابه دمجا. الأسماء أدلة لا براهين.

تتمثل خطوة الدليل في معاملة الحل بوصفه مهمة استدلال. جمّع الكيانات المرشحة بحسب النوع، وزوّد نموذجا أقوى، هو Sonnet، بكل مجموعة مع حقول description من المفهوم 6 بوصفها سياقا، واطلب منه اقتراح عناقيد معتمدة. الأوصاف هي ما يجعل دمج «Edwin Aldrin، طيار الوحدة القمرية في Apollo 11» مع «Buzz Aldrin، ثاني شخص على القمر» ممكنا، ويفصل بين غريبين يحملان الاسم نفسه. وعلى نطاق واسع، تضيّق قواعد حجب بسيطة، مثل تطابق النوع وتداخل السياق، قائمة أزواج المرشحين قبل أن يحكم النموذج بينها، فلا تدفع تكلفة كل مقارنة زوجية.

والآن القاعدة التي تجعل الرسم دائما: يجب أن يكون الحل إضافيا وقابلا للعكس. يحتفظ الكيان المعتمد بأسمائه البديلة، ومستنداته المصدرية، ومبرر النموذج للدمج، ودرجة الثقة، والتشغيل الذي أنشأ الدمج. لا يُكتب فوق شيء. ترتبط الأشكال الظاهرية ولا تُدمر. لماذا كل هذا الحرص؟ لأن الدمج الخاطئ هو الإخفاق الكارثي للرسوم المعرفية. إذا دمجت شخصين في عقدة واحدة، فسيمزج كل اجتياز لاحق أصحاب عملهما ومشروعاتهما وتواريخهما وأفعالهما، بثقة، ومن دون أن يُرى الخطأ، وفي كل موضع في وقت واحد. إذا احتفظت بالإيصالات، كان التراجع عن دمج سيئ عملية واحدة. ومن دونها، يلزم إعادة بناء.

أنت تعرف هذا النمط. إنه فعل القابلية للعكس من دورة الحاضنة، أي نقاط تحقق قبل الإجراءات الخطرة، مطبقا على الذاكرة بدلا من الكود.

بعبارة بسيطة

يشبه دمج الأسماء جمع بطاقات الاتصال لشخصين. إذا أنجزته بطريقة صحيحة، فستحتفظ بالبطاقتين الأصليتين مثبتتين خلف البطاقة المدمجة، مع ملاحظة تشرح السبب ومدى ثقتك. وإذا أنجزته خطأ وثبت شخصين غريبين معا، فستصل كل رسالة موجهة إلى أحدهما إلى الآخر، ولن يعرف أحد متى بدأ ذلك.

جرب الآن: قابل تكراراتك (6 دقائق)

خذ الكيانات التي استخرجتها في المفهوم 6 وأعدها إلى النموذج لحلها:

claude -p 'Here are extracted entities with descriptions: <paste>.
Group them by type, then propose canonical clusters. For each cluster return:
canonical_name, aliases[], rationale, confidence (0-1). Never drop an alias.
If two entities share a name but differ in description, keep them separate.'

ثم ازرع فخا وشغله من جديد: أضف كيانا ثانيا يحمل اسما لديك بالفعل لكن بوصف مختلف. إذا دمجهما النموذج، فأوصافك أرق مما ينبغي، وهذا إصلاح في المفهوم 6 لا المفهوم 7. والاعتمادية بين المرحلتين هي الدرس.

اختبر فهمك

تبلغ خطوة الحل عن نسبة ضغط 5 إلى 1، أي خمسة أشكال ظاهرية لكل كيان معتمد، بعد أن كانت 2 إلى 1 الأسبوع الماضي. يحتفل الفريق بالرسم «الأنظف». ما الذي يجب أن تفحصه قبل أن تنضم إليهم؟

أظهر الإجابة

معدل الدمج الخاطئ. تكافئ نسبة الضغط وحدها الإفراط في الدمج: أسرع طريق إلى نسبة مذهلة هو تثبيت الغرباء بعضهم ببعض. لا تكون النسبة المرتفعة خبرا جيدا إلا إذا ظلت الدقة الزوجية ثابتة. خذ عينة من العناقيد المدمجة وتحقق من أن أعضاءها شيء واحد حقا. الرسم المتصل بأخطاء أسوأ من الرسم المجزأ، لأنه يجيب بثقة. (ستحول هذا الحدس إلى صيغة رسمية، عبر المجموعات الذهبية والدقة والاستدعاء، في الدورة التالية.)

8. المصدرية: تحتفظ كل حافة بإيصالها

شغّل هذا المثال: bash concepts/08-provenance-invariants.sh في المختبر المصاحب. قراءته نصف التعلم، ومشاهدته وهو يحدث نصفه الآخر.

التجميع، وهو المرحلة الثالثة، بسيط آليا: يستخدم الدليل MultiDiGraph من NetworkX في الذاكرة، وينتقل الشكل نفسه إلى Postgres أو Neo4j عندما تتجاوز سعة الذاكرة. لا يكمن المحتوى الهندسي في الحاوية، بل في ما يجب أن تحمله كل عقدة وحافة:

يسلمك الحل في المفهوم 7 شيئا إضافيا: خريطة من كل شكل ظاهري إلى الاسم المعتمد الذي ينتمي إليه. والتجميع هو تطبيق تلك الخريطة. لاحظ أن Entity وRelation ما زالا مخططي المفهوم 6 البسيطين: تعيش الهوية المعتمدة في الخريطة، لا في حقل جديد على مخرج النموذج.

# from Concept 7: {"Edwin Aldrin": "Buzz Aldrin", "Buzz": "Buzz Aldrin", ...}
alias_to_canonical: dict[str, str] = resolve(entities, client)

def add_entity(G, entity: Entity, source_doc: str) -> None:
canonical = alias_to_canonical.get(entity.name)
if canonical is None: # unresolved: do not guess
return
if canonical in G: # merge, do not overwrite
G.nodes[canonical]["source_docs"].add(source_doc)
G.nodes[canonical]["aliases"].add(entity.name)
return
G.add_node(canonical,
entity_type=entity.type,
description=entity.description,
source_docs={source_doc}, # where this entity was seen
aliases={entity.name}) # resolution's receipts, kept

def add_relation(G, rel: Relation, source_doc: str) -> None:
src = alias_to_canonical.get(rel.source)
tgt = alias_to_canonical.get(rel.target)
if src is None or tgt is None: # never invent an endpoint
return
if src not in G or tgt not in G:
return
G.add_edge(src, tgt,
predicate=rel.predicate,
source_doc=source_doc) # the receipt

تفصيلان هما الدرس كله. تضيف رؤية كيان مرة أخرى مستندا مصدريا واسما بديلا بدلا من استبدال ما كان موجودا، فتراكم العقدة الإيصالات بدلا من فقدها. كما أن أي شيء لم تحله خطوة الحل يُسقط بدلا من تخمينه، ولهذا تعود الدالتان مبكرا عند غياب مفتاح، ولا تعودان إلى الشكل الظاهري الخام. لهذه الصرامة تكلفة يجب أن تراها بوضوح: تفقد خطوة الحل التي يفوتها كيان كل حقيقة عنه بصمت. وتتمثل السياسة الألين في قبول الاسم الخام ووسمه للمراجعة، وكلا الخيارين قابل للدفاع عنه. أما الوسط فلا يمكن الدفاع عنه: أن تعود بصمت إلى الاسم الخام ثم تخبر القراء أنك أسقطته. (مفكرة الدليل نفسها هي التنفيذ المرجعي. إذا أردت رقم ثقة على كل حافة، فهذا حقل تضيفه إلى مخططك، وليس حقلا توفره Relation في الدليل.)

المصدرية، أي الإيصال، هي ما يرفع الادعاء من «شيء قاله نموذج ذات مرة» إلى «عبارة يمكنك تدقيقها». يختصر ملف PDF المستقل هذا الانضباط في أربعة ثوابت تستحق أن تحفظها كوحدة. يجب أن تحقق كل كتابة في الرسم ما يلي:

  1. لكل ادعاء مصدر، أو يُوسم صراحة بأنه استنتاج.
  2. لكل أثر تشغيل أنشأه وإصدار.
  3. يحدد كل تقييم معيار تقييمه.
  4. يبقى كل كائن استُبدل بغيره قابلا للوصول: يُستبدل ولا يُمحى.

لاحظ ما تمنعه الثوابت في هدوء: الرسم ليس آلة حقيقة. إنه يخزن الادعاءات والمصادر والعلاقات حتى يمكن فحصها، ولا يحول الادعاءات إلى حقيقة. ينتج المتن المتحيز رسما متحيزا. وينتج المستند المفقود حافة مفقودة. وعد الرسم الصادق أصغر وأكثر قيمة: لا يوجد شيء فيه بلا إسناد إلى مصدر، ولا شيء يتعذر فحصه. وهذا الوعد هو ما يجعل التحقق المرتكز إلى الأدلة في المفهوم 10 ممكنا، إذ لا يستطيع مدقق طلب دليل من ذاكرة لم تحتفظ بأي دليل قط.

جرب الآن: دقق إيصالاتك (4 دقائق)

اكتب خمسة ادعاءات أثبتها وكلاؤك هذا الأسبوع في ملف مؤقت، كائن JSON واحدا لكل ادعاء، واملأ كل حقل تطلبه الثوابت. لا يتمثل التمرين في الكتابة، بل في ملاحظة الادعاءات التي لا تستطيع إسنادها إلى مصدر، لأنها التي كنت تحملها كحقائق اعتمادا على طلاقة نموذج. وسم كل واحد منها بالصيغة "source": {"kind": "inference"} ثم عدها. ذلك العدد هو خط الأساس الحالي لصدقك.

يستحق الثابت 4 جملة أخرى، لأنه شقيق السقاطة. حين يقلب دليل جديد ادعاء، تضيف (claim_new) —supersedes→ (claim_old). لا تحذف. يتذكر الرسم أنه كان مخطئا، وهذا ما يتيح لك أن تسأل لاحقا: «بماذا كنا نؤمن في 10 مارس، ولماذا؟» مسار التدقيق ميزة لا يمكنك إضافتها بأثر رجعي.

بعبارة بسيطة

الادعاء بلا إيصال شائعة. والرسم المملوء بالشائعات أسوأ من عدم وجود رسم، لأنه يبدو منظما. الثوابت الأربعة عادة واحدة: لا تكتب شيئا من دون أن تكتب أيضا كيف تعرفه وما الذي حل محله.


الجزء 4: العمل انطلاقا من الرسم

9. الرسم الفرعي لا الرسم كله: بناء السياق

شغّل هذا المثال: python3 concepts/09-subgraph.py في المختبر المصاحب. قراءته نصف التعلم، ومشاهدته وهو يحدث نصفه الآخر.

بنيت الرسم لتتخلص من تفريغ السياق. وأسرع طريقة لإفساده هي اختراع نوع جديد من التفريغ: تحويل الرسم كله إلى تسلسل نصي داخل كل تعليمة. الرسم الذي يحتوي خمسين ألف حافة عديم الفائدة في نافذة سياق مثل خمسين نص محادثة. الانضباط المطلوب هو الاسترجاع المحدود: يحصل كل عامل على رسم فرعي مخصص لمهمته، ولا شيء أكثر.

تعرض مرحلة الاستعلام في الدليل الشكل، ويعممها ملف PDF إلى باني سياق تستطيع أي من حلقاتك اتباعه:

  1. حل الكيانات المذكورة في المهمة بمقارنتها بالرسم، مثل تحويل «حادثة المورد» إلى entity_vendor_x وentity_incident_y.
  2. وسع قفزة أو قفزتين من تلك العقد، عبر أنواع الحواف المسموح بها فقط، لا كل حافة في كل موضع.
  3. أدرج الإصدارات الحالية من الآثار التي تمسها المهمة.
  4. أعط الأولوية للادعاءات الحديثة المتحقق منها على القديمة أو منخفضة الثقة.
  5. أدرج التعارضات. إذا تناقض ادعاءان، فيجب أن يرى العامل كليهما، لأن إخفاء عدم اليقين ينتج أخطاء واثقة.
  6. حوّل المحتوى إلى تسلسل ضمن ميزانية رموز، في صورة ثلاثيات بسيطة يستطيع النموذج قراءتها.
  7. أرفق معرفات ثابتة للحواف، حتى تستشهد إجابة العامل بالمعرف edge_1042 ويستطيع المدقق البحث عنها.

الاسترجاع المحدود في ثلاث لوحات. اليسرى، «الرسم كله، نحو خمسين ألف حافة»، مرسومة كسحابة كثيفة باهتة من ستين دائرة صغيرة تصلها خطوط رفيعة متقاطعة، ولا تبرز بالذهبي سوى عقدتين هما الكيانان المذكوران في المهمة. التعليق: «تفريغ هذا كله هو الإخفاق القديم بعد تغيير اسمه». يؤدي سهم بلون الأرض يحمل «حل، وسع» إلى اللوحة الوسطى، «الرسم الفرعي للمهمة»، وتحمل «كيانان، وقفزتان، وأنواع الحواف المسموح بها فقط». تصل حافتان supplied وinvolved_in صندوقي vendor_x وincident_y ذهبيين بصندوق component_z أبيض، ويتصل بهما صندوق مصدر كريمي باسم contract.pdf. وتحتها ملاحظة لاصقة بلون الأرض عنوانها «تنتقل التعارضات أيضا»، ونصها «يختلف مصدران على التاريخ، لذلك يرى العامل كليهما». يؤدي سهم ثان بلون الأرض يحمل «حوّل إلى تسلسل، ضمن الميزانية» إلى اللوحة اليمنى، «ما يحصل عليه العامل»، وتحمل «ثلاثيات بسيطة، ومعرفات ثابتة». تسرد كتلة كريمية بخط ثابت e1041 vendor_x supplied component_z، وe1042 component_z involved_in incident_y، وe1043 claim_88 from contract.pdf، وسطر تعارض يسمي e1044 مقابل e1045. تقول شارة ذهبية أسفلها «عشرون ثلاثية، لا خمسون ألف حافة»، مع تعليق «يمكن الاستشهاد بكل معرف، حتى يبحث المدقق عما استُخدم». التذييل: حل، ووسع، وأعط المتحقق منه الأولوية، وأدرج التعارضات، وحول إلى تسلسل ضمن الميزانية، وأرفق المعرفات.

تغلق الخطوتان 6 و7 الحلقة مع كل ما علمك إياه هذا الكتاب عن السياق: الرسم الفرعي المحول إلى تسلسل هو مستند إحاطة يجمعه الكود من ذاكرة مدققة. إنه النموذج المثالي لهندسة السياق، وأصبح له أخيرا مصدر دائم وراءه. ولاحظ ما صار ممكنا ولم تستطع نصوص المحادثات تقديمه قط: لم يعد منسق يدير عشرين عاملا ينسخ عشرين مخرجا إلى نافذته. ينشر العاملون تحديثات رسم ذات أنواع. ويجتاز المجمّع الرسم ويدمج النتائج حتى إن لم ير أي وكيل منفرد جميع المستندات المصدرية قط. يظل سياق المنسق نظيفا. هذه الخاصية وحدها هي سبب توسع الأنظمة متعددة الوكلاء مع الرسم واختناقها من دونه.

جرب الآن: ابن رسما فرعيا بيدك (7 دقائق)

اختر من الكيانات والعلاقات التي استخرجتها كيانا قد تذكره مهمة حقيقية. ثم نفذ الخطوات السبع بيدك: اكتب الكيان المحلول، واسرد جيرانه على بعد قفزة واحدة عبر نوعين من الحواف تختارهما، وأضف أي ادعاء متعارض، وحول النتيجة إلى ثلاثيات بسيطة تحمل كل منها معرفا. عد الأسطر. إذا كانت إحاطة مهمة حقيقية تتسع في عشرين ثلاثية، فقد أثبت للتو أن تفريغ خمسين ألف حافة لم يكن ضروريا قط.

بعبارة بسيطة

لا تسلم الموظف الجديد خزانة الملفات كلها. اسحب المجلدات الثلاثة التي تمسها مهمته، ومعها الملاحظة اللاصقة التي تقول: «يختلف هذان المجلدان، فتحقق». هذا هو الرسم الفرعي: صغير، وذو صلة، وصريح بشأن التعارضات، وقابل للاستشهاد.

10. المدقق المرتكز إلى الرسم: «لم يُعثر على الثلاثية» أفضل من «يبدو خطأ»

شغّل هذا المثال: python3 concepts/10-grounded-checker.py في المختبر المصاحب. قراءته نصف التعلم، ومشاهدته وهو يحدث نصفه الآخر.

هنا تلتقي طبقة الذاكرة بطبقة الحوكمة، وتفي الدورة بدينها للدورات الشقيقة. منحتك دورة الحلقات فصل الصانع عن المدقق، ومنحت دورة الحاضنة المدقق مخرجا ذا نوع. لكن حكم المدقق ظل انطباعا: نموذج يقرأ العمل ويبلغ عن شعور تحيط به بنية مخطط. يغير الرسم ما يستطيع المدقق أن يكونه، إذ يمكنه فحص الادعاءات مقابل الحواف.

تتبع ادعاء واحدا. يقول تقرير الصانع: «ورد المورد X المكون المتورط في الحادثة Y». لا يسأل المدقق المرتكز إلى الرسم: «هل يبدو هذا صحيحا؟» بل يطرح على الرسم سؤالين آليين: هل توجد حافة مدعومة (vendor_x, supplied, component_z)؟ وهل توجد (component_z, involved_in, incident_y)؟ إذا غابت إحداهما، فلا يكون الحكم انطباعا، بل طلبا منظما قابلا للتنفيذ:

{
"decision": "revise",
"claim": "Vendor X supplied the component in Incident Y",
"reason": "No supported path from vendor_x to incident_y",
"required_evidence": [
"A source-backed 'supplied' relation from vendor_x",
"A source-backed 'involved_in' relation to incident_y"
]
}

قارن رسالتي الإخفاق اللتين يعد بهما عنوان المفهوم. تعيد عبارة «يبدو خطأ» الصانع إلى تخمين ما لم يعجب المراجع. أما «لم يُعثر على الثلاثية: هاتان الحافتان اللتان يجب أن توفرهما» فتخبر الصانع بالدليل الذي يجب أن يجده أو الادعاء الذي يجب أن يسحبه. الأولى مزاج، والثانية أمر عمل.

كيف يفكك مدقق مرتكز إلى الرسم ادعاء واحدا إلى الحواف المطلوبة. في الأعلى، توجد شارة «يدعي الصانع» بجانب الجملة «ورد المورد X المكون المتورط في الحادثة Y». يتفرع سهمان إلى أسفل ويحملان «فككه إلى الحواف التي يتطلبها». في اليسار، لوحة ذات إطار ذهبي عنوانها «الحافة المطلوبة الأولى»، وعليها «موجودة» مع علامة صح: يصل صندوق vendor_x ذهبي بصندوق component_z أبيض عبر سهم supplied، مع حاشية e1041، والمصدر contract.pdf، والثقة 0.94. في اليمين، لوحة متقطعة بلون الأرض عنوانها «الحافة المطلوبة الثانية»، وعليها «مفقودة» مع علامة خطأ: يصل صندوق component_z أبيض بصندوق incident_y باهت ومتقطع عبر سهم involved_in متقطع يحمل علامة استفهام، مع حاشية «لا يوجد مسار مدعوم في الرسم». يؤدي سهم إلى لوحتي حكم متباينتين في الأسفل. اليسرى ذات إطار بلون الأرض وعنوانها «الحكم المرتكز إلى الرسم: أمر عمل»، وتعرض JSON بخط ثابت، فيه القرار revise، والسبب no supported path from vendor_x to incident_y، وrequired_evidence يسمي علاقة involved_in مدعومة بمصدر، مع تعليق «يعرف الصانع بالضبط ما يجب أن يجده أو يسحبه». اليمنى باهتة ومتقطعة وعنوانها «الحكم غير المرتكز: مزاج»، ولا تحتوي إلا جملة «يبدو هذا الادعاء ضعيفا»، مع تعليق «يجب على الصانع الآن تخمين ما لم يعجب المراجع، ولم تتحسن الذاكرة أيضا». التذييل: عندما يجد الصانع الدليل، يكتسب الرسم حافة، فيحسن الارتكاز الذاكرة لا التقرير وحده. والطلب صادق في الاتجاهين: يجد الصانع المصدر أحيانا، فيكتسب الرسم حافة جديدة. يحسن الارتكاز الذاكرة لا التقرير وحده.

يرتقي الارتكاز نفسه بكل نمط من أنماط سير العمل التي تعرفها. في السلسلة، يكون الرسم بوابة بين المراحل: هل الكيانات التي أنتجتها هذه المرحلة موجودة في المنبع؟ وفي التوزيع، يكون هو السطح المشترك الذي ينشر إليه العاملون من دون تداخل. وفي المنسق والعاملين، يمثل الذاكرة المشتركة التي تبقي سياق المنسق نظيفا. وفي المقيّم والمحسّن، يمثل طبقة الأدلة تحت كل حكم. رسم واحد وخمسة أنماط وثلاثة أدوار ثابتة: ذاكرة مشتركة، وطبقة ارتكاز، ونموذج دائم للعالم.

والآن الجملة التي تبقيك صادقا وتسلمك إلى الدورة التالية. لا يكون الحكم المرتكز إلى الرسم أفضل من شيئين لا يختبرهما الارتكاز: هل حواف الرسم نفسها صحيحة، وهو خطر تقلله المفاهيم 7 و8 ولا يزيله شيء، وهل يجد المدقق بصورة موثوقة المسارات الموجودة فعلا. إن عبارة «استشار المدقق الرسم» أفضل من عبارة «كان لدى المدقق انطباع»، لكنها تظل ادعاء أنتجه نموذج. كيف تعرف أن المدقق جيد؟ لهذا السؤال تخصص كامل، وهو الدورة التالية مباشرة: الثقة بالمدقق.

بعبارة بسيطة

المراجع غير المرتكز ناقد: «لم يعجبني». أما المراجع المرتكز فمدقق حسابات: «يدعي السطر 4 وجود دفعة، ولا يوجد إيصال في الملف. قدم الإيصال أو احذف السطر». يمكنك مجادلة ناقد إلى الأبد، لكن طلب مدقق الحسابات إما أن يتحقق أو لا يتحقق.

جرب الآن: اجعل مدققا يطلب الدليل (8 دقائق)

اكتب ثلاثة ادعاءات عن مشروعك في ملف، اثنان يدعمهما شيء حقيقي وواحد تخترعه. ثم شغّل المدقق مقابل الرسم الفرعي الذي بنيته بيدك في المفهوم 9:

claude -p 'Subgraph (triples with ids): <paste>. Claims: <paste>.
For each claim, cite the triple ids that support it. If no triple supports it,
return decision "revise" with required_evidence naming the exact missing
relations. Never approve on plausibility. Return JSON only.'

راقب ما يحدث للادعاء المخترع. إذا وافق عليه المدقق رغم ذلك، فقد وجدت شيئا أثمن من مدقق يعمل: وجدت سبب وجود الدورة التالية.

اختبر فهمك

يعيد مدققك المرتكز PASS لكل ادعاء في تقرير، مستشهدا بمعرفات الحواف لكل واحد. وبعد أسبوع، يثبت خطأ أحد الادعاءات. اسرد الموضعين اللذين قد يعيش فيهما الإخفاق، وأي دورة تصلح كل واحد.

أظهر الإجابة

إما أن الرسم كان خطأ، أي أن استخراجا سيئا أو دمجا خاطئا وضع حافة خاطئة في الذاكرة، وهذه مشكلة انضباط في الجزء 3، وعلاجها تشديد الحل وتدقيق المصدرية وإضافة الإخفاق كحالة ذهبية؛ أو أن المدقق كان خطأ، فقد استشهد بحافة لا تدعم الادعاء فعلا، وهذه مشكلة جودة المدقق. تقيسها دورة الثقة بالمدقق، حيث تمثل الإجابات الطليقة التي تستشهد بحواف غير ذات صلة نمط إخفاق مسمى. ضيّق الارتكاز عبارة «هناك خطأ ما في مكان ما» إلى مشتبهين قابلين للتدقيق. وهذا التضييق هو المكسب.


الجزء 5: رسم الحلقات

بنت الأجزاء من 2 إلى 4 رسوما عقدها سجلات: إيداعات وكيانات وادعاءات ومصادر. يغير هذا الجزء ماهية العقدة. ابتعد بالصورة حتى تصبح كل حلقة نقطة واحدة، واسأل كيف تتصل النقاط. هذا هو رسم الحوكمة، المعنى الثاني من المعنيين اللذين تعلمهما هذه الدورة، وهو ما يقرر إن كان نظام الحلقات سيظل صادقا أم سيظل مشغولا فحسب.

11. التوصيلات: من يغذي من، ومن يدقق عمل من

شغّل هذا المثال: python3 concepts/11-wiring.py في المختبر المصاحب. قراءته نصف التعلم، ومشاهدته وهو يحدث نصفه الآخر.

في 18 يوليو 2026، نشر بيتر شتاينبرغر، صاحب عبارة «ينبغي أن تصمم حلقات تصوغ التعليمات لوكلائك» من بداية دورة الحلقات، سؤالا من اثنتي عشرة كلمة بعد منتصف الليل: «هل ما زلنا نتحدث عن الحلقات أم انتقلنا إلى الرسوم البيانية؟» وفي غضون ساعات تحول إلى شعار. وبعد نحو أربع ساعات ونصف، نشر هامل حسين مقالا عنوانه «ماتت هندسة الحلقات. أهلا بهندسة الرسوم البيانية»، ونشر سانتياغو فالديراما العبارة الأوسع انتشارا: «ماتت هندسة الحلقات. فلتحي هندسة الرسوم البيانية!» انتبه مرة أخرى إلى من قال ماذا. لم يفعل شتاينبرغر سوى طرح سؤال، وتبدو كلماته مزحة عن دوامة التسميات في الصناعة، لا إعلانا. كتب أشخاص آخرون النعي، ويبدو نعيهم مزحة أيضا. لكن وراء الضوضاء فكرة حقيقية، ويرسمها بوضوح مقال كارلوس إي. بيريز من هندسة الحلقات إلى هندسة الرسوم البيانية؟

أنت تعرف الحلقة: سلوك وكيل واحد، ونبضة، وجسد، وعمود فقري. في رسم الحوكمة، الحلقة هي العقدة، والرسم هو التوصيلات بين العقد. يلزم تصحيح واحد قبل أن تستقر هذه الفكرة: ليست كل عقدة حلقة. البوابة البشرية عقدة. وفحص الحقيقة الأساسية عقدة. والمدقق المجمد عقدة. والصيغة الدقيقة هي أن حلقة الوكيل يمكن أن تكون عقدة. أما العقد الأخرى فهي قرارات بشرية وأنظمة خارجية وقياسات يجب على الجميع قبولها.

إذا بدا هذا مألوفا، فينبغي أن يكون كذلك، فقد بنيت حواف الحوكمة طوال دورة الحلقات من دون هذا الاسم. فصل الصانع عن المدقق حافة: يصبح مخرج حلقة مدخل حلقة أخرى. وبوابة الروتينين رسم من ثلاث عقد: يصوغ الروتين A المسودة، ويقرر إنسان، ويشغّل القرار الروتين B. وحلقة الحلم رسم أيضا: تقرأ حلقة سجلات كل الحلقات الأخرى وتقترح تغييرات عبر بوابة. لذلك اقرأ الشعار بصدق: الرسم هو حلقات مركبة معا. أزل الحلقات، ولن يبقى سوى صناديق فارغة.

ينظم فرق واحد كل ما يأتي. تشمل كلمة «حلقة» آلتين مختلفتين، وتفشلان بطريقتين مختلفتين:

  • تنجز حلقة التنفيذ عملا متكررا: تفرز المسائل، وتراجع طلب الدمج، وتصوغ سجل التغييرات. وهذا تقريبا كل ما علمته دورة الحلقات.
  • تراقب حلقة التحسين رقما مقابل هدف وتعدل النظام الذي يؤدي العمل: قس الفجوة، واتخذ إجراء لتقليصها، ثم كرر. حلقة الحلم أوضح حلقة من هذا النوع بنيتها.

تحتاج حلقة التنفيذ التي تفوت شرط توقفها إلى مواصفة أفضل. أما حلقة التحسين التي تتلاعب برقمها فتحتاج إلى بنية تحيط بها، وهذه البنية هي المفهوم التالي.

عندما تفكر بالرسوم، تنتقل ثلاثة أسئلة عملية إلى المركز. لا جديد فيها، لكن كل واحد منها يُطرح الآن مرة لكل حافة بدلا من مرة لكل حلقة. التوجيه: حين تنتهي الحلقة A، من يتلقى النتيجة، الحلقة B أم إنسان أم لا أحد؟ حدود الثقة: الحواف أذونات دائمة، فأي حلقة يجوز لها تشغيل أي حلقة أخرى، وتحت هوية من؟ الحافة المفقودة عمل لا يصل أبدا بصمت. موضع البوابة: ضع الإنسان حيث تكون الحركة التلقائية الخاطئة مكلفة وصعبة العكس. كان هذا قرصا تضبطه لكل حلقة. والآن تضبطه لكل حافة، وتقع البوابة بين العقد بدلا من أن تكون داخل واحدة.

التوجيه هو الموضع الذي يمنح فيه البناة النموذج سلطة أكبر مما قصدوا، لذلك تستحق قاعدة واحدة أن تُقال بوضوح. لا بأس بأن يصنف نموذج طلبا، فهو جيد في ذلك. أما أن يختار النموذج ما يُسمح للنظام بفعله بعد ذلك فمهمة مختلفة تماما. افصل المهمتين. المصنف احتمالي ويعيد وسمًا. وجدول التوجيه حتمي ويربط الوسوم بالمسارات: الخطر المنخفض إلى المسار القصير، والخطر المرتفع إلى التدقيق الكامل، وأي شيء غير معروف إلى البوابة البشرية. تحصل على حكم النموذج في التصنيف من دون ارتجاله في السلطة. هذه هي العقدة المجمدة في المفهوم 13 مطبقة على الأذونات بدلا من المقاييس، وتحقق العائد نفسه الذي يحققه ملف check.py مجمد. عندما يسلك شيء مسارا خاطئا، يمكنك الإشارة إلى وسم وجدول، بدلا من إعادة بناء فقرة استدلال لم تعد موجودة في أي مكان.

بعبارة بسيطة

الحلقة عامل واحد يعمل من دونك. رسم الحوكمة هو الهيكل التنظيمي الذي يصل العاملين، إضافة إلى المدير الذي يملك الأهداف، والحكم الذي يفصل في النزاعات، والقياسات التي لا يستطيع أحد مجادلتها. لا يمكنك رسم هيكل تنظيمي مفيد لعاملين غير موجودين بعد، ولهذا جاءت دورة الحلقات أولا.

جرب الآن: ارسم توصيلاتك (5 دقائق)

اسرد كل حلقة ومدقق وبوابة بشرية تشغلها اليوم، واحدا في كل سطر. ثم ارسم سهما لكل علاقة، وسم كل سهم بفعله: fires، وreviews، وapproves، وaudits. تكاد نتيجتان تكونان عامتين في الرسم الأول. هناك حلقة بلا سهم وارد من شيء يدققها، ورقم لا يراقبه أحد. كلاهما حافة مفقودة، ويسمي المفهوم التالي كلفتهما.

ثم دقق الأسهم التي رسمتها بسؤال لكل سهم: هل تقرأ العقدة عند رأس السهم فعلا ما أنتجته العقدة عند ذيله، أم تعمل بعدها فحسب؟ التسلسل ليس اعتمادية. السهم الذي لا يسجل إلا ترتيب حدوث الأشياء طابور تدفع كلفته في الزمن الفعلي، ولا يكلفك قطعه شيئا سوى العادة التي رسمته. تستحق العادة اسما لأن مصدرها واضح: تُكتب التعليمات كسطور، افعل هذا ثم ذاك ثم الشيء الآخر، فيرث المخطط شكلا جاء من النثر لا من العمل. يجد معظم الناس ثلاث اعتماديات حقيقية داخل سلسلة من اثنتي عشرة.

12. إخفاقات بيريز الأربعة للحلقة المنفردة

شغّل هذا المثال: python3 concepts/12-four-failures.py في المختبر المصاحب. قراءته نصف التعلم، ومشاهدته وهو يحدث نصفه الآخر.

يفتتح مقال بيريز بقصة: يقضي فريق دعم ربع سنة في بناء حلقة تحسن معدل حل التذاكر. يصعد الرقم، ثم تصل بيانات التجديد، ويغادر العملاء بمعدل يبلغ ضعفي المعدل القديم. تعلم الروبوت إغلاق التذاكر بإبعاد العملاء، ووسم المشكلات المهجورة بأنها «محلولة». عملت الحلقة بإتقان، لكن رقمها توقف في صمت عن تمثيل النتيجة الحقيقية. قابلت هذا الإخفاق مصغرا من قبل: فهو سبب منع وكيل autoresearch من تعديل prepare.py، وسبب حظر مشروع المحفظة في دورة الحلقات لمس check.py.

يسمي بيريز أربع طرق تنكسر بها حلقة واحدة. يصلح كل كسر منها بحافة في الرسم، لا بحلقة أفضل:

كيف تنكسر حلقة منفردةكيف يبدو ذلكإجابة الرسمأين رأيت هذا بالفعل
التلاعب (قانون غودهارت)تحرك الحلقة رقمها بطرق تخون النتيجة الحقيقيةاقرن كل حلقة تحسين بحلقة مراقبة تتابع مقياسا مضادا، مثل إقران معدل الحل بمعدل التجديدقواعد prepare.py وcheck.py، والمراجع المخصص للقراءة فقط
العمى إلى الأعلىلا يستطيع شيء داخل الحلقة أن يسأل إن كان هدفها نفسه صحيحاتملك حلقة أبطأ هدف الحلقة الأسرع، فيصبح تغيير الأهداف عملا خاضعا للحوكمةأنت وحدك تستطيع مساءلة غرض الحلقة، وهو درس أفضلية السياق في دورة الحلقات
التعارضتتصارع حلقات بُنيت منفصلة، وتبدو كل واحدة مثالية وحدهاعقدة تحكيم فوقها، أي حلقة إشراف أو بوابة بشرية تملك المفاضلةالبوابة البشرية التي تقرر ما يُنشر
تدهور القياسينزلق الفحص من فحص الواقع إلى فحص تقرير مقابل تقرير آخرحلقات تدقيق مستقلة تختبر هل ما زالت الأرقام تمس العالمحلقة الحلم، وعبارة «الأخضر لا يعني الانتهاء»

اقرأ الجدول كجملة واحدة: كل إصلاح حافة، لا حلقة أفضل. هنا يستحق رسم الحوكمة اسمه.

بعبارة بسيطة

لا تستطيع الحلقة أن ترى إلا رقمها، لذلك ستطارده حتى بعدما يتوقف عن تمثيل النتيجة الحقيقية. ليس الإصلاح أبدا «ثق بالحلقة أكثر». الإصلاح بنية: مراقب لمقياس مضاد، وحلقة أبطأ تملك الهدف، وحكم فوق التعارضات، ومدقق يفحص الأرقام مقابل الواقع.

اختبر فهمك

يصعد رقم «المسائل المغلقة يوميا» في حلقة الفرز شهرا كاملا، ويحتفل الفريق. أي إخفاق من إخفاقات بيريز الأربعة يجب أن تستبعده أولا، وأي حافة تستبعده؟

أظهر الإجابة

التلاعب. يحمل ارتفاع معدل الإغلاق شكل قصة روبوت الدعم بالضبط: أرخص طريقة لإغلاق المسائل هي إغلاقها بطريقة سيئة. الحافة التي تستبعد ذلك حلقة مراقبة تتابع مقياسا مضادا، مثل معدل إعادة الفتح أو شكاوى القراء لكل مسألة مغلقة. إذا ظل المقياس المضاد ثابتا مع ارتفاع الإغلاق، فاحتفل. أما إذا لم يراقب أحد مقياسا مضادا، فالرقم غير مدقق، والاحتفال سابق لأوانه بحكم التعريف.

13. المراسي والعقد المجمدة: يستطيع الرسم خداع نفسه

شغّل هذا المثال: bash concepts/13-anchors-audit.sh في المختبر المصاحب. قراءته نصف التعلم، ومشاهدته وهو يحدث نصفه الآخر.

هذا تحذير بيريز، وهو الجزء الذي يغفله كل شعار. وينطبق بالقوة نفسها على كلا الرسمين اللذين تعلمهما هذه الدورة.

نسخة الحوكمة. تخيل رسما لا تقرأ فيه كل حلقة إلا تقارير الحلقات الأخرى. تفحص الحلقة A أرقام الحلقة B. وتأتي أرقام B من C. وتقرأ C لوحة تحكم بُنيت من A وB. يوافق كل شيء كل شيء، ولم يُفحص شيء مقابل العالم الحقيقي. يسمي بيريز هذا رسما دائريا. يفشل بالطريقة نفسها التي فشلت بها الحلقة المنفردة، لكن لاحقا، وبكلفة أكبر، ومع أضواء خضراء أكثر في طريق السقوط.

نسخة الذاكرة. استبدل الآن كلمة «الحلقات» بكلمة «الادعاءات». يستشهد كل ادعاء في رسمك المعرفي بمصدر، وكل مصدر تقرير لوكيل آخر، ومصادره تقارير وكلاء أخرى. تنجح الثوابت الأربعة في المفهوم 8 كلها، لأنها تفرض وجود الإيصالات لا المادة التي صُنعت منها. مثالي داخليا ومنفصل عن الخارج: الدائرة نفسها مرسومة في JSON.

إخفاق واحد في زيين، لذلك له إصلاح واحد يرتدي زيين. يحتاج الرسم إلى ثلاثة أشياء لا يستطيع أي ترتيب للأسهم توفيرها:

  • المراسي: قياسات لا تستطيع أي حلقة مجادلتها، ومصادر لم ينتجها نموذج، مثل اختبارات شُغلت فعلا، وعملاء بقوا فعلا، وأموال وصلت فعلا، ومستندات كتبها بشر. كن صارما في النوع الأخير. لا يكون سجل التشغيل مرساة إلا حيث تكون الأسطر المستشهد بها مخرجا ملتقطا من شيء خارج النموذج: مشغّل اختبارات، أو مترجم، أو قاعدة بيانات، أو API، أو نظام التشغيل. نثر الوكيل نفسه داخل ملف سجل هو مخرج نموذج يرتدي اسم ملف، والاستشهاد به هو الطريقة التي ينجح بها رسم دائري في تدقيقه الخاص.
  • العقد المجمدة: قواعد لا يُسمح لحلقات التحسين بتغييرها أبدا، للسبب نفسه الذي يجعلها ترغب في ذلك، مثل check.py وprepare.py ومجموعة الاختبار المحجوبة ومخطط الادعاءات نفسه.
  • حكم جذري من خارج الرسم: إجابة سؤال «ما معنى أفضل؟» لا تستطيع الآلة إنتاج هذه الإجابة، لأن كل حلقة تفترضها مسبقا. تأتي الإجابة من البشر. وهذا هو المفهوم 1 من دورة الحلقات، أي النية والمساءلة، بعدما وصلنا إليه من الاتجاه الآخر. فالنية والمساءلة ليستا آخر شيئين يؤتمتهما الرسم، بل الشيئان اللذان لا يستطيع الرسم احتواءهما أصلا.

التدقيق واحد في الحالتين: اتبع الأوراق. اختر عشرة أحكام عشوائية في الحوكمة، أو عشرة ادعاءات عشوائية في الذاكرة، وتتبع كل واحد حتى القاع. عد كم واحدا ينتهي في الواقع بدلا من تقرير نموذج آخر. ذلك العدد هو مقدار ارتكاز نظامك في رقم واحد.

الحلقة هي العقدة، والرسم هو التوصيلات، ويجب أن يمس الرسم الأرض. اللوحة اليسرى، «حلقة واحدة، دورة الحلقات»: تشغّل شارة نبضة ذهبية، 9 في أيام العمل، دورة ذات أربع خطوات تصلها أسهم، 1 اكتشف، و2 نفذ، و3 تحقق، و4 أودع، وتحمل «سلوك وكيل واحد»، ثم تصب في شريط عمود فقري رمادي باسم progress.md. التعليق: «نبضة وجسد وعمود فقري ونقطة عمياء واحدة: لا تستطيع الحلقة إلا رؤية مقياسها، لذلك ستتلاعب به، ولا تستطيع مساءلة هدفها». يشير سهم بلون الأرض يحمل «ركب» إلى اللوحة اليمنى، «رسم، حلقات تراقب حلقات، مرتكز»، المرسومة في ثلاث طبقات تفصل بينها خطوط متقطعة. «الحلقات السريعة، تحسن»: حلقتا تنفيذ بإطار أخضر. تشغّل حلقة الفرز، 9 في أيام العمل، حلقة المراجعة بطلبات الدمج، وتصعّد العناصر الخطرة إلى البوابة. ترسل حلقة المراجعة، الموسومة «مقياس مضاد للصانع»، الأحكام إلى البوابة. «الحلقات البطيئة، تراقب المراقبين»: تقرأ حلقة تدقيق وحلم بلون الأرض، أسبوعية وتحمل «هل ما زالت الأرقام تمس الواقع؟»، سجلات الحلقتين السريعتين عبر خطوط متقطعة، وتقترح تغييرات القواعد في صورة طلب دمج إلى عقدة بوابة بشرية ذهبية تملك الأهداف وتقرر معنى «أفضل». «المراسي، ما لا تستطيع أي حلقة مجادلته»: شريط أرض رمادي مخطط يحمل أيقونة درع، «الحقيقة الأساسية: اختبارات شُغلت فعلا، ومستخدمون حقيقيون، وإيراد وصل»، مع قفل وخط ذهبي يقول «عقدة مجمدة، check.py، لا يجوز للحلقات ضبطها». تستقر أحكام حلقة المراجعة مقابل المرساة. وتقرأ البوابة البشرية النتائج الحقيقية منها. يوضح مفتاح الألوان: الأخضر يساوي حلقات التنفيذ السريعة التي تحسن، والبرتقالي حلقة حوكمة بطيئة تراقب المراقبين، والذهبي قرار بشري ليس حلقة، والرمادي مرساة إلى الواقع ليست حلقة. تعليق اللوحة: العقد العاملة حلقات من دورة الحلقات. البوابة والمرساة ليستا حلقتين، بل هما ما تجيب أمامه الحلقات. شريط التذييل مع أيقونة ميزان: المحور الدائم ليس الحلقات مقابل الرسوم، بل المرتكز مقابل غير المرتكز. الرسم الذي لا تقرأ فيه كل حلقة إلا تقارير الحلقات الأخرى تأكيد متبادل، متسق ومتحقق مقابل لا شيء.

ما الذي يغيره هذا لك عمليا؟ لا شيء في حلقتك الأولى: ابنها تماما كما علمتك دورة الحلقات. لكنه يغير كل شيء في الثانية. لحظة تتبادل حلقتان العمل، أو تتشاركان الحالة، أو تشغل إحداهما الأخرى، أو تراجعها، أو تقيدها، فأنت تمارس هندسة الرسوم البيانية، سواء استخدمت الاسم أم لا. نسخة البداية الرخيصة قاعدتان: لكل حلقة تحسين حلقة مراقبة، ويجب أن تأتي إشارة واحدة على الأقل في رسمك من الواقع، لا من تقرير نموذج آخر.

وهناك تنبؤ يقدمه بيريز ويوافق عليه هذا الكتاب: ستفشل رسوم الحلقات أيضا، دائرية ومتسقة ومقنعة، أينما بُنيت بلا مراسٍ. ثم سينتقل النقاش إلى الاسم التالي. لم يكن السؤال الدائم قط الحلقات مقابل الرسوم، بل المرتكز مقابل غير المرتكز: هل ما زالت آلتك، أيا كان شكلها، تمس الواقع الذي تدعي تحسينه؟

بعبارة بسيطة

ثلاث صحف يستشهد بعضها ببعض في دائرة ليست ثلاثة مصادر، فلا بد أن يكون شخص قد حضر الحدث. تصح هذه القاعدة سواء تألفت الدائرة من حلقات تدقق حلقات أم ادعاءات تستشهد بادعاءات. المراسي هي المراسلون الذين كانوا هناك فعلا. والعقد المجمدة هي قواعد الأخلاق التي لا يجوز للمراسلين إعادة كتابتها. أما «ما الذي يُعد خبرا» فيقرره المحرر، لا المطبعة أبدا.

اختبر فهمك

يبني فريق رسما جميلا: خمس حلقات، ومقاييس مزدوجة، وحلقة تدقيق، وبوابة بشرية. لكن كل حلقة لا تقرأ إلا التقارير التي تنتجها الحلقات الأخرى. ما المفقود، وما الذي يسوء؟

أظهر الإجابة

المفقود مرساة. الرسم دائري: تؤكد كل حلقة كل حلقة أخرى، لكن لا يُفحص شيء مقابل العالم الحقيقي. سيفشل مثل حلقة منفردة، لكن لاحقا، وبكلفة أكبر، ومع أضواء خضراء أكثر في الطريق. يجب أن تأتي إشارة واحدة على الأقل من الواقع: اختبار شُغّل فعلا، أو عميل بقي فعلا، أو مال وصل فعلا.

دوامة التسميات
تنبيه واحد، بروح هذا الكتاب نفسه

هناك تنبيه واحد. تعيد الصناعة تسمية جبهة العمل مرة كل موسم تقريبا: هندسة التعليمات، ثم هندسة السياق، ثم هندسة الحاضنة، ثم هندسة الحلقات، والآن هندسة الرسوم البيانية بثلاث نكهات معا. كل اسم حقيقي جزئيا وضوضاء جزئيا، وكل طبقة تلف الطبقة السابقة: الرسم حلقات عديدة مركبة ومزودة بذاكرة مشتركة. الفكرة أقدم من الشعار. إن مسارات MLOps وحوكمة الشركات وتنظيم الجسد نفسه كلها رسوم من حلقات تعمل بسرعات مختلفة فوق سجلات مشتركة. ما أصبح ظاهرا حديثا في 2026 هو أن الوكلاء القادرين يستطيعون تشغيل هذه الحلقات من دون مراقبة، فوصل سؤال التوصيلات وسؤال الذاكرة إلى مجموعة أكبر بكثير من البناة. تتغير الأسماء بسرعة، وينمو الشكل تحتها ببطء. تعلم الشكل، وسيكلفك تغيير الاسم التالي ظهيرة، لا دورة.


الجزء 6: رسم واحد، من البداية إلى النهاية

انتهى الجانب النظري. يرقّي هذا الجزء نظاما بنيته مرتين بالفعل، وهو حلقة الفرز الصباحية من دورة الحلقات بعد أن أحاطتها دورة الحاضنة بقيودها، من عمود فقري نثري إلى رسم صغير قابل للاستعلام. ملفات وshell فقط، لا قاعدة بيانات ولا إطار عمل: الرسم ثلاثة ملفات JSON في المستودع، والانضباط هو المخطط لا التخزين. تشغله الأداتان، ولا يختلف سوى أمر التشغيل من دون واجهة.

البناء كله في صفحة واحدة: ثلاثة ملفات JSON، وخطاف واحد، وتعليمتان. في اليسار، تشرح لوحة عنوانها «الصانع، نبضة واحدة» أنه يؤدي العمل، ثم يكتب ما أثبته كادعاء واحد له مصدر يستطيع وكيل لاحق فتحه، مع ملاحظة أن أحاديث الجلسة تبقى في progress.md. يشير سهم ذهبي بعنوان «يكتب» إلى اليمين نحو لوحة كريمية عنوانها graph/، وتحتوي ثلاث بطاقات ملفات بيضاء: entities.json، أي العقد التي تتحدث عنها الحلقات، ثم claims.json، أي الحواف ذات الإيصالات وما ثبت، وأخيرا runs.json، أي جانب العمل وأي نبضة كتبت ماذا. تحتها شريط ذهبي مقفل يقول «يحمل كل ادعاء source وproduced_by وsupersedes وcreated»، ويحذر من أن الملف للإضافة فقط، فلا تُعدل الادعاءات القديمة أبدا. في اليمين، تشرح لوحة عنوانها «المراجع» أنه يستشهد بمعرف ادعاء لكل عبارة واقعية، أو يعيد REVISE مسميا الدليل الذي لم يجده، مع تذكير بأن «يبدو صحيحا» ليس استشهادا. يعود سهم متقطع عنوانه «يقرأ» منه إلى الملفات. وتحت الصانع، تقول لوحة متقطعة عنوانها «خطاف ما قبل الإيداع» إن jq يتحقق من كل ادعاء، وإن مخالفة المخطط تمنع الإيداع، مع سهمين بلون الأرض عنوانهما «يحرس» يشيران إلى الصانع وإلى الملفات. تمتد في الأسفل لوحة ذهبية عنوانها «ما الذي يشتريه هذا، بعد ثلاثة أسابيع»، وتعرض سطر jq واحدا بخط ثابت يجمع المعرفات التي حل غيرها محلها، ثم يختار الادعاءات التي ما زالت فعالة، مع سهم إلى ملاحظة: «سطر واحد، وإجابة واحدة، وإيصال»، حتى تستطيع حلقة سجل التغييرات الإبلاغ عن إصلاح لم تشهده. التذييل: حافة المراجع حوكمة، والخطاف عقدة مجمدة، ومراجع المصادر مراسٍ.

الشكل على القرص

graph/
SCHEMA.md # the contract: fields, types, and the write rules
entities.json # nodes: things the loops talk about
claims.json # edges-with-receipts: what the loops have established
runs.json # the work side: which beat wrote what, and with what result
evidence/
run_2026-07-21-triage.log # raw tool output a claim can point at

مجلدان، لأنهما يحملان شيئين مختلفين. يمثل graph/ الذاكرة المنقحة، الصغيرة والمتحقق من مخططها. ويمثل evidence/ المخرجات الخام التي تشير إليها الادعاءات: تشغيلات الاختبار، ومخرجات الأوامر، واستجابات API. لا يُعدل شيء داخل evidence/ أبدا.

ومتى يتوقف JSON عن الكفاية؟ بعد وقت أطول مما يخشاه الحدس، وقبل الوقت الذي يوحي به هذا التصميم. يظل الملف الواحد الذي يُعاد كتابته مع كل إضافة مريحا حتى بضعة آلاف قليلة من الادعاءات، ويبدأ الألم قرب عشرة آلاف: تبطؤ عمليات مسح jq، ويُعاد كتابة الملف كله من أجل صف جديد واحد، ويمكن أن تفقد حلقتان تضيفان في اللحظة نفسها إحدى الكتابتين. مسار الترقية ممل عمدا، لأن الانضباط في المخطط لا التخزين. يشتري لك جدول علائقي، مثل Postgres أو SQLite على جهاز واحد، معرفات حقيقية، وفهارس على الفاعل والمسند، ومعاملات تمنع تصادم الإضافات المتزامنة، وفرض الإضافة فقط بخطاف قاعدة بيانات بدلا من خطاف Git. وتشتري لك قاعدة بيانات رسوم، مثل Neo4j أو Neptune، شيئا واحدا يتجاوز ذلك: اجتيازا متعدد القفزات في صورة استعلام بدلا من كود تصونه، ويبدأ هذا في الأهمية عندما يسير باني السياق ثلاث أو أربع قفزات بدلا من واحدة أو اثنتين. لا تغير أي من هذه النقلات ثابتا واحدا. انتقل حين يبطؤ استعلام أو تضيع كتابة، لا قبل ذلك.

إليك ادعاء واحدا كاملا. هذا هو الانضباط كله في سجل واحد:

{
"id": "claim_0007",
"subject": "test_payments_flaky",
"predicate": "diagnosed_as",
"object": "tz_default_utc",
"confidence": 0.9,
"source": {
"kind": "tool_output",
"command": "pytest tests/test_payments.py -x",
"exit_code": 1,
"ref": "evidence/run_2026-07-21-triage.log#L88-L94",
"captured": "2026-07-21T09:14:22Z"
},
"produced_by": "run_2026-07-21-triage",
"supersedes": "claim_0004",
"created": "2026-07-21"
}

لاحظ شيئا واحدا قبل نسخه: يحمل هذا الادعاء supersedes، لذلك يفترض أن claim_0004 موجود بالفعل في الملف. لا يملك ادعاؤك الأول حقل supersedes إطلاقا. إذا أضفت واحدا يشير إلى ادعاء لم تكتبه قط، فسيوقف الخطاف أدناه الإيداع، بحق، مع الرسالة supersedes points at a claim that does not exist. ولاحظ أيضا أن claims.json مصفوفة حتى حين يحمل ادعاء واحدا: يبدأ كل استعلام jq في هذه الصفحة بالصيغة .[].

وهناك تنبيه بشأن المعرف نفسه، تعود إليه مهارة الصانع أدناه. إن claim_0007 عداد، والعداد هو بالضبط ما ينبغي ألا تستخدمه حلقة يمكن مقاطعتها. يبقى هنا لأنه أسهل قراءة من المعرف المشتق، وتحتفظ به كل الأمثلة أدناه لهذا السبب وحده. استخدم الصيغة المشتقة في مستودع حقيقي.

الملفان الآخران أصغر. الكيان هو هوية وأسماء بديلة لها:

[
{
"id": "test_payments_flaky",
"type": "TEST",
"aliases": ["tests/test_payments.py::test_tz", "the flaky payments test"],
"first_seen": "2026-07-14"
}
]

والتشغيل إيصال نبضة واحدة:

[
{
"id": "run_2026-07-21-triage",
"beat": "morning-triage",
"started": "2026-07-21T09:11:04Z",
"tool": "claude-code",
"evidence": ["evidence/run_2026-07-21-triage.log"],
"claims_written": ["claim_0007"],
"verdict": "PASS"
}
]

والآن، هناك شيئان مقصودان في الادعاء أعلاه، وكاد كلاهما أن يكون خطأ.

لا يوجد حقل status. الادعاءات للإضافة فقط: لا يُعدل شيء ولا يُحذف شيء أبدا. لا تُخزن معلومة بقاء الادعاء حاليا، بل تُشتق وقت القراءة: يكون الادعاء فعالا إذا لم يحل ادعاء لاحق محله. تجيب عبارة jq واحدة عن ذلك، ولا يمكن للقاعدة أن تنحرف، إذ لا يوجد موضع ثان تعيش فيه الحقيقة. هذا هو تشبيه المحاسبة مطبقا بطريقة صحيحة. لا يعود إدخال تصحيحي إلى الإدخال الأصلي ليعدله.

# active claims = those that nothing supersedes
jq '[.[].supersedes] as $dead
| [.[] | select(.id | IN($dead[]) | not)]' graph/claims.json

اقرأها كخطوتين: اجمع كل معرف حل ادعاء لاحق محله، ثم احتفظ بالادعاءات التي لا يوجد معرفها في تلك القائمة. يستحق فخ واحد اسما لأن السطر الواحد الواضح خطأ: لا تدمج ذلك في select(any(.[]; ...)) فوق .[]، لأن المدخل الحالي داخل select ادعاء منفرد، ولذلك يجتاز any(.[]; ...) حقول ذلك الادعاء نفسه ويفشل. تتجنب صيغة الخطوتين ذلك، كما أنها أسهل قراءة.

المسند هو diagnosed_as، لا caused_by. يثبت اختبار فاشل برمز خروج 1 أن شيئا ما فشل، لكنه لا يثبت سبب الفشل، فهذه الخطوة قراءة الوكيل للمخرج. لذلك يذكر الادعاء ما يستطيع دعمه. تتطلب الترقية إلى caused_by دليلا أكثر من اختبار أحمر: التأكيد الفاشل، وسطر الإعداد الذي يشير إليه، ويفضل إعادة تشغيل تنجح بعد تصحيح افتراض المنطقة الزمنية. عندئذ تضيف ادعاء caused_by جديدا يحل محل هذا، مستشهدا بالتشغيلين. اختيار مسند يدعمه دليلك فعلا هو أصغر فعل صدق وأكثره قابلية للتكرار في هذا الانضباط كله.

يسمي المصدر الأداة، لا الوكيل. تشير "kind": "tool_output"، مع أمر ورمز خروج وطابع زمني ونطاق أسطر، إلى شيء لم يكتبه أي نموذج: فشل pytest، وهذا هو الموضع الذي قال فيه ذلك. قارن هذا بمصدر يشير إلى جملة كتبها الوكيل في سجله. سيحقق ذلك نص الثابت 1، لكنه سيشير إلى مخرج نموذج، وهو رسم المفهوم 13 الدائري في حقل واحد. القاعدة هي: لا يكون سجل التشغيل مرساة إلا حيث تكون الأسطر المستشهد بها مخرجا ملتقطا من شيء خارج النموذج، مثل مشغل اختبارات أو مترجم أو قاعدة بيانات أو API أو نظام التشغيل. نثر الوكيل نفسه داخل ملف سجل ادعاء، لا دليل على ادعاء.

افحص الادعاء وفق ثوابت المفهوم 8: مصدر حقيقي، وهو الثابت 1؛ وتشغيل أنشأه، وهو الثابت 2؛ وادعاء سابق حل محله ادعاء جديد لكنه ظل قابلا للوصول لأنه لم يُمس قط، وهو الثابت 4. يصل الثابت 3 مع المراجع أدناه.

يكتب الصانع إلى الرسم

تُغيّر فقرة واحدة مضافة إلى مهارة الفرز ما تتركه الحلقة وراءها. حيث كانت المهارة القديمة تقول «حدث progress.md»، تقول الجديدة:

## 5. Update the graph last

For every durable finding this beat established, append one claim to
graph/claims.json following the schema in graph/SCHEMA.md. Rules:

- claims.json is APPEND-ONLY. Never edit and never delete an existing
claim, including any of its fields. To correct a claim, append a new one
whose "supersedes" names the old id. The old claim is left untouched:
whether a claim is current is derived when the graph is read, never
stored on the claim itself.
- Every claim needs a source a later agent could open and verify. Prefer
captured tool output: save it under evidence/ and cite the command, the
exit_code, and a line range. If the finding is your own reasoning with
no external output behind it, mark it "source": {"kind": "inference"}.
- Never cite your own prose in a log as the evidence for your own claim.
- New entities go in entities.json first. Check aliases before adding:
do not create "payments-test" if "test_payments_flaky" exists.
- Derive each claim id from the run and the finding, never from a counter,
and check whether that id already exists before appending. A beat that is
interrupted and rerun must produce the SAME id for the same finding, so
the retry writes nothing instead of writing a second copy. claim_0007
reads well on a page. In a loop that can die halfway, use something a
rerun reproduces exactly, such as
claim_run_2026-07-21-triage_tz-default.
- Session notes, dead ends, and chatter stay in progress.md. The graph
is for what was established, not what was said.

القاعدة الأخيرة هي الأهم. لا يختفي العمود الفقري، بل يظل يوميات الحلقة. والرسم هو السجل الأصغر والأشد لما أثبتته اليوميات. ذاكرتان ومعياران للحقيقة، تماما مثل رسمي المفهوم 3.

قاعدة المعرف هي التي كاد هذا البناء أن يُنشر من دونها، وتستحق أن ترى لماذا ليست تدقيقا شكليا. إن claim_0007 عداد، ولا يحمل العداد ذاكرة عما كان يعده. إذا أضافت نبضة ادعاء ثم توقفت قبل إيداعه، فستضيف النبضة المعادة النتيجة نفسها مرة أخرى باسم claim_0008، وسينجح في كل فحص في الخطاف أدناه: الحقول موجودة، والمعرفات فريدة، والإحلال يشير إلى كائن موجود، ولا شيء سبق إيداعه تغير. يصبح لديك الآن حقيقة واحدة مرتين تحت معرفين، وتشغيلان يدعي كل منهما أنه أثبتها، ولا يظهر التكرار إلا بعد أشهر كخلاف لم يحدث قط. يغلق المعرف المشتق الثغرة من الطرفين. يبحث الصانع عن المعرف ويتجاوز الكتابة إن وجده، فتصبح إعادة المحاولة بلا أثر. وفي اليوم الذي ينسى فيه الصانع البحث، تمنع قاعدة تفرد المعرف في الخطاف الإيداع بدلا من مضاعفة الذاكرة بصمت. إن الكتابات التي تستطيع إعادة المحاولة تكرارها بأمان هي الفرق بين رسم ينجو من الانقطاع ورسم ينمي نسخة ظل من نفسه في هدوء.

وتجعل الحاضنة القواعد حقيقية، لأن حاجز الحماية يعيش في الحاضنة لا في التعليمة. يمكن فحص عدة قواعد أعلاه آليا، لذلك يفحص الخطاف ما يستطيع:

#!/bin/sh
# .git/hooks/pre-commit — the graph gate (jq only, no framework)
C=graph/claims.json
fail() { echo "claims.json: $1 — commit blocked"; exit 1; }

# 1. required fields on every claim
jq -e 'all(.[]; has("id") and has("subject") and has("predicate")
and has("object") and has("source") and has("produced_by"))' "$C" \
>/dev/null || fail "a claim is missing a required field"

# 2. ids are unique
[ "$(jq 'length' "$C")" = "$(jq '[.[].id] | unique | length' "$C")" ] \
|| fail "duplicate claim id"

# 3. every supersedes target exists
jq -e --argjson ids "$(jq '[.[].id]' "$C")" \
'all(.[]; (has("supersedes") | not) or (.supersedes | IN($ids[])))' "$C" \
>/dev/null || fail "supersedes points at a claim that does not exist"

# 4. append-only: nothing already committed may change
git show HEAD:"$C" 2>/dev/null > /tmp/old.json || exit 0
jq -e --slurpfile new "$C" \
'all(.[]; . as $o | $new[0] | any(.[]; . == $o))' /tmp/old.json \
>/dev/null || fail "an existing claim was modified or removed"

كن صريحا الآن بشأن حد تلك البوابة، لأن هذه الدورة تواصل الإصرار على الفرق بين الطلب والقاعدة المفروضة. هذه الفحوص الأربعة حقيقية: الحقول المطلوبة، والمعرفات الفريدة، وإشارات الإحلال القابلة للحل، والتاريخ المخصص للإضافة فقط. لكن الخطاف لا يفحص أنواع الحقول، أو ما إذا كان subject يسمي كيانا موجودا في entities.json، أو ما إذا كانت كتلة source صحيحة البنية، أو ما إذا كان ملف الدليل ونطاق الأسطر المستشهد بهما موجودين فعلا. كل واحد منها سطر jq آخر في اليوم الذي تريده فيه. وحتى تكتبه، تعيش تلك القاعدة داخل SCHEMA.md فقط، فتكون إرشادا لا حاجز حماية. معرفة أي قواعدك ينتمي إلى أي نوع هي الغرض كله من هذا الفرق.

يقرأ المراجع من الرسم

تكتسب تعليمة المراجع التزاما واحدا، ويكتسب حكمه حقلا واحدا. هذا هو المفهوم 10 بحجم التشغيل:

You are the reviewer. For every factual claim in the maker's report:

1. Find the claim in graph/claims.json that supports it. Cite its id.
2. If no active claim supports it, your verdict is REVISE, and
required_evidence must name the missing claim precisely.
3. A claim whose source.kind is "inference" cannot by itself ground a
factual assertion. Either cite a source-backed claim that supports it,
or return REVISE. An honestly recorded guess is still a guess.
4. Never approve a factual claim on plausibility. "Sounds right" is
not a citation.

Return only JSON:
{ "verdict": "PASS|REVISE|FAIL",
"grounded_in": ["claim_0007", "claim_0012"],
"missing": [],
"rubric": "reviewer-rubric-v3" }

القاعدة 3 هي التي يغفلها الناس، ويؤدي إغفالها إلى إبطال البناء كله في صمت. يُسمح للصانع بتسجيل الاستنتاج بصدق، وهذا صحيح، فتخمين موسوم أفضل من تخمين جرى تبييضه. لكن إذا لم يفحص المراجع إلا أن الادعاء المستشهد به موجود، فيمكن لتخمين موسوم أن يرتكز إليه بيان واقعي منشور، ويكون الرسم قد بيضه في النهاية. الاستنتاج الصادق ودليل الارتكاز مهمتان مختلفتان. ومهمة المراجع إبقاؤهما منفصلين.

يمثل حقل rubric الثابت 3، ويمثل حقل grounded_in المسار القابل للتدقيق: بعد أشهر، يمكنك فتح أي طلب دمج منشور وتتبع الطريق من حكمه إلى الادعاءات ثم إلى المصادر. كل مخرج مهم يمكن تتبعه إلى هدف وأثر ومصدر ومسار في الرسم وقرار مقيّم، وهذا هو الاختبار الختامي في ملف PDF وقد نجح على نطاق ثلاثة ملفات JSON.

نبضة واحدة، قبل وبعد

قبل، بعمود فقري فقط. تصلح نبضة الفرز يوم الثلاثاء اختبار المدفوعات المتذبذب وتكتب نثرا: «أُصلح الاختبار المتذبذب، وكانت المشكلة في المنطقة الزمنية». وفي الخميس، تذكر حلقة أخرى، هي حلقة سجل التغييرات، إصلاح المدفوعات، ويوافق مراجعها بناء على المعقولية. وبعد ثلاثة أسابيع، يسأل شخص أي افتراض للمنطقة الزمنية كان السبب، فتتحول الإجابة إلى تنقيب أثري في نصوص المحادثات.

بعد، مع الرسم. تكتب نبضة الثلاثاء claim_0007 أعلاه، مستشهدة بمخرج pytest الذي التقطته تحت evidence/. وفي الخميس، يجلب باني سياق حلقة سجل التغييرات الرسم الفرعي ذي القفزتين حول test_payments_flaky: الادعاء ومرجع مصدره والتشغيل الذي أنتجه. يوافق المراجع على إدخال سجل التغييرات لأن grounded_in: ["claim_0007"] قابل للحل. وبعد ثلاثة أسابيع، يجيب jq عن السؤال في سطر واحد، ومع إيصال:

jq '[.[].supersedes] as $dead
| .[] | select(.subject == "test_payments_flaky")
| select(.id | IN($dead[]) | not)' graph/claims.json

الحلقات نفسها، والنموذج نفسه. التغيير الوحيد هو موضع الذاكرة، وقد غير ذلك ما يستطيع كل وكيل لاحق وكل إنسان لاحق معرفته.

اقرأ البناء مرة أخرى، بعدما منحك الجزء 5 العدسة الثانية. يحمل هذا النظام الصغير الرسمين معا. العلاقة من المراجع إلى الصانع حافة حوكمة، أي حلقة مراقبة مقياسها المضاد للصانع هو «يمكن حل كل ادعاء». وخطاف المخطط قبل الإيداع عقدة مجمدة: لا يجوز للصانعين ضبط القواعد التي يُفحصون مقابلها. وكتل source مراسٍ، لكن بسبب ما تشير إليه فقط: أمر، ورمز خروج، ومخرج ملتقط من مشغل اختبارات. وجّه الحقل نفسه إلى جملة كتبها الوكيل عن نفسه، فتتبخر المرساة بينما يظل المخطط ناجحا. ثلاثة ملفات JSON، وخطاف واحد، وتعليمتان، وكل فكرة في هذه الدورة موجودة بحجم مصغر.

جرب الآن: شغّل نبضة واحدة مرتكزة بيدك (15 دقيقة)

في مستودع مؤقت، أنشئ ملفات JSON الثلاثة مع كيان واحد وصفر من الادعاءات. شغّل نبضة صانع واحدة من دون واجهة، عبر claude -p أو opencode run، مع مهارة الكتابة إلى الرسم أعلاه، على أي مهمة حقيقية صغيرة. ثم شغّل تعليمة المراجع مقابل تقرير الصانع. راقبه يعيد REVISE مع حقل missing في المحاولة الأولى، لأن الصانع سجل أقل مما ينبغي. هذا الإخفاق هو الدرس: لقد علم المراجع الصانع للتو ما يجب أن يحتويه الرسم.


الجزء 7: البقاء مرتكزا إلى الواقع

14. اختيار مستوى ووضع ميزانيته

شغّل هذا المثال: python3 concepts/14-choose-a-level.py في المختبر المصاحب. قراءته نصف التعلم، ومشاهدته وهو يحدث نصفه الآخر.

قبل عرض الحجة ضد الرسوم، إليك إجراء اختيار واحد. تحدد ستة أسئلة، تُطرح بالترتيب، مقدار البنية التي تحتاج إليها المهمة فعلا. وكل إجابة «لا» توفر عليك طبقة.

  1. هل يمكن التحقق من النجاح؟ إذا لم يكن ذلك ممكنا، فلا تبدأ بالاستقلالية أصلا. حدد أولا اختبارا أو معيار تقييم أو شرط مصدر أو قرارا بشريا. هذه أول بوابة في دورة الحلقات، ولا يصلح أي شيء لاحق غياب الإجابة هنا.
  2. هل الخطوات ثابتة؟ إذا كانت كذلك، فتكفي سلسلة. وإذا لم تكن، فتحتاج إلى تخطيط أو منسق.
  3. هل المهام الفرعية مستقلة؟ إذا كانت كذلك، فنفّذ العمل بالتوازي. وإذا لم تكن، فمثّل الاعتماديات صراحة وحدد عدد العاملين المسموح لهم بالكتابة في وقت واحد.
  4. هل يجب أن تظل السلالات البديلة متاحة؟ إذا كانت الإجابة نعم، فاستخدم رسم DAG بدلا من إجبار كل نتيجة على الدخول في فرع واحد. هذا سؤال المفهوم 5.
  5. هل يجب أن تبقى الحقائق بعد التشغيل؟ إذا كانت الإجابة نعم، فاحفظ الآثار وحالة الرسم. لا تعتمد على ملخص نص المحادثة لحملها.
  6. هل تستطيع تحمل الكلفة وزمن الاستجابة؟ ضع الميزانيات قبل إضافة العاملين، لا بعد وصول الفاتورة.

تنتج الإجابات مجتمعة مستوى، لا تفضيلا:

حالتكابدأ باستخدامالسبب
سؤال بسيط منخفض الخطراستجابة مباشرةأقل زمن استجابة، ولا آليات تحتاج إلى صيانة
يمكن فحص المخرجحلقةتحسّن التغذية الراجعة المتكررة النتيجة
التسلسل ثابتسلسلةمراحل متوقعة وقابلة للاختبار
الفئات واضحةموجهيفصل السياسات والنماذج بوضوح
الوحدات مستقلةعاملون متوازونيقلل الزمن الفعلي
يختلف التقسيم بحسب المهمةمنسق وعاملونتخصص ديناميكي
يجب أن تبقى البدائل حيةرسم DAG للإيداعاتيحفظ فروع التجارب
يجب أن تبقى الحقائق بين الجلساترسم معرفيذاكرة مشتركة دائمة
عمل متوازٍ كبير جدامسار عمل ديناميكييؤتمت التوزيع والجمع

لاحظ أن الرسم هو الصف الثامن، لا الأول. يتوقف معظم العمل قبل ذلك، والتوقف قبله نتيجة صحيحة لا إخفاق في الطموح.

مستويات البنية التسعة مرسومة كسلم صاعد، وكل درجة تكلف أكثر من السابقة. من أسفل اليسار إلى أعلى اليمين، تحمل الدرجات: 1 استجابة مباشرة، لسؤال بسيط منخفض الخطر. 2 حلقة، حين يمكن فحص المخرج. 3 سلسلة، حين يكون التسلسل ثابتا. 4 موجه، حين تكون الفئات واضحة. 5 عاملون متوازون، حين تكون الوحدات مستقلة. 6 منسق وعاملون، حين يختلف التقسيم بحسب المهمة. 7 رسم DAG للإيداعات بالذهبي، حين يجب أن تبقى البدائل حية. 8 رسم معرفي بالذهبي، حين يجب أن تبقى الحقائق بين الجلسات. 9 مسار عمل ديناميكي بلون الأرض، للعمل المتوازي الكبير جدا. يحمل سهم صاعد على الحافة اليسرى عبارة «مزيد من الكلفة وزمن الاستجابة والآليات». تقول لوحة جانبية: «هذه الدورة هي الدرجتان 7 و8»، حيث تحافظ الدرجة 7، أي الجزء 2، على حياة كل سلالة؛ وتحفظ الدرجة 8، أي الجزآن 3 و4، الحقائق؛ وتحتاج الدرجة 9 إلى كليهما وإلى ميزانية حقيقية؛ أما الدرجات من 1 إلى 6 فهي الدورتان السابقتان. تقول شارة ذهبية أدناه «أجب عن الأسئلة الستة أولا». التذييل: أعلن الميزانية قبل التشغيل، أي أقصى عدد للعاملين والرموز والكلفة وكتابات الرسم، والدليل المطلوب للانتهاء.

أيا كان المستوى الذي تختاره، أعلن ميزانية تعقيده قبل بدء التشغيل. يجب أن يحدد كل تشغيل كتابةً: أقصى عدد لاستدعاءات النموذج، وأقصى عدد للوكلاء الفرعيين، وأقصى عدد للعاملين المتزامنين، وأقصى عدد لاستدعاءات الأدوات، وأقصى زمن فعلي، وأقصى عدد للرموز، وأقصى كلفة مالية، وأقصى عدد للمحاولات، وأقصى عدد لكتابات الرسم، والحد الأدنى من الدليل اللازم قبل وصف أي شيء بأنه منته. البند الأخير هو ما ينساه الناس، وهو ما يمنح البقية معناها.

ثم تأتي قاعدة ما يحدث عند نفاد الميزانية، وهي أهم من الأرقام نفسها: أعد أفضل أثر حالي، والعمل الذي اكتمل، والمسائل التي بقيت بلا حل، وسبب التوقف. لا تخف إخفاقا جزئيا خلف إجابة نهائية طليقة. التشغيل الذي يقول «توقفت عند 40 ملفا من 60 لأن ميزانية الرموز انتهت، وهذا ما أظهرته الملفات الأربعون» أثمن من تقرير واثق غطى ثلثي المهمة بصمت.

ضع رقما بجوار تلك الميزانية، لأن هذه الآليات ليست مجانية، ودورة أمضت أربعة عشر مفهوما في عرضها مدينة لك بالفاتورة. يذكر تقرير Anthropic نفسه عن نظامها البحثي متعدد الوكلاء أن البنية تفوقت كثيرا على وكيل منفرد في العمل الاستكشافي واسع النطاق، وأنها استهلكت نحو خمسة عشر ضعف الرموز في تفاعل دردشة عادي. هذه هي المقايضة في جملة واحدة: يشتري الاتساع المتوازي تغطية ويدفع ثمنها رموزا. لذلك يجب أن يستحق الشكل كلفته. استخدم نماذج رخيصة للاستخراج والتصنيف والتنسيق المحدود، ونماذج قوية للتقسيم والتجميع والتحقق الصعب، ومسارات قصيرة للطلبات البسيطة، والرسم الكامل فقط للعمل الذي تبرر قيمته التنسيق. مئة عامل هي الإجابة الصحيحة حين تكون المهمة واسعة حقا، والفروع مستقلة فعلا، والنتيجة تستحق الإنفاق، وهي الإجابة الخطأ كلما استطاعت نافذة سياق واحدة احتواء المشكلة كلها.

تحدد الميزانية مقدار ما تنفقه. ويحدد قرار إضافي أين ينتظر النظام، والخطأ فيه يهدر الإنفاق كله بينما يبدو كتواز. حين يتوزع العمل، يجمعه شيء في النهاية، لكن وضع حاجز بعد كل مرحلة يعيد تحويل التوزيع إلى سلسلة في هدوء. انتظر المجموعة الكاملة فقط حيث تحتاج إليها العقدة التالية حقا: إزالة التكرار عبر المصادر، أو ترتيب كل مرشح مقابل كل مرشح آخر، أو مقارنة البدائل، أو الحكم على كفاية التغطية. وحيث يمكن لكل نتيجة أن تتابع طريقها وحدها، اتركها تفعل. وعندما تجمع، يجب ألا يتسبب فرع فاشل واحد في رمي التسعة والتسعين التي انتهت. اجمع ما استقر، وسجل ما لم يستقر، ودع العقدة التالية تقرر إن كان ذلك كافيا للمتابعة. هذه قاعدة الإخفاق الجزئي أعلاه مطبقة على نقطة جمع بدلا من تشغيل كامل. الطوبولوجيا، لا عدد العاملين، هي ما يقرر أين يقف نظامك ساكنا.

بعبارة بسيطة

اطرح الأسئلة الستة قبل البناء، ودعها تخبرك بأصغر بنية تلائم المهمة. ثم اكتب حدودك مسبقا، لأن النظام الذي لم يُخبر قط متى يتوقف سيتوقف لحظة نفاد ماله، وسيصف تلك اللحظة بأنها نجاح.

اختبر فهمك

يريد فريق رسما معرفيا. إجاباتهم هي: يمكن التحقق من النجاح، والخطوات ثابتة، والمهام الفرعية مستقلة، والسلالات البديلة غير مهمة، ولا حاجة إلى بقاء الحقائق بعد التشغيل. أي مستوى تمنحهم إياه الأسئلة الستة؟

أظهر الإجابة

عاملون متوازون فوق سلسلة ثابتة، ومن دون رسم. إجابة السؤال 4 لا، فلا رسم DAG. وإجابة السؤال 5 لا، فلا رسم معرفي. أرادوا الصف الثامن، ومنحتهم الأسئلة الصف الخامس. يعني بناء الرسم رغم ذلك دفع كلفة أخطاء الاستخراج وصيانة المخطط لإجابة أسئلة لم يطرحها أحد بعد.

15. متى لا تبني رسما

شغّل هذا المثال: python3 concepts/14-choose-a-level.py في المختبر المصاحب. قراءته نصف التعلم، ومشاهدته وهو يحدث نصفه الآخر.

منحك المفهوم 14 الإجراء، ويمنحك هذا المفهوم الحجة ضد المستوى الذي أمضت الدورة أربعة عشر مفهوما في عرضه، التزاما بتقليد الكتاب في التقييم الصادق. لا تدخل رسما معرفيا لمجرد أن النظام يحتوي وكلاء. الرسم آلية لها فاتورة حقيقية: أخطاء الاستخراج، وخطر الحل، وصيانة المخطط، وشيء جديد يمكن أن يتعفن بصمت. تجاوزه عندما:

  • تكون المهام مستقلة ولا تحتاج إلى حالة بين الجلسات،
  • تأتي الإجابات من مستند واحد كل مرة،
  • تكون العلاقات ثابتة وبسيطة، ويجيب جدول علائقي بالفعل عن كل استعلام تطرحه،
  • لا تكون المصدرية مطلوبة، أو
  • تفوق أخطاء الاستخراج قيمة الاجتياز.

يستحق الرسم كلفته حين تكون الاستعلامات المتصلة أو العلاقات المتطورة أو المصدرية أو حالة العالم المشتركة أمورا مركزية. لا تحتاج حلقة واحدة ذات عمود فقري إلى رسم. وتميل الكفة لحظة تتبادل حلقتان الحقائق، أو يحتاج عشرون عاملا إلى تجميع. إن بناء الجزء 6 هو عمدا أصغر نسخة تتجاوز الحد.

ثم هناك نمطان من الإخفاق في الرسوم التي تبنيها:

يضخم الرسم حكم الباني، بما في ذلك الحكم السيئ. تضخم الحلقة هدفها ومقيّمها، وقد تعلمت هذا الدرس مرتين. ويضخم الرسم علم كينوناته وسياسة مصادره. اختر أنواع الكيانات الخطأ أو اقبل المصادر الخطأ، وستوسع الأتمتة الخطأ: ينتج المتن المتحيز رسما متحيزا يجيب بثقة في كل اتجاه. يفحص الرسم الادعاءات، ولا يبيضها إلى حقائق.

يمكن التلاعب بالمقاييس هنا أيضا. سيغمر مسار استخراج مضبوط لاستدعاء الكيانات وحده الرسم بسرور. وستدمج خطوة حل مضبوطة للضغط وحده الغرباء، وهو فخ المفهوم 7. يحتاج كل تحسين إلى مقياسه المضاد: الدقة مقابل الاستدعاء، والضغط مقابل الدمج الخاطئ. هذا هو قانون غودهارت، وتفحصه الدورة التالية بالتفصيل.

واصل أيضا تشغيل تدقيق المفهوم 13 على الرسوم التي تبنيها: اتبع عشرة ادعاءات عشوائية حتى أوراقها، وعد كم واحدا ينتهي في الواقع بدلا من تقرير نموذج آخر. رسم الذاكرة بلا مراسٍ هو الرسم الدائري في الجزء 5 بعدما أُعيد بناؤه في JSON.

بعبارة بسيطة

الرسم بيروقراطية للحقائق. تجعل البيروقراطية الجيدة كل شيء قابلا للعثور والتدقيق. وتختم السيئة الشائعات بأختام رسمية المظهر وتحفظها بعناية. الختم ليس الحقيقة، بل الإيصال في أسفل الملف. افحص الإيصالات، ولا تبن البيروقراطية إلا حين تكون كومة الحقائق أكبر فعلا من أن يحملها دفتر.

16. ما لا يستطيع الرسم فعله، وإلى أين نذهب بعد ذلك

شغّل هذا المثال: bash concepts/16-limits.sh في المختبر المصاحب. قراءته نصف التعلم، ومشاهدته وهو يحدث نصفه الآخر.

اختم عند الحد الصادق، في ثلاث عبارات لا يستطيع الرسم قولها نيابة عنك:

«أصبحت PASS الصادرة عن المدقق جديرة بالثقة». لا. رفع الارتكاز الحكم من انطباع إلى تدقيق، لكن المدقق ما زال نموذجا: يستطيع الاستشهاد بحافة لا تدعم الادعاء، وتفويت مسار موجود، والانحراف عند تحديث النموذج الذي يستند إليه. الإجابة الطليقة التي تستشهد بحواف غير ذات صلة إخفاق موثق لا نظري. قياس المدقق، والمجموعات الذهبية، والمعايرة، ومعدلات النجاح، والانحراف، هو موضوع الدورة التالية: الثقة بالمدقق. ينطبق كل ما تعلمه مضاعفا هنا، لأن نظام الرسم يملك طبقتين قابلتين للفحص: الاستخراج الذي يملأ الذاكرة، والمراجع الذي يقرؤها. بل ستبدو حاضنة التقييم مألوفة: اقرأ تعليمة الاستخراج وتاريخ الدرجات، واقترح تغييرا واحدا، وشغله مقابل مجموعة ذهبية، ثم احتفظ به أو تراجع عنه. إنها السقاطة موجهة إلى الرسم نفسه.

«الذاكرة آمنة حيث توجد». لا تزيد سلامتها على سلامة منزلها. يموت الرسم في مستودع حاسوب محمول مع الحاسوب. يجب أن تعيش ذاكرة السرب المشتركة حيث يستطيع كل عامل، محلي أو مجدول أو سحابي، الوصول إليها، وأن تنجو من تعطل الجهاز، وأن تفرض من يجوز له كتابة ماذا. تعمل autoresearch على وحدة معالجة رسومية واحدة لأن البيئة المحدودة آمنة تحديدا. وAgentHub ملف تنفيذي واحد بلغة Go على خادم واحد لأنها تصور تجريدي تحديدا. نقل الحلقات المثبتة ورسمها إلى وقت تشغيل لا تراقبه هو موضوع الدورة التي بعد التالية: مغادرة الحاسوب المحمول.

«التوصيلات الأفضل تعني حكما أفضل». هذا أقدم حد في الكتاب، ولا يتحرك. يضع الرسم الذاكرة والتقييم خارج نافذة السياق. وهذا حقيقي، وهو أهم فكرة هنا: عنق الزجاجة ليس عادة استدعاء النموذج التالي، بل موضع الذاكرة والتقييم. لكن علم الكينونات وسياسة المصادر والمراسي وإجابة سؤال «ما معنى أفضل؟» تأتي كلها من خارج كل رسم، منك أنت. يمزح README لكارباتي عن «أسراب مستقلة من وكلاء الذكاء الاصطناعي تعمل عبر منشآت حوسبة هائلة في السماء». العمل القريب أقل إثارة وأكثر قيمة: عقود ذات أنواع، وسلالات محفوظة، وادعاءات مرتكزة، وذاكرة تعيش أطول من الجلسة. تظل النية والمساءلة، أي المفهوم 1 من الدورة الأولى، الشيئين اللذين لا يستطيع أي ترتيب للعقد والحواف احتواءهما.

بعبارة بسيطة

ينقل الرسم الذاكرة والفحص خارج رأس الوكيل، وهذا مكسب حقيقي، فهو سبب قدرة ألف وكيل على العمل على مشكلة واحدة من دون أن يبدأ كل منهم من لا شيء. لكنه لا يستطيع أن يقرر غرض الذاكرة. يجب أن يختار شخص الأشياء التي تستحق التذكر، والمصادر التي تُعد أدلة، ومعنى «أفضل». ذلك الشخص هو أنت، ولا يزيل أي مقدار من التوصيلات هذه المهمة.

يلتقط هذا الكتاب الخيط من هنا: صف نظام حلقات تتشارك رسما بكلمات بسيطة، فيصبح منظمة، أي عاملين لهم نظام ملفات مشترك، ومراجعين يطلبون الإيصالات، ومالكا يضع القواعد. هذه هي الدورة المكثفة للفرق البشرية والوكيلة، وهي ما يصبحه رسم حلقات جيد البناء حين يستحق اسما في هيكل تنظيمي: موظف رقمي بدوام كامل له ذاكرة مؤسسية.


استخدام رسم في هذا الكتاب (استخدام النظام لنفسه)

هل يطبق هذا الكتاب ما تدعو إليه الدورة؟ بصراحة، إنه يشغل رسما أوليا، ويتعمد ألا يشغل الرسم الكامل.

انظر بعيني هذه الدورة إلى حلقة التغذية الراجعة في قسم استخدام النظام لنفسه من دورة الحلقات. كل ملاحظة من قارئ هي سجل في قاعدة بيانات. ترتبط الملاحظات بمسائل GitHub التي تفتحها. وترتبط المسائل بطلبات الدمج التي تصلحها. وترتبط طلبات الدمج بالدروس التي تغيرها وبالموافقة البشرية التي نشرتها. سجلات ذات أنواع، وروابط موجهة، ومصدرية من البداية إلى النهاية: يمكنك السير من أي إصلاح منشور إلى ملاحظة القارئ الدقيقة التي سببته. هذا رسم في كل شيء عدا المخطط، وهو سبب عدم معالجة الملاحظة نفسها مرتين: تستعلم الحلقات عن الروابط بدلا من إعادة قراءة التاريخ.

ما لا يشغله الكتاب هو رسم معرفي يعتمد الاستخراج وحل الكيانات بالنموذج فوق محتواه. هذا هو المفهوم 15 مطبقا علينا: ما زالت روابط المسائل وتاريخ Git تجيب عن أسئلة الكتاب بين الجلسات، والعلاقات بسيطة، وسيضيف مسار الاستخراج سطح أخطاء من دون وجود استعلام يطلبه. حين يصل سؤال لا تستطيع الروابط إجابته، فسيكون أول سؤال على الأرجح: «أي الدروس تقدم ادعاءات مصدرها مستندات تغيرت منذ ذلك الحين؟» نمط الجزء 6 هو الخطة المحفوظة. ابن الرسم حين يستحقه استعلام حقيقي، لا قبل ذلك بأسبوع.


🚀 المشروعات

القراءة عن رسم لا تساوي ملأه. إليك ثمانية مشروعات بناء من السهل إلى الصعب. أنجزها بأي من الأداتين: الرسم ملفات وjq، فلا يتغير إلا أمر التشغيل من دون واجهة، أي claude -p أو opencode run.

قاعدتان قبل أن تبدأ، في كل مرة:

  • استخدم مستودعا مؤقتا ومستندات حقيقية. لا يصبح الرسم مثيرا للاهتمام إلا حين تكون كياناته مما تعرفه فعلا، لذلك استخدم ملفات README أو ملاحظات أو سجلات تخصك بدلا من بيانات مخترعة.
  • اكتب المخطط قبل الادعاء الأول. ملف graph/SCHEMA.md كتبته في خمس دقائق أفضل من ملف تعيد بناءه لاحقا مما صادف أن احتوته الملفات، كما في الجزء 6.
Project 110-15 دقيقةارسم نظامكاعثر على النتيجة التي تموت في نص محادثة، والرقم الذي لا يدققه أحد.

الصعوبة: سهل · يستخدم: المفاهيم 2 و3 و11، أي العقد والحواف والرسمان والتوصيلات.

ابن. ارسم على الورق أو في Mermaid كل حلقة ومدقق وبوابة بشرية ومرساة وملف ذاكرة تشغله اليوم، كعقد ذات أنواع وحواف موجهة تحمل تسميات. علّم أي العقد حلقات وأيها ليست كذلك. ثم ضع دائرة حول شيئين: أي نتيجة لا توجد حاليا إلا داخل نص محادثة، وأي حلقة تحسين لا يراقب أحد رقمها.

ينتهي حين تستطيع الإشارة إلى عنصر واحد داخل دائرة من كل نوع وشرح كلفته عليك. لا يكاد أحد يرسم هذا ولا يجد شيئا، وهذا هو سبب فعله قبل بناء أي شيء.

Project 230-45 دقيقةمن العمود الفقري إلى الادعاءاتحول عشر نتائج حقيقية إلى سجلات ذات أنواع، وقابل ما لا تستطيع إسناده إلى مصدر.

الصعوبة: سهل · يستخدم: المفهومان 1 و8 والجزء 6، أي المصدرية والمخطط.

ابن. خذ ملف progress.md الحقيقي لديك، أو سجل أي حلقة، وحول آخر عشر نتائج دائمة فيه إلى سجلات في claims.json وفق مخطط الجزء 6. املأ كل حقل تطلبه الثوابت، بما فيه produced_by وsource حقيقي.

ينتهي حين يستشهد كل واحد من العشرة بشيء يستطيع وكيل لاحق فتحه، أو يُوسم صراحة بالصيغة "source": {"kind": "inference"}. عد الاستنتاجات. ذلك العدد هو عدد الأشياء التي كنت تعاملها كحقائق اعتمادا على طلاقة نموذج، وهو أنفع رقم ستمنحك إياه هذه الدورة عن نظامك.

Project 345-60 دقيقةالاستخراج الأولشغّل تعليمة واحدة مقيدة بمخطط فوق ثلاثة مستندات، وقابل تكراراتك.

الصعوبة: متوسط · يستخدم: المفهوم 6، أي الاستخراج.

ابن. شغّل تعليمة المفهوم 6 من دون واجهة فوق ثلاثة مستندات مترابطة: ثلاثة ملفات README من مشروع واحد، أو ثلاث ملاحظات اجتماعات، أو ثلاثة تقارير حوادث. تحقق من كل إجابة عبر jq قبل تصديقها. ثم عد الكيانات المختلفة التي تظهر تحت أكثر من شكل ظاهري.

ينتهي حين تعيد المستندات الثلاثة JSON صحيحا وفق المخطط، وتستطيع تسمية كيان واحد على الأقل ظهر باسمين أو أكثر. إذا كان العدد صفرا، فمستنداتك متشابهة أكثر مما ينبغي. استخدم ثلاثة كتبها أشخاص مختلفون، فحينها يصبح الحل مشكلة حقيقية لا افتراضية.

Project 430-45 دقيقةيتحدث رسم DAGأجب عن أسئلة AgentHub الثلاثة باستخدام Git فقط، ثم اترك الأوامر لوكلائك.

الصعوبة: متوسط · يستخدم: المفهومان 4 و5، أي الذاكرتان والاجتياز.

ابن. في مستودع له تاريخ حقيقي، أجب عن أسئلة AgentHub الثلاثة باستخدام Git وحده: ما الذي جُرب فوق الإيداع X؟ وأي الأطراف جبهة لم تُستكشف؟ وأي مسار أنتج الحالة الحالية؟ ثم اكتب الأوامر الثلاثة في GRAPH.md حتى يستطيع وكلاؤك المستقبليون طرحها أيضا.

ينتهي حين تعمل الأوامر الثلاثة، وتستطيع أيضا ذكر ما لا يستطيع رسم DAG إخبارك به: أي التجارب جُربت ثم رُميت. ذلك الغياب هو تصحيح المفهوم 4 بعدما شعرت به في مستودعك بدلا من القراءة عنه.

Project 545-60 دقيقةتدريب الحلادمج ما يجب دمجه، وافصل ما يجب فصله، واحتفظ بكل إيصال.

الصعوبة: متوسط · يستخدم: المفهوم 7، أي الحل.

ابن. خذ عشرين شكلا ظاهريا من المشروع 3، مجمعة بحسب النوع وتحمل أوصافها، واطلب من نموذج أقوى عناقيد معتمدة مع مبرر ودرجة ثقة لكل منها، مع الاحتفاظ بكل اسم بديل. ثم ازرع فخا: أضف كيانين مختلفين حقا يحملان الاسم نفسه، وشغّل العملية من جديد.

ينتهي حين تُدمج التكرارات الحقيقية، ويبقى الغريبان اللذان يحملان الاسم نفسه منفصلين، ويواصل كل كيان معتمد سرد الأشكال الظاهرية التي جاء منها. إذا دُمج الغريبان، فلا تصلح تعليمة الحل أولا. عد واجعل الأوصاف أغنى، لأن الدليل يجب أن يأتي منها.

Project 61-2 ساعة، إضافة إلى خمس نبضاتالمراجع المرتكزاجعل المدقق يطلب حافة بدلا من تقديم رأي.

الصعوبة: صعب · يستخدم: المفهوم 10 والجزء 6، أي الارتكاز والمراجع.

ابن. صل مراجع الجزء 6 بحلقة تشغلها بالفعل. يجب أن تحمل الأحكام grounded_in مع معرفات ادعاءات قابلة للحل، وأن تجبر العبارة الواقعية بلا ادعاء داعم على REVISE مع ملء missing، وألا يستطيع ادعاء مصدره inference إرساء أي شيء وحده. شغّل خمس نبضات حقيقية.

ينتهي حين تعيد نبضة واحدة على الأقل النتيجة REVISE مع حافة مفقودة مسماة، ثم تنتج محاولة الصانع التالية الدليل أو تسحب الادعاء. اقرأ الأحكام الخمسة معا بعد ذلك: ما تعلم الصانع تسجيله هو المخرج الحقيقي لهذا المشروع.

Project 72-3 ساعاتمجموعة ذهبية للاستخراجقس المسار الذي يملأ ذاكرتك، قبل موعده بدورة.

الصعوبة: صعب · يستخدم: المفهومان 6 و7 والدورة التالية.

ابن. وسم بيدك الكيانات والعلاقات في خمسة مستندات. هذا هو الجزء الممل ولا سبيل لتجاوزه. ثم قيّم تعليمة المشروع 3 مقابل وسومك: الدقة، والاستدعاء، ومعدل الصحة وفق المخطط. غيّر سطرا واحدا بالضبط من التعليمة، وأعد التقييم، ثم احتفظ بالتغيير أو تراجع عنه وفق الرقم.

ينتهي حين تكون قد شغلت السقاطة ثلاث مرات على الأقل فوق التعليمة نفسها، واحتفظت بسجل لكل محاولة، بما فيها ما تراجعت عنه. لقد بنيت للتو autoresearch للرسم: الحلقة نفسها والأثر مختلف. في دورة الثقة بالمدقق يصبح هذا تخصصا.

Project 8مشروع تتويجي: عطلة نهاية أسبوع، ثم أسبوع من النبضاتحلقتان ورسم واحداجعل حلقة تبلغ عن إصلاح لم تشهده، لأن الرسم أخبرها.

الصعوبة: مشروع تتويجي · يستخدم: كل شيء.

ابن. حلقتان فوق رسم واحد. تكتب حلقة الفرز ادعاءات لها مصادر حقيقية من مخرجات الأدوات. وتقرأها حلقة سجل التغييرات عبر باني سياق ذي قفزتين بدلا من تفريغ ملف. يرتكز كلا المراجعين في أحكامهما. ويحرس خطاف ما قبل الإيداع المخطط وقاعدة الإضافة فقط. ويحصل رقم إنتاجية حلقة الفرز على مقياس مضاد واحد تراقبه حلقة المراجعة، كما في المفهوم 12.

ينتهي حين تبلغ حلقة سجل التغييرات بدقة عن إصلاح لم تشهده لأن الرسم حمله، وتستطيع السير من سطر سجل التغييرات عبر الادعاء والتشغيل ومخرج الأداة الملتقط إلى شيء لم يكتبه نموذج. حين ينجح هذا السير، تكون قد بنيت ذاكرة مشتركة ذات مراسٍ، ولا يبقى لهذه الدورة شيء تعلمك إياه.


المصادر والقراءات الإضافية

داخل هذا الكتاب

  • هندسة الحلقات: السقاطة، والعمود الفقري، وفصل الصانع عن المدقق، وحلقة الحلم، وبوابة الروتينين. بُنيت كل حافة حوكمة في الجزء 5 هناك أولا، حلقة واحدة كل مرة.
  • هندسة الحاضنة: المخرجات ذات الأنواع وانضباط القابلية للعكس، وقد رُقيا هنا إلى نطاق الذاكرة.
  • الثقة بالمدقق: الدورة التالية، وكيف تعرف أن المراجع المرتكز ومسار الاستخراج جيدان.
  • مغادرة الحاسوب المحمول: الموضع الذي يذهب الرسم وحلقاته للعيش فيه حين يُغلق الحاسوب.
  • الفرق البشرية والوكيلة: ما يصبحه رسم الحلقات في هيكل تنظيمي.

المصادر الأساسية

  • أندريه كارباتي، autoresearch، صدرت في 7 مارس 2026: https://github.com/karpathy/autoresearch. الحاضنة ذات الملفات الثلاثة، والسقاطة، والنتائج المبلغ عنها. اقرأ program.md نفسه قبل اقتباس الحلقة في أي موضع، فهو مصدر تصحيح الذاكرتين في المفهوم 4. يحدد أن التجارب تعمل على فرع مخصص، وأن الفرع لا يتقدم إلا عند التحسن، وأن أي نتيجة مساوية أو أسوأ تُزال عبر git reset، وأن results.tsv يسجل كل محاولة مع تركه عمدا بلا تتبع من Git. وهو أيضا مصدر الحاضنة ذات الملفات الثلاثة، وحلقة السقاطة، وذاكرة رسم DAG للإيداعات. تعكس أعداد النجوم والتجارب في هذه الدورة أسابيعها الأولى. راجع المستودع الحي.
  • أندريه كارباتي، AgentHub، نُشرت قرابة 9 أو 10 مارس 2026، ولم تعد عامة: طبقة التعاون الموجهة إلى الوكلاء، بمستودع Git مجرد وSQLite ولوحة رسائل وواجهة سطر أوامر children وleaves وlineage. تصف نفسها صراحة بأنها «مجرد تصور. نفكر...» حُول المستودع الأصلي إلى خاص في غضون أسابيع ولم يحمل ملف ترخيص. الاشتقاقات المجتمعية المحفوظة هي السبيل الوحيد لقراءة الكود الآن. تعامل معها كقطع تاريخية للدراسة، لا برمجيات تعتمد عليها. يظل موضوع دمج AgentHub في مستودع autoresearch عاما، وهو المرجع الأساسي الأفضل. ولإزالة المستودع، انظر التقرير المعاصر لمطور اشتقه قبل أن يصبح خاصا: https://dev.to/alireza_rezvani/karpathys-agent-native-infrastructure-working-python-agent-template-2o9d، مارس 2026.
  • Anthropic، إنشاء رسم معرفي باستخدام Claude، الدليل، 23 مارس 2026: https://platform.claude.com/cookbook/capabilities-knowledge-graph-guide: الاستخراج بمخرجات منظمة على Haiku، والحل بوصفه استدلالا على Sonnet، والتجميع باستخدام NetworkX، والاستعلام عن الرسوم الفرعية مع الاستشهادات. هذا مصدر الجزء 3.
  • إريك شلنتز وباري تشانغ، بناء وكلاء فعالين، هندسة Anthropic، ديسمبر 2024: أنماط سير العمل الخمسة القابلة للتركيب التي يرتكز إليها المفهوم 10.
  • Anthropic، كيف بنينا نظامنا البحثي متعدد الوكلاء، هندسة Anthropic، 2025: https://www.anthropic.com/engineering/multi-agent-research-system: بنية المنسق والعاملين للبحث، وأفضليتها في الاستكشاف الواسع على وكيل منفرد، وكلفة الرموز البالغة نحو خمسة عشر ضعفا التي تستشهد بها ملاحظة ميزانية المفهوم 14. أُبلغ عن ذلك المضاعف مقابل تفاعلات الدردشة العادية، لا مقابل تشغيل وكيل واحد للمهمة نفسها، وهي المقارنة التي يفترضها القراء عادة. راجع المنشور الحي قبل اقتباس أي من الرقمين.
  • Anthropic، تقديم مسارات العمل الديناميكية في Claude Code، 28 مايو 2026، وتحمل الصفحة الآن تحديثا يشير إلى الإتاحة العامة: https://claude.com/blog/introducing-dynamic-workflows-in-claude-code. هذا مصدر الملاحظة المتعمقة في الجزء 2: التنسيق المولد، وعشرات إلى مئات من الوكلاء الفرعيين المتوازيين ذوي السياق الجديد، والنتائج المفحوصة، والتقدم القابل للاستئناف، وإعداد ultracode، وتحذير الرموز، ونقل Bun. تشمل الإتاحة واجهة Claude Code لسطر الأوامر وتطبيق سطح المكتب وإضافات بيئات التطوير على جميع الخطط المدفوعة، وفي Pro تشغلها من صف Dynamic workflows في /config، إضافة إلى API من Anthropic، وAmazon Bedrock، وAgent Platform من Google Cloud، وMicrosoft Foundry. تحمل الوثائق المرجعية، لا الإعلان، الحدود الحقيقية: 16 وكيلا متزامنا و1,000 وكيل لكل تشغيل. الوثائق المرجعية: code.claude.com/docs/en/workflows.
  • بيتر شتاينبرغر، منشور 18 يوليو 2026، «هل ما زلنا نتحدث عن الحلقات أم انتقلنا إلى الرسوم البيانية؟»، على X، في x.com/steipete/status/2078277297791189132، نُشر 00:34 بالتوقيت العالمي: الكلمات الاثنتا عشرة التي سمت الموسم. لم يكتب شتاينبرغر النعي، فقد نشر هامل حسين «ماتت هندسة الحلقات. أهلا بهندسة الرسوم البيانية» بعد نحو أربع ساعات ونصف، ونشر سانتياغو فالديراما (@svpino) العبارة واسعة الاقتباس «ماتت هندسة الحلقات. فلتحي هندسة الرسوم البيانية!». تبدو العبارتان مزحتين عن دوامة التسميات.
  • كارلوس إي. بيريز (Intuition Machine)، من هندسة الحلقات إلى هندسة الرسوم البيانية؟، 19 يوليو 2026: مصدر الجزء 5، أي قصة روبوت الدعم، والإخفاقات الأربعة للحلقة المنفردة وإصلاحاتها البنيوية، وتحذير الرسم الدائري، والمراسي والعقد المجمدة، وخلاصة المرتكز مقابل غير المرتكز. https://medium.com/intuitionmachine/from-loop-engineering-to-graph-engineering-d3ebeb08511c
  • هندسة الرسوم البيانية: حلقة كارباتي، محسنة 1000 مرة بنفسها، ملف PDF لتجميع مستقل، يوليو 2026: مسار البناء المرحلي، والفرق بين الرسمين، والثوابت الأربعة، واختبار التتبع الختامي. وبحسب صفحته الأولى، فهو غير تابع لكارباتي أو Anthropic ولم يعتمده أي منهما. اقرأه كمذكرة دراسة مفيدة، واقرأ مصادره الأساسية أولا.
  • Fortune، تغطية autoresearch، «حلقة كارباتي»، مارس 2026.
  • TechCrunch وغيرها، عن انضمام كارباتي إلى فريق التدريب المسبق في Anthropic في 19 مايو 2026، مع تكليف ببناء فريق يستخدم Claude لتسريع أبحاث التدريب المسبق: https://techcrunch.com/2026/05/19/openai-co-founder-andrej-karpathy-joins-anthropics-pre-training-team/

جميع الروابط حديثة حتى أواخر يوليو 2026. يتغير كل مستودع وميزة تجريبية ورقم هنا بسرعة. تحقق من المصدر الحي قبل الاعتماد عليه.


الملخص في سطر واحد

الوكيل ينسى، والرسم لا ينسى. احتفظ برسمين للذاكرة: رسم DAG للعمل، ورسم معرفي للحقائق. املأ الثاني بالمخطط، وادمج الأسماء بطريقة قابلة للعكس، وثبت إيصالا بكل حافة، وأعط العاملين رسوما فرعية بدلا من تفريغات، واجعل كل مدقق يستشهد بالحافة أو يطلبها. ثم صل الحلقات نفسها: مراقب لكل رقم يجري تحسينه، وحلقة أبطأ تملك كل هدف، وبوابة بين العقد، ومراسٍ لا تستطيع أي حلقة مجادلتها. يخزن الرسم ادعاءات لا حقيقة: المرتكز مقابل غير المرتكز هو المحور الذي يعيش أطول من كل تغيير اسم.

وسيلة دراسة بالبطاقات التعليمية


اختبر فهمك

Checking access...