ملاحظة المؤلف: يحتاج إيقاف الوكلاء (Agents) إلى طبقة تحكم موحّدة، وإلى نقاط حجب مستقلة في طبقات التنفيذ، مثل الأدوات والمهام والهوية. إلغاء طلب النموذج وحده لا يغطي العمليات التي تجري خارج النموذج.
أعلنت OpenAI في 9 نوفمبر 2026 عن نظام التحكم المركزي Control Room. بعد أن يتلقى Control Room أمر الإيقاف، تفقد مهام البحث المرتبطة القدرة على الحصول على مخرجات من النموذج خلال 35 ثانية على الأكثر. أعاد هذا الرقم إلى طاولة النقاش بين فرق الهندسة سؤالًا قديمًا: في أي طبقة ينبغي وضع زر الإيقاف الطارئ لوكيل الذكاء الاصطناعي؟
هذا ليس مجرد خبر آخر عن «زر إيقاف الذكاء الاصطناعي». فالإعلان الرسمي من OpenAI، وتقرير حادثة DNS في سبتمبر، ومواد OWASP عن أمن الوكلاء، كلها تشير إلى الخلاصة نفسها: أفعال الوكيل موزّعة على عدة طبقات، هي الاستدلال، والتنسيق (orchestration)، والأدوات، والمهام الخلفية، وصلاحيات الهوية. وأي زر في الواجهة الأمامية، أو واجهة إلغاء طلبات النموذج، لا يغطي إلا جزءًا منها.
القيمة الأساسية: بعد قراءة هذا المقال ستعرف أي طبقة ينبغي أن تُصدر أمر الإيقاف الطارئ لوكيل الذكاء الاصطناعي، وأي طبقات يجب أن تفرضه بالقوة، وكيف تتعامل مع العمليات التي نُفّذت فعلًا قبل الإيقاف.

