Skip to main content

هندسة الحلقات: دورة مكثفة

15 مفهوماً · من البرمجة الوكيلة إلى الأنظمة التي تصوغ تعليماتها بنفسها

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

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

هذه هي هندسة الحلقات. تنتقل المهارة القيّمة من التعليمة التي تكتبها إلى الحلقة التي تصممها. تعلّمك هذه الدورة مم تتكون الحلقة، وكيف تبنيها في كل من Claude Code وOpenCode، وهما يصلان إلى المكان نفسه عبر طريقين مختلفين جداً.

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

هل أنت جديد هنا؟ ملخص في دقيقتين لما ينبغي أن تعرفه مسبقاً
  • نمط التخطيط: يقرأ الوكيل ملفاتك ويقترح خطة قبل أن يغيّر أي شيء؛ وتوافق أنت أولاً.
  • ملف القواعد (CLAUDE.md / AGENTS.md): ملاحظات قصيرة ودائمة عن المشروع يقرأها الوكيل في بداية كل جلسة.
  • المهارات (SKILL.md): تعليمة محفوظة وقابلة لإعادة الاستخدام لا يحمّلها الوكيل إلا حين تطابقها المهمة.
  • الوكلاء الفرعيون: مساعد منفصل له نافذة سياقه الخاصة، ينجز عملاً ثم يعيد النتيجة وحدها.
  • الموصلات / MCP: الطريقة المعيارية لربط الوكيل بأدوات خارجية، مثل GitHub وSlack وقاعدة بيانات.
  • إدارة السياق: أبقِ المحادثة خفيفة؛ يسوء أداء النموذج وتزداد كلفته كلما امتلأت.

إذا كان أي من ذلك جديداً عليك، فأنجز الدورة المكثفة في البرمجة الوكيلة أولاً؛ فهذه الدورة تُبنى فوقها مباشرةً.

الكلمات الأساسية بلغة واضحة

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

المصطلحمعناه بلغة واضحة
الوكيلنظام ذكاء اصطناعي يستطيع استخدام الأدوات وإكمال خطوات، لا مجرد الإجابة عن سؤال.
التعليمةالتوجيه الذي تعطيه للوكيل.
الحلقةنظام يبدأ العمل ويفحصه ويسجّل النتيجة ويكرر عند الحاجة.
النبضةتشغيل كامل واحد للحلقة.
نبض القلبالجدول أو الحدث أو الشرط الذي يبدأ نبضة.
المشغّل / الإطلاقبدء تشغيل؛ فمثلاً يمكن لحدث GitHub أن يطلق Routine.
بلا مراقبةالعمل من دون أن يراقب شخص كل خطوة.
شرط التوقفقاعدة قابلة للاختبار تخبر الحلقة أن العمل اكتمل.
الصانع والمدققوكيل ينشئ العمل، ووكيل أو أمر مختلف يفحصه.
شجرة العملمجلد عمل وفرع منفصلان يمنعان الوكلاء المتوازيين من تعديل الملفات نفسها.
المهارةتعليمات مشروع محفوظة يستطيع الوكيل إعادة استخدامها.
الموصل / MCPاتصال يتيح للوكيل استخدام نظام خارجي مثل GitHub أو Slack أو قاعدة بيانات.
الحالة / الذاكرةمعلومات محفوظة خارج النموذج كي يعرف تشغيل لاحق ما حدث سابقاً.
العمود الفقرياسم هذه الدورة للحالة المحفوظة التي تصل نبضة بالأخرى.
البوابة البشريةنقطة يجب أن يراجع فيها شخص العمل أو يوافق عليه قبل استمرار إجراء خطِر.
Routineأتمتة Claude Code السحابية؛ تبدأ جلسة جديدة من تعليمة ومشغّل محفوظين.

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

من أين جاءت هذه الفكرة

في منتصف 2026 قال صانعو هذه الأدوات الأمر بوضوح. صاغ Boris Cherny، مبتكر Claude Code، الفكرة هكذا: «لم أعد أكتب تعليمات إلى Claude. لدي حلقات تعمل وتكتب التعليمات إلى Claude... مهمتي هي كتابة الحلقات». وقال Peter Steinberger من OpenClaw: «ينبغي أن تصمم حلقات تكتب التعليمات إلى وكلائك». ثم سمى Addy Osmani هذا النمط وسرد أجزاءه. لم يقل أي منهم إن العمل صار أسهل؛ بل قالوا إن المهارة القيمة انتقلت. وعلى هذه الفكرة تقوم الدورة كلها.

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

التحول الذهني في صورة واحدة

تنتقل نقطة الرفع من التعليمة إلى الحلقة. اللوحة اليسرى، التعليمة دوراً بعد دور: أربع خطوات مرقمة، 1 تكتب تعليمة، 2 يجيب الوكيل، 3 تقرأ الجواب، 4 تكتب من جديد، مع سهم متقطع من 4 إلى 1 بعنوان «أنت، مرة أخرى». التذييل: تمسك الأداة طوال الوقت؛ أنت النبض والمدقق والذاكرة، وإذا توقفت عن الانتباه توقف العمل. يشير سهم كبير إلى اللوحة اليمنى، حلقة تصممها مرة واحدة. في الأعلى شارة ذهبية «النبض: جدول أو حدث» تبدأ كل نبضة والحاسوب مغلقاً. تتكون الدورة من 1 اكتشاف العمل، 2 التنفيذ بواسطة الصانع، 3 التحقق بواسطة وكيل ثان هو المدقق، 4 الإيداع وفتح طلب دمج، مع سهم «نجاح» من التحقق إلى الإيداع. إلى اليسار العمود الفقري progress.md، يُقرأ أولاً ويُكتب أخيراً، بسهم إلى الاكتشاف وآخر من الإيداع. في الأسفل شريط ذهبي: «أنت، البوابة البشرية: لا تأتيك إلا القرارات الخطرة للموافقة؛ لا تكتب كل دور»، مع سهم «خطر» من التحقق إلى البوابة و«موافقة» منها إلى الإيداع. التذييل: تمسك الحلقة بالخطوات الوسطى، وتحتفظ أنت بالقصد والمساءلة.

شاهد التحول عملياً في 30 ثانية

ابدأ كل خطوة بنفسك في الجانب الأيسر، ثم قارنه بالجانب الأيمن حيث يبدأ النظام كل خطوة تلقائياً. ستقابل كل توقف جرى استبداله لاحقاً: الجدول في الجزء 2، والمدقق في المفهوم 11، والبوابة البشرية في الجزء 5.

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

بعبارة بسيطة

يوفر Claude Code مزيداً من ميزات الحلقة جاهزةً للاستخدام. أما OpenCode فيمنحك العامل، ثم تصل أنت المجدول وبقية الأجزاء.

صحيح حتى منتصف يوليو 2026. تتغير الأداتان بسرعة، ولا تزال عدة ميزات للحلقات في Claude Code ضمن المعاينة البحثية. قبل أي جلسة، شغل claude update أو opencode upgrade. راجع التوثيق المباشر (code.claude.com/docs، opencode.ai/docs) قبل الاعتماد على حد أو خيار بعينه.

أين يمكن تشغيل الحلقة؟

الحلقة الحقيقية تعمل بلا مراقبة، فتكتب تعليماتها بنفسها وأنت بعيد. حتى يوليو 2026 لم يكن الويب يستطيع ذلك إطلاقاً. كان claude.ai وchatgpt.com يقدمان مربع محادثة، ومربع المحادثة ينتظرك في كل دور: كنت أنت الجدول. ولتشغيل حلقة حقيقية كان عليك مغادرة المتصفح إلى أداة تستطيع الانطلاق من تلقاء نفسها، أي Claude Code أو OpenCode.

تغيّر ذلك في يوليو 2026. أدمج المزودان منتجات الوكلاء في عنواني الويب نفسيهما. يعمل Claude Cowork الآن في claude.ai، كما توضح دورة Cowork المكثفة. تعمل جلساته البعيدة على خوادم Anthropic، ولذلك تنطلق الحلقة المجدولة من تبويب متصفح أغلقته منذ زمن. ويفعل ChatGPT Work الشيء نفسه في chatgpt.com. لذلك لم تعد عبارة «لا يمكنك تشغيل حلقة على الويب» صحيحة. والعبارة الدقيقة الآن هي: لا يمكنك تشغيل حلقة داخل مربع المحادثة، لكن صفحات الويب المحيطة به تستطيع ذلك. معظم هذه الأسطح مدفوعة، وعدة أسطح منها تجريبية ذات إطلاق تدريجي. يمكنك تعلّم الحلقة وتصميمها في أي مكان، لكنك تحتاج إلى واحد من هذه الأسطح كي تشغّلها. وتعرض هذه الدورة سطحي البرمجة.

«لكنني أنجزت دورة التطوير المدفوع بالمواصفات كلها في claude.ai، فهل أستطيع تشغيل حلقة هناك أيضاً؟»

سؤال وجيه، وقد تغيّرت الإجابة في يوليو 2026، لذا إليك الصورة قبل ذلك التاريخ وبعده.

قبل يوليو 2026: كان claude.ai وchatgpt.com مربعي محادثة. ينتظر مربع المحادثة منك كل دور، ولا يستطيع البدء وفق جدول أو حدث. كان يمكنك إعادة توجيهه يدوياً، لكنك بذلك تصبح أنت النبض، وهي بالضبط الوظيفة التي وُجدت الحلقة لإزالتها. لذا لم يكن بوسعك تشغيل حلقة على الويب. كنت تصممها هناك، ثم تنتقل إلى Claude Code أو OpenCode لتشغيلها.

بعد يوليو 2026: وضع المزودان منتجات الوكلاء داخل عنواني الويب نفسيهما. لم يتغير مربع المحادثة نفسه؛ فهو ما زال ينتظرك وسيظل كذلك دائماً. الذي تغير هو ما يوجد بجواره:

  • يعمل Cowork في claude.ai، وهو إصدار تجريبي بدأ بخطة Max ثم يتوسع إلى خطط أخرى، كجلسة بعيدة على خوادم Anthropic. تبدأ جلسة Cowork في تبويب المتصفح نفسه الذي تستخدمه للمحادثة، وتنطلق المهام المجدولة من دون أي جهاز متصل: الحاسوب مغلق والهاتف في جيبك. تُحفظ جلساتك وملفاتك في حسابك، فيمنحك ذلك عموداً فقرياً لم تضطر إلى بنائه. وعندما تبلغ الحلقة قراراً لا يستطيع اتخاذه سواك، يصل السؤال إلى هاتفك. هذه هي البوابة البشرية مدمجةً في المنتج. وCowork هو النظير غير البرمجي لنظام Routine.
  • أتاحت Claude Code Routines، خلف تسجيل الدخول نفسه إلى claude.ai والتي تُنشأ في claude.ai/code/routines، هذا النمط لأعمال البرمجة بالفعل: جلسات سحابية جديدة على خوادم Anthropic والحاسوب مغلق. وهي متاحة بخطة مدفوعة وفي مرحلة معاينة بحثية.
  • يقدّم ChatGPT Work في chatgpt.com، الذي أطلقته OpenAI في 9 يوليو 2026، التحول نفسه من الجهة الأخرى: وكيل ذو مهام مجدولة وCodex مدمج وجلسات متزامنة سحابياً، يعمل من الويب عبر الحاسوب والهاتف. اقرأه بمفردات هذه الدورة فستظهر الأجزاء الستة: المهام المجدولة هي النبض، والتطبيقات المتصلة هي الموصلات، ونمط Goal في Codex هو حلقة التشغيل المشروط حتى الاكتمال، والجلسات المتزامنة سحابياً تحمل الحالة بين الأجهزة.
  • يظل OpenCode يفعل ذلك باستخدام مجدولك أنت، مثل cron أو GitHub Actions، من دون حاجة إلى سحابة المزوّد.

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

وهكذا صار تقسيم العمل أوضح، لا أنه اختفى. مربع المحادثة هو المكان الذي تصمم فيه الحلقة وتتدرب عليها: تصوغ المهارة، وتكتب تعليمة المدقق، وتحدد شرط التوقف، وتشغّل نبضة واحدة يدوياً. أما سطح الوكيل المجاور له، سواء كان Cowork أوRoutine أوChatGPT Work أوOpenCode، فهو المكان الذي تشغّلها فيه. وهذا الانتقال هو الخطوة الطبيعية التالية بعد التطوير المدفوع بالمواصفات.

هذه المعلومات صحيحة في منتصف يوليو 2026. لا يزال Cowork على الويب وChatGPT Work حديثين منذ أسابيع، والإطلاق تدريجي حسب الخطة، والاستخدام محسوب. تحقّق من صفحات المنتجات الحية قبل الاعتماد على حد أو ميزة.

بعبارة بسيطة

استخدم مربع المحادثة لتصميم الحلقة والتدرّب عليها. ولتشغيلها بلا مراقبة، استخدم سطحاً ينطلق من تلقاء نفسه: Claude Code أوOpenCode أوCowork أوChatGPT Work. ومنذ يوليو 2026 لم تعد مضطراً إلى مغادرة المتصفح لهذا الغرض؛ يعمل Cowork في claude.ai ويعمل ChatGPT Work في chatgpt.com.

جرّب وأنت تقرأ

من هنا فصاعداً تستطيع تشغيل معظم المفاهيم في جلسة حقيقية. أبقِ طرفية مفتوحة إلى جوار الصفحة (claude أو opencode) وجرّب كل فكرة عند بلوغها. ابدأ بمستودع git صغير مؤقت كي لا تضر الحلقة شيئاً مهماً.


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

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

ثلاث حلقات تستطيع تشغيلها اليوم، لا الاكتفاء بالقراءة عنها

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

المشروعالمفهومما يحدث
راقب محطة الفضاء4، داخل الجلسةجملة واحدة تجعل الموقع الحقيقي لمحطة الفضاء يظهر كل دقيقة. أغلق الطرفية فيتوقف الرصد، وهذه هي الفكرة.
ابنِ ملف أعمالك5، شرطيضع سيرتك الذاتية وحدد ل /goal خط النهاية؛ يقرأ PDF ويصمم الصفحة ويفحص عمله ويكرر حتى ينجح.
جرس الباب7، مدفوع بحدثافتح طلب دمج فتظهر مراجعة لم يطلبها أحد، على حاسوب ليس حاسوبك، سواء كان جهازك مفتوحاً أم مغلقاً.

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

توجد المشروعات الثلاثة في agentfactory-labs. نفّذ الأول على الأقل؛ فمشاهدة نبض ينطلق أثمن من قراءة ثلاثة نبضات.

هل تفضّل التعلم بالممارسة؟ اقرأ الجزء 5 أولاً لترى حلقة كاملة من البداية إلى النهاية، ثم عُد إلى الأجزاء. وحين تتضح المفاهيم، تمنحك المشاريع التطبيقية ثماني حلقات تبنيها بنفسك.

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

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

في القراءة الثانية، بعد أن تكون حلقتك الأولى قد عملت فعلا، اقرأ ملاحظات التعمق والجزء 6 كله والمشروعات من 4 إلى 8 وملحق Routines بتدريباته الثلاثة، عندما تصبح مستعدا لبناء Routine سحابية حقيقية. صممت الدورة كي تؤتي القراءة الثانية ثمارها لأن لديك الآن حلقة عاملة تفكر من خلالها.

ما تحفظه وما تبحث عنه

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

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

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


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

افتح العرض التقديمي الكامل

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


الجزء 1: التحول

1. من كتابة التعليمات إلى بناء الحلقات

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

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

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

الفرق ليس «تعليمة أكبر»، بل بنية عمل مختلفة:

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

تفصيل تقني اختياري يمكنك تجاوزه في القراءة الأولى.

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

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

while True:
reply = model(context)
if not reply.tool_calls:
break # the model decided it is done
context += run_tools(reply.tool_calls)

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

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

لهذا تعلّمك الدورة شروط توقف خارجية لا تعتمد على رأي النموذج في عمله:

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

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

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

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

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

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

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

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

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

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

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

2. مم تتكون الحلقة

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

تشريح الحلقة: خمسة أجزاء وعمود فقري. لكل جزء وظيفة واحدة، وملف الحالة في الأسفل هو ما يجعلها حلقة لا تشغيلاً منفرداً. 1 النبض: جدول أو حدث يبدأ كل نبضة؛ من دونه يوجد تشغيل لا حلقة. 2 شجرة العمل: عزل يمنع تصادم الوكلاء المتوازيين، نسخة عمل لكل مهمة. 3 المهارة: معرفة المشروع مكتوبة مرة واحدة كي لا يبدأ أي تشغيل من الصفر. 4 الوكلاء الفرعيون: وكيل يكتب وآخر مختلف يفحص، صانع ومدقق. 5 الموصل: الوصول عبر MCP إلى أدواتك الحقيقية مثل طلبات الدمج والتذاكر، لتعمل لا لتقترح فقط. تصل خطوط متقطعة الأجزاء الخمسة بشريط عريض هو الجزء 6، الحالة والذاكرة، العمود الفقري: ملف على القرص، CLAUDE.md أو AGENTS.md مع ملف تقدم، أو لوحة مثل Linear. ينسى النموذج كل شيء بين التشغيلات؛ المستودع لا ينسى. لا عمود فقري، لا حلقة. وفي نهاية كل نبضة يتجه سهم إلى البوابة البشرية: العمل الآمن إلى إيداع أو طلب دمج، والخطر أو غير المؤكد إليك.

  1. النبض: جدول، أو حدث، يبدأ الحلقة. بدونه لديك تشغيل واحد، لا حلقة.
  2. شجرة العمل: عزل يمنع وكيلين يعملان في آن واحد من الكتابة فوق ملفات بعضهما.
  3. المهارة: معرفة مشروعك مكتوبةً مرةً واحدة، حتى لا يبدأ كل تشغيل من الصفر.
  4. الوكلاء الفرعيون: الفصل بين الصانع والمدقق؛ الوكيل الذي يكتب الكود ليس الوكيل الذي يقيّمه.
  5. الموصل (MCP): يتيح للحلقة أن تتصرف داخل أدواتك الحقيقية، مثل فتح طلب دمج أو تحديث تذكرة، بدلاً من تقديم اقتراح فحسب.

ثم يأتي السادس، وهو الذي يتخطاه المبتدئون:

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

تخصص بقية الدورة قسماً لكل جزء، ثم تعرض مثالاً كاملاً يجمعها.

هل يقتصر هذا على الكود؟

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

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

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

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

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

إذا كان عملك مستندات لا كوداً، فاقرأ هذه الدورة كما هي، ثم راجع الدورة المكثفة في Cowork وOpenWork لترى الحلقات نفسها بأدوات غير برمجية.

3. طريقان: منتج يأتي بالأجزاء وطبقة أدنى

هذا هو الموضع الوحيد الذي تختلف فيه الأداتان فعلاً، وهو يشكل كل ما يأتي بعده.

