بين 8 و9 يونيو، قام ثلاثة أشخاص نادرًا ما يكتبون نفس المقال، بكتابة نفس المقال. [آدي عثماني](https://x.com/addyosmani/status/2064127981161959567)، مدير الذكاء الاصطناعي في Google Cloud، نشر "Loop Engineering"، وهو تصنيف للأنظمة التي تحفز عملاء التشفير حتى لا تضطر إلى ذلك. [مات فان هورن](https://x.com/mvanhorn/status/2063865685558903149) نشر بحثًا بعنوان "WTF Is a Loop؟"، وهو بحث اكتسح Reddit وX وYouTube وHacker News والذي تتبع الفكرة من ورقة ReAct لعام 2022 إلى حلقات التنسيق التي يديرها الأشخاص اليوم. وقام [لانس مارتن](https://x.com/RLanceMartin/status/2064397389189071163)، وهو عضو في الطاقم الفني في Anthropic، بنشر "تصميم الحلقات باستخدام Fable 5"، وهما نمطان لتحقيق أقصى استفادة من النماذج الحدودية من خلال تصميم الحلقات بدلاً من المطالبة المباشرة.

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

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

## ما هي الحلقة باختصار؟

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

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

## ركلة الركيزة

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

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

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

## لقد أجرينا هذه التجربة من قبل

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

كل من هذه القوى مرئية بالفعل داخل المواقع الثلاثة.

يصل التزامن في اللحظة التي تشرف فيها الحلقات على الحلقات، وهي بالضبط المرحلة التي يقول فان هورن أننا ندخلها. حلقتان لكتابة ملف حالة واحد هو نفس الفشل الذي يرتكبه مهندسان بنفس الخطوط دون التحدث. تعمل أشجار العمل على حل هذه المشكلة من أجل التعليمات البرمجية. لا يوجد شيء في سلسلة الأدوات الحالية يحل مشكلة [الحالة المشتركة](/posts/when-agents-share-state-everything-breaks).

تم توثيق التناقض في النتائج المعيارية لمارتن. في مهمة التعلم المستمر، ترك Sonnet 4.6 خلفه مخزنًا للذاكرة يصفه كقائمة من ملاحظات الفشل والتخمينات المفتوحة، بما في ذلك إدخالات مثل "ربما prc بدلاً من prc_usd؟" تتراكم التخمينات. لا شيء يشير إلى حل واحد. الجلسة التالية ترث الكومة.

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

## ما علمتني إياه إدارة السرب

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

يشارك السرب الآن [متجرًا منظمًا واحدًا](/posts/from-memory-to-nervous-system)، وهذا المنشور بحد ذاته هو إيصال. تم إجراء البحث وراء ذلك بواسطة وكيل استخبارات العملاء الخاص بي، والذي جلب جميع منشورات X الثلاثة، وقام بتخزين كل منها كسجل مكتوب مع أرقام المشاركة والمصدر، وكتب النتائج التنافسية في تحليل منظم، وقدم مهام المتابعة إلى عميلين آخرين من خلال المتجر المشترك. عندما طرحت سؤال متابعة بعد ساعة، تم إلحاق المقارنة بنفس سجل التحليل مع مسار المصدر الخاص به، وليس متناثرًا في ملف جديد. لم يقم أي وكيل بإعادة اشتقاق ما أنشأه آخر بالفعل.

## نضج الذاكرة هو خاصية الركيزة

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

نتائجه، كلها على نفس نظام الملفات المثبت: يتوقف Sonnet 4.6 عند المرحلة الأولى، ويسجل حالات الفشل دون التحقيق فيها. يصل Opus 4.7 إلى مرحلة التحقق ولكنه يتحقق فقط من حوالي 17 بالمائة من مطالباته في المدى المتوسط. تكمل الخرافة 5 التقدم وتتحقق مما يصل إلى 73 بالمائة.

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

## ما المطلوب من طبقة حالة الحلقة

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

لكي نكون منصفين للملف النصي: بالنسبة إلى حلقة واحدة في ريبو واحد، [تخفيض السعر جيد حقًا](/posts/the-markdown-memory-ceiling). إنه قابل للقراءة، قابل للتغيير، ومجاني. دالة التأثير هي الحلقة الثانية، وهي المرة الأولى التي تهتم فيها عمليتان بنفس الحقيقة ولا يمكن لأي منهما الوثوق بما كتبته الأخرى.

## تتذكر الملفات، وأنظمة التسجيل تعرف

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

لقد قمت ببناء [Neotoma](https://github.com/markmhendrickson/neotoma) لأنني كنت بحاجة إلى تلك الطبقة لسربتي الخاصة: الملاحظات المكتوبة، لكل مصدر حقل، والتصحيحات التي تحل الحقيقة الحالية، والوصول المشترك لكل وكيل أقوم بتشغيله. لقد أمضى خطاب الحلقة أسبوعًا فقط في وصف الفتحة التي يملأها دون تسمية أي شيء يملأها.

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