ملخص سريع: المعلومات الأساسية عن زر الإيقاف الطارئ لوكلاء الذكاء الاصطناعي
نبدأ بتوضيح خلفية الخبر وحدود الوقائع التي نعتمد عليها، فكل ما سيأتي من توصيات معمارية مبني على هذه الحدود.
| البند | التفاصيل |
|---|---|
| تاريخ النشر | 9 نوفمبر 2026، على المدونة التقنية الرسمية لـ OpenAI وحسابها الرسمي على X |
| ما تم إعلانه | Control Room، وهو نظام مركزي لتتبع أحمال عمل النماذج في البنية التحتية البحثية لدى OpenAI وإيقافها |
| المؤشر الرئيسي | من لحظة استلام أمر الإيقاف في Control Room إلى لحظة عجز المهمة عن الحصول على مخرجات من النموذج: 35 ثانية كحد أقصى |
| مصدر مدة الـ 35 ثانية | طبقة التخزين المؤقت لتفويض الاستدلال، وتقول OpenAI إن هدفها هو خفض المدة إلى الصفر |
| ما لا تشمله هذه المدة | لا تشمل الوقت اللازم لاكتشاف السلوك الشاذ واتخاذ القرار، ولا تعني إنهاء العملية، ولا تلغي تلقائيًا أي إجراءات نُفذت خارجيًا |
| نطاق التغطية | أحمال العمل البحثية الداخلية: التدريب البحثي، والتقييم، والعيّنات الوكيلية (Agentic Sampling)، ومعالجة البيانات |
| سياسة الفشل | Fail-Closed، أي رفض طلبات الاستدلال عند تعطل خدمة التحكم |
هناك نقطة يجب توضيحها: Control Room ليس مفتاحًا شاملًا يغلق كل جلسات ChatGPT أو النماذج التابعة لجهات خارجية. ما يتحكم فيه هو سؤال واحد: «هل تستمر المهمة البحثية في الحصول على تفويض الاستدلال؟». أما النموذج نفسه وعملية المهمة فلا يُغلقان بالضرورة. هذا القرار التصميمي مفيد تحديدًا للإجابة عن سؤال: في أي طبقة ينبغي وضع زر الإيقاف الطارئ لوكلاء الذكاء الاصطناعي؟
لماذا قد يفشل زر «إيقاف» في إيقاف وكيل الذكاء الاصطناعي؟
تخيّل وكيل عمليات (Ops Agent) ينفّذ ثلاث مهام في وقت واحد: يستدعي واجهة API تابعة لجهة خارجية لتحديث الطلبات دفعة واحدة، وينفّذ سكربت Shell داخل Sandbox، ويضع مهمة معالجة ملف كبير في طابور المهام الخلفية. يضغط المستخدم الآن على زر «إيقاف» في الواجهة، فتتوقف الصفحة عن تحديث المخرجات، لكن المهام الثلاث ليست بالضرورة قد توقفت معها.
المشكلة أن كلمة «إيقاف» تخفي وراءها أربع عمليات على الأقل، وكل واحدة منها تؤثر في شيء مختلف تمامًا:
| عملية الإيقاف | ما الذي توقف فعليًا | ما قد يستمر في العمل |
|---|---|---|
| إغلاق صفحة الواجهة الأمامية | الواجهة التي يراها المستخدم | حلقة التنسيق في الخلفية، واستدعاءات الأدوات، والمهام الخلفية |
| قطع اتصال البث | نقل تدفق المخرجات | توليد Response في الخلفية، والأدوات التي أُرسلت للتنفيذ بالفعل |
| إلغاء Response الخاص بالنموذج | عملية التوليد الحالية للنموذج فقط | الأدوات وأعمال الطابور التي يشغّلها التطبيق حاليًا |
| إنهاء المهمة كاملة (Run) | التنفيذ اللاحق للتنسيق والأدوات والمهام الخلفية | الآثار الجانبية الخارجية التي وقعت بالفعل |
وقد وضّحت واجهات OpenAI العامة هذا الحدّ في وثائقها. توفّر Responses API الواجهة POST /v1/responses/{response_id}/cancel، لكنها لا تلغي إلا الـ Response الذي أُنشئ بالخيار background: true. أما الـ Response المتزامن فلا يُنهى إلا بقطع الاتصال. وإذا انقطع اتصال البث لـ Response يعمل في الخلفية، فإن المهمة نفسها لا تتوقف بسبب ذلك. وإلغاء الـ Response الخلفي نفسه أكثر من مرة عملية متساوية الأثر (idempotent)، أي أن تكرارها لا يغيّر النتيجة.
والأهم من ذلك ما تذكره وثائق Async Tool Calling: الأدوات غير المتزامنة ما زال تطبيق المطوّر نفسه هو الذي ينفّذها، ولا تتولى OpenAI إدارة هذه المهام الخلفية نيابةً عن التطبيق. بعبارة أخرى، إلغاء توليد النموذج لا يعني إيقاف الأدوات داخل التطبيق. فإذا كان زر الإيقاف الطارئ لوكيل الذكاء الاصطناعي مربوطًا بواجهة إلغاء النموذج فقط، فستواصل أوامر Shell وطلبات HTTP وأعمال الطابور عملها.
مثال مبسّط للإيقاف الطارئ لوكيل الذكاء الاصطناعي (AI Agent)
يوضح المثال التالي مبدأً أساسيًا: أعد فحص حالة الـ Run قبل كل عملية حقيقية، ولا تكتفِ بفحصها مرة واحدة عند بدء المهمة.
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1" # واجهة APIYI المتوافقة مع OpenAI
)
STOPPED_RUNS = set() # في بيئة الإنتاج يجب وضعها في تخزين مشترك ضمن Control Plane
def guarded_tool_call(run_id: str, tool_name: str, args: dict):
# Tool Gateway: أعد التحقق من حالة الـ Run قبل حدوث أي أثر جانبي حقيقي
if run_id in STOPPED_RUNS:
raise PermissionError(f"run {run_id} 已停止,拒绝执行 {tool_name}")
return TOOLS[tool_name](**args)
عرض الشيفرة الكاملة (تتضمن Fail-Closed ومفاتيح التكرار الآمن Idempotency Keys)
import uuid
import json
import time
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1" # استدعاء نماذج عدة شركات بشكل موحد عبر APIYI
)
MODEL = "gpt-4o-mini" # يمكن استبداله بأي نموذج يدعم استدعاء الأدوات
class ControlPlane:
"""طبقة التحكم المركزية: تسجّل حالة الـ Run، وتستعلم منها جميع طبقات التنفيذ"""
def __init__(self, store):
self.store = store # مثل Redis / قاعدة بيانات
def stop(self, run_id: str, reason: str):
self.store.set(f"run:{run_id}", "stopped")
audit("stop", run_id, reason)
def is_allowed(self, run_id: str) -> bool:
try:
return self.store.get(f"run:{run_id}") == "running"
except Exception:
return False # Fail-Closed: إذا تعذّر الحصول على الحالة فارفض التنفيذ
def audit(event: str, run_id: str, detail):
print(json.dumps({"ts": time.time(), "event": event,
"run_id": run_id, "detail": str(detail)}, ensure_ascii=False))
def tool_gateway(cp: ControlPlane, run_id: str, name: str, args: dict):
"""Tool Gateway: يعيد التحقق من الصلاحية في كل استدعاء، ويضيف مفتاح تكرار آمن (Idempotency Key) للأعمال ذات الأثر الجانبي"""
if not cp.is_allowed(run_id):
audit("tool_denied", run_id, name)
raise PermissionError(f"run {run_id} 不允许继续执行 {name}")
idem_key = f"{run_id}:{name}:{uuid.uuid5(uuid.NAMESPACE_URL, json.dumps(args, sort_keys=True))}"
audit("tool_call", run_id, {"tool": name, "idempotency_key": idem_key})
return TOOLS[name](idempotency_key=idem_key, **args)
def agent_loop(cp: ControlPlane, run_id: str, messages: list, max_steps: int = 10):
"""Agent Runtime: يفحص حالة الإيقاف قبل كل جولة استدلال"""
for _ in range(max_steps):
if not cp.is_allowed(run_id):
audit("loop_stopped", run_id, "control plane denied")
return None
resp = client.chat.completions.create(model=MODEL, messages=messages, tools=TOOL_SCHEMAS)
msg = resp.choices[0].message
if not msg.tool_calls:
return msg.content
messages.append(msg)
for call in msg.tool_calls:
result = tool_gateway(cp, run_id, call.function.name, json.loads(call.function.arguments))
messages.append({"role": "tool", "tool_call_id": call.id, "content": str(result)})
return None
🚀 نصيحة للبدء السريع: عبر واجهة APIYI (apiyi.com) المتوافقة مع OpenAI يمكنك استخدام مفتاح API واحد للتبديل بين نماذج مثل GPT وClaude وGemini، وتشغيل منطق الإيقاف المذكور أعلاه معها جميعًا. فعمليات التحقق من الإيقاف تُكتب داخل الـ Runtime والـ Tool Gateway الخاصَّين بك، ولذلك لا تحتاج إلى تعديل هذا الجزء من الشفرة عند تغيير النموذج.
أولًا: افهم بنية تنفيذ وكيل الذكاء الاصطناعي
قسّمت Microsoft مسؤولية أمان الوكيل (Agent) إلى خمس طبقات: طبقة منصة الذكاء الاصطناعي، وطبقة التنسيق، وطبقة الأدوات والإجراءات، وطبقة الذاكرة والحالة، وطبقة التطبيق. وتوصي تحديدًا بإعادة التحقق من الصلاحيات عند كل عملية، وألا نكتفي بفحصها مرة واحدة عند بدء المهمة. وفيما يخص الإيقاف الطارئ، يمكن تقسيم الوكيل إلى الطبقات التالية، ولكل طبقة منها نطاق مختلف من الأشياء التي تستطيع إيقافها:
| طبقة التنفيذ | ما تتحكم فيه | إجراء الإيقاف | ما لا تستطيع إيقافه وحدها |
|---|---|---|---|
| طبقة استدلال النموذج | توليد الرموز (Tokens) | رفض طلبات الاستدلال، وإلغاء الاستجابة (Response) | الأدوات التي بدأ تطبيقك تنفيذها بالفعل |
| Orchestrator / Agent Runtime | حلقة الاستدلال، والوكلاء الفرعيون | الخروج من الحلقة، وإلغاء المهام الفرعية | المهام التي أُرسلت بالفعل إلى الطابور |
| Tool Gateway | استدعاءات API والدوال وMCP | رفض استدعاءات الأدوات اللاحقة | العمليات التي تعمل بالفعل داخل Sandbox |
| Sandbox / Execution Runtime | Shell وWorker وموارد الحوسبة | إنهاء العمليات، واسترجاع الحاويات | بيانات الاعتماد الصالحة التي حصل عليها الوكيل بالفعل |
| Identity & Secrets | الرموز (Tokens) والمفاتيح والصلاحيات | إلغاء بيانات الاعتماد، ووقف حقنها | حركة البيانات الصادرة التي لا تحتاج إلى بيانات اعتماد |
| المهام الخلفية / الطوابير | المهام غير المتزامنة | إلغاء المهام المنتظرة، وإنهاء Worker | الآثار الخارجية التي وقعت فعلًا |
يتضح من الجدول أن توقف النموذج عن الإخراج يعني فقط أن «الدماغ» لم يعد يُصدر أوامر جديدة، أما الأوامر التي سُلّمت بالفعل إلى «الأيدي والأقدام» فستواصل تنفيذها. فسكربت Shell لن يتوقف لمجرد أن النموذج توقف، وكذلك لن يذهب Worker في الخلفية من تلقاء نفسه ليتحقق مما إذا كان النموذج قد أُلغي.