طريقان لبناء الحلقة نفسها. اللوحة اليسرى، Claude Code، تضم شرائح slash-loop وslash-goal وslash-schedule مع Routines وclaude -p و--worktree و.claude/agents وChannels وhooks. المجدول والمدقق والعزل مدمجة، لذا تهيئها في الغالب. تعمل Routines السحابية والحاسوب مغلق، والمقابل حد يومي للتشغيلات لكل حساب. اللوحة اليمنى، OpenCode، توفر العامل والمكونات الأدنى: opencode run وserve مع --attach وcron وlaunchd وTask Scheduler وGitHub Actions ووكلاء مخصصين و--format json وopencode.json لقسم mcp. OpenCode هو العامل وأنت توفر المشغّل؛ يبدأ نظام التشغيل أو GitHub كل نبضة. يحتاج إعداداً أكثر لكنه يمنح تحكماً أكبر ولا يحتاج سحابة المورّد، ويعمل على الأجهزة التي لديك. التذييل: النبض نبض، سواء كان Routine مُدارة أو سطراً في cron. تعلم شكل الحلقة مرة واحدة فينتقل؛ الأوامر هي التي تتغير.

يأتي Claude Code بأجزاء الحلقة داخل المنتج. النبض (/loop و/schedule وRoutines السحابية)، والتشغيل حتى الإنجاز بمدقق مدمج (/goal)، والعزل (--worktree)، واستقبال الأحداث (Channels)، كلها أوامر مدمجة الآن. قبل عام كنت ستكتب مجموعة من سكربتات shell وتعتني بها للحصول على ذلك. أما اليوم فتكتفي غالباً بإعداده.

الأهم هو Routines: عمليات أتمتة سحابية تعمل على خوادم Anthropic حتى مع إغلاق حاسوبك، ويبدأها جدول أو استدعاء API أو حدث GitHub. ثمن هذه السهولة هو حدود يومية للتشغيل لكل حساب، فراجع حدك الحالي في claude.ai/settings/usage بدلا من الاعتماد على رقم ثابت، إضافة إلى أن Routines لا تزال معاينة بحثية قابلة للتغير.

يمنحك OpenCode الطبقة الأدنى. لا يوجد مجدول سحابي مدمج. بدلاً من ذلك، يكون OpenCode هو العامل الذي تستدعيه، وتأتي أنت بالنبض من نظام التشغيل أو CI.

الأمر الأساسي هو opencode run "<prompt>". يشغّل تعليمةً واحدة من دون شاشة المحادثة، ويطبع النتيجة ثم يخرج. هذا الأمر الواحد هو نبضة واحدة من الحلقة. تحوّله إلى حلقة بتغليفه بما يعمل وفق مؤقت: cron أو launchd في macOS وLinux، أو Task Scheduler في Windows، أو GitHub Actions مع مشغّل مجدول. يتطلب ذلك توصيلات أكثر، لكنه يمنحك تحكماً كاملاً، ويعمل على أجهزة لديك أصلاً، ولا يحتاج إلى سحابة المورّد.

المهارة هي الحلقة، لا اختصار لوحة المفاتيح

لاحظ أن علامتي التبويب تصفان الأجزاء الخمسة نفسها. النبض نبض سواء أكان Routine مُداراً أم سطراً في cron. والفصل بين الصانع والمدقق فكرة واحدة سواء قيّمه /goal أم فعل ذلك تشغيل ثانٍ للأمر opencode run. تعلّم بنية الحلقة مرةً واحدة فتنقلها بين الأدوات. لهذا نعلّم الأداتين.

إلى أين نتجه، الحلقة كلها مبكراً

قبل تفصيل الأجزاء، إليك خط النهاية. تتكون الحلقة التي ستبنيها في الجزء 5 من ست خطوات واضحة:

every weekday at 9am:                 # 1. Heartbeat
read progress.md # 6. Spine (memory)
find overnight CI failures + issues # what to work on
for each one:
draft a fix in its own checkout # 2. Worktree
using the project's triage skill # 3. Skill
have a separate reviewer grade it # 4. Subagents (maker/checker)
if PASS: open a PR via GitHub # 5. Connector (MCP)
if risky: write it to progress.md and leave it for a human
update progress.md # 6. Spine again

احتفظ بهذه الصورة في ذهنك. كل مفهوم في الأجزاء من 2 إلى 4 هو سطر منها.

اختبر نفسك

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

اعرض الإجابة

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


الجزء 2: النبض

النبض هو ما يحول التشغيل الواحد إلى حلقة. وله أربعة أنواع تبدأ بما «يبقى داخل هذه الجلسة» وتنتهي بما «يعمل من دونك تماماً». تعلّمها بالترتيب؛ تستخدم معظم الحلقات الحقيقية النوعين الأخيرين.

أنواع النبض الأربعة في بطاقات مرقمة على خط من «أنت تمسكه» إلى «يعمل من دونك». 1 داخل الجلسة: يتكرر على مؤقت وأنت تراقب ويتوقف بإغلاق الجلسة، عبر slash-loop في Claude Code أو حلقة while مع sleep في OpenCode؛ مثل مؤقت المطبخ، لا يرن إلا وأنت فيه. 2 شرطي، أو تشغيل حتى الإنجاز: يتكرر حتى يصبح شرط مفحوص صحيحاً ويتوقف عند نجاح الفحص، عبر slash-goal أو حلقة محدودة مع اختبارات؛ واصل الطهي حتى يقول المتذوق إنه جاهز. 3 مجدول: يعمل وفق الساعة والحاسوب مغلق، عبر Routines أو cron أو GitHub Actions؛ كمنبه يرن سواء كنت في المنزل أم لا. 4 مدفوع بالأحداث: يستجيب لحظة وقوع شيء، كفتح طلب دمج أو وصول رسالة، عبر Channels ومشغلات GitHub أو أحداث GitHub Actions؛ كجرس الباب، لا يحدث شيء حتى يضغطه أحد. التذييل: تسمى كل عملية إطلاق منفردة للحلقة «نبضة».

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

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

  • الحلقة داخل الجلسة تحفظ مؤقتها في جلستك المفتوحة، أي العملية التي تظل تعمل ما دامت طرفيتك مفتوحة. أغلق الجلسة فيختفي ما يحمل المؤقت، فتتوقف الحلقة.
  • المهمة المجدولة أو Routine (تبنيها في المفهوم 6) تنقل المؤقت خارج الجلسة، إلى مجدول لا ينام أبداً (cron على جهازك، أو خوادم Anthropic لروتين سحابي). ومع كل دقة، يُطلق تشغيلاً جديداً قصير العمر، ويتركه ينتهي، ثم يغلقه، ثم يُطلق تشغيلاً جديداً في المرة التالية. الحلقة نفسها، لكن لا يلزم أن يبقى شيء من طرفك مفتوحاً.
النبضأين يعيش المؤقتما الذي يبقى مستيقظاً بين النبضات
/loop داخل الجلسةداخل الجلسةجلستك المفتوحة (جهازك، والطرفية مفتوحة)
مهمة مجدولة / Routineفي الخارج، داخل مجدولالمجدول، الذي يُطلق تشغيلاً جديداً مع كل دقة

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

4. حلقات داخل الجلسة، تكرار وأنت تراقب

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

شاهد الحلقة داخل الجلسة في 30 ثانية

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

استخدم مهارة /loop المضمّنة. أعطها فترةً زمنية وتعليمة:

/loop 5m check if the deployment finished and tell me what happened

يحوّل Claude الفترة إلى جدول، ويمنح المهمة معرّفاً، ويشغّل التعليمة كل 5 دقائق ما دامت الجلسة مفتوحة. وعندما تنتهي، ألغها وتابع عملك.

إلغاء /loop. كل حلقة مهمة مجدولة لها معرّف، لذلك توقفها بالطريقة نفسها التي بدأت بها، بلغة عادية:

show my running loops
cancel the deploy-check loop

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

شغّل حلقة حقيقية الآن في خمس دقائق

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

git clone https://github.com/panaversity/agentfactory-labs.git
cd agentfactory-labs/crash-course/loop-eng/iss-loop
claude

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

/loop show me the location of the ISS every minute

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

  • فهم /loop عبارة «كل دقيقة» على أنها النبض. لم تكتب جدولاً ولا سكربتاً ولا رابطاً؛ يحمل مجلد المشروع كل ذلك، ولهذا أمكن أن تكون التعليمة جملة واحدة.
  • أغلق الطرفية الآن. يتوقف الرصد معها. ليس ذلك خطأً، بل تعريف الحلقة داخل الجلسة، والسبب الذي يقتضي المفهومين 6 و7.

توجد التعليمات الكاملة وتعليمتان أصعب للتجربة في ملف README للمشروع.

اختياري: ماذا يحدث عندما تُغلق الجلسة؟

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

  • --resume يعيد المهام التي لم تنتهِ صلاحيتها؛ وتبقى المهمة المتكررة صالحة سبعة أيام بعد إنشائها.
  • نقل الجلسة إلى الخلفية ينقل معها مهام /loop، فتظل تعمل حتى بلا طرفية مفتوحة. لكن انتبه: لا تعوّض النبضات التي فاتتها أثناء نوم الجهاز.

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

خيار وسط: الجلسات في الخلفية. الجلسة في الخلفية هي الدرجة الوسطى بين /loop داخل الجلسة وRoutine: تبقي تشغيلا واحدا حيا على جهازك بعد إغلاق نافذة الطرفية، وتبدأها بالأمر claude --bg. وهي وحدها تنجز مهمة واحدة ثم تتوقف، لكن قيمتها في حملها لحلقة: ابدأ /loop، وأرسل الجلسة إلى الخلفية، فتركبها الحلقة وتظل تنبض والنافذة مغلقة. يعرضها claude agents لاحقا، ويفتحها /resume من جديد وعليها العلامة bg. تذكر ثمن «الحياة على جهازك»: يجب أن يبقى الحاسوب مستيقظا؛ وحين يلزم أن يصمد العمل رغم إغلاق الحاسوب، تكون الأداة الصحيحة Routine (المفهوم 6).

تصطف الدرجات الثلاث وفق سؤال واحد: ما مقدار ما يجب أن يبقى مستيقظاً؟

الدرجةالخيارهل يستمر بعد إغلاق الطرفية؟هل يستمر والحاسوب نائم أو مغلق؟
الدنيا/loop داخل الجلسةلالا
الوسطىجلسة خلفية (--bg) تحمل /loopنعملا، يجب أن يبقى جهازك مستيقظاً
العليامهمة مجدولة / Routineنعمنعم، فالروتين السحابي يعمل على خوادم Anthropic

لا يملك OpenCode أمراً باسم /loop. تبني المؤقت بنفسك في shell. ولأن opencode run يخرج بعد تعليمة واحدة، تؤدي حلقة while مع sleep الوظيفة نفسها:

while true; do
opencode run "check if the deployment finished; if it did, say DONE"
sleep 300 # 5 minutes
done

هذه الفكرة نفسها التي ينفذها /loop لكن في طبقة أدنى: يكون shell هو النبض، ويكون opencode run هو النبضة. يبدأ كل تشغيل جديد للأمر opencode run وقت التشغيل كله أولاً، بما فيه الإعدادات والنموذج والإضافات وأي خوادم MCP، قبل تنفيذ شيء واحد. لتجنب دفع تكلفة البدء في كل نبضة، شغّل خادماً مرةً واحدة واتصل به:

opencode serve --port 4096 &
# then, each beat:
opencode run --attach http://localhost:4096 "check the deploy status"
بعبارة بسيطة

استخدم حلقة داخل الجلسة ما دمت تراقب العمل. تتوقف عندما تتوقف الجلسة أو الجهاز. واستخدم Routine سحابية أو جدولاً آخر بلا مراقبة عندما يجب أن يستمر العمل من دونك.

5. التشغيل حتى الإنجاز، الحلقة تقرر متى تتوقف

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

تتعمد الحلقة ذات المؤقت الثابت البساطة؛ فهي تعمل N مرة مهما حدث. لكنك غالباً تريد فعلياً: «استمر حتى يصبح هذا صحيحاً». هنا تظهر فكرة الصانع والمدقق للمرة الأولى: ينبغي ألا تترك الحلقةُ الوكيلَ الذي أنجز العمل يقرر اكتماله.

شاهد التشغيل حتى الإنجاز في 30 ثانية

تواصل الحلقة المحاولة، ويقرر مدقق منفصل أن العمل «تم». تتوقف لحظة إثبات الهدف، من دون مؤقت ومن دونك.

استخدم /goal. تعطيه شرط توقف يستطيع Claude إثباته في مخرجاته، أي شيئاً يبرهنه بتشغيل أمر وعرض نتيجته، مثل «تنجح كل الاختبارات في test/auth». يستمر في العمل عبر الأدوار حتى يتحقق الشرط. والجزء المهم هو أن نموذجاً منفصلاً وأصغر، Haiku افتراضياً، يقرأ النص بعد كل دور ويقرر: «هل انتهينا؟» وهكذا لا يقيّم الوكيل الذي كتب الكود عمله بنفسه. توجد دقة مهمة: لا يشغّل ذلك المدقق الأوامر بنفسه، بل يحكم على ما عرضه Claude بالفعل. لذلك يجب أن يكون الشرط شيئاً تستطيع مخرجات Claude إظهاره، لا حقيقة خفية لا يكشفها إلا أمر.

/goal All tests in test/auth pass and `npm run lint` is clean.

سيعدّل ويشغّل الاختبارات ويقرأ الإخفاقات ويحاول من جديد، ولا يتوقف إلا حين يؤكد المدقق تحقق الشرط فعلاً، أو حين توقفه أنت باستخدام /goal clear. لا يوجد أمر مدمج ل«توقف بعد N محاولة». إذا أردت سقفاً، فاكتبه داخل الشرط (…or stop after 20 turns). اكتب شروطاً يستطيع أمر إثباتها، مثل «الاختبارات ناجحة وlint نظيف»، لا «كود المصادقة جيد». وهنا تؤتي مواصفة التطوير المدفوع بالمواصفات ثمارها: معايير قبولها شروط يستطيع أمر إثباتها، فتمنحك مواصفة جيدة شرط التوقف مجاناً.

اختياري: إعدادات إعادة المحاولة الحالية في Claude Code

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

إعادة المحاولة هي أن تعيد الحلقة خطوة فاشلة، مثل استدعاء API انتهت مهلته. ومن دون سقف قد تعيد الحلقة العالقة المحاولة طوال نومك وتستهلك الوقت والرموز. لذلك يضع Claude Code سقفاً افتراضياً:

  • تعيد الأخطاء المؤقتة المحاولة افتراضياً حتى 10 مرات (CLAUDE_CODE_MAX_RETRIES)، ويمكن رفعها إلى حد أقصى قدره 15.
  • للجلسات بلا مراقبة مثل مهام CI، اضبط CLAUDE_CODE_RETRY_WATCHDOG=1. عندها تعيد الأخطاء المؤقتة، مثل مشكلة شبكة قصيرة، فترة أطول بكثير، بلغت عند الكتابة 300 محاولة تقريباً على مدى ثلاث ساعات من التراجع، كما ترفع سقف 15 بعد أن تضبط MAX_RETRIES بنفسك.

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

ابنِ شيئاً حقيقياً: ملف أعمالك

يُعد npm test شرط توقف مرتباً لأن شخصاً كتب الاختبارات مسبقاً، لكن معظم العمل ليس كذلك. يطرح مشروع ملف الأعمال السؤال الأصعب: ماذا يعني «تم» لصفحة سيقرأها إنسان، وهل تستطيع وصفه بدقة تكفي لوصول الحلقة إليه؟

ضع سيرتك الذاتية أو ملف LinkedIn بصيغة PDF في المجلد، ثم أعط /goal خط النهاية:

/goal Build my portfolio in site/ from my-cv.pdf, following spec.md. Done when `python3 check.py site` prints 20/20 and the reviewer agent replies PASS on all six judgment promises — show me both. Stop after 15 check attempts or 3 review rounds and write what is still failing to progress.md.

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

يطبق كل جزء من التعليمة فكرةً من هذا المفهوم. فcheck.py يوفر شرطاً يستطيع أمر إثباته عبر 20 فحصاً ميكانيكياً، مثل وجود الأقسام الخمسة ونسب التباين وعدم خروج شيء عن شاشة الهاتف. وتوجد عبارة show me both لتوفير دليل ظاهر، لأن مدقق /goal لا يقرأ إلا النص ولا يستطيع تأكيد نتيجة لم تُعرض. ويحدد رقم 15 سقفاً، إذ لا يملك /goal حداً مضمناً للتراجع، وقد تطارد الحلقة شرطاً مستحيلاً طوال الليل. كما يفرض المشروع مدققاً غير الصانع عبر وكيل مراجعة منفصل.

هنا يتجاوز المشروع حدود الدرس: ليست نتيجة 20/20 إنجازاً كاملاً. يجب أن ينجح المراجع أيضاً في ستة أمور لا يقيسها أمر، منها صدق النص مع سيرتك وكون الصفحة مصممة لا مجرد منسقة. تقول المواصفة بوضوح: «الجزء A عمل صباح، والجزء B هو المهمة». سبق أن رأيت ذلك في سلم المدقق في المفهوم 2، وهنا تختبره عملياً.

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

لا يملك OpenCode أمراً باسم /goal، لذلك تبني توقف الصانع والمدقق نفسه باستخدام shell ورموز الخروج. النمط هو: ينجز الوكيل العمل، ثم يقرر أمر حقيقي، لا الوكيل، متى يتوقف.

for i in $(seq 1 8); do          # cap the tries — never loop forever
opencode run "Make the tests in test/auth pass and fix any lint errors."
if npm test -- test/auth && npm run lint; then
echo "Condition met on try $i"; break
fi
done

هنا يكون مشغّل الاختبار وlinter هما المدقق، وهو أصدق مدقق موجود، لأن الأمر لا يستطيع إقناع نفسه بأن العمل جيد. ولتحقق أذكى، شغّل opencode run مرةً ثانية مع وكيل مخصص للمراجعة، كما في المفهوم 11، واجعله يطبع PASS أو FAIL. ضع سقفاً للمحاولات دائماً؛ فإعادة المحاولة بلا حد هي الطريقة التي تفلت بها فواتير الرموز من السيطرة.

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

امنح كل حلقة طريقةً للتوقف

تحتاج كل حلقة إلى ثلاثة أنواع من التوقف، ويمنع كل واحد منها طريقةً محددة للفشل:

التوقفما هوإن أغفلته…
شرط النجاحكيف تعرف الحلقة أن المهمة انتهتلا شيء يحدد معنى «انتهى»، فلا تستطيع الحلقة التوقف عن قصد ولا يمكن تقييمها
السقفحد أقصى للمحاولات أو الدقائق أو الإنفاقهدف لا يمكن بلوغه يلتهم كامل ميزانية الرموز
فحص عدم التقدمالتقاط تكرار الوكيل الفعلَ نفسه بالوسائط نفسها (فهو عالق، ولن تصلحه إعادة المحاولة)تنفق الحلقة كامل السقف في تكرار خطأ واحد

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

