وكيلك يبدأ حين
يحدث شيء فعلًا
يجيب المُشغِّل عن سؤال واحد: متى يبدأ هذا الوكيل؟ المهمة المجدولة تجيب بساعة. ومُشغِّل webhook يجيب بحدث قادم من العالم الخارجي. يُفتح طلب سحب، أو يتعطّل بناء، أو ينطلق تنبيه، ويكون الوكيل قد بدأ العمل بالفعل.
يمنح AgentsRoom كل مُشغِّل رابطًا عامًا وسرَّ توقيع. الصق الرابط في GitHub أو GitLab أو Slack أو Linear أو Sentry أو أي شيء يستطيع إرسال POST بصيغة JSON. يصل الاستدعاء، ويُتحقَّق من التوقيع، وتتحول الحمولة إلى متغيرات في نصك التوجيهي، ويبدأ وكيل حقيقي في مشروعك بطرفيته وسجل محادثته.
مُشغِّل واحد، ورابط عام واحد. يصل الحدث، ويُتحقَّق من التوقيع، وتتحول الحمولة إلى متغيرات في النص التوجيهي، ويبدأ وكيل في مشروعك.
حلّت المهام المجدولة نصف المشكلة. يمكنك بالفعل أن تطلب من وكيل مراجعة طلبات السحب كل صباح في الثامنة. لكن معظم العمل الذي قد تسلّمه لوكيل لا يقع في الثامنة، بل يقع حين يفتح أحدهم طلب سحب، وحين يتحول البناء إلى الأحمر، وحين يبلّغ عميل عن خطأ في الثانية بعد الظهر.
حتى الآن، كانت الطريقة الوحيدة لالتقاط ذلك هي جعل وكيل يراقب: تشغيله على جدول قصير، وجعله يستطلع الـ API ويسأل «هل من جديد؟»، ودفع رموز مقابل الجواب «لا» مئات المرات في اليوم. هذا مكلف، وبطيء في رد الفعل، ويتوسع بشكل سيئ في اللحظة التي تريد فيها مراقبة ثلاثة مستودعات.
يقلب مُشغِّل webhook المعادلة. الخدمة هي التي تخبرك. يسلّمك AgentsRoom رابطًا، فتلصقه في GitHub أو GitLab أو Slack أو Linear أو Sentry أو في CI لديك، ولا يعمل شيء حتى تستدعيه تلك الخدمة. وحين تفعل، يبدأ الوكيل والحدث موجود أصلًا في نصه التوجيهي. صفر رموز ما دام اليوم هادئًا، ووكيل على القضية خلال ثوانٍ حين لا يكون كذلك.
لماذا يتفوق الحدث على حلقة الاستطلاع
تتوقف عن الدفع مقابل الصمت. الوكيل الذي يفحص مستودعًا كل خمس دقائق يحرق دورة سياق كاملة كل خمس دقائق، وتكاد كل واحدة منها لا تجد شيئًا. أما المُشغِّل فلا يستهلك أي شيء إطلاقًا حتى يصل الحدث.
رد الفعل فوري. لا فاصل زمني تضبطه، ولا نافذة يظل فيها طلب سحب منتظرًا إحدى عشرة دقيقة لأن الاستطلاع مرّ للتو. يبدأ الوكيل عند الاستدعاء، فتكون المراجعة جاهزة حين يحدّث صاحب الطلب الصفحة.
الحدث يأتي ومعه بياناته. تُحلَّل الحمولة إلى متغيرات تضعها مباشرة في النص التوجيهي: العنوان، والكاتب، والرابط، والرقم، والفرع، أو الـ JSON الخام كاملًا. لا يحتاج الوكيل أن يذهب ليجلب ما شغّله.
إنها اللوحة نفسها التي تعرفها. تحتفظ المُشغِّلات بالقائمة، ومفتاح التشغيل والإيقاف، وسجل كل تشغيل، ومنتقي الوكيل، والنطاق لكل جهاز الذي تعرفه من المهام المجدولة. الـ webhook مجرد إجابة أخرى عن سؤال «متى ينطلق هذا؟».
مُشغِّل واحد، خمس طرق للانطلاق
اللوحة تحوي الخمسة جميعًا. اختر ما يطابق ما تنتظره.
مجدول
الوضع الأصلي، دون تغيير. كل N دقيقة، أو كل ساعة، أو يوميًا في وقت واحد أو عدة أوقات، أو أسبوعيًا، أو شهريًا، دون كتابة أي تعبير cron. للعمل الذي ينتمي إلى ساعة: المراجعة الصباحية، وفحص التبعيات يوم الاثنين، وسجل تغييرات الجمعة.
حصة الاستخدام
ساعة اشتراكك في الذكاء الاصطناعي بدل ساعة الحائط. ينطلق المُشغِّل عند عودة نافذة استخدام اشتراكك، أو في نهاية تلك النافذة قبل إعادة ضبطها، ولا ينطلق إلا بعد أن تكون قد استهلكتها فعلًا. للعمل الذي ينتمي إلى رصيدك: مراجعة الكود التي تطلقها دائمًا في نهاية النافذة.
webhook
ينتظر الوكيل حدثًا بدلًا من ساعة. يمنحك AgentsRoom رابطًا عامًا وسرَّ توقيع، فتلصق الرابط في الخدمة، وينطلق المُشغِّل حين ترسل تلك الخدمة POST. للعمل الذي ينتمي إلى شيء يقع: طلب سحب، أو بناء فاشل، أو بلاغ خطأ جديد.
عند التسليم
ينطلق المُشغِّل حين تنتقل تذكرة من المشروع إلى عمود مكتمل، أو إلى عمود قيد المراجعة إن أردت فحصًا قبل إغلاقها. لا رابط ولا سرّ: خادم AgentsRoom يُنتج الحدث بنفسه، وتصل التذكرة كمتغيرات داخل الموجّه، وكل تذكرة تطلق تشغيلًا واحدًا، مرة واحدة فقط. للعمل الذي ينتمي إلى تسليم: مراقبة السجلات وملاحظات المستخدمين لمدة ساعتين بعد إصدار تغيير، وإعادة فتح التذكرة إذا تراجع شيء ما.
عند الطلب
الجواب حين لا يُطلقه شيء سواك. لا ساعة، ولا نافذة حصة، ولا رابط: مُوجز محفوظ يحمل موجّهه ووكيله وجهازه، وينطلق حين تضغط زرّه. للعمل الذي تكرّره كثيرًا ولا ينتمي إلى أي إيقاع: بناء التطبيق، وإصدار نسخة، وإعادة تشغيل عملية ترحيل.
ماذا تُشغّل
أحداث حقيقية، والوكيل الذي تريده على الطرف الآخر.
راجع كل طلب سحب لحظة فتحه
وجّه webhook من GitHub أو GitLab إلى المُشغِّل، ورشِّح على فتح طلب السحب، فيبدأ وكيل مراجعة على الـ diff خلال ثوانٍ. يحصل صاحب الطلب على ملاحظات والتغيير ما يزال طازجًا في ذهنه.
حقّق في بناء أحمر تلقائيًا
يستطيع الـ CI لديك إرسال POST حين يفشل خط الإنتاج. يبدأ المُشغِّل وكيلًا ومعه الفرع ورابط التشغيل في نصه التوجيهي، فيقرأ المهمة الفاشلة ويعود بسبب بدلًا من شارة حمراء.
افرز عطلًا لحظة الإبلاغ عنه
اربط تنبيه Sentry بمُشغِّل. استثناء جديد في الإنتاج يبدأ وكيل خلفية بعنوان الخطأ ورابط التذكرة، فتحدث النظرة الأولى إلى تتبّع المكدس قبل أن يفتح أحد لوحة التحكم.
ابدأ وكيلًا من Slack
يستطيع أمر slash في Slack أو webhook صادر أن يصيب رابط المُشغِّل. يكتب أحدهم الطلب في قناة، وتصل الحمولة إلى النص التوجيهي، ويلتقطها الوكيل في المشروع الصحيح.
حدّد نطاق تذكرة جديدة فور فتحها
تذكرة تُنشأ على GitHub أو GitLab أو Linear تبدأ وكيل منتج يقرأ البلاغ، ويسأل الأسئلة الناقصة، ويحوّله إلى شيء يستطيع مطوّر التقاطه.
نفّذ جولة ضمان جودة بعد كل نشر
يرسل خط النشر لديك POST حين يخرج إصدار. يبدأ المُشغِّل وكيل ضمان جودة يجرّب التطبيق على النسخة التي شُحنت للتو، بدلًا من جدول لا علاقة له بالإصدارات.
اكتب ملاحظات الإصدار عند الوسم
وسم مدفوع، وإصدار منشور، ووكيل توثيق يحوّل الـ commits إلى ملاحظات سهلة القراءة. يحمل الحدث اسم الوسم، فيعرف الوكيل بالضبط أي مدى عليه أن يلخّص.
أي شيء يستطيع إرسال POST بصيغة JSON
لا توجد قائمة تكاملات تنتظرها. مهمة cron على خادم، أو خطوة في Zapier، أو أداة مراقبة، أو خادمك الخلفي أنت: إن كان بإمكانه إرسال POST موقَّع إلى رابط، فبإمكانه بدء وكيل في مشروعك.
كيف يعمل مُشغِّل webhook، خطوة بخطوة
من نموذج فارغ إلى وكيل يتفاعل مع الإنتاج، في دقيقتين.
أنشئ مُشغِّلًا
افتح لوحة المُشغِّلات على مشروعك وأنشئ واحدًا جديدًا. القائمة نفسها، ومفتاح التشغيل والإيقاف نفسه، والسجل نفسه كما في المهمة المجدولة، لأنها اللوحة نفسها.
حوّله إلى webhook
اختر «webhook» بدلًا من «مجدول». يولّد AgentsRoom رابطًا عامًا لهذا المُشغِّل وسرَّ توقيع بجواره. يمكن توليد السرّ من جديد متى شئت لتقطع الطريق على من كان يملك القديم.
الصق الرابط في الخدمة
ضعه في webhook على GitHub أو GitLab، أو في تطبيق Slack، أو في تكامل Linear أو Sentry، أو في الـ CI لديك. وامنح الخدمة سرّ التوقيع أيضًا، حتى يمكن التحقق من الاستدعاءات التي ترسلها.
رشِّح ما ينبغي أن ينطلق فعلًا
المستودع يرسل أحداثًا كثيرة. أضف شرطًا اختياريًا على الحمولة، مثلًا action يساوي opened، فيُتجاهل كل ما عداه. واضبط حدًّا للرشقات حتى لا تستطيع خدمة ثرثارة بدء عشرين وكيلًا في دقيقة.
ضع الحدث في نصك التوجيهي
اكتب النص التوجيهي بمتغيرات الحدث: العنوان، والكاتب، والرابط، والرقم، والفرع، أو الحمولة كاملة. تُستبدَل بقيمها حين ينطلق المُشغِّل، تمامًا كمتغيرات التاريخ والوقت التي تدعمها المهام المجدولة أصلًا.
أعد إرسال آخر استدعاء ثم شغّله
يعرض المحرر آخر استدعاء تلقّاه المُشغِّل، بما فيه الـ JSON الخام، ويعيد إرساله بنقرة واحدة. توصّل الـ webhook وأنت تنظر إليه، لا وأنت تخمّن، وحين يصبح صحيحًا تشغّل المُشغِّل.