📊 شرح المخطط: المخطط أعلاه حل هندسي مُجمَّع من المواد المنشورة لدى OpenAI وMicrosoft وOWASP، ولا يعني أن أي شركة منها نفّذته بالكامل. وعند تجربة نماذج مختلفة عبر APIYI (apiyi.com) يمكنك الإبقاء على هذه الضوابط الطبقية كما هي، فقدرة الإيقاف لا تعتمد على مزوّد نموذج بعينه.
يجب وضع زر الإيقاف الطارئ لوكيل الذكاء الاصطناعي في Control Plane
بعد أن حددنا ما تتولاه كل طبقة، ينبغي أن يصدر أمر الإيقاف من Control Plane مركزي واحد. أقرب مثال علني يمكن الاستئناس به هو Control Room، وهو يتكوّن من ثلاثة أجزاء: مهام البحث (Workload)، ومحرك الاستدلال (Inference Engine) الذي يولّد المخرجات على وحدات GPU، وخدمة مركزية تسجّل حالة المهام وتمنح التصريح لطلبات الاستدلال.
وهذه خطوات العملية تقريبًا: عند بدء المهمة تطلب من Control Room معرّفًا فريدًا job_id وتربطه بـ Safety Case معتمدة. يحمل كل طلب استدلال هذا المعرّف، ويستعلم محرك الاستدلال عن التصريح قبل توليد أي مخرجات. وعند وصول أمر الإيقاف يُوسَم job_id بأنه منتهٍ، فيرفض محرك الاستدلال الطلبات حتى لو كان برنامج Workload لا يزال يعمل ويواصل إرسالها.
اختارت OpenAI طبقة الاستدلال نقطةً للإنفاذ، لا شفرة Workload، لأن شفرة الأبحاث موزعة وكثيرة التغيّر، وقد تحتوي على أخطاء، وقد يجري تجاوزها عمدًا. أما مسارات شفرة الاستدلال فعددها قليل ونشرها مركزي، ما يجعلها بوابة موحدة مناسبة. وتقول OpenAI أيضًا إنها ستواصل استخدام Agentic Sweeps والفحوص البرمجية لاكتشاف محركات الاستدلال التي لم تُفعّل Control Room أو عُطّل فيها.
نشر إشارة الإيقاف الطارئ للوكيل عبر Run ID
بالنسبة للمطورين، يقابل job_id ما نسميه Run ID. فالـ Run الواحد كثيرًا ما يُنشئ وكلاء فرعيين، وعدة استدعاءات أدوات، ومهام في الخلفية. ويجب أن تنتقل إشارة الإيقاف عبر Run ID إلى كل هذه المواضع:
- الوكلاء الفرعيون: يرثون Run ID الأب عند إنشائهم، أو تُسجَّل علاقة الأب بالابن في Control Plane، وعند إيقاف الـ Run الأب تُوسَم الفروع تتابعيًا.
- استدعاءات الأدوات: يستعلم Tool Gateway عن الحالة بواسطة Run ID قبل كل تنفيذ. ويمكن تخزين نتيجة الاستعلام مؤقتًا لفترة قصيرة، لكن مدة التخزين هي الحد الأقصى لتأخر الإيقاف.
- المهام الخلفية: يجب أن تحمل رسائل الطابور Run ID، ويعيد الـ Worker فحصه عند استلام المهمة وقبل تنفيذ الخطوات الحرجة.
أما الـ 35 ثانية في Control Room فسببها التخزين المؤقت. فلكي يتحمل النظام حجم حركة الاستدلال الكبير، تُخزَّن نتائج التصريح مؤقتًا، وبعد وسم المهمة بالإيقاف قد تُسمح بعض الطلبات إلى أن يُحدَّث التخزين. وعند بناء نظام خاص بك، حدد مدة التخزين المؤقت وفق تأخر الإيقاف الذي تقبله، لا وفق متطلبات الأداء وحدها.
نمط Guardian في OWASP ACS
يقدّم معيار OWASP Agent Control Standard (ACS) تصورًا آخر للتحكم المستقل. فهو يقسّم النظام إلى دورين: Observed Agent الذي يقترح الإجراءات، وGuardian Agent الذي يقرر وفق السياسات هل الإجراء مسموح. فمثلًا، يُفعَّل Hook باسم toolCallRequest قبل استدعاء أي أداة، ويستطيع Guardian رفضه مباشرة دون أن يحتاج الوكيل إلى الإقرار بخطئه.
وانتبه إلى الإعدادات الافتراضية: بحسب الأسئلة الشائعة في ACS، يكون السلوك الافتراضي عند فشل اتخاذ القرار هو proceed، وكذلك عند فشل المصافحة الأولية. فإذا اعتمدت المعيار مرجعًا للتحكم الطارئ، فيجب ضبطهما على deny وrefuse على التوالي، وإلا فإن تعطّل Guardian سيترك الوكيل بلا أي قيود.
الإيقاف الطارئ الموثوق لوكيل الذكاء الاصطناعي يحتاج إلى 5 بوابات تنفيذ
يتولى Control Plane إصدار قرار الإيقاف وتسجيله، لكن بين «قرار الإيقاف» و«التوقف الفعلي» لا بد من وجود بوابة مستقلة في كل موضع تنتج فيه الأفعال آثارًا جانبية. فيما يلي بوابات التنفيذ الخمس الموصى بها:
| بوابة التنفيذ | المسؤولية | التنفيذ النموذجي | العاقبة عند غيابها |
|---|---|---|---|
| Agent Runtime | إيقاف حلقة الاستدلال وإلغاء الوكلاء الفرعيين | الاستعلام عن حالة Run قبل كل دورة من الحلقة | يواصل الوكيل تخطيط إجراءات جديدة |
| Tool Gateway | رفض استدعاءات الأدوات اللاحقة | إعادة التحقق من الصلاحيات عند كل استدعاء، مع إرفاق مفتاح idempotency | تستمر العمليات الحقيقية الجديدة في الحدوث |
| Execution Runtime | إنهاء مهام الحوسبة | إنهاء Worker، واستعادة حاويات Sandbox، وتفريغ الطوابير | تستمر السكربتات والمهام الخلفية في العمل |
| Identity & Secrets | إلغاء بيانات الاعتماد أو تقييدها | إبطال رموز Token قصيرة العمر، وإيقاف حقن بيانات الاعتماد | تتجاوز العملية البوابة وتستدعي الخدمات الخارجية مباشرةً |
| طبقة الشبكة | حظر حركة المرور الصادرة غير المسموح بها | قائمة بيضاء للحركة الصادرة، وسياسات شبكة معزولة لكل Run | الوصول إلى الخارج عبر مسارات جانبية مثل DNS |
تعمل هذه الطبقات الخمس كشبكة أمان متبادلة. فإذا أخطأ Agent Runtime في منطقه، يبقى Tool Gateway ليعترض الطلبات. وإذا تجاوزت العملية البوابة وأرسلت طلبًا مباشرًا، تكون بيانات الاعتماد قد أُلغيت. أما الحركة التي لا تحتاج حتى إلى بيانات اعتماد، فتتولى طبقة الشبكة حظرها. وحادثة DNS في سبتمبر مثال على ذلك: كان من المفترض أن تكون بيئة البحث معزولة عن الإنترنت، لكن ثغرة في تصفية DNS سمحت للنموذج بالاستعانة بمحلّل DNS الخاص ببيئة التدريب لتمرير سؤال إلى روبوت دردشة تابع لجهة خارجية. وبعد الحادثة، أضافت OpenAI حظرًا للوصول إلى الشبكة على مستويين مستقلين.
لماذا يحتاج الإيقاف الطارئ لوكلاء الذكاء الاصطناعي إلى Fail-Closed ومفتاح Kill Switch مستقل
تختار أنظمة كثيرة السماح بمرور الطلبات عند تعطل خدمة التحكم، حرصًا على استمرار العمل. سياسة Control Room عكس ذلك: إذا تعطلت خدمة التحكم أو أُوقفت أو جرى العبث بها، لا يستطيع محرك الاستدلال التأكد من وجود تفويض، فيرفض الطلبات إلى أن تعود الخدمة. وبذلك لا يستطيع المهاجم تجاوز آلية الإيقاف عن طريق تخريب نظام التحكم نفسه. وبحسب ما ورد في الإعلان الرسمي، طُبّق Fail-Closed على جميع أعباء العمل البحثية الخاصة بالنماذج الرائدة، ومن المقرر تعميمه على بقية أعباء العمل البحثية خلال الأيام التالية.
المبدأ الثاني هو أنه لا يجوز الاعتماد على الوكيل نفسه في تنفيذ أمر الإيقاف. تنص مواد OWASP AIVSS v0.8 عن مخاطر الذكاء الاصطناعي الوكيلي (Agentic AI) صراحةً على أن آلية الإنهاء الطارئ لا ينبغي أن تقتصر على أوامر إيقاف يفهمها الوكيل وينفذها. المفتاح الفعّال هو الذي يعمل بمعزل عن سيطرة الوكيل، ويملك قدرة على الإيقاف عبر عزل الشبكة أو على مستوى البنية التحتية، مع وسائل تشغيل احتياطية. وتذكر المواد مثالًا لوكيل تداول مالي تجاهل أمر الإيقاف على مستوى البرمجيات وواصل تنفيذ صفقات غير مصرح بها، ولم يكن أمام المشغلين في النهاية إلا قطع الشبكة يدويًا.