لا تكون الحلقة أفضل من شرط توقفها.

تسوء التشغيلات الطويلة مع الوقت

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

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

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

6. جداول بلا مراقبة، تعمل أثناء نومك

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

شاهد Routine في 40 ثانية

اضبط Routine في claude.ai، ثم أغلق الحاسوب، وشاهد خوادم Anthropic تواصل تشغيلها وفق الجدول والحاسوب مغلق.

أولاً، كلمة عن المصطلحات. المجدول (scheduler) هو المفهوم العام: أي ساعة دائمة العمل تُطلق تشغيلاً جديداً في وقته (cron، أو GitHub Actions، أو خدمة سحابية). أما Routine فهو مجدول Claude Code السحابي الخاص، حيث توفر Anthropic الساعة والجهاز معاً، فلا يلزم أن يكون شيء من طرفك قيد التشغيل. كل Routine مجدول، وليس كل مجدول Routine.

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

1. الإجراءات السحابية: يمكن إغلاق الحاسوب المحمول

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

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

الأجزاء الأربعة من كل Routine

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

  1. التعليمة: ماذا ينبغي أن تفعل؟ هي التعليمة الدائمة المكتوبة كمواصفة: هدف وقواعد وتعريف واضح للإنجاز. تتكرر نفسها في كل تشغيل، ولا يوجد أحد لتوضيحها، لذلك يجب أن تصمد في غيابك. في مثال الفرز:
Review all issues opened in the last 24 hours. Label each as bug,
feature-request, or question. If any issue describes a crash or data
loss, add the "urgent" label. Then post a summary to the #triage Slack
channel: total new issues, how many urgent, and one line per urgent
issue. If there are no new issues, post "No new issues overnight."
Do not close or comment on any issue.

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

  1. المستودعات: ما الذي يجوز لها لمسه؟ تسمي المستودعات التي يجوز للروتين العمل فيها. وكل ما لا تدرجه يظل خارج نطاقها. امنحها yourteam/product-app وحده. أما مستودعاتك الأخرى، بما فيها المستودع الذي يضم رمز الفوترة، فلا وجود لها من منظور هذا الروتين.

  2. الموصلات: إلى ماذا تستطيع الوصول؟ Slack والبريد الإلكتروني والتقويمات. هذه هي يدا الروتين خارج المستودع: بها تقرأ العالم الخارجي وتعيد إليك تقريرها. أرفق موصل Slack كي تنشر في قناة #triage، ولا ترفق غيره. الموصلات أذونات وليست اقتراحات؛ فمن دون موصل البريد الإلكتروني لا تستطيع إرسال رسالة حتى لو طلبت منها التعليمة ذلك.

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

ما العمل، وأين يجوز لها التصرف، وإلى ماذا تصل، ومتى تبدأ. كل Routine هي إجابات هذه الأسئلة الأربعة. وهكذا يصبح عامل فرز المسائل محددا بالكامل: التعليمة أعلاه، ومستودع واحد، وموصل Slack واحد، والثامنة والنصف في أيام العمل.

ميزة واحدة، ثلاثة أبواب

يمكنك إنشاء روتين في ثلاثة أماكن: على claude.ai/code/routines في المتصفح، أو في تطبيق سطح المكتب، أو باستخدام أمر /schedule في واجهة سطر الأوامر. هذه ليست ثلاث ميزات مختلفة — جميع الأبواب الثلاثة مفتوحة على نفس الغرفة. يتم حفظ كل روتين تقوم به، من أي باب، في نفس الحساب السحابي ويظهر في جميع الأماكن الثلاثة.

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

ما يحدث فعلياً أثناء التشغيل

في الساعة 8:30 يوم الاثنين، تبدأ خوادم Anthropic جلسة Claude جديدة، وتسلمه المطالبة الخاصة بك، وتمنحه حق الوصول إلى الريبو وموصل Slack الذي ذكرته بالضبط. فهو يقرأ مشكلات عطلة نهاية الأسبوع، ويصنفها، وينشرها على #triage - على سبيل المثال: "7 مشكلات جديدة، 1 عاجل: تعطل تسجيل الدخول على Android (#412)" - ويتم إيقاف تشغيله. يوم الثلاثاء الساعة 8:30 صباحًا، يبدأ سباق جديد تمامًا؛ انتهت جلسة يوم الاثنين. لا شيء يعتمد على جهازك - هذه هي الخاصية التي تجعل من الروتين حلقة حقيقية بدلاً من جلسة يتعين عليك رعايتها.

اختياري: الحدود الحالية وقواعد الفروع في Routines

قاعدتان حاليتان ينبغي التحقق منهما قبل الاعتماد على Routine.

القاعدة الأولى: هناك حد أقصى يومي. يحصل كل حساب على عدد ثابت من مرات التشغيل الروتينية يوميًا — عند الإطلاق، 5 على Pro، و15 على Max، و25 على Team وEnterprise. لماذا قبعة؟ لأن النظام غير المراقب الذي يعمل على خوادم شخص آخر يجب أن يكون له ميزانية؛ وهذا ينطبق على كل خدمة سحابية، وهو رقم تصمم حوله، وليس مفاجأة تكتشفه.

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

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

القاعدة الثانية: لا تستطيع الدفع إلا إلى فروع claude/ (افتراضياً). لا يستطيع الروتين الجديد الكتابة إلى main. يجب أن يبدأ كل فرع يدفعه بالبادئة claude/.

وهذا أمر جيد، لا عائق. فهو يبقي العمل بلا مراقبة آمناً من اليوم الأول: يستطيع الروتين أن ينجز كل ما يريد من عمل، لكنك تبقى أنت من يقرر ما الذي يُدمج.

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

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

متى تكون Routine السحابية الاختيار الصحيح

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

اختياري: إدارة Routine من الطرفية

يمكنك إدارة دورة حياة Routine كاملةً من الطرفية بلغة عادية. أنشئها، واعرض ما لديك، وشغّل واحدة الآن، أو غيّر توقيتها:

/schedule every weekday at 9am, run the daily-triage skill   # create it
/schedule list # see what you have
/schedule run the triage routine now # fire one run, to test it
/schedule update the triage routine to every two hours # change the timing

ثلاث ملاحظات سريعة:

  • المواعيد المخصصة. تغطي الخيارات الجاهزة الحالات الشائعة. ولجدول غير معتاد يقبل update أيضاً تعبير cron، وهو رمز قصير يحدد الوقت بدقة. فمثلاً يعني 0 9 * * 1-5 التاسعة صباحاً من الاثنين إلى الجمعة.
  • تدريب مجاني. تعمل المهمة لمرة واحدة مرةً واحدة فقط، مثل /schedule tomorrow at 9am, …. لا تُحتسب هذه التشغيلات من الحد اليومي، لذلك تتيح تجربة تعليمة والتحقق منها قبل الالتزام بتشغيلها يومياً.
  • توقيت بالساعة فقط. لا تنشئ من الطرفية إلا Routines تبدأ في وقت محدد. ولتشغيل واحدة باستدعاء API أو حدث GitHub، افتح صفحتها على الويب وأضف المشغّل هناك.

إذا لم يظهر /schedule في واجهة سطر الأوامر، فراجع خطوات التشخيص في ملحق Routines.

تشغيل تعليمة من cron على جهازك، من دون سحابة Anthropic. يشغّل claude -p تعليمة واحدة ثم يخرج، ويمكن وضعه مباشرةً في crontab:

# every weekday at 9am: sort through CI and summarize failures
0 9 * * 1-5 cd /path/to/repo && claude -p "check the CI dashboard and summarize any failures" >> ~/claude-cron.log 2>&1

وعندما تستعد لبناء أول Routine حقيقية، يأخذك الملحق خطوةً بخطوة عبر كل الحقول والمشغّلات والأسرار والمشكلات الشائعة.

اضبط واحدةً ثم نم عليها: مراقبة السماء

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

استنسخ المشروع وأثبت أولاً أنه يعمل يدوياً:

what asteroids are coming this week?

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

/schedule every day at midnight, run the sky-watch skill for today and write me the forecast

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

يجعل أمران هذا جدولاً لا جرس باب. فهو يتطلع إلى الأمام ويحذر من مرور الغد، بدلاً من الإبلاغ عن حدث الأمس. كما أنه يتحدث حتى عندما لا يحدث شيء، فتكون عبارة «كل شيء آمن» هي غاية المراقبة. أما الحلقة المدفوعة بحدث فتبقى صامتة في اليوم الهادئ. وللتجربة من دون انتظار منتصف الليل، أطلق مهمة لمرة واحدة أولاً (/schedule in 2 minutes, run the sky-watch skill)؛ فهي لا تُحتسب من الحد اليومي. بذلك تطبق قاعدة الجزء 6: أثبت الحلقة سريعاً وأنت تراقب قبل الوثوق بها بطيئةً وبلا مراقبة.

يأتي نبض OpenCode غير المراقب دائماً من نظام التشغيل أو CI. هذا هو طريق OpenCode. استخدم opencode run من دون شاشة المحادثة، ودع المجدول يشغّله.

اختياري: إضافات المجتمع للجدولة

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

على جهازك باستخدام cron:

# every weekday at 9am: sort through CI and summarize failures
0 9 * * 1-5 cd /path/to/repo && opencode run "check the CI dashboard and summarize any failures" >> ~/opencode-cron.log 2>&1

في السحابة باستخدام GitHub Actions، ولا يلزم أن يبقى أي جهاز لديك مفتوحاً. سلسلة model أدناه توضيحية؛ شغّل opencode models لمعرفة المعرّفات الدقيقة التي يعرفها تثبيتك:

name: Scheduled OpenCode Task
on:
schedule:
- cron: "0 9 * * 1-5" # weekdays at 9am UTC
jobs:
opencode:
runs-on: ubuntu-latest
permissions: { contents: write, pull-requests: write, issues: write }
steps:
- uses: actions/checkout@v6
with: { persist-credentials: false }
- uses: anomalyco/opencode/github@latest
env: { ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} }
with:
model: anthropic/claude-sonnet-5 # confirm with `opencode models`
prompt: |
Review the codebase for TODO comments and summarize them.
If any are worth acting on, open an issue to track them.

يكون prompt مطلوباً للأحداث المجدولة، فلا يوجد تعليق يستمد منه التعليمات. ويجب منح contents: write وpull-requests: write إذا كان على الحلقة فتح فروع أو طلبات دمج.

بعبارة بسيطة

تعمل Routine في Claude Code على خوادم Anthropic. ويعمل جدول OpenCode عبر نظام التشغيل أو GitHub Actions. يبدأ الاثنان عملاً جديداً في وقت تختاره، ولذلك يحتاجان إلى حالة محفوظة خارج النموذج.

ملاحظة عن أسماء Action والنماذج أعلاه

تفصيل تقني اختياري يمكنك تجاوزه في القراءة الأولى.

تكتب وثائق OpenCode الرسمية الحالية GitHub Action باسم anomalyco/opencode/github@latest، بينما لا تزال بعض الأدلة القديمة تعرض sst/opencode/github@latest. يشير الاثنان إلى المشروع نفسه؛ استخدم ما يولده الأمر opencode github install. أما النماذج، فClaude Sonnet 5 هو طبقة Sonnet الحالية، ومعرف API هو claude-sonnet-5 لأن إصدارات النسخة الرئيسية تحذف الرقم الفرعي. وهو بديل مباشر لإصدار Sonnet 4.6 الذي يظل معرفه المثبت صالحا. ينبغي لمن يبني حلقة معرفة أمرين: يعمل التفكير التكيفي افتراضيا، وينتج tokenizer الجديد رموزا أكثر بنحو 30% للنص نفسه، لذلك لا تنتقل ميزانيات الرموز المقاسة على 4.6 كما هي. وصلت المعرفات غير المؤرخة مع جيل 4.6، حيث تكون السلسلة غير المؤرخة نفسها لقطة مثبتة. أما نماذج جيل 4.5 الأقدم، مثل Haiku 4.5، فلها معرف أساسي مؤرخ (claude-haiku-4-5-20251001) واسم بديل غير مؤرخ (claude-haiku-4-5). تثبت الأمثلة أدناه معرف Haiku المؤرخ لإمكان إعادة الإنتاج. تتحرك أجيال النماذج أسرع من هذا الكتاب، لذا شغل opencode models لمعرفة السلاسل الدقيقة التي يعرفها تثبيتك قبل تثبيت أي معرف.

7. التشغيل المدفوع بالأحداث، استجابة لما يحدث

يسأل الجدول: «هل أتحقق كل ساعة؟» بينما يقول الحدث: «استجب فور وقوع X». يُفتح طلب دمج، أو تُنشأ مسألة، أو تصل رسالة، فتعمل الحلقة استجابةً لذلك.

شاهد جرس الباب في 30 ثانية

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

شكل هذا القسم

يدور هذا القسم حول الأحداث. والحدث ببساطة شيء يقع. ولكل نوع من الأحداث مُلتقِط، أي أداة تتفاعل معه، والمُلتقِطات ليست واحدة. تلتقط Routine أحداثَ GitHub وأحداثَ «كل شيء آخر»، بينما تلتقط قناة (Channel) رسائلَ الدردشة. فمُلتقِطان من الثلاثة هما Routines، وواحد (القناة) ليس كذلك. ونقطة ضعف القناة الوحيدة، أي حاجتها إلى بقاء جهازك قيد التشغيل، مبيَّنة بوضوح في الجدول أدناه.

في Claude Code، يحدد مصدر الحدث الأداةَ التي تستخدمها. وهناك ثلاثة مسارات:

1. من GitHub، استخدم Routine. ليس على الروتين أن يعمل وفق ساعة؛ إذ يمكن أن يكون مشغّله حدثَ GitHub بدلاً من ذلك. يعمل نوعان: تغيّر طلب دمج (فتحه أو تحديثه أو دمجه)، ونشر إصدار. مثلاً: «عند فتح طلب دمج، راجعه وعلّق عليه»، أو «عند نشر إصدار، صُغ سجل التغييرات».

ثلاثة أمور ينبغي معرفتها قبل بنائه:

  • الإعداد. يجب تثبيت تطبيق Claude GitHub على المستودع. انتبه: يمنح /web-setup حق الاستنساخ فقط، لكنه لا يثبّت التطبيق. وهذا ما يُعثِر كثيراً من المحاولات الأولى.
  • لا مشغّل للدفع. لا يوجد حدث «عند الدفع». لكن إذا دفع أحدهم إيداعات إلى فرع له طلب دمج مفتوح، فإن GitHub يعدّ ذلك تحديثاً لطلب الدمج (الحدث synchronized)، فيعمل الروتين. أما الدفع إلى فرع بلا طلب دمج فلا يُطلق شيئاً.
  • المرشّحات. يمكنك حصر الأحداث التي تُطلقه: حسب المؤلف، أو العنوان، أو الوسوم، أو الفرع، أو حالة المسودة، وغيرها. تجد قائمة الحقول الكاملة، والحدود بالساعة، والحالات الشائكة في ملحق Routines (A3).

2. من تطبيق دردشة، استخدم قناة. تُدخِل القناة رسالةً من تطبيق خارجي مباشرةً إلى جلسة تعمل بالفعل. تعمل Telegram وDiscord وiMessage جاهزةً؛ ولأي مصدر آخر تُعدّ مستقبِل webhook. هذا هو جرس الباب من الجزء 2: لا يحدث شيء حتى تصل رسالة، ثم تتفاعل الجلسة في الحال.

مثلاً، وأنت بعيد عن مكتبك، تستطيع أن تسأل عبر Telegram: «هل انتهى النشر؟» فتتحقق الجلسة القائمة وتردّ بسياقها ومهاراتها وتاريخها الحالي. ويمكن للحلقة أيضاً أن تُرسل تقاريرها عبر القناة نفسها.

تحذيران:

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

الإعداد: code.claude.com/docs/en/channels.

3. من أي شيء آخر، استخدم Routine بمشغّل API. بعض الأحداث لا تأتي من GitHub ولا من تطبيق دردشة: يُطلق تنبيه في أداة المراقبة، أو ينتهي نشر، أو يُرسَل نموذج. أعطِ الروتين مشغّل API، فيستطيع حينها أي نظام قادر على إرسال طلب ويب موثَّق (طلب يثبت هويته) أن يُطلقه، وحاسوبك مغلق. بل يمكن لذلك الطلب أن يحمل تفاصيل الحدث: يمرّر حقل text اختياري سياقاً خاصاً بالتشغيل (نص التنبيه، أو السجل المعطوب) إلى الروتين مع تعليمته المحفوظة. تجد نقطة النهاية والرمز وتحذير إعادة المحاولة في ملحق Routines (A3).

الاختيار بين الأربعة:

يأتي الحدث من…استخدميجري العمل في…هل يعمل والحاسوب مغلق؟
GitHub، كطلب دمج أو إصدارRoutine بمشغّل GitHubجلسة سحابية جديدة لكل حدثنعم
GitHub من دون RoutineClaude Code GitHub Action داخل CIمشغّل CI جديد لكل حدثنعم
رسالة دردشة، مثل Telegram أو Discord أو iMessageChannelالجلسة التي تشغّلها بالفعللا، يحتاج إلى جهاز
أي شيء يستطيع إرسال طلب ويبRoutine بمشغّل APIجلسة سحابية جديدة لكل استدعاءنعم

الصف الثاني أهم مما يبدو. ليست Routine الطريق الوحيد لاستمرار العمل والحاسوب مغلق. يؤدي anthropics/claude-code-action@v1 داخل سير عمل GitHub Actions الوظيفة نفسها، ولا يحتاج إلى معاينة بحثية أو حد يومي للتشغيل. تكفي خطة Pro أو Max؛ ويمنحك claude setup-token بيانات اعتماد يستطيع المشغّل استخدامها، فلا تحتاج إلى مفتاح API أيضاً. إنه أرخص مدخل للعمل بلا مراقبة.

يشير ذلك إلى القاعدة تحت الصفوف الأربعة: ليس السؤال «هل هي Routine؟»، بل «على حاسوب من يجري العمل؟» يتوقف جهازك عند إغلاقه، أما خوادم Anthropic ومشغلات GitHub فلا تتوقف لأنها لم تكن جهازك أصلاً. ولهذا تحتاج تلك الصفوف إلى رمز بينما لم يحتج /loop إليه: يعرف جهازك هويتك بالفعل، أما الحاسوب المستأجر فلا يعرفها. الحاجة إلى بيانات اعتماد والقدرة على الصمود بعد إغلاق الغطاء حقيقتان لجانب واحد.

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

اقرع الجرس بنفسك

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

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

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