صف الخدمات مجموعة اختصارات، لا قائمة سماح. يقول المحرر ذلك تحت المنتقي، ولهذا يكون المدخل الأول هو Any service (JSON): أي شيء يستطيع إرسال جسم JSON عبر POST يعمل. واختيار GitHub أو GitLab أو Slack أو Linear أو Sentry يضيف شيئين بالضبط: ترويسة التوقيع الخاصة به للتحقق منها، وحقول حمولته مربوطة أصلًا بمتغيرات الحدث. ولا يُرفض أي شيء لأنه ليس في القائمة.
رقاقات المتغيرات ليست توثيقًا، بل أزرار: انقر واحدة لإدراجها في النص التوجيهي، وتُبرَز تلك التي ملأها آخر استدعاء فعلًا. وتحتها يقع آخر استدعاء تلقّاه المُشغِّل، فتكتب المرشِّح والنص التوجيهي مقابل حمولة حقيقية تراها بعينك، وتعيد إرسالها، ولا تشغّل المُشغِّل إلا حين يخرج التشغيل صحيحًا.
- يصل الحدث إلى رابط مُشغِّلك
ترسل الخدمة JSON عبر POST. يتحقق AgentsRoom من التوقيع مقابل سرّك ويرفض أي استدعاء غير موقَّع، ثم يطبّق مرشِّحك إن كنت قد ضبطت واحدًا.
- ينتظر إن لم يكن أحد موجودًا
قد يكون جهازك مطفأ. يُحتفظ بالحدث لمدة تصل إلى أسبوع ويُعاد إرساله عند الإقلاع التالي بدلًا من إسقاطه، وهو نموذج التعويض نفسه الذي تستخدمه المهام المجدولة أصلًا.
- جهاز واحد يأخذه، ولا أحد غيرهجهاز المكتبلابتوب المنزلجهاز البناء
إذا كان المشروع مفتوحًا على عدة أجهزة، فأول جهاز يلتقط الحدث يقفله. ويرى الباقون أنه محجوز فيتجاوزونه، فلا ينتج حدث واحد وكيلين أبدًا.
- يعمل الوكيل، مرة واحدة
يُفتح وكيل حقيقي في المشروع، بالدور والمزوّد والنموذج التي اخترتها، وبطرفيته الخاصة، وعرض محادثته، وسجل محادثة مؤرشف يمكنك قراءته لاحقًا.
رابط عام، لا باب مفتوح
الرابط متاح من الإنترنت، لذا يقرر المُشغِّل ما الذي يقبله قبل أن يبدأ أي شيء.
كل استدعاء موقَّع
يتحقق AgentsRoom من كل استدعاء مقابل سرّك قبل أن يبدأ أي شيء: X-Hub-Signature-256 لـ GitHub، وX-Slack-Signature لـ Slack، وتوكن X-Gitlab-Token المشترك لـ GitLab، وتوقيع HMAC بسيط للجسم الخام مع Linear وSentry، وللمصدر العام توقيع يشمل أيضًا طابعًا زمنيًا ومعرّف تسليم. والاستدعاء الذي لا يحمل توقيعًا يُرفض، فمعرفة الرابط وحدها لا تكفي لبدء وكيل على جهازك.
لا يمكن إعادة إرسال استدعاء مُعترَض
يوقّع المُشغِّل العام طابعًا زمنيًا ومعرّف تسليم مع الجسم، وهذا مفعَّل افتراضيًا. يُرفض أي استدعاء أقدم من نافذة القبول، وهي خمس دقائق ما لم تختر غيرها، ولا يبدأ معرّف تسليم سبق استلامه وكيلًا ثانيًا أبدًا. ويُتحقَّق من الطابع الزمني الخاص بـ Slack بالطريقة نفسها. والطلب الذي تسرّب إلى سجل CI يبقى عديم الفائدة.
بدّل السرّ متى شئت
يُعرض سرّ التوقيع في المحرر ويمكن توليده من جديد في مكانه. تتوقف الاستدعاءات القديمة عن اجتياز التحقق فورًا، وهو ما تريده بالضبط يوم إيقاف خدمة أو تسرّب سرّ إلى سجل.
تشغيل مقيّد للحمولات غير الموثوقة
حين يكتب الحمولةَ شخصٌ لا تتحكم فيه، كطلب سحب أو تذكرة عامة، فعّل التشغيل المقيّد. عندها يرفض الـ CLI الخاص بالوكيل بنفسه صدفة الأوامر والويب وكل أدوات AgentsRoom، ويُبقي ملفات المشروع للقراءة فقط، ولا يستدعي إلا أدوات MCP التي تدرجها. ضع رمز الوصول، مأخوذًا من خزنة أسرارك، في خادم MCP الخاص بالمُشغِّل: ينشر الوكيل مراجعته دون أن يقرأه أبدًا. يفرض Claude Code وCodex هذا التقييد؛ أما أدوات CLI الأخرى فترفض التشغيل بدلًا من بدئه بلا حماية.
رشِّح على الحمولة
شرط اختياري يقرر ما إذا كان الحدث يستحق وكيلًا. انطلق فقط حين يساوي action القيمة opened، أو على فرع واحد فقط، أو لوسم واحد فقط. وكل ما لا يطابق يُسقَط دون إنشاء أي شيء.
الحماية من الرشقات
تشغيل واحد على الأكثر في كل نافذة زمنية. الخدمة التي ترسل ثلاثين حدثًا في عشر ثوانٍ لا تبدأ ثلاثين وكيلًا: تُجمَّع الاستدعاءات داخل النافذة ويغطيها تشغيل واحد.
الحمولة تصبح نصك التوجيهي
الـ JSON الذي ترسله الخدمة يُحلَّل إلى متغيرات تكتبها مباشرة في النص التوجيهي. تُستبدَل بقيمها عند الانطلاق، مثل متغيرات التاريخ والوقت التي تستخدمها المهام المجدولة أصلًا.
اكتب النص التوجيهي مرة واحدة، ويحصل كل تشغيل على بيانات الحدث الذي شغّله.
{{event.title}}عنوان الحدث: عنوان طلب السحب، أو عنوان التذكرة، أو اسم التنبيه.{{event.author}}من تسبّب فيه: كاتب طلب السحب، أو الشخص الذي فتح التذكرة.{{event.url}}الرابط العائد إلى الحدث، ليتمكن الوكيل من فتح طلب السحب أو التنبيه.{{event.number}}رقم طلب السحب أو التذكرة، حين ترسله الخدمة.{{event.branch}}الفرع الذي يخصّه الحدث، لعملية دفع، أو طلب سحب، أو بناء فاشل.{{payload}}الـ JSON الخام كاملًا، لكل ما لا تغطيه المتغيرات المسمّاة.
Review pull request #{{event.number}} "{{event.title}}" opened by {{event.author}} on branch {{event.branch}}. Read the diff at {{event.url}} and reply with the risky parts first.تُكتب أسماء المتغيرات بين قوسين معقوفين مزدوجين في حقل النص التوجيهي، تمامًا كمتغيرات التاريخ والوقت في المهمة المجدولة.
event.actionevent.numberevent.titleevent.bodyevent.authorevent.branchevent.baseevent.urlevent.repositoryevent.stateevent.actionevent.numberevent.titleevent.bodyevent.authorevent.branchevent.baseevent.urlevent.repositoryevent.stateevent.actionevent.titleevent.bodyevent.authorevent.channelevent.urlevent.teamevent.actionevent.numberevent.titleevent.bodyevent.authorevent.assigneeevent.stateevent.priorityevent.urlevent.teamevent.actionevent.titleevent.bodyevent.levelevent.projectevent.urlevent.countevent.actionevent.titleevent.bodyevent.authorevent.urlevent.idما الذي يعمل فعلًا، وأين
نموذج التنفيذ الصادق نفسه الخاص بالمهام المجدولة، ممتدًّا إلى الأحداث.
من أين تأتي الأحداث
أي شيء يستطيع إرسال POST موقَّع بجسم JSON يستطيع بدء وكيل. وهذه هي الخدمات التي يوصّلها الناس أولًا.
الـ CI لديك، وخادمك الخلفي، وأي شيء
خطوة في خط إنتاج، أو أداة مراقبة، أو خدمة داخلية، أو سكربت shell فيه curl. لا تكامل تطلبه: POST بجسم JSON مع توقيع هو العقد كله.
GitHub وGitLab
طلبات السحب وطلبات الدمج تُفتح أو تُراجَع أو تُدمَج، وتذاكر تُنشأ، وعمليات دفع، وإصدارات، وسير عمل فاشل. المصدر الكلاسيكي، وصاحب الحمولة الأكثر فائدة.
Slack
أمر slash أو webhook صادر يحوّل رسالة في قناة إلى تشغيل وكيل في المشروع الصحيح. ويُتحقَّق من توقيعات Slack عبر X-Slack-Signature.
Linear وSentry
تذكرة تنتقل إلى عمود، أو استثناء جديد في الإنتاج، أو تنبيه بارتداد. يطلق المتتبِّع الحدث، ويبدأ الوكيل والتذكرة أو الخطأ في نصه التوجيهي.
النصف الآخر من اللوحة نفسها
المُشغِّلات والمهام المجدولة ميزة واحدة بإجابتين عن السؤال نفسه. المهمة المجدولة مُشغِّل حدثه ساعة. ومُشغِّل webhook مهمة مجدولة جدولها هو العالم الخارجي. يعيشان في القائمة نفسها، ويتقاسمان إعداد الوكيل نفسه، ومفتاح التفعيل نفسه، وسجل التشغيلات نفسه، والنطاق لكل جهاز نفسه.
فتختار حسب المهمة لا حسب الأداة. يبقى تدقيق التبعيات صباح الاثنين، لأن لا شيء في الخارج يعلن أن حزمة صارت قديمة. وتنتقل مراجعة طلبات السحب إلى webhook، لأن GitHub يعرف أصلًا الثانية التي ينبغي أن تحدث فيها. اقرأ صفحة المهام المجدولة لتعرف جانب الساعة من العائلة.
شاهد المهام المجدولة، جانب الساعة من اللوحة نفسهاFAQ
ما مُشغِّل webhook في AgentsRoom؟
هو مُشغِّل يبدأ وكيل ذكاء اصطناعي حين ترسل إليه خدمة خارجية حدثًا، بدلًا من وقت محدد. يمنح AgentsRoom المُشغِّل رابطًا عامًا وسرَّ توقيع؛ وتلصق أنت الرابط في GitHub أو GitLab أو Slack أو Linear أو Sentry أو أي أداة تستطيع إرسال POST بصيغة JSON. وحين تستدعي تلك الخدمة، يُتحقَّق من التوقيع، ويُطبَّق مرشِّحك الاختياري، ويبدأ وكيل في مشروعك والحمولة متاحة أصلًا كمتغيرات في النص التوجيهي.
بماذا يختلف هذا عن مهمة مجدولة؟
يتغير سؤال «متى ينطلق هذا» فقط. المهمة المجدولة تنطلق على ساعة (كل N دقيقة، أو كل ساعة، أو يوميًا في وقت واحد أو عدة أوقات، أو أسبوعيًا، أو شهريًا) أو على نافذة حصة استخدام اشتراكك في الذكاء الاصطناعي (عند عودة الحصة، أو قبل إعادة ضبطها). ومُشغِّل webhook ينطلق على حدث من الخارج. ومُشغِّل عند الطلب لا ينطلق على شيء إطلاقًا: ينتظر أن تضغط زرّه. وكل ما عدا ذلك مشترك: القائمة نفسها، ومفتاح التشغيل والإيقاف نفسه، وإعداد الوكيل نفسه، وسجل كل تشغيل نفسه، والنطاق لكل جهاز نفسه.
لماذا لا نجعل وكيلًا يستطلع الـ API فحسب؟
لأن الاستطلاع يكلّف رموزًا في كل دورة، وتكاد كل دورة لا تجد شيئًا. الوكيل الذي يفحص مستودعًا كل خمس دقائق ينفّذ دورة كاملة كل خمس دقائق ليجيب «لا». أما مُشغِّل webhook فلا يستهلك شيئًا ما دام لا شيء يحدث، ويتفاعل خلال ثوانٍ حين يحدث شيء. هذه هي الحجة الاقتصادية كاملة وراء الميزة.
هل من الآمن كشف رابط المُشغِّل؟
الرابط وحده لا يكفي لبدء أي شيء. على كل استدعاء أن يثبت أنه قادم من الخدمة التي تحمل سرّك: X-Hub-Signature-256 لـ GitHub، وX-Slack-Signature لـ Slack، وتوكن X-Gitlab-Token المشترك لـ GitLab، وتوقيع HMAC بسيط للجسم الخام مع Linear وSentry، وللمصدر العام توقيع يشمل أيضًا طابعًا زمنيًا ومعرّف تسليم، فلا يمكن إعادة إرسال استدعاء مُعترَض. والاستدعاء الذي لا يحمل ترويسة توقيع يُرفض، ولا يُمرَّر أبدًا. ويُعرض السرّ في المحرر ويمكن توليده من جديد في أي وقت، وهو ما يبطل فورًا كل ما كان يستخدم السرّ القديم.
هل يمكنني الانطلاق على بعض الأحداث فقط؟
نعم. المستودع يرسل أحداثًا أكثر بكثير مما تريد وكلاء له، لذا يقبل المُشغِّل شرطًا اختياريًا على الحمولة، مثلًا action يساوي opened. والأحداث التي لا تطابق تُتجاهَل ولا يُنشأ شيء. وهناك أيضًا حدّ للرشقات: تشغيل واحد على الأكثر في كل نافذة زمنية، مع تجميع الاستدعاءات التي تصل داخل تلك النافذة.
ماذا يحدث إذا كان AgentsRoom مغلقًا حين يصل الحدث؟
يوضع الحدث في طابور على الخادم ويُعاد إرساله في المرة التالية التي تشغّل فيها التطبيق، فيعمل متأخرًا بدلًا من ألا يعمل أبدًا. وتبقى الأحداث في الطابور لمدة أسبوع، وهو ما يغطي حاسوبًا محمولًا ظل مغلقًا طوال عطلة نهاية أسبوع طويلة، دون أن يُعاد إرسال شهر من العمل القديم حين تعود. إنه نموذج «داخل التطبيق مع تعويض» نفسه الذي تستخدمه المهام المجدولة. ومُشغِّلات webhook لا تشغّل وكيلك في السحابة: يعمل الوكيل دائمًا على جهازك، في مشروعك.
المشروع مفتوح لديّ على جهازين. هل سيعمل الوكيل مرتين؟
لا. الحدث يُستهلك مرة واحدة. أول جهاز يلتقطه يقفله، ويرى الباقون أنه محجوز فيتخطّونه. ويمكنك أيضًا تثبيت مُشغِّل على أجهزة بعينها، تمامًا كالمهمة المجدولة، إذا أردت جهازًا معيّنًا أن يتولّاه.
ما الذي يمكنني وضعه في النص التوجيهي من الحدث؟
تُحلَّل الحمولة إلى متغيرات تكتبها مباشرة في حقل النص التوجيهي، بين قوسين معقوفين مزدوجين: event.title، وevent.author، وevent.url، وevent.number، وevent.branch، وpayload للـ JSON الخام كاملًا. وتُستبدَل بقيمها حين ينطلق المُشغِّل، بالطريقة نفسها التي تُستبدَل بها متغيرات التاريخ والوقت في المهمة المجدولة.
كيف أعرف أن الـ webhook لديّ موصول بشكل صحيح؟
يعرض المحرر آخر استدعاء تلقّاه المُشغِّل، بما في ذلك جسم الـ JSON الخام، ويتيح لك إعادة إرساله بنقرة واحدة. فتضبط المرشِّح والنص التوجيهي مقابل حمولة حقيقية تراها بعينك، ثم تعيد الإرسال حتى يصبح التشغيل صحيحًا، بدلًا من دفع commits اختبارية لتكتشف النتيجة.
ما الخدمات المدعومة؟
أي خدمة تستطيع إرسال POST موقَّع بجسم JSON. وGitHub وGitLab وSlack وLinear وSentry هي ما يوصّله الناس أولًا لأن حمولاتها غنية، لكن لا توجد قائمة مسموح بها: مهمة CI، أو أداة مراقبة، أو خادمك الخلفي، أو curl في سكربت shell، كلها تعمل بالطريقة نفسها تمامًا.
هل هذا مُنشئ أتمتة مرئي بسيناريوهات متعددة الخطوات؟
لا، وهو لا يحاول أن يكون كذلك. للمُشغِّل مهمة واحدة: أن يقرر متى يبدأ التشغيل وأن يسلّمه الحدث. أما الجزء متعدد الخطوات فيخصّ ما يشير إليه المُشغِّل. وهو في العادة وكيل واحد، يقرأ الكود ويشغّل الأدوات وينجز العمل؛ وإن أردت عدة وكلاء يسلّمون العمل لبعضهم، فوجّه المُشغِّل إلى Agent Team بدلًا من ذلك، فيبدأ الحدث خط الإنتاج كله، بما فيه بوابات الجودة وحلقات التغذية الراجعة. أما ما لا ترسمه هنا أبدًا فهو لوحة سيناريوهات من صناديق وأسهم حول واجهة برمجية.
هل يستطيع AgentsRoom إرسال webhooks إلى خدمات أخرى؟
المُشغِّلات واردة فقط: يستقبل AgentsRoom الأحداث ولا يصدرها. وإن أردت أن يستدعي وكيل خدمة خارجية في نهاية تشغيل، فتلك مهمته هو، بالأدوات وخوادم MCP التي منحتها له.
هل يستطيع وكيل يعمل عبر webhook التعامل بأمان مع طلب سحب كتبه شخص آخر؟
نعم، مع التشغيل المقيّد. فالحمولة التي يكتبها شخص غريب قد تخفي تعليمات موجّهة إلى الوكيل، لذا لا يعتمد AgentsRoom على النص التوجيهي لكبحها: في التشغيل المقيّد يرفض الـ CLI الخاص بالوكيل بنفسه صدفة الأوامر والويب وكل أدوات AgentsRoom، ويُبقي ملفات المشروع للقراءة فقط، ولا يستدعي إلا أدوات MCP التي سمحت بها. امنح المُشغِّل بيانات اعتماده الخاصة عبر خادم MCP الذي يحتاج إليها، فيستطيع الوكيل نشر مراجعته دون أن يرى رمز الوصول أبدًا. يدعم Claude Code وCodex ذلك؛ أما أدوات CLI الأخرى فترفض بدء مثل هذا التشغيل.
هل يمكن لمُشغِّل أن يبدأ ببساطة التذكرة التالية من قائمة المهام، دون وكيل؟
نعم. إلى جانب وكيل أو فريق، يمكن للمُشغِّل تنفيذ إجراء على اللوحة: «ابدأ التذكرة التالية قيد الانتظار». يفعل تمامًا ما يفعله زر اللوحة، فيختار التذكرة الأعلى في عمود قيد الانتظار متجاوزًا التذاكر التي لا تزال محجوبة بتذكرة أخرى، ويبدأها بوكيلها أو فريقها الخاص. المُشغِّل نفسه بلا نص توجيهي ولا يُجري أي استدعاء للذكاء الاصطناعي، لذا يمكن لطلب سحب مدموج أو تشغيل CI ناجح أو جدول زمني أن يُبقي خط إنتاج «تذكرة واحدة ووكيل واحد» يتقدّم دون دفع ثمن دور وكيل لا مهمة له سوى الضغط على ذلك الزر.
يتناسب جيدًا مع
المهام المجدولة
جانب الساعة من اللوحة نفسها. كل N دقيقة، أو كل ساعة، أو يوميًا، أو أسبوعيًا، أو شهريًا، دون كتابة أي تعبير cron.
لوحة مهام Backlog
اسحب تذكرة إلى عمود فيلتقطها وكيل. والمُشغِّل يفعل الشيء نفسه، لكن حدثًا خارجيًا هو من يقوم بالسحب.
فرق الوكلاء
وكلاء Dev وQA وPM يسلّمون العمل لبعضهم. وجّه مُشغِّلًا إلى فريق فيبدأ حدث واحد الروتين كله.
AgentsRoom MCP
الأدوات التي يستخدمها الوكيل لقراءة قائمة المهام والذاكرة ومكتبة البرومبت. والوكيل الذي يبدأ بمُشغِّل يحصل عليها كأي وكيل آخر.
إشعارات الوكلاء
اعرف لحظة انطلاق المُشغِّل، على سطح مكتبك وعلى هاتفك، بنقرة واحدة تفتح الوكيل الذي بدأه.
الأسطول البعيد
عدة أجهزة على حساب واحد. ثبّت المُشغِّل على الجهاز الذي ينبغي أن يجيبه، فلا يشغّل الوكيل سواه.
قراءات إضافية
مدرب الجري بالذكاء الاصطناعي عندي هو مستودع Git ووكيل Claude
أنهي حصتي، تتزامن ساعتي، وبعد ثلاث دقائق يكون التحليل مكتوبا في مستودعي، والأسبوع قد أعيد ضبطه، ومدربي قد ترك تعليقا تحت نشاط Strava. لا تطبيق مبرمج، ولا خادم مكتوب، ولا فاتورة API محسوبة على كل token: اشتراك Claude، وAgentsRoom، وملفات Markdown. هذا هو التركيب الكامل، قابل لإعادة الإنتاج.
وكلاء البرمجة في الخلفية: اجعل ذكاءك الاصطناعي يعمل في الوردية الليلية
وكيل البرمجة لا يحتاج إلى أن تراقبه. إليك كيف تشغّل الوكلاء في الخلفية بينما تعمل على شيء آخر، وكيف تدع أسطولاً كاملاً يكتب الشيفرة طوال الليل بينما أنت نائم.
قيادة وكلاء البرمجة من هاتفك أثناء عملهم
يقوم وكلاؤك بالبرمجة لمدة 20 دقيقة متواصلة. لا تحتاج للجلوس أمام الشاشة. إليك كيفية تتبعهم وإزالة العوائق من هاتفك.، سواء كانت تعمل على Claude أو Codex أو Antigravity.
أوقف الاستطلاع. ابدأ التفاعل.
نزّل AgentsRoom، والصق رابطًا واحدًا في GitHub أو GitLab أو Slack أو Linear أو Sentry، ودع الحدث يبدأ الوكيل. لا شيء يعمل ما دام لا شيء يحدث.
التطبيق المرافق: تابع وكلاءك أينما كنت
استخدم Claude أو Codex أو Antigravity CLI أو أي مزود AI آخر.
أرسل الأخطاء والطلبات مباشرة إلى قائمة المهام العامة.