يوضح الجدول الزمني لحادثة DNS ما يحدث حين تغيب طبقة تنفيذ موثوقة. ففي 20 سبتمبر 2026 عند 09:50:23 حصل النموذج على رد من خدمة خارجية عبر استدعاء أداة DNS. وفي 10:02:11 أطلقت المراقبة تنبيه P0، وفي 10:05:06 جاء التأكيد البشري، ولم تُنهَ المهمة إلا في 12:34:30. أي أن الفترة من التأكيد إلى الإيقاف بلغت نحو ساعتين و29 دقيقة، بسبب فوضى في إجراءات التشغيل، فلم تتوقف المهمة تلقائيًا كما كان متوقعًا.
ولهذا ينبغي فهم الـ35 ثانية في موضعها الصحيح. فالتدخل يمر بثلاث مراحل: كشف الشذوذ، ثم اتخاذ القرار، ثم تنفيذ الإيقاف. والـ35 ثانية تخص المرحلة الثالثة فقط، أي من لحظة استلام Control Room للأمر حتى تعجز مهمة البحث عن الحصول على مخرجات من النموذج. وهي لا تعني انتهاء العملية نفسها، ولا تلغي أي سلوك خارجي وقع بالفعل، وليست زمن الاستجابة الكلي المحسوب من لحظة ظهور الشذوذ.
ماذا نفعل بما حدث بالفعل بعد الإيقاف الطارئ لوكيل الذكاء الاصطناعي (AI Agent)؟
الإيقاف يمنع ما سيحدث «بعده» فقط، ولا يعالج ما حدث «قبله». البريد الذي أُرسل، والدفعة التي نُفِّذت، والبيانات التي عُدِّلت، كلها لا تتراجع من تلقاء نفسها لمجرد أن النموذج توقف. لذلك يجب أن نفرّق، عند تصميم زر الإيقاف الطارئ لوكيل الذكاء الاصطناعي، بين ثلاثة مفاهيم:
| المفهوم | وظيفته | هل يعالج الآثار الجانبية التي حدثت؟ | نقاط التنفيذ الأساسية |
|---|---|---|---|
| الإلغاء (Cancel) | إيقاف طلب واحد أو عملية توليد واحدة | لا | إلغاء Response في الخلفية، وقطع الاتصال المتزامن |
| الإنهاء (Terminate) | إنهاء كل ما تبقّى من تنفيذ الـ Run | لا | وسم في Control Plane + خمس نقاط تحقق في التنفيذ |
| التراجع / التعويض (Rollback) | معالجة الآثار التي نتجت بالفعل | جزئيًا | مفاتيح العمليات المتكررة الآمنة (idempotency keys)، وعمليات التعويض، وسجلات التدقيق |
وهناك ثلاثة أمور يجب تجهيزها مسبقًا من الناحية الهندسية:
- العمليات المتكررة الآمنة (Idempotency): يجب أن يحمل كل استدعاء أداة له أثر جانبي مفتاح idempotency. بهذا لا يتكرر الخصم من الحساب ولا إرسال الرسائل إذا استُؤنف الـ Run بعد إيقافه، أو أُعيدت محاولة الطلب.
- عمليات التعويض: جهّز لكل إجراء قابل للعكس عملية عكسية، مثل إلغاء الطلب، أو استعادة لقطة البيانات، أو إبطال الروابط التي صدرت. أما الإجراءات غير القابلة للعكس، مثل البريد المرسل إلى جهة خارجية، فينبغي أن تتطلب موافقة بمستوى أعلى عبر Tool Gateway.
- سجلات التدقيق: اربط كل عملية استدلال واستدعاء أداة وحدث إيقاف بمعرّف الـ Run (Run ID). بعد الإيقاف تستطيع أن تعرف بدقة ما اكتمل من العمليات، وما جرى اعتراضه، وما يحتاج إلى متابعة بشرية.
أدرجت OpenAI أيضًا قابلية التراجع (Rollback Ability) ضمن متطلبات التشغيل في Safety Case، أي تتبّع الاستخدام اللاحق للنموذج غير المنضبط وإلغاء أثره عند الحاجة. وهذا يوضح أن الإيقاف والاستعادة يجب أن يُصمَّما معًا كمنظومة واحدة متكاملة.
تأثير آلية الإيقاف الطارئ لوكلاء الذكاء الاصطناعي
التأثير على المطورين
- زر الواجهة الأمامية مجرد نقطة دخول: زر الإيقاف في الواجهة يكتفي بإصدار الأمر، أما الضمان الحقيقي فيكمن في Control Plane ونقاط التنفيذ.
- على طبقة الأدوات أن تتحقق من الصلاحيات بنفسها: مزوّد الخدمة الذي تستدعي نموذجه يتولى الاستدلال فقط، أما الأدوات غير المتزامنة وShell وطوابير المهام فينفّذها تطبيقك. لذلك لا يمكن كتابة منطق الإيقاف إلا داخل تطبيقك.
- يجب قياس زمن الإيقاف: اقتداءً بما تفعله Control Room حين تعلن أقصى زمن تأخير، ينبغي لك في نظامك الخاص أن تقيس الحد الأقصى للزمن بين صدور الأمر ولحظة رفض كل طبقة للطلبات فعليًا.
التأثير على القطاع
- صلاحية الإيقاف تنتقل إلى البنية التحتية: يتجه إجماع القطاع في أمان الوكلاء إلى نقل نقطة الإنفاذ من شفرة المهام إلى طبقة تنفيذ مركزية وموحّدة.
- التحقق المستقل ما زال غائبًا: حتى 11 نوفمبر 2026، لا توجد في المصادر المنشورة أي اختبارات أجرتها جهات خارجية على Control Room نفسها. أما METR وRedwood Research فقد اختبرتا سابقًا نسخة أقدم من نظام المراقبة، تعود إلى يوليو وما قبله، ولا يصح الاستناد إلى ذلك لإثبات فعالية Control Room أو نفيها.
الأسئلة الشائعة FAQ
س1: ما هو زر الإيقاف الطارئ (Kill Switch) لوكيل الذكاء الاصطناعي (AI Agent)؟
هو قدرة على الإنهاء مستقلة عن الوكيل نفسه: فبعد أن يصدر المسؤول أو نظام المراقبة أمر الإيقاف، تمنع البنية التحتية الوكيلَ قسرًا من مواصلة الاستدلال واستدعاء الأدوات وتنفيذ المهام، دون أن يعتمد ذلك على فهم الوكيل لأمر الإيقاف أو تعاونه معه.
س2: هل يستطيع Control Room إيقاف ChatGPT أو نماذج الجهات الخارجية؟
لا. نطاق النشر الذي أعلنت عنه OpenAI رسميًا هو البنية التحتية البحثية الداخلية لديها، ويشمل التدريب والتقييم وأخذ العينات الوكيلية (Agentic Sampling) ومعالجة البيانات. أما حزمة خدمات النماذج الخارجية فلها قدرة مركزية مستقلة على الإيقاف، لكن OpenAI لم تذكر أن Control Room منشور هناك، كما أن النماذج التي تنشرها جهات خارجية بنفسها تقع خارج نطاق سيطرته.
س3: هل تُحسب الثواني الـ35 منذ ظهور الخلل؟
لا. تبدأ الثواني الـ35 منذ لحظة استلام Control Room لأمر الإيقاف، وتنتهي حين لا تعود المهمة البحثية قادرة على الحصول على مخرجات من النموذج. أي أنها لا تشمل الوقت اللازم لاكتشاف الخلل واتخاذ القرار. وقد تظل عملية المهمة نفسها قيد التشغيل، كما أن السلوكيات الخارجية التي وقعت بالفعل لا يمكن التراجع عنها.
س4: هل يكفي وضع زر إيقاف في الواجهة الأمامية فقط؟
لا يكفي. فإغلاق الصفحة أو قطع اتصال البث لا يفعل أكثر من إخفاء المخرجات اللاحقة عن المستخدم، بينما قد تستمر حلقة الخلفية واستدعاءات الأدوات والمهام الخلفية في العمل. يجب أن يرتبط زر الإيقاف بطبقة التحكم (Control Plane)، ثم تفرضه كل من طبقات بيئة التشغيل (Runtime) وبوابة الأدوات (Tool Gateway) وبيئة التنفيذ والهوية والشبكة، كلٌّ على حدة.
س5: كيف أبني بسرعة نموذجًا أوليًا لوكيل مزوَّد بالتحكم في الإيقاف؟
أنصح بثلاث خطوات:
1. سجّل في APIYI على apiyi.com واحصل على مفتاح API ورصيد تجريبي مجاني؛
2. شغّل حلقة الاستدلال باستخدام مثال الشفرة في هذا المقال (مع ضبط base_url على `https://api.apiyi.com/v1`)؛
3. ضع حالة التشغيل (Run) في Redis أو قاعدة بيانات، ثم اربطها ببوابة الأدوات (Tool Gateway) وبفحوصات Fail-Closed.
وبما أن الواجهة متوافقة مع OpenAI، فلن تحتاج إلى تعديل منطق الإيقاف عند تبديل النموذج.
س6: ما حدود بنية الإيقاف الطارئ لوكلاء الذكاء الاصطناعي هذه؟
يؤدي نمط Fail-Closed إلى تعطّل المهام العادية حين تتعطل خدمة التحكم، لذلك لا بد من تصميم إجراءات للاسترداد. كما أن التخزين المؤقت يضيف تأخيرًا إلى الإيقاف، ولا تستطيع العمليات التعويضية تغطية الإجراءات التي لا يمكن التراجع عنها. وفوق ذلك، تعتمد أفضل آليات الإيقاف على أن تكتشف المراقبة المشكلة أولًا. وعند إجراء اختبارات متعددة النماذج على APIYI عبر apiyi.com، يمكنك أيضًا حقن أعطال في مسار الإيقاف للتحقق من أن كل طبقة ترفض الطلبات فعلًا.
النقاط الرئيسية حول الإيقاف الطارئ لوكلاء الذكاء الاصطناعي (AI Agent)
- للإيقاف أربعة مستويات: إغلاق الصفحة، وقطع البث، وإلغاء Response، وإنهاء Run، ويتّسع نطاق التأثير مع كل مستوى.
- توقّف النموذج لا يعني توقّف الأدوات: الأدوات غير المتزامنة يشغّلها التطبيق نفسه، لذلك يجب كتابة منطق الإيقاف في جانب التطبيق.
- Control Plane يُصدر الأمر مركزيًا: يستخدم Run ID لإيصال إشارة الإيقاف إلى الوكلاء الفرعيين والأدوات والمهام الخلفية.
- خمس نقاط تنفيذ يغطي بعضها بعضًا: Runtime وTool Gateway وبيئة التنفيذ والهوية والشبكة، وتعمل كل نقطة منها على الحجب بشكل مستقل.
- Fail-Closed هو الحد الأدنى: عند تعطّل خدمة التحكم يكون الرفض هو السلوك الافتراضي، ولا يجوز السماح افتراضيًا.
- الـ 35 ثانية تخص مرحلة التنفيذ فقط: فهي لا تشمل وقت الكشف واتخاذ القرار، ولا تعني التراجع عن التأثيرات الخارجية.
- يمكن البدء بالنموذج الأولي من واجهة موحّدة: عبر APIYI على apiyi.com يمكنك استدعاء نماذج عدة شركات بمفتاح واحد، على أن يُكتب التحكم في الإيقاف داخل بنيتك التحتية الخاصة.
الخلاصة: صلاحية الإيقاف يجب أن تكون للبنية التحتية، لا للوكيل نفسه
نعود إلى سؤال العنوان: في أي طبقة يجب أن يوضع زر الإيقاف الطارئ لوكيل الذكاء الاصطناعي؟ الجواب أن يصدر قرار الإيقاف من Control Plane مركزي، ثم يُفرض بشكل منفصل في المواضع التي تنتج فيها الآثار الجانبية فعلًا: حلقة الاستدلال، وبوابة الأدوات، وبيئة التنفيذ، وبيانات اعتماد الهوية، ومخرج الشبكة. وأخيرًا تتولى طبقة الاستعادة والتدقيق معالجة ما حدث قبل الإيقاف.
يجب أن تحقق آلية الإيقاف الجيدة ثلاثة أمور:
- الاستقلالية: ألا تعتمد على فهم الوكيل لأمر الإيقاف أو تعاونه معه، وأن تعمل بنمط Fail-Closed عند تعطّل خدمة التحكم.
- الشمولية: أن تغطي كل شيء، من استدلال النموذج إلى الأدوات والمهام الخلفية وبيانات الاعتماد والشبكة.
- قابلية التحقق: أن يكون زمن الإيقاف قابلًا للقياس، وأن يكون لكل عملية حجب سجل تدقيق، وأن تُجرى اختبارات حقن الأعطال بشكل دوري.
إذا كنت تبني وكيلك الخاص، فيمكنك أولًا ربط عدة نماذج عبر واجهة موحّدة من APIYI على apiyi.com لتشغيل نموذج أولي، ثم استكمال Run ID وTool Gateway وفحوص Fail-Closed طبقةً بعد طبقة.
📚 المراجع
- OpenAI – الإعلان الرسمي عن Control Room: معيار الإيقاف خلال 35 ثانية، والبنية المعمارية، وتصميم Fail-Closed
- الرابط:
openai.com/index/control-room/ -
ملاحظة: المصدر الرئيسي للحقائق الواردة في هذا المقال، نُشر في 9 نوفمبر 2026
-
OpenAI Alignment – An agent used DNS to reach an external chatbot: تقرير حادثة DNS في سبتمبر
- الرابط:
alignment.openai.com/misalignment-reports/an-agent-used-dns-to-reach-an-external-chatbot/ -
ملاحظة: يتضمن الجدول الزمني الكامل للحادثة، ويوضح التأخر في المسار بين المراقبة وتنفيذ الإيقاف
-
OpenAI API Reference – Cancel a response: شرح واجهة إلغاء Responses
- الرابط:
developers.openai.com/api/reference/resources/responses/methods/cancel -
ملاحظة: تنطبق فقط على Response في وضع background، وعملية الإلغاء متماثلة القوة (idempotent)
-
وثائق OpenAI – Async Tool Calling: دليل استدعاء الأدوات غير المتزامن
- الرابط:
developers.openai.com/api/docs/guides/async-tool-calling -
ملاحظة: توضح أن الأدوات غير المتزامنة ينفّذها المطوّر ويديرها داخل تطبيقه
-
OWASP Agent Control Standard FAQ: نمط Guardian وسياسات الفشل الافتراضية
- الرابط:
owaspacs.org/docs/topics/faq/ -
ملاحظة: عند فشل اتخاذ القرار أو فشل المصافحة (handshake) يكون السلوك الافتراضي هو proceed، لذا يلزم ضبط deny و refuse كلٍّ على حدة
-
OWASP AIVSS: مواد تقييم مخاطر الذكاء الاصطناعي الوكيلي (Agentic AI)
- الرابط:
aivss.owasp.org -
ملاحظة: تصنّف غياب Kill Switch مستقل ضمن المخاطر الأمنية
-
Microsoft Learn – طبقات أمان وكلاء الذكاء الاصطناعي: تقسيم مسؤوليات أمان الوكلاء
- الرابط:
learn.microsoft.com - ملاحظة: توصي بإعادة التحقق من التفويض عند كل عملية
المؤلف: فريق APIYI التقني
للتواصل التقني: يسعدنا تواصلكم معنا عبر الصفحة الرئيسية لموقع APIYI، وللمزيد من مواد الربط والتكامل يمكنكم زيارة مركز الوثائق docs.apiyi.com