وهذا يفسر الرمز أيضاً. يعرف جهازك هويتك، أما الجهاز المستأجر فلا يعرفها. تدفع كل حلقة بلا مراقبة هذا الثمن.

توقع أمراً كلفنا ساعةً: علامة النجاح الخضراء لا تعني أن المهمة أدت غرضها. قد يؤدي فقد إعداد واحد إلى نجاح التشغيل وتنفيذ المراجعة من دون نشر شيء إطلاقاً. يذكر README للمشروع الإعداد والعَرَض. يستخدم المشروع Claude Code GitHub Action بدلاً من Routine: جرس الباب نفسه، من دون معاينة أو حد يومي.

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

ثبّت وكيل GitHub مرةً واحدة باستخدام opencode github install، فيضيف الملف .github/workflows/opencode.yml. بعد ذلك يستجيب OpenCode لأحداث المستودع، مثل pull_request وissues وتعليقات /oc أو /opencode، ويعمل داخل مشغلات GitHub Actions:

name: opencode-review
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
jobs:
review:
runs-on: ubuntu-latest
permissions: { contents: read, pull-requests: read }
steps:
- uses: actions/checkout@v6
with: { persist-credentials: false }
- uses: anomalyco/opencode/github@latest
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
model: anthropic/claude-sonnet-5
use_github_token: true
prompt: |
Review this pull request for bugs, quality issues, and security risks.

يراجع OpenCode طلب الدمج افتراضياً عند وقوع حدث pull_request بلا تعليمة.

بعبارة بسيطة

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

اختبر نفسك

تريد حلقةً تستمر في إصلاح اختبار فاشل حتى ينجح، ثم تتوقف من تلقاء نفسها. أي نبض تستخدم، ومن يقرر «انتهى»؟

اعرض الإجابة

استخدم التشغيل حتى الإنجاز: /goal في Claude Code، أو حلقة shell محدودة في OpenCode. يقرر أمر، أي مشغّل الاختبار، أن العمل انتهى؛ ولا يقرر ذلك أبداً الوكيل الذي كتب الإصلاح. وتظل الحلقة بحاجة إلى سقف حتى لا تعيد المحاولة إلى الأبد.

اختر أخف حلقة تناسب المهمة

تعرف الآن أنواع النبض الأربعة، فلا تستخدم أكبرها تلقائياً. تحدد الحلقة بخيارين: ما الذي يبدأها، وما الذي يوقفها. لذلك اسأل عن المهمة: هل تنتهي أم تتكرر؟

  • تنتهي المهمة ويستطيع أمر إثبات النهاية ← حلقة شرطية. ابدأ الآن ودعها تعمل حتى الإنجاز.
  • تتكرر المهمة ← جدول أو حدث.
  • تقع المهمة مرة واحدة ← لا حلقة أصلاً. الجلسة العادية، دوراً بعد دور، هي الأداة الصحيحة لمعظم العمل.

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

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


تدريب: اختر نبضاً ثم ابنِ واحداً

تعرف الآن أنواع النبض الأربعة. أثبت أولاً أنك تستطيع اختيار النوع الصحيح، ثم ابدأ واحداً.

الخطوة الأولى: اختر. سمّ النبض المناسب لكل مهمة؛ إحداها فخ.

  1. في كل جمعة، اكتب ملخصاً لطلبات الدمج التي دُمجت خلال الأسبوع.
  2. واصل إصلاح هذا البناء الفاشل حتى يصبح أخضر، ثم توقف.
  3. يفتح شخص طلب دمج فينبغي أن تتم مراجعته.
  4. تعمل عملية ترحيل 40 دقيقة وتريد معرفة لحظة انتهائها.
  5. أعد تسمية متغير واحد في المستودع.
اعرض الإجابات
  1. مجدول. يتكرر وفق الساعة ولا يحتاج إلى حضور أحد. استخدم Routine أو سطر cron، كما في المفهوم 6.
  2. شرطي، أو تشغيل حتى الإنجاز. له نهاية ويستطيع أمر إثباتها. استخدم /goal أو حلقة shell ذات سقف، كما في المفهوم 5.
  3. مدفوع بحدث. إجراء خارجي يبدأه، وقد لا يعمل مرة واحدة في يوم هادئ.
  4. داخل الجلسة. ما زلت تراقب ويمكنه التوقف عند إغلاق الجلسة. استخدم /loop أو حلقة while مع sleep، كما في المفهوم 4.
  5. لا حلقة إطلاقاً. تحدث المهمة مرة واحدة، فالجلسة العادية هي الأداة الصحيحة.

الخطوة الثانية: ابنِ واحداً. لا تنفذ الأنواع الأربعة الآن؛ اثنان جاهزان واثنان يحتاجان إلى أجزاء لم تقرأها بعد.

النبضالمفهومابنِه فيهل هو جاهز الآن؟
داخل الجلسة4المشروع 1، حلقة مراقبةنعم
شرطي5المشروع 2، اجعل الاختبارات تنجح ثم توقفنعم
مجدول6المشروع 3، موجز الصباح مع ذاكرةبعد الجزء 4؛ فهو يحتاج إلى العمود الفقري
مدفوع بحدث7المشروع 6، حلقة جرس الباببعد الجزء 3؛ فهو يحتاج إلى موصلات

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

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


الجزء 3: الجسم

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

8. العزل: أشجار العمل

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

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

لا يوجد خيار واحد. تستخدم أشجار عمل git نفسها وتوجّه كل تشغيل إلى واحدة منها. العزل نفسه لكن بصورته الصريحة:

git worktree add ../wt-feature-a feature-a
git worktree add ../wt-feature-b feature-b
( cd ../wt-feature-a && opencode run "implement feature A" ) &
( cd ../wt-feature-b && opencode run "implement feature B" ) &
wait

يمكن لمشغلات مجتمعية، أي مديري أشجار عمل مبنيين حول OpenCode، تولي التنظيم إذا كنت تفعل ذلك كثيراً.

9. المعرفة: مهارات تمنع أي تشغيل من أن يكون «اليوم الأول»

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

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

المهارة تُبقي تعليمات الحلقة صغيرة

بدلاً من لصق جدار من التعليمات في جدول لن يحدثه أحد، تصبح تعليمة الجدولة سطراً واحداً: «شغّل مهارة daily-triage». وتحمل المهارة التفاصيل. هكذا تحصل على تعليمة قصيرة، ومنطق سهل التحديث، وتكلفة رموز أقل في كل نبضة.

10. الفعل: الموصلات تجعل الحلقة تتصرف ولا تكتفي بالاقتراح

الحلقة التي لا تستطيع إلا قراءة ملفاتك لا تستطيع إلا الكلام. تتيح لها الموصلات المبنية على MCP أن تفعل: تفتح طلب دمج، وتحدّث تذكرة Linear، وتنشر في Slack، وتستعلم من قاعدة بيانات، وتستدعي API في بيئة التجهيز. هذا هو الفرق بين حلقة تقول «إليك الإصلاح» وحلقة تفتح طلب الدمج وتربط التذكرة وتنشر في القناة بعد نجاح CI.

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

أضف خوادم MCP إلى إعداداتك، وضمّنها في قائمة موصلات Routine حتى تستطيع التشغيلات غير المراقبة الوصول إليها. الموصلات نفسها التي تستخدمها يدوياً متاحة للتشغيلات المجدولة والسحابية.

صرّح بالخوادم داخل قسم mcp من opencode.json. تبدأ الخوادم المحلية عمليةً فرعية، وتصل البعيدة إلى نقطة HTTPS مع OAuth تلقائي. في opencode run المجدول، شغّل opencode serve مرةً واحدة واستخدم --attach حتى لا تدفع تكلفة بدء MCP في كل نبضة.

ثلاثة أمور يحتاجها الموصل لأنه يعمل داخل حلقة

تعيد الحلقة المحاولة وتختار الأدوات بلا مراقبة، وهذا يغيّر شكل مجموعة الأدوات الجيدة:

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

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

11. الصانع والمدقق: الوكلاء الفرعيون

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

عرّف الوكلاء الفرعيين داخل .claude/agents/، واجمعهم في فرق: يستكشف أحدهم، وينفذ آخر، ويتحقق ثالث وفق المواصفة والاختبارات. «المواصفة» هي التي تعلّمت كتابتها في التطوير المدفوع بالمواصفات؛ معايير قبولها هي ما يقيّمه المدقق الموثوق. مواصفة غامضة تعطي حكماً غامضاً. وهذا ما يفعله /goal داخلياً أيضاً: يقرر نموذج جديد هل انتهت الحلقة بدلاً من أن يقيّم العامل نفسه.

يأتي OpenCode بوكلاء أساسيين مدمجين، هما Build وPlan، ووكيل فرعي عام مدمج باسم general، إضافةً إلى explore وscout خلف خيار تجريبي في الإصدارات الحالية. ويمكنك تعريف وكلائك في opencode.json أو ملفات Markdown داخل مجلد الوكلاء. امنح المدقق نموذجاً خاصاً، أرخص غالباً ومخصصاً للقراءة فقط، واجعل الصانع يستدعيه بإشارة @ أو أداة Task. تقسيم شائع: نموذج قوي يستكشف وينفذ، ونموذج مركز يدقق.

إعدادان مهمان خصوصا داخل الحلقة: حد steps لكل وكيل، كما في المفهوم 5، وقواعد permission.task التي تمنع الوكيل الفرعي من بدء مزيد من الوكلاء الفرعيين. من دون هذين الحدين قد يفوض الوكلاء العمل في دوائر ويستهلكون رموزا لا حاجة إليها.

---
mode: subagent
model: anthropic/claude-haiku-4-5-20251001
description: Reviews a diff against the spec and tests. Replies PASS or FAIL with reasons.
---

You are a strict code reviewer. You do not make changes.
Check the diff against the spec and the test results, then reply PASS or FAIL with the reasons.
تكلف الوكلاء الفرعيون أكثر، فاستخدمهم حيث تهم النتيجة

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

11ب. تدوين الجسم: سير العمل الديناميكي

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

اطلب سير عمل بكلمات عادية، مثل «استخدم سير عمل من أجل...»، أو شغله بالكلمة ultracode، إذ ألغيت كلمة التشغيل الأقدم workflow في منتصف 2026 ولا يزال وصف ما تريد يعمل، أو نفذ /deep-research المضمن. حين يعطي تشغيل ما تريد، اضغط s في عرض /workflows لحفظ السكربت كأمر /command تعيد تشغيله في كل فرع. يبقي حدان الأمر منضبطا: يوجد سقف للوكلاء، نحو 16 في آن واحد و1000 لكل تشغيل، حتى لا ينفلت السكربت؛ وتعيش ذاكرة التشغيل داخل ذلك التشغيل وحده. يمكنك استئنافه داخل الجلسة نفسها، لكن جلسة جديدة تبدأ من الصفر.

لا يوجد أمر /workflows. السكربت الذي تكتبه هو سير العمل: حلقة for المحدودة من المفهوم 5، والتوزيع عبر & وwait من المفهوم 8، هما نسخة يدوية من الفكرة نفسها. يحمل shell الخطة، ويمثل كل opencode run وكيلاً، وتكون رموز الخروج هي المدقق. تحصل على تحكم كامل ومن دون سقف للوكلاء، مقابل كتابة التنسيق وصيانته بنفسك.

سير العمل هو جسم نبضة واحدة، لا الحلقة

هذا أسهل خطأ حين تبدأ سير العمل في الظهور قوية. يعمل سير العمل الديناميكي مرةً واحدة حين تبدأه أنت أو إعداد ultracode، وينسى كل شيء عند انتهائه. ليس له نبض ولا عمود فقري؛ لذلك فهو جسم نبضة واحدة، لا حلقة. الحلقة هي التركيب: يشغّل نبض، مثل Routine أو /loop أو cron، النبضة؛ ويكون سير العمل هو الجسم؛ ويكون ملف تقدم يكتبه الوكلاء هو العمود الفقري الذي يقرؤه التشغيل التالي. سير العمل هو المحرك، وRoutine تدير المفتاح، وprogress.md هو الوقود الذي يبقى بين الرحلات.

اختبر نفسك

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

اعرض الإجابة

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


فاصلة: دوّن المدقق بمهارات التحقق

دونت الفاصلة السابقة جسم النبضة، وهذه تدون المدقق. في يوليو 2026 نشر فريق Claude Code لدى Anthropic إرشاداته الخاصة بهذا الأمر تحديداً، ويسميه حلقة تحقق: يفحص الوكيل عمله ويحاول إصلاحه مراراً حتى ينجح الفحص. وقد عرفت هذه الحلقة من قبل باسم الكتاب نفسه؛ فهي دورة «حاول ← افحص ← أصلح ← كرر» في دورة البرمجة الوكيلة، التي يسميها Boris Cherny أهم نصيحة منفردة لاستخدام الأداة.

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

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

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

الحاوية هي مهارة. أنت تعرفها بالفعل من المفهوم 9: ملف SKILL.md يحمّله الوكيل عندما تطابق المهمة. تستخدم مهارة التحقق الحاوية نفسها، لكنها تحمل فحصاً بدلاً من إجراء. وتلائم المهارة الكاملة شاشةً واحدة:

# .claude/skills/verify-log-hygiene/SKILL.md  (or .opencode/skills/…)
---
name: verify-log-hygiene
description: Check that error logs include the request ID and never
include the request body. Use when the diff touches error handling
or logging.
allowed-tools: [Read, Edit, Grep]
---

Read the error-handling paths in the current diff.

For each log call on an error path, confirm it includes the request ID
and does not pass the request body, headers, or any user-supplied
payload.

Report each violation with file:line, then fix it: add the request ID
where it's missing and strip the payload from the log call.

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

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

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

  1. مستقل. تستدعيه عمداً بعد وجود العمل. وبمفردات هذه الدورة، ما زلت أنت النبض. هذا هو الموضع المناسب للفحوص التي تنطبق على أنواع كثيرة من العمل لا على كل تغيير: فحص أمان قبل الإيداع، أو مسح رؤوس التراخيص، أو تدقيق إتاحة قبل طلب الدمج. والكلفة أن كل استدعاء دور يجب أن تتذكر تنفيذه.
  2. مضمّن. يُلحق الفحص بنهاية مهارة الإنتاج، فيشغله سير العمل من دون طلب. أبسط نسخة سطر واحد مضاف: «بعد إنشاء المكوّن، شغّل eslint عليه وعالج أي أخطاء قبل إعلان الاكتمال». أثبت أن التضمين ينطلق فعلاً باستدعاء المهارة في مهمة جديدة والتأكد من أن الفحص يعمل ضمن المخرجات. وإن لم يعمل، فالتعليمات السابقة في المهارة لا تحمّله. وهناك حد صارم: لا يعمل التضمين إلا في المهارات التي تستطيع تعديلها. فالمهارات المدمجة والمهارات التي تديرها الإضافات تُستبدل عند التحديث، فيختفي الفحص الملحق بصمت. سلسله بدلاً من ذلك في هذه الحالات.
  3. متسلسل. تستدعي مهارة أخرى عند انتهائها، فتعمل عدة عمليات تسليم متحققة من البداية إلى النهاية. يستخدم فريق Claude Code نفسه هذا يومياً: يبحث /code-review عن الأخطاء، وينظف /simplify الفرق، ويتحقق /verify من السلوك من البداية إلى النهاية، وتفحص مهارة /design مخصصة تغييرات الواجهة مقابل ملف DESIGN.md. والسلسلة هي أيضاً طريقة إضافة التحقق إلى مهارة لا تستطيع تعديلها: اكتب مهارة تغليف رقيقة تستدعي الأصل ثم تستدعي فحصك. والعبارة الجديرة بالتذكر هي: ما بدأ عادةً، «أجري الفحص دائماً بعدها»، يصبح عقداً، أي إن المهارة تشغّل الفحص دائماً عند انتهائها. لكن المقايضة حقيقية؛ فالسلسلة تتنازل عن المرونة، إذ لا يعود سهلاً تشغيل خطوة واحدة منفردة، وكل وصلة مضافة تكلف رموزاً في كل تشغيل، كما في المفهوم 13. تجاوزها عندما تكون الخطوات مستقلة إلى حد يجعلك تريد إحداها وحدها أحياناً.
  4. على كل طلب دمج. بعد ثبات السلسلة على تغييراتك، تعمل المهارات نفسها في كل طلب دمج عبر نبض الحدث الذي بنيته في المفهوم 7، أي «جرس الباب»، مع جعل فحصك هو تعليمته. تمر تغييرات زميلك الآن بالبوابات نفسها التي مرت بها تغييراتك، سواء تذكر استدعاء شيء أم لا. هنا يتوقف التحقق عن كونه بنية شخصية ويصبح بنية للفريق: الفحص الذي كتبته لتوفر على نفسك دقيقتين أسبوعياً يوفر الآن دقيقتين على الجميع، في كل تغيير.

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

  • ابدأ بما يأتي مع الأداة. تبني مهارة /verify المدمجة التغييرات وتشغّلها وتراقبها في تطبيقك. جرّبها قبل كتابة مهارتك. وهناك عادة صغيرة لملف CLAUDE.md من الإرشاد نفسه: اكتب أوامر البناء والاختبار الدقيقة في ملف القواعد كي لا يضطر أي تشغيل إلى تخمينها. أنت تعرف السبب من المفهوم 12: الأمر الذي يخمّنه الوكيل تخمين تكرره الحلقة إلى الأبد، أما الأمر المكتوب فحقيقة تقرؤها.
  • دع الوكيل يقابلك. أسرع طريقة لكتابة مهارة تحقق هي مكوّن skill-creator الإضافي: /skill-creator Create a skill for verifying frontend changes end-to-end. Interview me about my workflow. يسأل وأنت تجيب ثم يظهر الملف. وتعمل الكتابة اليدوية داخل .claude/skills/ بالطريقة نفسها الواردة في المفهوم 9.
  • الموضع الرابع المُدار. يقدم Code Review، ضمن المعاينة البحثية، الموضع الرابع بوصفه منتجاً: خدمة متعددة الوكلاء ومدارة تشغّل مراجعة آلية على طلبات الدمج في المستودعات التي تفعّلها. تصلح نتيجة ثم تدفعها، أو ترد بالتعليق @claude على النتيجة إذا كان GitHub Action من المفهوم 7 معداً. إنها بنية سلسلتك اليدوية نفسها، لكن Anthropic تستضيف النبض والمراجعين.

لا شيء جديدا لتثبته، وهذه هي الفكرة. يعمل ملف SKILL.md أعلاه من دون تغيير داخل .opencode/skills/، وتقابل المواضع الأربعة الأجزاء التي بنيتها بالفعل:

  • المستقل: opencode run "run the verify-log-hygiene skill on the current diff".
  • المضمّن: أضف سطر الفحص إلى مهارة الإنتاج التي تملكها.
  • المتسلسل: اجعل سكربت المفهوم 5 يطلق كل مهارة بعد نجاح السابقة، بحيث تحدد حالة خروج كل مهارة هل يبدأ opencode run التالي. يحتفظ shell بالعقد.
  • على كل طلب دمج: استخدم GitHub Action من المفهوم 7 واجعل الفحص تعليمتها. والمراجعة الافتراضية التي لا تحتاج إلى تعليمة هي فكرة /code-review في Anthropic مبنية بأجزاء OpenCode، أما توجيهها إلى مهارة تحققك فيجعلها تطبق معاييرك لا معايير عامة.
بعبارة بسيطة

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

أين تتابع الدورات المجاورة

تُرك موضوعان للدورتين المجاورتين عمداً. الإنفاذ، أي جعل الفحص عاجزاً عن فعل شيء غير التحقق على مستوى كل أمر، هو موضوع دورة هندسة الحاضنة. يضيّق allowed-tools صندوق الأدوات، لكن الأقفال الحقيقية في تلك الدورة. أما التقييم، عندما يكون الفحص معياراً لا إثباتاً وكيف تحدد مقدار الثقة في درجة النموذج، فهو موضوع دورة الثقة بالمدقق.

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

اختبر نفسك

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

اعرض الإجابة

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


الجزء 4: العمود الفقري

12. حالة تبقى بين التشغيلات

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

شاهد ملف الحفظ في 40 ثانية

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

هذه اللعبة هي المفهوم نفسه تماماً. ينسى الوكيل كل شيء بين التشغيلات، لذلك يحتفظ بملف حفظ على القرص، وهذا الملف هو العمود الفقري. وإعادة الظهور عند نقطة الحفظ بدلاً من البداية هي وظيفة ملف التقدم (progress.md): يسجل ما أُنجز وما بقي مفتوحاً، فيتابع التشغيل التالي بدلاً من البدء من الصفر. أما ملاحظة «أشواك أمامك» التي حفظها فهي ملف القواعد (CLAUDE.md / AGENTS.md): درس تعلّمه مرةً واحدة كي لا يكرر الخطأ نفسه. لهذا يهم المفتاح. مع الملفات تبني الحلقة فوق كل تشغيل؛ ومن دونها تظل غريبةً عند خط البداية إلى الأبد. يقرأ كل تشغيل هذه الملفات أولاً ويحدّثها أخيراً، لأن المستودع يتذكر ما لا يستطيع النموذج تذكره.

تعمل طبقتان من الحالة معاً:

  • ملف القواعد (CLAUDE.md / AGENTS.md): العادات الثابتة التي تقرؤها الحلقة في كل تشغيل. أبقه قصيراً؛ فقد عرفت السبب في الدورة السابقة. تدفع تكلفة ملف القواعد المتضخم في كل نبضة.
  • ملف تقدم: ملف Markdown عادي، أو لوحة Linear عبر MCP، يسجل ما جُرّب وما نجح وما لا يزال مفتوحاً. هذا هو العمود الفقري الحقيقي. يفتحه تشغيل الغد في التاسعة صباحاً ويتابع حيث توقف تشغيل اليوم.

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

مذكرات المتدرب

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

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

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

<!-- progress.md — the loop's memory between runs -->

## Done

- 2026-06-22: fixed flaky test in test/auth (retry on token refresh)

## In progress

- Dependency audit: 3 of 7 advisories patched; lodash bump blocked by an API change

## Open / needs a human

- CVE-2026-xxxx in image lib — the fix changes the output format, escalating to a maintainer
العمود الفقري هو سجلّك أيضاً

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

شاهد حلقةً تنسى ثم تتذكر: مراقبة الأوراق البحثية

يصعب تصديق العمود الفقري حتى ترى حلقةً تنسى. لذلك بُني مشروع Paper Watch ليجعل ذلك مرئياً. يعرض كل يوم أحدث الأوراق البحثية في موضوع تختاره، لكن فقط ما لم تره من قبل. لا تثبيت ولا مفتاح؛ يجلبها Claude من arXiv بنفسه.

استنسخه، وافتح المجلد في وكيلك، واطلب:

show me what's new on arXiv about "LLM agents"

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

rm progress.md
show me what's new on arXiv about "LLM agents"

تعود كل الأوراق بوصفها «جديدة». جعلت الحلقة تنسى كل شيء بأمر واحد: لا عمود فقري، لا حلقة. ولتحويلها إلى مراقبة حقيقية أعطها نبضاً يومياً: /schedule every weekday at 9am, run the paper-watch skill and show me what's new. يتحدث arXiv مرةً يومياً تقريباً، لذلك تناسبه الوتيرة اليومية.

قارنها بمراقبة السماء في المفهوم 6. كلاهما Routine يومية، لكن مراقبة السماء تعيد طباعة كويكبات اليوم ولا تحتاج إلى ذاكرة، بينما يعرض Paper Watch ما هو جديد فقط ولا يعمل من دون العمود الفقري. النبض نفسه وحاجتان متعاكستان للذاكرة؛ وهذا هو تحديداً متى تحتاج الحلقة إلى عمود فقري.

اتفقت الصناعة على الملفات

خلفية اختيارية يمكنك تجاوزها في القراءة الأولى.

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

  1. جاء ملف القواعد (CLAUDE.md) أولاً: ملف Markdown يُحقن في بداية كل جلسة. نجح أكثر من المتوقع، لكنه يتضخم، وتدفع تكلفة تضخمه في كل تشغيل.
  2. جاءت بعده أدوات ذاكرة داخل الجلسة: يقرر الوكيل متى يقرأ الذكريات ويكتبها أثناء المهمة. نجحت الاستقلالية، لكن الأدوات كانت شديدة الفرض لرأيها.
  3. حلّت المهارات مشكلة النمو: لا يقرأ الوكيل سوى الوصف القصير لكل مهارة، ولا يحمل جسمها إلا عند الحاجة.
  4. أفضل ممارسة حالية هي الأبسط: مثّل الذاكرة كنظام ملفات عادي. ملفات Markdown داخل مجلدات، يبحث فيها الوكيل بأدوات يعرفها مثل grep وأوامر shell بدلاً من API خاص للذاكرة. دع المخزن يكبر وحافظ على قابليته للبحث.

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

الحلقة التي تحسّن الحلقة

تفصيل تقني اختياري يمكنك تجاوزه في القراءة الأولى.

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

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

يصف LangChain أربع حلقات متراكبة: دورة أدوات الوكيل، وحلقة تحقق، وحلقة مدفوعة بحدث، ثم حلقة التحسين فوقها. ويسمي swyx ممارسة تكديس الحلقات loopcraft. الثلاث الأولى هي الحلقة الداخلية، والصانع والمدقق، والنبض في هذه الدورة بأسماء أخرى. وصول الصناعة مراراً إلى البنية نفسها دليل قوي على أن البنية، لا الأداة، هي المهارة.

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

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

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

الحلم: حلقة التحسين بوصفها منتجاً، وبوصفها شيئاً تبنيه

تفصيل تقني اختياري يمكنك تجاوزه في القراءة الأولى.

توجد حلقة تسلق التل السابقة الآن كميزة مُدارة. يسميها فريق الذكاء الاصطناعي التطبيقي في Anthropic في حديث مؤتمر عام 2026 الحلم. يلائم الاسم عمليةً تعمل بينما ترتاح الوكلاء العاملة وتنظف ما تعلمته.

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

الحلم هو الإجابة خارج المسار. إنه حلقة منفصلة لها نبضها وميزانية رموزها. تعمل النبضة هكذا:

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

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

حلقة الحلم ذات الأجزاء الستة موجهةً إلى الذاكرة. تكتب الحلقات العاملة سجلات يومية، ويقرأها الحلم أسبوعياً، ويعثر على الإخفاقات المتكررة، ويقترح الإصلاح في طلب دمج لا يدمجه سواك. في اليسار ثلاث حلقات يومية: فرز صباحي في التاسعة أيام العمل، ومراجع عند كل طلب دمج، وصائغ سجل تغييرات ليلي، وكلها تكتب إلى العمود الأوسط؛ وتقول بطاقة ذهبية متقطعة إن تشغيلات الغد تبدأ أذكى لأنها تقرأ القواعد المحسنة في كل نبضة. وفي الوسط المستودع والعمود الفقري: progress.md وسجلات مؤرخة لكل نبضة، وdreaming-state.md بتاريخ آخر دفعة راجعتها، وبطاقة ذهبية تضم CLAUDE.md أو AGENTS.md والمهارات التي تقرؤها التشغيلات المقبلة، وهي أعلى الكتابات أثراً ولا تتغير إلا عبر البوابة. في اليمين حلقة الحلم ذات نبض أسبوعي وخمس خطوات: 1 قراءة كل سجل جديد منذ التاريخ المحفوظ، 2 بحث وكلاء التحليل عن تكرار الإخفاق نفسه، 3 الاحتفاظ بالأنماط ذات الأدلة لأن خطأً واحداً ضوضاء وثلاثة أخطاء درس مفقود، مع اقتراح الحذف أيضاً، 4 صياغة الإصلاح في طلب دمج على فرع claude مع الأدلة لا كتعديل مباشر، 5 البوابة البشرية حيث تدمج أو تغلق ولا تتغير القواعد بلا شخص. يصل سهم «قراءة» السجلات بالخطوة 1، ويعيد سهم ذهبي بعنوان «الدرس المدمج الذي يقرأه كل تشغيل لاحق» قرار البوابة إلى ملف القواعد، ثم يعيد سهم القواعد إلى الحلقات العاملة فيغلق الدائرة. الخلاصة: تعيد هذه الحلقة كتابة القواعد التي توجه كل الحلقات الأخرى، ولذلك ينبغي أن تكون آخر حلقة تعمل بلا بوابة.

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

تحقق من أدواتك أولاً لأن نسخةً من الفكرة أصبحت متاحة. يملك Claude Code ميزة معاينة بحثية اسمها Auto Dream. أثناء عملك يكتب Claude Code ملاحظاته عن المشروع. ومع الجلسات تتراكم نسخ مكررة وحقائق قديمة تناقض الأحدث، فينظف Auto Dream هذه الذاكرة بين الجلسات: يدمج المكرر ويحذف ما أثبت العمل الأحدث خطأه، ولا يستطيع الكتابة إلا إلى ملفات الذاكرة لا الكود. افحص وجوده عبر /memory وابحث عن مفتاح Auto-dream. ولتشغيله يدوياً قل «ادمج ملفات ذاكرتي». يوفر OpenClaw نظام /dreaming اختيارياً مشابهاً، وتوجد بدائل مجتمعية لمستخدمي OpenCode. هذه طبقة ميكانيكية، فراجع التوثيق المباشر.

انتبه قبل الاعتماد عليه: يثق المنظف بالدليل الأحدث، وقد يعيد كتابة ملاحظة كتبتها بيدك أو يحذفها. لذلك ضع القاعدة التي لا تريد أن يمسها شيء في CLAUDE.md الذي تتحكم به أنت وحدك. الملاحظات المُدارة تلقائياً دفتر Claude، أما CLAUDE.md فدفترك.

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

  1. النبض أسبوعي لا يومي. يبحث الحلم عن أنماط عبر التشغيلات، فيحتاج إلى دفعة منها. تناسبه Routine سحابية أسبوعية أو جدول cron أو GitHub Actions أسبوعي. اليومي متكرر أكثر من اللازم ولا يرى أنماطاً، كما يضاعف التكلفة بلا فائدة.
  2. المدخل سجلات تستطيع الحلقة قراءتها. يجب أن تترك حلقات العمل أثراً: إدخالاً مؤرخاً لكل نبضة في progress.md وسجلات تشغيل محفوظة في المستودع. يوفر OpenCode السجل الكامل عبر opencode run --format json وopencode export، وفي Claude Code اجعل كل Routine تلحق نتيجتها بملف سجل تودعه. لا سجلات، لا مادة للحلم.
  3. الجسم منسق ووكلاء تحليل فرعيون. يقرأ توجيه الحلم دفعة السجلات منذ تشغيله الأخير. وللدفعات الكبيرة يوزع حصصاً على وكلاء، يسأل كل واحد منهم: ما الذي فشل، وهل تكرر الإخفاق؟ خطأ واحد ضوضاء، والخطأ نفسه ثلاث مرات درس مفقود.
  4. الصانع والمدقق مرتين. يقترح المحللون، ولا يحتفظ المنسق إلا بالأنماط ذات الأدلة. ثم يأتي المدقق الحقيقي: لا تعدّل الحلقة ملف القواعد أو المهارة مباشرةً. تصوغ التغيير على فرع claude/ وتفتح طلب دمج يذكر أي تشغيلات أظهرت النمط وكم مرة ولماذا يمنعه السطر المقترح.
  5. البوابة البشرية: تدمج أو تغلق. التغيير في CLAUDE.md أو مهارة هو أعلى كتابة أثراً، لأن كل تشغيل مستقبلي لكل حلقة يقرؤه. هنا بالضبط توضع البوابة: قرار مكلف وصعب العكس، فيحسمه إنسان.
  6. عمود فقري خاص بحلقة الحلم. ملف حالة صغير مثل dreaming-state.md يسجل تاريخ آخر دفعة راجعتها، كي تقرأ في الأسبوع التالي السجلات الجديدة فقط ولا تعيد تحليل التاريخ كله.

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

طريقتان قد تخطئ بهما حلقة الحلم

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

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

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

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

توفر Anthropic النسخة المُدارة ضمن أدوات ذاكرة Managed Agents. وكالمعتاد، هذه هي الطبقة الميكانيكية، فراجع توثيق المنصة. أما الطبقة الدائمة فهي البنية التي بنيتها بنفسك أعلاه.

اختبر نفسك

أين ينبغي أن تحتفظ الحلقة بما أنجزته حتى الآن، ولماذا لا تحتفظ به في المحادثة؟

اعرض الإجابة

على القرص، في ملف تقدم مع ملف القواعد، أو في لوحة مثل Linear. تُمسح ذاكرة النموذج بين التشغيلات، لذلك يعيش كل ما يجب أن يبقى خارج النموذج. يتذكر المستودع؛ ولا يتذكر النموذج.

الجزء 5: حلقة كاملة بطريقتين

قائمة التحقق الدنيا لحلقة آمنة

قبل أن تسمح لأي حلقة بالعمل وحدها، يجب أن تتضمن هذه العناصر السبعة. وتحتوي الحلقة التي ستبنيها الآن عليها جميعاً:

  • شرط نجاح: الطريقة التي تعرف بها أن العمل انتهى، كما في المفهوم 5.
  • سقف: حد أقصى للمحاولات أو الدقائق أو الإنفاق، حتى لا تعمل إلى الأبد، كما في المفهوم 13.
  • فرع أو شجرة عمل معزولة: حتى لا يتصادم العمل المتوازي، كما في المفهوم 8.
  • مدقق للقراءة فقط: وكيل منفصل يقيّم العمل ولا يستطيع تعديله، كما في المفهوم 11.
  • ملف حالة: العمود الفقري الذي يتيح لها التذكر بين التشغيلات، كما في المفهوم 12.
  • بوابة بشرية: يذهب العمل الخطر أو الفاشل إلى شخص، ولا يصل مباشرةً إلى main، كما في الجزء 5.
  • سجل أو إشعار: حتى يظهر إخفاق الليل ولا يبقى صامتاً، كما في الجزء 6.

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

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

بنية الحلقة، وهي نفسها في الأداتين:

  1. النبض: كل يوم عمل في الساعة 9 صباحاً.
  2. المهارة: تحفظ مهارة daily-triage الخطوات، فتظل التعليمة سطراً واحداً.
  3. العمود الفقري: اقرأ progress.md في البداية وحدّثه في النهاية.
  4. شجرة العمل: يُصاغ كل إصلاح في نسخة عمل مستقلة.
  5. الصانع والمدقق: يصوغ منفّذ الإصلاح، ويقول مراجع منفصل PASS أو FAIL.
  6. الموصل: افتح طلب دمج عند PASS؛ أما عند FAIL أو مع أي شيء خطر، فاكتبه ضمن «يحتاج إلى إنسان» وتوقف.

نبضة واحدة من حلقة الفرز الصباحية في مخطط مرقم. شارة ذهبية في الأعلى: كل يوم عمل الساعة 9. الخطوة 1 اقرأ progress.md، العمود الفقري. الخطوة 2 اعثر على العمل، بحد أقصى 5 عناصر: إخفاقات CI الليلية، والمسائل المفتوحة، وتنبيهات التدقيق الجديدة. الخطوة 3 صغ إصلاحاً في شجرة عمل مستقلة، الصانع. الخطوة 4 يقيّمه مراجع منفصل، المدقق. ثم يتفرع الحكم: PASS وخطر منخفض إلى 5a، افتح طلب دمج يراجعه إنسان، البوابة؛ FAIL أو خطر إلى 5b، اكتب في «يحتاج إلى إنسان» داخل progress.md، بلا طلب دمج، ويقرر شخص لاحقاً. يجتمع الفرعان في 6: حدّث progress.md ليقرأه الغد. يعيد سهم ذهبي متقطع من 6 إلى 1 الدورة للمرشح التالي ولغد الساعة 9. التذييل: تستيقظ على طلبي دمج وقرار واحد معلّم؛ لم تكتب شيئاً.

المهارة المشتركة

يعمل هذا الملف الواحد في الأداتين. احفظه باسم .claude/skills/daily-triage/SKILL.md في Claude Code أو .opencode/skills/daily-triage/SKILL.md في OpenCode.

---
name: daily-triage
description: >-
Runs the morning maintenance pass. Reads the progress file, gathers overnight
CI failures, open issues, and new audit advisories, drafts safe fixes (each
one checked by a separate reviewer agent), opens pull requests for what passes,
and writes anything risky to the progress file for a human. Use this for the
scheduled morning maintenance loop.
---

# Daily triage

You are the morning maintenance loop. Work through these steps in order.
Do not skip the progress file. It is your only memory between runs.

## 1. Read your memory first

- Open `progress.md`. Read the "In progress" and "Open / needs a human" sections.
- Do not redo anything already listed under "Done".

## 2. Find the work

Gather candidates in this order, and stop once you have at most 5:

1. CI runs that failed since the last entry in `progress.md`.
2. Open issues labelled `bug` or `maintenance`.
3. New advisories from `npm audit` (or this project's audit command).

## 3. Work each candidate

- Create an isolated checkout: a git worktree, or a fresh branch named
`claude/<short-slug>`.
- Draft the smallest fix that solves the one problem. Do not bundle changes.
- Send the diff to the reviewer agent. Wait for its verdict before going on.

## 4. Decide from the verdict

- PASS, and the change is low risk (no public API change, no data migration,
no file deletion): open a pull request. Title it `fix: <one short line>` and
link the issue.
- FAIL, or the change touches anything risky: do NOT open a pull request. Add a
short entry to the "Open / needs a human" section of `progress.md`. Say what
you tried and why you stopped.

## 5. Update your memory last

- Move finished items to "Done" with today's date.
- Save `progress.md`. This is the file tomorrow's run will read.

## Rules

- Never open more than 5 pull requests in one run.
- Never change `main` directly. Only `claude/*` branches.
- When in doubt, escalate. A flagged item a human checks is always safer than a
wrong fix shipped while no one was watching.

المراجع، أي المدقق

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

Claude Code: احفظ الملف باسم .claude/agents/reviewer.md:

---
name: reviewer
description: Reviews a diff against the spec and the test results. Replies PASS or FAIL with reasons. Makes no changes.
tools: Read, Bash
model: claude-haiku-4-5-20251001
---

You are a strict, read-only code reviewer. You never edit files.

1. Run the tests and the linter. Read the output yourself. Do not trust a claim
that they pass.
2. Check the change against the project conventions in `CLAUDE.md` and the
relevant spec.
3. Look for bugs, missing edge cases, security risks, and any change to public
behaviour.

Then reply with exactly one of:

- `PASS` — followed by one line saying what you verified.
- `FAIL` — followed by the specific reasons, one per line.

A change that only "looks fine" is not a PASS. The tests must actually pass, and
the change must do only what was asked.

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

OpenCode: احفظ الملف باسم .opencode/agents/reviewer.md:

---
mode: subagent
model: anthropic/claude-haiku-4-5-20251001
description: Reviews a diff against the spec and tests. Replies PASS or FAIL with reasons. Read-only.
permission:
edit: deny
bash:
"*": deny
"npm test*": allow
"npm run lint*": allow
"git diff*": allow
---

You are a strict, read-only code reviewer. You never edit files.

1. Run the tests and the linter. Read the output yourself. Do not trust a claim
that they pass.
2. Check the change against the project conventions in `AGENTS.md` and the
relevant spec.
3. Look for bugs, missing edge cases, security risks, and any change to public
behaviour.

Reply with exactly one of:

- PASS — followed by one line saying what you verified.
- FAIL — followed by the specific reasons, one per line.

A change that only "looks fine" is not a PASS. The tests must actually pass, and
the change must do only what was asked.

توصيل النبض

أنشئ Routine في claude.ai/code/routines بجدول للساعة 9 صباحاً في أيام العمل، ومستودعك، وموصلي GitHub وSlack. وجّه تعليمته إلى المهارة حتى يبقى تعريف Routine صغيراً:

Run the daily-triage skill.
Start by reading progress.md; finish by updating it.
For each fix: draft it in an isolated worktree, have the reviewer subagent grade it,
open a PR only on PASS, and append anything risky to the "needs a human" section.

تحمل المهارة الخطوات، ويمثل .claude/agents/reviewer.md المدقق، ويمنع isolation: worktree اختلاط الإصلاحات المتوازية، ويفتح موصل GitHub طلبات الدمج. ولأنها Routine سحابية، تعمل في التاسعة صباحا سواء كان حاسوبك مفتوحا أم لا، ضمن حد التشغيل اليومي لخطتك. ويشرح ملحق Routines إعداد البيئة ونطاق الموصلات ولوحة الأسرار حقلا بحقل.

ابنها كسير عمل في GitHub Actions حتى تعمل في السحابة من دون إبقاء أي جهاز لديك مستيقظاً. يكون Action هو النبض، وopencode run هو العامل، ويحفظ مستودعك المهارة والوكلاء وprogress.md.

name: morning-maintenance
on:
schedule:
- cron: "0 9 * * 1-5"
jobs:
triage:
runs-on: ubuntu-latest
permissions: { contents: write, pull-requests: write, issues: write }
steps:
- uses: actions/checkout@v6
with: { persist-credentials: false }
- uses: anomalyco/opencode/github@latest
env: { ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} }
with:
model: anthropic/claude-sonnet-5 # confirm with `opencode models`
prompt: |
Run the daily-triage skill.
Read progress.md first; update it last.
For each candidate fix: draft it on a new branch, then invoke the
@reviewer subagent to grade it. Open a PR only when the reviewer
replies PASS. Append anything risky to the "needs a human" section
of progress.md and leave it for the maintainer.

يمثل وكيل reviewer، الذي يعمل بنموذج أرخص وللقراءة فقط، المدقق. وتؤدي الفروع الجديدة وظيفة عزل شجرة العمل داخل CI، ويفتح تطبيق OpenCode في GitHub طلبات الدمج. هل تريده على جهازك بدلاً من GitHub؟ تعمل التعليمة نفسها تماماً من سطر cron يستدعي opencode run؛ لا يتغير إلا النبض.

كيف يبدو صباح حقيقي واحد

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

[09:00] daily-triage fires
→ reads progress.md: 1 item still "in progress" (lodash bump), nothing new flagged
→ finds: 2 CI failures overnight, 1 new npm-audit advisory
→ CI failure #1 (flaky auth test):
drafts fix on branch claude/fix-auth-retry
reviewer → PASS (tests green; retries on token refresh; no API change)
→ opens PR #142, links the issue
→ CI failure #2 (type error in report.ts):
drafts fix on branch claude/fix-report-types
reviewer → PASS → opens PR #143
→ advisory (image library):
the safe fix changes the output format
reviewer → FAIL (public behaviour change)
→ writes it to "Open / needs a human" in progress.md, opens no PR
→ updates progress.md, exits
[you, 09:30] two PRs to review, one flagged item to decide on. You typed nothing.
شاهد الحلقة كاملةً في نحو 40 ثانية

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

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

اختبر نفسك

في حلقة الفرز الصباحية، ما الذي يمنع دمج إصلاح خاطئ وأنت نائم؟

اعرض الإجابة

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


الجزء 6: البقاء مهندسا

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

كيف تتموضع حلقتك داخل ثلاث

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

تلك حلقة واحدة. وهي الأسرع. تدور في دقائق. لكنها لا تعمل وحدها. إنها أصغر ثلاث حلقات، والحلقتان الأخريان من مسؤوليتك أنت.

أسهل طريقة لرؤيتهما مثال. لنفترض أنك تطلب من وكيل أن يبني لعبة كتابة صغيرة لطفل.

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

ثلاث حلقات بثلاث سرعات، مرسومة كثلاثة صناديق متداخلة. في الداخل 1 حلقة البرمجة، دقائق: يكتب الوكيل ويختبر ويصلح وحده حتى يطابق العمل المواصفة؛ يشغلها الوكيل منفرداً، وهي الحلقة التي علمتك الدورة بناءها. حولها 2 حلقة التغذية الراجعة، ساعات: تجرب أنت الناتج وتقرر ما يتغير وتحدث المواصفة؛ تشغلها أنت. حولهما 3 الحلقة الخارجية، أيام: يستخدمه أناس حقيقيون، وما يفعلونه يكشف ما ينبغي إصلاحه تالياً؛ يشغلها العالم. على الحدين شارتان: «المواصفة والتقييمات تحملان قراراتك إلى الداخل» بين الحلقتين 1 و2، و«التغذية الراجعة الخارجية تعود إليك» بين 2 و3. التذييل: لا يستطيع الوكيل تشغيل الحلقات الثلاث لأنك تعرف ما لا يعرفه؛ وهذه هي أفضلية السياق لديك بحسب Andrew Ng. تشغل الآلة الحلقة السريعة، وتحتفظ أنت بقرار ما الذي يُبنى ومن يتحمل مسؤوليته.

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

كلمتان يجب معرفتهما. المواصفة هي وصفك المكتوب لما تريد بناءه. والتقييمات مجموعة صغيرة من الاختبارات تفحص هل أصاب الوكيل. وهما معاً تقعان بين الحلقتين الأوليين وتحملان قراراتك إلى الكود.

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

وهذا هو الدرس نفسه الذي تختم به هذه الدورة. تشغّل الآلة الحلقة السريعة. وتمسك أنت بالشيئين اللذين لا تستطيع الآلة أن تمسك بهما أبداً: ماذا تبني، ومن يتحمل المسؤولية عنه.

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

13. تكلفة الرموز هي الحد الحقيقي، لا اختصار لوحة المفاتيح

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

  • ضع سقفاً لكل حلقة: حد أقصى للمحاولات أو الدقائق أو الإنفاق، دائماً، كما في المفهوم 5.
  • طابق النموذج مع المهمة: استخدم نموذجا قويا للتخطيط والتدقيق، ورخيصا لتنفيذ العمل. هذا أكبر توفير منفرد، وقد تعلمته في الدورة السابقة. وفي Claude Code طابق مستوى الجهد مع النبضة أيضا عبر /effort أو CLAUDE_CODE_EFFORT_LEVEL للتشغيلات بلا واجهة. يكفي الافتراضي للفرز الروتيني؛ أما المستويات الأعلى فللنبضات التي تحتاج فعلا إلى استدلال عميق. ودفع أقصى جهد في كل إطلاق لحلقة مجدولة كالاستعانة بنموذج متقدم في عمل ميكانيكي.
  • أبقِ تعليمة الحلقة وملف القواعد قصيرين: تدفع تكلفتهما في كل نبضة. انقل التفاصيل إلى مهارات لا تُحمّل إلا عند استخدامها.
  • شغّلها بوتيرة أقل: يكفي غالباً تشغيلها مرةً كل ساعة بدلاً من كل خمس دقائق، وتكون التكلفة أقل بنحو 12 مرة.

تصور سريع للأرقام، وهو مثال توضيحي. لنفترض أن نبضة واحدة، تشمل الصانع والمدقق، تقرأ نحو 40 ألف رمز وتكتب نحو 6 آلاف. عند سعر Sonnet القياسي البالغ 3 دولارات لكل مليون رمز دخل و15 دولارا لكل مليون رمز خرج، تكلف النبضة نحو 0.20 دولار. وخمس نبضات يوميا في شهر عمل من 20 يوما تكلف نحو 20 دولارا.

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

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

الحلقة نفسها بثلاث وتائر في مخطط أعمدة بمقياس خطي حتى يظهر الفرق. تستخدم الأعمدة كلها السعر نفسه للنبضة، نحو 0.21 دولار، ولا يتغير إلا عدد مرات التشغيل. خمس نبضات يومياً في أيام العمل، أي نحو 100 شهرياً، عمود يكاد لا يُرى وتكلفته نحو 20 دولاراً شهرياً. التشغيل كل ساعة ليلاً ونهاراً، أي نحو 720 نبضة شهرياً، عمود صغير وتكلفته نحو 150 دولاراً. التشغيل كل 5 دقائق ليلاً ونهاراً، أي نحو 8,600 نبضة شهرياً، عمود يعلو الاثنين وتكلفته نحو 1,800 دولار؛ أكثر من 100 ضعف عدد النبضات بلا قيمة إضافية. التذييل: تأتي التكلفة من عدد مرات تشغيل الحلقة، لا من الأمر الذي استخدمته.

النموذج رافعة ثانية للتكلفة في طريق OpenCode. يفترض المثال أعلاه نموذجا من فئة Sonnet بالسعر القياسي. تستخدم أوامر حلقات Claude Code نماذج Claude، بينما يتيح لك OpenCode اختيار نموذج آخر. ويمكن لنموذج أقل سعرا أن يخفض تكلفة كل نبضة كثيرا.

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

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

قد تكلف حلقة بلا حد للإنفاق كثيراً

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

العمود الفقري الجيد رافعة للتكلفة أيضاً

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

14. لا يزال التحقق من العمل مسؤوليتك

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

عندما تشغّل حلقات كثيرة

تفصيل تقني اختياري يمكنك تجاوزه في القراءة الأولى.

تتحول ثلاثة أمور تعلّمتها لحلقة واحدة إلى مشكلات مؤسسية لحظة امتلاك حلقات كثيرة.

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

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

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

عندما تشترك حلقات كثيرة في ذاكرة واحدة

تفصيل تقني اختياري يمكنك تجاوزه في القراءة الأولى.

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

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

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

الإنسان داخل الحلقة أو عليها أو خارجها: أسماء المجال للبوابة

تقول هذه الدورة «البوابة البشرية»، بينما يستخدم العالم الأوسع، بما فيه أبحاث سلامة الذكاء الاصطناعي وقانون الاتحاد الأوروبي للذكاء الاصطناعي وفرق الامتثال في البنوك ومشتريات المؤسسات، ثلاثة مصطلحات أقدم للفكرة نفسها. تعلّمها مرة واحدة؛ فسيستخدمها مشترٍ أو جهة تنظيمية، وهي تطابق تماماً ما بنيته بالفعل.

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

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

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

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

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

بعبارة بسيطة

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

اختبر نفسك

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

اعرض الإجابة

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

15. لا تتوقف عن فهم مشروعك

كلما أسرعت الحلقة في شحن كود لم تكتبه، اتسعت الفجوة بين ما يوجد في مشروعك وما تفهمه أنت فعلاً. هذه الفجوة تكلفة حقيقية، وتوسّعها الحلقة السلسة بصمت. العلاج والفخ هما الفعل نفسه. يبقيك تصميم الحلقة مشاركاً حين تفعله بعناية، ويسمح لك بالتوقف عن التفكير حين تفعله لتجنب العمل. الفعل واحد والنتيجة معاكسة، ولا تستطيع الحلقة معرفة الفرق؛ أما أنت فتستطيع.

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

يقف هذان الشخصان تحت القوة نفسها، ولهذه القوة اسم. يسميها Eric So من MIT Sloan جاذبية AI: السحب المستمر لترك AI يأخذ مزيداً ومزيداً من تفكيرك. الحلقة هي هذا السحب بنبض قلب؛ فهي تعمل وأنت نائم، لذلك تكبر الفجوة بين ما يُشحن وما تفهمه حتى وأنت لا تلمس شيئاً. إذا تُركت الجاذبية وحدها، فإنها تضغط الطرفين اللذين تقول هذه الدورة إنهما يخصانك: القصد يخفّ من شرط دقيق قابل للتحقق إلى «فقط اجعله يعمل»، والمساءلة تخفّ من قراءة الفروق إلى الثقة بعلامات النجاح الخضراء. تستمر الحلقة في العمل في الحالتين. لا تستطيع معرفة هل ما زلت أنت المهندس. العادة الأسبوعية التي تجيب عن سؤال المفهوم 15 — اقرأ ما شُحن، وتحقق أن فهمك لحق به — هي الطريقة التي تثبت بها وزنك في وجه السحب.

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

عندما تفشل حلقة وأنت نائم

تفشل الحلقة غير المراقبة من دون مراقبة أيضاً. قبل أن تثق بها طوال الليل، اجعلها قابلةً للملاحظة:

  • أرسل المخرجات إلى مكان ستراه: ملف سجل، أو رسالة في Slack أو Discord عبر Channels في Claude Code، أو صندوق فرز. لا ترسلها إلى طرفية أغلقتها بالفعل.
  • اكتب سطراً في كل تشغيل، حتى عند الفشل: تضيف كل نبضة ملاحظةً مؤرخة إلى progress.md أو إلى سجل، توضح ما حاولته وما نجح وما تعطل. الفشل الصامت هو أسوأ الأنواع.
  • اجعل التشغيلات قابلة للإعادة: تمنحك أوامر opencode run --format json وopencode export <id> وopencode session list في OpenCode السجل الكامل. وفي Claude Code تحتفظ Routine بتاريخ التشغيلات داخل واجهة الويب، وتظهر جلسات الخلفية إلى جانب التفاعلية في --resume.
  • اجعل بلوغ السقف صاخباً: حين تبلغ الحلقة سقفها أو تواجه خطأً، يجب أن تترك ملاحظةً واضحة «يحتاج إلى إنسان»، لا أن تتوقف فحسب.
  • أثبت الحلقة قبل استخدامها طوال الليل: نمِّ الحلقة على محورين معاً. في وتيرة التشغيل، شغّلها كل ساعة وتحت المراقبة لبضعة أيام قبل السماح لها بالعمل ليلاً دون مراقبة. وفي القدرة، ابدأ بالتقرير فقط، أي إن الحلقة تصف المشكلات ولا تصلح شيئاً، ثم اسمح بالإصلاحات خلف البوابة البشرية، وبعد ذلك فقط اسمح بالفعل بلا مراقبة. تستحق الحلقة كل مستوى حين تثبت صحتها في المستوى الأدنى. وحين يبدو شيء خاطئاً، اقرأ العمود الفقري أولاً؛ فهو يخبرك بما فعله آخر تشغيل ناجح.

لا يمكنك الوثوق بحلقة لا تستطيع تنقيحها.


بعد الحلقات: هندسة الرسوم البيانية

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

يحصل هذا السؤال على دورة كاملة خاصة به بعد خطوتين في هذه السلسلة: هندسة الرسوم البيانية، بعد هندسة الحزام. تغطي الدورة نصفي العبارة: رسوم الذاكرة التي تشترك فيها حلقاتك، أي الرسم البياني الموجه غير الدوري للإيداعات ورسم المعرفة للحقائق، بالاستفادة من autoresearch لدى Karpathy وKnowledge Graph Cookbook لدى Anthropic؛ ورسم الحوكمة الذي يبقي حلقات كثيرة صادقة، بالاستفادة من إخفاقات Carlos E. Perez الأربعة للحلقة المنفردة، ومنها سبب خطأ الشعار. احتفظ الآن بالصياغة الصادقة فقط، لأن كل ما عداها يفترضها: الرسم البياني هو حلقات مؤلّفة معاً. احذف الحلقات فتبقى صناديق فارغة. وكل شرط توقف ومدقق وعمود فقري وبوابة بنيتها هنا هو ما تفترضه هندسة الرسوم أنك تعرف بناءه. ابنِ حلقتك الأولى كما علّمتك هذه الدورة تماماً، وحين تبني الثانية تكون دورة الرسوم البيانية في انتظارك.

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


استخدام هذه الحلقات في الكتاب نفسه

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

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

الحلقة 1: حلقة التغذية الراجعة، وتبقي الكتاب صحيحاً. صندوق الملاحظات أسفل كل درس، بما فيه هذا الدرس، هو بابها الأمامي.

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

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

  • النبض: جدول GitHub Actions مرةً يومياً. عامله OpenCode لا Claude Code، أي الأداة الأخرى التي تعلّمها الدورة.
  • العمود الفقري: ملف حالة صغير يتذكر آخر تغيير كتب عنه، فلا يكرر إدخالاً ولا يفوّت واحداً.
  • نبضة واحدة: تفحص كل ما تغير في الكتاب منذ المرة السابقة، وتقرر ما يهم القارئ فعلاً، وتكتب جملة واضحة لكل تغيير، وتفحص روابطها كي لا ينكسر أي منها، ثم تنشر.
  • البوابة البشرية: لا موافقة قبل النشر.

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

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

لقد رأيت الآن حلقة مكتملة من الخارج، تعمل في الإنتاج. وفي المشروعات أدناه تبني حلقتك الأولى.


🚀 المشاريع

قراءة الحلقات ليست كبناء واحدة. إليك ثمانية مشاريع من السهل إلى الصعب. نفذها في أي من الأداتين؛ فبنية الحلقة واحدة. استخدم الأمر الموافق للمفهوم: /loop و/goal في Claude Code، أو opencode run مع مؤقت shell في OpenCode.

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

  • استخدم مستودع git يمكنك التخلص منه. تعدّل الحلقة الملفات بنفسها، فلا توجّه حلقاتك الأولى إلى عمل يهمك.
  • ضع سقفاً أولاً. حد أقصى للمحاولات أو الدقائق أو الإنفاق، قبل أن تسمح لأي شيء بالعمل وحده، كما في المفهوم 13.
Project 115-30 دقيقةحلقة مراقبةاجعل حلقة تراقب مهمة طويلة وتخبرك لحظة انتهائها.

الصعوبة: سهل · يستخدم: المفهوم 4، الحلقة داخل الجلسة.

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

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

Project 230-45 دقيقةاجعل الاختبارات تنجح ثم توقفكرّر حتى يقرر أمر، لا الوكيل، أن العمل انتهى.

الصعوبة: سهل إلى متوسط · يستخدم: المفهوم 5، التشغيل حتى الإنجاز، والمفهوم 11، الصانع والمدقق.

ما ستبنيه. ضع اختبارين أو ثلاثة اختبارات صغيرة فاشلة في مستودعك. ابنِ حلقةً تواصل العمل حتى تنجح الاختبارات، لكن دع أمراً، أي مشغّل الاختبار، يقرر اكتمال العمل بدلاً من الوكيل. ضع سقفاً من 6 محاولات مثلاً.

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

Project 345-60 دقيقةموجز الصباح بذاكرةحلقة مجدولة يبني تشغيلها الثاني بوضوح على الأول.

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

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

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

Project 41-2 ساعةحلقة إصلاح بمدقق حقيقييصوغ منفّذ، ويقيّم مراجع منفصل، ولا يفتح طلب دمج إلا PASS.

الصعوبة: متوسط إلى صعب · يستخدم: المفهوم 8، شجرة العمل، والمفهوم 9، المهارة، والمفهوم 11، الصانع والمدقق.

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

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

Project 51-1.5 ساعةدون الجسمحول تنسيق المشروع 4 إلى وحدة واحدة قابلة لإعادة التشغيل، ثم أثبت أنها ليست حلقة.

الصعوبة: متوسط إلى صعب · يستخدم: الفقرة البينية عن سير العمل الديناميكي، والمفهومين 8 و11.

ما ستبنيه. خذ حلقة الإصلاح التي بنيتها في المشروع 4 ودون جسمها. في نهج Claude Code، صفها بكلمات عادية: «استخدم سير عمل لصياغة إصلاحات لهذه المسائل الثلاث في أشجار عمل متوازية، واجعل مراجعا يقدر كل إصلاح». دع بيئة التشغيل تكتب النص البرمجي وتشغله. عندما ينفذ تشغيل ما تريد، احفظه من شاشة /workflows في صورة /command. وفي نهج OpenCode، اكتب الشيء نفسه كنص shell: حلقة for على المرشحين، و& مع wait للتفرع المتوازي، ورمز خروج المراجع بوصفه المدقق. شغله مرتين.

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

Project 645-60 دقيقةحلقة جرس البابحلقة تستجيب لطلب دمج من دون كتابة أي تعليمة.

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

ما ستبنيه. اجعل مستودعك المؤقت يراجع طلبات الدمج الخاصة به. في نهج OpenCode، شغل opencode github install واقبل سير العمل الذي ينشئه. وفي نهج Claude Code، أنشئ Routine بمشغل طلب دمج من GitHub، إذ يشرح الملحق المرشحات. ثم افتح طلب دمج يحتوي خطأ مزروعا، مثل خطأ إزاحة بمقدار واحد أو حذف فحص قيمة فارغة، وانتظر.

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

Project 745-60 دقيقةعطله عمداخرب حلقتك ثم شخص العطل من العمود الفقري وحده.

الصعوبة: متوسط · يستخدم: قابلية المراقبة، والمفهوم 13 عن التكلفة، والمفهوم 14.

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

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

Project 82-4 ساعاتحلقتك اليومية الخاصةالحلقة الكاملة ذات الأجزاء الستة لمهمة حقيقية، تعمل بلا مراقبة أسبوعا، وهي المشروع التتويجي.

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

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

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


الملحق: Routines من البداية إلى النهاية

مرجع متقدم، غير مطلوب في قراءتك الأولى

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

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

Routine هي إعداد Claude Code محفوظ: تعليمة ومستودع واحد أو أكثر وبيئة سحابية وموصلات، تُحزم مرة ثم تعمل تلقائياً على خوادم Anthropic. أنت تصمم الحلقة، والمنصة توفر المجدول والجهاز والتوصيلات.

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

السلوك الافتراضيالخطرالإصلاح
خيار "Local" في نافذة Routine الجديدةتبني مهمة سطح مكتب ظناً أنها RoutineRemote سحابية، وLocal مهمة سطح مكتب مجدولة (A1)
كل الموصلات مضمّنة والكتابة مسموحةيستطيع الوكيل غير المراقب العمل في كل أداة ربطتهااحذف كل موصل لا تحتاجه المهمة (A2)
.env متجاهل من git فلا يصل إلى النسخة السحابيةلا تجد Routine بيانات الاعتمادضع الأسرار في لوحة متغيرات البيئة واذكر ذلك في التعليمة (A4)
نسخة وبيئة جديدتان في كل تشغيلتكرر الحلقة خطوتها الأولى إلى الأبدملف سياق أو تقدم ملتزم، أو لوحة خارجية (A4)
الحد الأدنى للجدول ساعةيفترض التصميم انطلاقاً كل 15 دقيقةمشغّل API مع مجدولك للتواتر الأعلى (A3)
رمز API يظهر مرة ولا توجد إزالة تكرارتفقد الرمز، أو تنشأ تشغيلات مكررةخزّنه فوراً واجعل التعليمة آمنة عند التكرار (A3)
لأحداث GitHub سقف ساعي ويُسقط الفائضتفوّت الحلقة أحداثاً بلا إنذارتشغيل مصالحة ليلي بمشغّل مجدول (A3)
matches regex يختبر الحقل كلهلا تطابق hotfix عنواناً أطولاستخدم .*hotfix.* أو contains (A3)
تعمل التشغيلات بهويتك من دون موافقة وسطيةتُشحن أفعال خارجية باسمك بلا مراجعةبوابة Routine مزدوجة: مسودة، ثم موافقة بشرية، ثم منفّذ يطلقه API (A4)
الحالة الخضراء تعني عدم وجود خطأ بنية تحتيةتبدو المهمة الفاشلة ناجحةاقرأ سجل التشغيل كل مرة (A5)

A1. الجلسة المحلية ليست Routine سحابية

يمنحك زر New routine في تطبيق سطح المكتب خيارين، Remote وLocal، وقد أربكت تسميتهما كثيراً من الشروح المنشورة على الإنترنت. ينشئ Remote روتيناً سحابياً، وهو موضوع هذا الملحق. أما Local فينشئ مهمة مجدولة على سطح المكتب، وهي ميزة مختلفة تعمل على جهازك وتتعامل مع ملفاتك الحقيقية، بما فيها التغييرات غير المحفوظة، ولا تعمل إلا ما دام الجهاز قيد التشغيل. القاعدة هي نفسها الواردة في المفهوم 6: إذا احتجت إلى الملفات المحلية، فاستخدم مهمة سطح المكتب. وإذا احتجت إلى ضمان العمل والحاسوب مغلق، أو إلى الموصلات، أو إلى مشغلات API وGitHub، فاستخدم روتيناً سحابياً. ومن الجيد أن تثبت صلاحية التعليمة أولاً في مهمة سطح مكتب أو تشغيل لمرة واحدة، ثم تنقلها إلى روتين سحابي مجدول بعد أن يستقر سلوكها.

A2. نموذج الإنشاء، حقلاً بحقل

تشريح تشغيل Routine واحد في ثلاث مراحل مسماة. المرحلة 1، تبقى: الإعداد المحفوظ، ويضم تعليمة مكتفية بذاتها تشير إلى مهارة؛ ونموذجاً ملائماً للعمل وفق المفهوم 13؛ ومستودعات لا يُدفع منها افتراضياً إلا إلى فروع claude؛ وبيئة تشمل الشبكة والمتغيرات ونص الإعداد؛ وموصلات مضمّنة افتراضياً ينبغي حذف غير اللازم منها؛ ومشغلاً، جدولاً أو استدعاء API أو حدث GitHub. يطلق المشغّل المرحلة 2، مؤقتة، تشغيل واحد: جلسة سحابية جديدة بحد متقطع، تنسخ الفرع الافتراضي حديثاً، وتقرأ السياق الملتزم أولاً مثل progress.md وSKILL.md وclients.txt، وتنفذ التعليمة كاملة بلا طلبات أذونات ولا شخص تسأله، ولا تتذكر أي تشغيل سابق. يحذر صندوق أحمر: عند انتهاء التشغيل يختفي كل شيء، بما فيه شجرة العمل والتعديلات غير المدفوعة والملفات المؤقتة وحالة الأدوات والجلسة نفسها. يبدأ كل تشغيل من الصفر، تطبيقاً لقاعدة العمود الفقري في المفهوم 12. المرحلة 3، ما يبقى بعد التشغيل، ثلاثة مخارج فقط: 1 دفع إلى فرع claude يبقى في GitHub كفرع أو طلب دمج يراجعه إنسان، وهي البوابة البشرية؛ 2 فعل موصل مثل منشور Slack أو تذكرة أو مسودة بريد يعمل بهوية المستخدم؛ 3 سجل التشغيل في صفحة Routine، حيث لا تعني الحالة الخضراء نجاح المهمة. التذييل: لا يعمر بعد التشغيل إلا ما دُفع، وما سلّمه موصل، والسجل. تعيش الحالة في المستودع؛ النسخة الجديدة تحملها ولا تحتفظ بها.

أنشئ Routine في claude.ai/code/routines أو من تطبيق سطح المكتب عبر Routines ← New routine ← Remote أو بلغة عادية في واجهة سطر الأوامر عبر /schedule. تكتب الأبواب الثلاثة إلى الحساب نفسه، وتظهر Routine المنشأة من أي باب في البابين الآخرين. لا تنشئ واجهة سطر الأوامر إلا Routines المدفوعة بجدول؛ أما مشغلا API وGitHub فتضيفهما لاحقا من الويب. تدير الأوامر /schedule list و/schedule update و/schedule run ما لديك منها.

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

المستودعات. يستنسخ كل مستودع تضيفه من جديد عند كل تشغيل، بدءا من الفرع الافتراضي. ولا يسمح Claude افتراضيا إلا بالدفع إلى فروع تحمل البادئة claude/. يزيل مفتاح Allow unrestricted branch pushes تحت Permissions هذا القيد لكل مستودع. اترك الدفع غير المقيد مغلقا ما لم يكن لديك سبب محدد ومراجع. فدفع وكيل غير مراقب إلى main في تشغيل سيئ هو بالضبط ما وجدت البوابة البشرية لمنعه.

البيئة. تتحكم بيئة السحابة في الوصول إلى الشبكة ومتغيرات البيئة ونص إعداد تثبيت الاعتماديات، وتخزن نتيجة الإعداد كيلا يعاد في كل جلسة. تأتي البيئة الافتراضية بوصول شبكة Trusted، أي قائمة ثابتة من سجلات الحزم وواجهات مزودي السحابة وسجلات الحاويات ونطاقات التطوير الشائعة. يخفق أي نطاق آخر بالرمز 403 والسبب x-deny-reason: host_not_allowed. إذا احتاجت Routine إلى خدمتك، فاختر Custom واسمح بذلك النطاق وحده مع إبقاء القائمة الافتراضية. يوجد وصول Full، لكنه يمنح أكثر مما تحتاج إليه معظم الحلقات، لذا وسعه بحذر.

الموصلات. هذا افتراض يستحق التغيير كل مرة: تضم Routine افتراضيا كل موصلات claude.ai المرتبطة بحسابك، وتستطيع استخدام كل أدواتها بما فيها الكتابة من دون سؤال. احذف كل ما لا يحتاج إليه العمل قبل الحفظ. تمر حركة الموصلات عبر خوادم Anthropic، لذلك تعمل من دون تغيير قائمة الشبكة. أما خوادم MCP المحلية التي أضفتها عبر claude mcp add فتعيش على جهازك لا حسابك، فلا تراها Routine. أضفها كموصلات في claude.ai/customize/connectors، أو عرفها في ملف .mcp.json ملتزم كي تنتقل مع النسخة.

A3. المشغّلات الثلاثة

الجدول: الخيارات الجاهزة هي كل ساعة أو يوميا أو في أيام العمل أو أسبوعيا. تدخل الأوقات بمنطقتك الزمنية المحلية وتحول تلقائيا، وقد يبدأ التشغيل بعد رأس الساعة بدقائق بسبب توزيع الحمل، مع ثبات الإزاحة لكل Routine. الساعة هي الحد الأدنى، وترفض تعبيرات cron الأسرع. إن احتجت تواترا أعلى فاستخدم مشغل API ومجدولك الخاص. تضبط الفواصل المخصصة باختيار أقرب إعداد ثم تشغيل /schedule update مع تعبير cron. ويعمل جدول المرة الواحدة مرة في الوقت المحدد ثم يعطل نفسه، ولا تحتسب تشغيلاته من الحد اليومي، لذا فهو أرخص طريقة لتجربة التعليمة. تقبله واجهة سطر الأوامر بلغة عادية: /schedule tomorrow at 9am, summarize yesterday's merged PRs.

API: يمنح Routine نقطة /fire ورمز bearer يظهر مرة واحدة. يستطيع أي نظام إرسال POST موثّق لبدء تشغيل، مع حقل text اختياري للسياق الخاص بذلك التشغيل:

curl -X POST https://api.anthropic.com/v1/claude_code/routines/<routine-id>/fire \
-H "Authorization: Bearer <routine-token>" \
-H "anthropic-beta: experimental-cc-routine-2026-04-01" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{"text": "Sentry alert SEN-4521 fired in prod. Stack trace attached."}'

يتغير عنوان beta المؤرخ مع تطور المعاينة. يَعِد التوثيق باستمرار دعم النسختين السابقتين الأحدث زمناً كافياً للانتقال.

Webhook يعيد المحاولة هو نبض منفلت

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

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

أحداث GitHub: يبدأ حدث طلب دمج أو إصدار مطابق جلسة جديدة مستقلة. تحتاج إلى تثبيت Claude GitHub App في المستودع؛ يمنح /web-setup صلاحية الاستنساخ لكنه لا يثبت التطبيق، وهو فرق أربك محاولات كثيرة. تضيق المرشحات طلبات الدمج حسب الكاتب والعنوان والمتن والفرع الأساسي وفرع الرأس والوسوم وحالة المسودة والدمج، بعوامل مثل contains وis one of وmatches regex. وتذكر أن matches regex يختبر الحقل كله لا جزءا منه؛ لذلك لا يطابق hotfix سوى عنوان يساوي hotfix تماما. اكتب .*hotfix.* أو استخدم contains. وخلال المعاينة توجد حدود ساعية لكل Routine ولكل حساب، وتسقط الأحداث التي تتجاوزها ولا تصف، لذا يحتاج التصميم كثيف الأحداث إلى تشغيل مصالحة ليلي. كما يبدأ كل حدث مطابق جلسة منفصلة؛ فدفعتان إلى طلب دمج واحد جلستان لا تعرف إحداهما شيئا عن الأخرى، وهو درس العمود الفقري من المفهوم 12 في سياق GitHub.

A4. الأسرار والحالة والهوية

توضع الأسرار في لوحة متغيرات البيئة، لا في ملف .env. السبب ميكانيكي: يستبعد git ملف .env، والملفات المستبعدة لا تصل إلى GitHub، لذلك لا تحتويها النسخة السحابية. تبدأ Routine فلا تجد شيئا وتخفق، أو ترتجل ما هو أسوأ. ضع كل مفتاح في لوحة متغيرات البيئة وأضف إلى التعليمة سطرا واضحا: «بيانات الاعتماد متاحة كمتغيرات بيئة؛ لا تبحث عن ملف .env». ومن دونه قد يحاول Claude مسار .env بحكم العادة.

يبدأ كل تشغيل من الصفر. نسخة جديدة وبيئة جديدة، من دون شجرة عمل أو ملفات تعريف ارتباط أو مخلفات. يجب أن يغادر كل ما تحتاج Routine إلى تذكره الجهاز قبل نهاية التشغيل: بدفعه إلى المستودع، أو كتابته في نظام خارجي عبر موصل، أو إرساله عبر API إلى لوحة. هذه ليست عقبة تتحايل عليها، بل قاعدة العمود الفقري من المفهوم 12 مفروضة بالبنية التحتية. والنمط المطابق هو ملفات سياق في المستودع؛ إذ يستطيع كل تشغيل قراءة ملفات ملتزم بها مثل clients.txt وprogress.md وtriage-rules.md وتحديثها من دون تغيير التعليمة.

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

لا توجد موافقة في منتصف التشغيل. تنفذ Routine تعليمتها من البداية إلى النهاية ولا تستطيع التوقف لسؤالك. عندما يحتاج القرار فعلا إلى إنسان، مثل دفع أو بريد خارجي أو نشر، ضع البوابة بين Routine وأخرى لا داخل واحدة. تصوغ Routine A العمل وتنشره حيث تستطيع مراجعته، مثل فرع claude/ أو رسالة Slack أو مسودة بريد. يقرأه إنسان ويوافق. تطلق الموافقة Routine B عبر مشغل API، فتؤدي B الفعل. هذه هي بوابة الجزء 5 مكتوبة في صورة Routine مزدوجة وwebhook.

بوابة الموافقة ذات الحلقتين في ثلاث مراحل مرقمة. لا تستطيع Routine التوقف لتسألك، لذلك تقع البوابة بين Routine وأخرى لا داخل واحدة. 1 Routine A، الصائغة: تنطلق بجدول أو حدث GitHub وتصوغ العمل من دون شحنه. تكون المسودة فرع claude أو ملخص Slack أو مسودة بريد أو خطة نشر مقترحة، وتوضع حيث يستطيع شخص قراءتها. 2 يقرر إنسان: يقرأ المسودة ثم يوافق أو يرفض. عند الموافقة يطلق القرار 3 Routine B، المنفذة، عبر مشغل API بإرسال POST إلى نقطة fire؛ فتنفذ الفعل المراجع: إرسالاً أو دمجاً أو نشراً أو دفعاً. عند الرفض يبقى العمل مسودة ولا يُشحن شيء، ويُسجل في progress.md تحت «يحتاج إلى إنسان». التذييل: هذه بوابة الجزء 5 مكتوبة في صورة Routine مزدوجة وwebhook؛ تصوغ A، ويقرر شخص، ولا يطلق B إلا القرار.

A5. قراءة التشغيلات

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

بعبارة بسيطة: يعني اللون الأخضر أن المنصة أكملت الجلسة، ولا يثبت نجاح العمل المطلوب.

تستهلك التشغيلات من استخدام اشتراكك وتُحتسب أيضاً من حد Routines اليومي. بعد الحد، يُحاسب الاستخدام الإضافي بالقياس إن كنت قد فعّلته، ويظهر الاثنان في claude.ai/settings/usage. وإذا اختفى /schedule من واجهة سطر الأوامر، فالأسباب المعتادة هي تسجيل الدخول بمفتاح API أو مزود سحابي بدلاً من claude.ai، أو متغيرات بيئة تعطل telemetry، أو نسخة قديمة من CLI. تعمل واجهة الويب في كل الأحوال.

الملحق نفسه بطريق OpenCode

لكل صف أعلاه نظير في GitHub Actions، لأن طريق OpenCode حل هذه المشكلات منذ سنوات بأجزاء أوضح. لوحة متغيرات البيئة هي أسرار المستودع (secrets.ANTHROPIC_API_KEY). وقائمة الموصلات هي قسم mcp في ملف opencode.json ملتزم. ومشغّلا الجدول وطلبات الدمج هما on: schedule وon: pull_request. انعدام الحالة هو نفسه لأن مشغلات CI تبدأ جديدةً كل مرة، لذلك ينتقل نمط ملف السياق الملتزم من دون تغيير. تجيب GitHub App أو هوية bot عن سؤال الهوية بدلاً من حسابك الشخصي، وتوفر قواعد حماية الفروع الحاجز الذي تضبطه بنفسك. تختلف الأسماء والإعدادات، لكن المشكلات الأساسية واحدة. وهذه هي حجة الدورة المركزية.

A6. نسخة Routine من قائمة التحقق

تترجم قائمة التحقق الدنيا للحلقة الآمنة مباشرة.

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

قبل حفظ Routine سحابية

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

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

تدريب: ثلاثة تمارين على Routines

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

المشروع 12 في نهاية هذا القسم ليس تدريبا، بل مشروع تتويج ثان يبني على المشروع 3 أو 8 ويعمل أسبوعيا، لذا خطط لتشغيلاته على حدة.

Project 920-30 دقيقةتدرب على Routine مجاناأثبت التعليمة بتشغيلات لمرة واحدة قبل أن تلزمها بجدول متكرر.

الصعوبة: سهل · يستخدم: A1 وA3، الجداول لمرة واحدة، وA5، قراءة التشغيلات.

ما ستبنيه. أنشئ في مستودع مؤقت Routine تؤدي تعليمتها عملا صغيرا قابلا للفحص، مثل تلخيص إيداعات الأمس في فرع claude/summary. لا تضعها على جدول متكرر. أطلقها بتشغيل لمرة واحدة، باستخدام /schedule tomorrow at 9am, … أو Run now، واقرأ السجل الكامل لا عمود الحالة. ثم غير التعليمة بحيث لا بد أن تفشل المهمة، بأن تطلب قراءة ملف غير موجود، وأطلقها مرة أخرى.

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

Project 1030-45 دقيقةتدريب الأسراراخفق بطريقة ملف .env مرة واحدة عمدا، كيلا تقع فيها مصادفة أبدا.

الصعوبة: سهل إلى متوسط · يستخدم: A4، الأسرار، وA2، البيئة.

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

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

Project 111-2 ساعةابن بوابة الروتين المزدوجةتصوغ A، وتقرر أنت، ولا يطلق B إلا قرارك.

الصعوبة: متوسط إلى صعب · يستخدم: A3، مشغل API، وA4، البوابة، وA6، قائمة التحقق.

ما ستبنيه. تصوغ Routine A وفق جدول لمرة واحدة شيئا قابلا للمراجعة: فرع claude/ أو ملخصا قصيرا ينشر عبر موصل. وتملك Routine B مشغل API وتنفذ فعلا لاحقا صغيرا. احفظ رمز حامل B لحظة ظهوره لأنه يظهر مرة واحدة. راجع مسودة A بنفسك، ثم وافق عليها بإطلاق B عبر استدعاء curl الوارد في A3.

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

Project 122-3 ساعاتابن حلقة حلمحلقة أسبوعية تقرأ سجلات حلقاتك الأخرى وتقترح تغييرات القواعد في طلب دمج.

الصعوبة: مشروع تتويجي · يستخدم: المفهوم 12، العمود الفقري وحلقة التحسين، والمفهوم 11، الصانع والمدقق، والمفهوم 6، الجدول، والجزء 5، البوابة البشرية.

ما ستبنيه. تحتاج إلى حلقة عملت أسبوعا وتركت إدخالات مؤرخة في progress.md، كما يوفر المشروع 3 أو 8. ابن الآن حلقة ثانية فوقها. تقرأ وفق جدول أسبوعي كل إدخالات السجل منذ التاريخ المسجل في dreaming-state.md الخاص بها، وتبحث عن إخفاق أو تصحيح ظهر أكثر من مرة، وتصوغ أصغر تغيير في ملف القواعد أو المهارة يمنعه في صورة طلب دمج على فرع claude/، لا إيداع مباشر أبدا. يجب أن يستشهد وصف طلب الدمج بأدلته: أي تشغيلات، وكم مرة، ولماذا يمنع هذا السطر الإخفاق. واجعلها تقترح حذفا واحدا أيضا، أي قاعدة لم يحتج إليها أي تشغيل حديث. واختم بتحديث dreaming-state.md.

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


إلى أين تتجه بعد ذلك

  • هل تشغل أكثر من حلقة؟ ما إن تتبادل حلقتان العمل أو تتشاركا الحالة، تحتاج إلى التوصيلات والذاكرة المشتركة. تغطي هندسة الرسوم البيانية، التي تأتي بعد خطوتين في هذه السلسلة، كليهما.
  • هل تبني حلقات لأعمال غير برمجية؟ تعرض دورة Cowork وOpenWork المكثفة فكرة النبض نفسها للمهنيين، باستخدام مهام مجدولة بدلا من cron.
  • هل تشغل الحلقات من API بدلا من الطرفية؟ تدعم الوكلاء المدارون في منصة Claude الآن عمليات النشر المجدولة ضمن معاينة عامة: امنح الوكيل جدولا بنمط cron، فتبدأ كل نبضة جلسة جديدة على بنية Anthropic التحتية من دون أن تبني مجدولا أو تستضيفه. إنها فكرة Routines مقدمة كلبنة في المنصة، وتنطبق عليها البنية نفسها. الجدول هو النبض، وتعليمتك هي الضربة، وما زلت أنت من يوفر العمود الفقري.
  • هل تريد أن تدار حلقة التحسين نيابة عنك؟ تتضمن منصة الوكلاء المدارين نفسها أدوات للذاكرة والحلم، أي مسار التحسين خارج السياق الوارد في ملاحظة المفهوم 12 ولكن مقدما كمنتج. تبقى البنية كما هي: المهمة الدفعية هي النبض، ومخزن الذاكرة هو العمود الفقري، وخطوة الموافقة هي البوابة البشرية.
  • هل تريد أن يدار المدقق نيابة عنك أيضا؟ تحول معاينتان بحثيتان الفقرة البينية عن مهارات التحقق إلى منتجين. يجري Code Review مراجعة مدارة متعددة الوكلاء لكل طلب دمج في المستودعات التي تفعلها، أي الموضع الرابع مقدما كخدمة. أما Rubrics in Claude Managed Agents، وهي في مرحلة تجريبية، فتقدم معيار التقييم ذا الحد الأدنى من المفهوم 2 كلبنة في المنصة، حيث يتحقق وكيل تقدير منفصل من النتائج ويعيد العمل المخفق لمحاولة أخرى. تتناول دورة الثقة بالمدقق مقدار الثقة المناسب في تقدير النموذج.
  • هل تضبط إعادة المحاولة للتشغيلات بلا مراقبة؟ يوثّق مرجع الأخطاء في Claude Code إعدادات إعادة المحاولة التلقائية، ومنها CLAUDE_CODE_MAX_RETRIES ونمط CLAUDE_CODE_RETRY_WATCHDOG للجلسات بلا مراقبة على نمط CI.
  • هل تريد نقاط بداية قابلة للاستنساخ والتشغيل؟ يجمع مستودع المجتمع cobusgreyling/loop-engineering، المرخص بترخيص MIT، أنماط حلقات إنتاجية مثل الفرز اليومي ومراقبة طلبات الدمج وفحص CI وفحص الاعتماديات وصياغة سجل التغييرات في حزم بداية مزودة بقائمة جاهزية، ومقابلة عبر عدة واجهات سطر أوامر للوكلاء. إنه مشروع تابع لجهة خارجية وحديث العهد، لذا تحقق من استمرار صيانته. ومع ذلك، فإن جدول لبناته يعرض أجزاء هذه الدورة الستة بأسماء أخرى، ما يجعله شرحا ثانيا مفيدا. ولجمع مسار القراءة نفسه، تضم مجموعة المجتمع awesome-loop-engineering على Hugging Face المقالات الأساسية في مكان واحد.
  • المواصفة التي كتبتها في التطوير المدفوع بالمواصفات هي شرط توقف حلقتك. معايير قبولها هي ما يقيّمه المدقق وما يثبته /goal قبل التوقف. وحين تبدو الحلقة غير آمنة إذا تركت تعمل، يكون الحل في الغالب مواصفة أدق، لا مزيدا من الأتمتة.

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

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

أصل عبارة «هندسة الحلقات»

  • Addy Osmani، هندسة الحلقات: المقالة التي سمّت النمط وعرضت نموذج الأجزاء الخمسة مع العمود الفقري. https://addyosmani.com/blog/loop-engineering/
  • Avi Chawla، شرح واضح لهندسة الحلقات: تشريح الحلقة الداخلية، وطبقات الهندسة الأربع المتداخلة، من التعليمة إلى السياق ثم الحاضنة فالحلقة، وتأطير الحلقة المفرغة وقواعد تصميم الأدوات للحلقات. https://www.dailydoseofds.com/p/loop-engineering-clearly-explained/
  • Data Science Dojo، طبقات هندسة الذكاء الاصطناعي الأربع: تأطير نمط إخفاق واحد لكل طبقة، وسؤال الفحص الذاتي «أي طبقة ما زلت تنفذها يدويا؟» الذي أعيدت صياغته في ملاحظة المفهوم 1. https://www.facebook.com/share/p/1HCxfwo5aC/
  • Rakesh Gohel، كيفية استخدام Fable 5 فعليا، وهو رسم معلوماتي يوضح الفرق بين التعلم الذاتي والتحسين الذاتي، ويقابل بين تشديد التعليمة والبدء من جديد وبين التشغيل والتسجيل والاستخلاص والتكرار، كما أعيدت صياغته في ملاحظة المفهوم 12. https://rakeshgohel.substack.com
  • Sydney Runkle من LangChain، فن هندسة الحلقات: مكدس الحلقات الأربع، أي حلقة الوكيل والتحقق والتشغيل المدفوع بالأحداث وصعود التل، وحلقة التحسين المدفوعة بآثار التشغيل، مع الإشارة أيضا إلى تأطير swyx لمهارة تكديس الحلقات. https://www.langchain.com/blog/the-art-of-loop-engineering
  • Lamis من فريق الذكاء الاصطناعي التطبيقي في Anthropic، هندسة السياق: الذاكرة والحلم، وهي محاضرة في AI DevCon 2026: الفصل بين الذاكرة داخل السياق وخارجه، وعملية الدمج في الحلم، وضوابط الإنتاج لمخازن الذاكرة المشتركة المعاد عرضها في ملاحظة المفهوم 14، وتشبيه المدرسة وكبير المعلمين المعاد عرضه في ملاحظة المفهوم 12. https://www.youtube.com/watch?v=tQ41RxfZZVg
  • Letta، Charles Packer وSarah Wooders وآخرون، الحوسبة في وقت السكون، ورقتها ومدونتها المنشورتان في أبريل 2025: أقدم تطبيق منتجي لفكرة الحلم، حيث يعيد وكيل يعمل في الخلفية كتابة ذاكرة الوكيل الأساسي في أوقات الخمول انطلاقا من سلالة MemGPT. كما تورد قيد أن الدمج خارج وقت العمل لا يؤتي ثماره إلا عندما تشبه المهام المستقبلية المهام السابقة. https://www.letta.com/blog/sleep-time-compute/
  • Stanford وSambaNova وUC Berkeley، هندسة السياق الوكيلية (ACE): تسمي نمطي الإخفاق في إعادة كتابة الذاكرة مرارا، وهما انحياز الاختصار وانهيار السياق، وتعرض الحل المعاد صياغته في ملاحظة الحلم، وهو تحديثات الفروق التراكمية بدلا من إعادة الكتابة الكلية. https://arxiv.org/abs/2510.04618
  • OWASP، أهم عشرة مخاطر لتطبيقات الوكلاء في 2026: يعرف تسميم الذاكرة والسياق بوصفه تهديدا مستقلا لتطبيقات الوكلاء، حيث يبقى المحتوى المحقون في الذاكرة ويؤثر في السلوك بعد زوال الهجوم الأصلي. وهو أساس تحذير التسميم في ملاحظة الحلم.
  • Simon Willison، تصميم حلقات الوكلاء، سبتمبر 2025: أقدم تصريح واضح بأن المهارة هي تصميم الحلقة لا قيادة الوكيل، وقد سبق ظهور المصطلح. https://simonwillison.net/
  • TrueFoundry، هندسة الحلقات على مستوى المؤسسات: حساب تراكم الإخفاقات، وتأطير أجزاء الحلقة بوصفها أذونات دائمة، ومشكلة جرد الحلقات على مستوى الفريق. وهو مثال على تحليلات الحوكمة المشار إليها في ملاحظة المفهوم 14. https://www.truefoundry.com/blog/loop-engineering-enterprise-agent-runtime
  • The New Stack، «قائد Anthropic الذي بنى Claude Code يقول إنه ترك كتابة التعليمات، وأصبح يكتب الحلقات فقط». https://thenewstack.io/loop-engineering/
  • جاءت عبارة Boris Cherny «مهمتي هي كتابة الحلقات» من مقابلة مع CNBC نقلها Business Insider. وجاءت عبارة Peter Steinberger «صمم حلقات تكتب التعليمات إلى وكلائك» من منشوره على X.
  • Andrew Ng: حلقات تطوير المنتج الثلاث (البرمجة نحو دقائق، والتغذية الراجعة من المطوّر نحو ساعات، والتغذية الراجعة الخارجية نحو أيام)، وإعادة تأطير «الذوق» بوصفه ميزة الإنسان في السياق. من منشوره على X. https://x.com/AndrewYNg/status/2071988145667928442
  • Andrej Karpathy: عبارة «لا تخبره بما يفعل، بل امنحه معايير النجاح وراقبه ينطلق»، ومشروع AutoResearch، وهو وكيل يعدل نصا برمجيا للتدريب ويقيس النتيجة ويحتفظ بما ينجح، من دون تحرير بشري بين الجولات. من منشوراته على X.

Claude Code، التوثيق الرسمي

  • Routines، للأتمتة السحابية المجدولة والمشغلات وحدود التشغيل وإعلان الإطلاق الذي يتضمن الحدود اليومية لكل خطة: https://code.claude.com/docs/en/routines وhttps://claude.com/blog/introducing-routines-in-claude-code
  • Channels، لإدخال الأحداث إلى جلسة عاملة: https://code.claude.com/docs/en/channels
  • المهام المجدولة، وتشمل /loop وأدوات cron ومهام سطح المكتب وقاعدة نقل جلسات الخلفية: https://code.claude.com/docs/en/scheduled-tasks
  • سجل التغييرات، وهو أول موضع تستبدل فيه تفاصيل جلسات الخلفية ومراقب إعادة المحاولة وإعادة تسمية ultracode وسائر التفاصيل الميكانيكية في هذا الفصل: https://code.claude.com/docs/en/changelog
  • الذاكرة، وتشمل CLAUDE.md والذاكرة التلقائية ومسار الدمج وراء معاينة Auto Dream البحثية: https://code.claude.com/docs/en/memory
  • Delba de Oliveira من فريق Claude Code في Anthropic، بناء حلقات التحقق في Claude Code باستخدام المهارات، 22 يوليو 2026: مصدر الفقرة البينية عن مهارات التحقق، ويغطي الفحوص المحزمة كمهارات، ومواضع النشر الأربعة، وإشارات التدرج، ونمط المهارة المغلفة للمهارات التي لا تستطيع تعديلها، وسلسلة Anthropic الداخلية /code-review ثم /simplify ثم /verify ثم /design، والإشارات إلى /verify وCode Review وRubrics في Managed Agents. https://claude.com/blog/building-verification-loops-in-claude-code-with-skills
  • لا تزال Code Review وRubrics في Managed Agents ضمن معاينة بحثية أو مرحلة تجريبية وقت الكتابة. تحقق من التوثيق المباشر قبل الاعتماد على توفرهما أو سلوكهما.

OpenCode، التوثيق الرسمي

  • واجهة سطر الأوامر، وتشمل opencode run وserve و--attach: https://opencode.ai/docs/cli/
  • الوكلاء والوكلاء الفرعيون، بما في ذلك الوكلاء الأساسيون والوكلاء الفرعيون والنماذج المخصصة لكل وكيل: https://opencode.ai/docs/agents/
  • تكامل GitHub، ويشمل Action ومشغلات الجدولة وطلبات الدمج والمسائل والأمر opencode github install: https://opencode.ai/docs/github/

معرّفات النماذج

  • Anthropic، الجديد في Claude Sonnet 5: مصدر سلسلة النموذج claude-sonnet-5، والانتقال المباشر من Sonnet 4.6، وافتراض التفكير التكيفي، والمجزئ الجديد: https://platform.claude.com/docs/en/about-claude/models/whats-new-sonnet-5
  • Anthropic، معرفات النماذج وإصداراتها: المعرفات غير المؤرخة هي اللقطة المثبتة بدءا من جيل 4.6، وتحذف إصدارات الأجيال الكبرى مثل Sonnet 5 الجزء الفرعي، بينما تحتفظ نماذج جيل 4.5 مثل Haiku 4.5 بمعرف أساسي مؤرخ (claude-haiku-4-5-20251001) واسم بديل غير مؤرخ: https://platform.claude.com/docs/en/about-claude/models/model-ids-and-versions
  • Anthropic، تقديم Claude Fable 5 وMythos 5: الجيل الرائد الذي يتجاوز Opus وصدر في منتصف 2026، وتذكير بأن أمثلة النماذج في هذا الفصل للتوضيح وليست حدود النماذج المتقدمة: https://www.anthropic.com/news/claude-fable-5-mythos-5

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


ملخص من سطر واحد

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

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


اختبر فهمك

Checking access...