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

1. تهديد حرمان المحفظة في الذكاء الاصطناعي

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

2. سقف تكلفة لكل تشغيل بـ cap_cost

حكم cap_cost لجدار الحماية قاطع دائرة للحلقات المنفلتة. تؤلّفه كقاعدة بسقف سنتات لكل تشغيل؛ يجمع المحرك إنفاق تشغيل الوكيل المتراكم، وبمجرد أن يتجاوز التشغيل السقف، يحلّ الحكم إلى deny — يُحجب كل استدعاء أداة لاحق في ذلك التشغيل. cap_cost هو سقف ما قبل الإرسال: يقيّم قبل أن يصل الاستدعاء إلى الأداة، فيوقف الاستدعاء المكلف التالي بدلاً من ردّ واحد جرى أصلاً. سقف شامل نموذجي على كل أداة:
{
  "priority": 50,
  "label": "cap runaway spend at $5 per run",
  "tool_name_glob": "*",
  "verdict": "cap_cost",
  "cap_cost_cents": 500
}
تحت السقف يُسمح بالاستدعاء؛ وفوقه يُرفض التشغيل بـ HTTP 400 firewall_blocked — مُعلَّماً skip-retry، فلا يمكن للحلقة الطرق حول الرفض. السقف هو لكل تشغيل وكيل ومجموع عبر سياسة مساحة عملك كلها، فلا يمكن لمحادثة منفلتة واحدة أن تنزف في ميزانية أخرى.
يقرأ cap_cost الإنفاق الجاري من سجلات طلباتك. أبقِ التقاط سجل الطلبات مفعّلاً لمساحة العمل كي يكون لتجميع الإنفاق الجاري صفوف يجمعها — وإلا فإن تقدير الإنفاق السابق يكون تحفّظياً 0 ولا يستطيع السقف رؤية ما كلّفه التشغيل أصلاً.
انظر مرجع قواعد جدار الحماية للغة المطابقة الكاملة وأين يجلس cap_cost بين الأحكام الأخرى.

3. ميزانية صلبة لكل مفتاح بـ credit_limit_usd

cap_cost يحدّ تشغيلاً واحداً. ولحدّ مفتاح — كل تشغيل يصدره على الإطلاق — اضبط credit_limit_usd على مفتاح API. إنه سقف صلب بالدولار على إنفاق ذلك المفتاح مدى الحياة: تحوّله البوابة إلى حصة المفتاح المتبقّية، وبمجرد أن ينفق المفتاح مخصّصه، تُرفض استدعاءات الترحيل اللاحقة بسبب نقص الائتمان. 0 يعني غير محدود. اقرنه بنطاقات المفتاح الأخرى ليكون مفتاح مسرَّب محدوداً على كل محور دفعةً واحدة:

credit_limit_usd

سقف إنفاق صلب بالدولار للمفتاح (0 = غير محدود).

expired_time

طابع انتهاء تلقائي (-1 = أبداً). مفتاح قصير العمر يحدّ نافذة نصف قطر الانفجار.

allow_ips

ثبّت المفتاح على عناوين IP مصدر معروفة — مفتاح مسرَّب عديم الفائدة خارج الشبكة.

model_limits

قيّد المفتاح على نماذج محدّدة، فلا يستطيع الوصول إلى الأغلى على الإطلاق.
امنح كل وكيل مفتاحه الضيّق النطاق بـ credit_limit_usd لا ينبغي أن يتجاوزه بشكل مشروع أبداً. الحدّ هو الميزانية، لا تخميناً لسلوك المهاجم — حتى مفتاح مخترَق بالكامل يتوقّف عند السقف.
اضبط كل هذا من محرّر المفتاح في وحدة التحكم (أو API الرموز) تحت جلستك — هذه إعدادات مفتاح، لا استدعاءات ترحيل. ووحدها طلبات الاستدلال /v1/* تستخدم مفتاح sk-orca-... نفسه. يسري تعديل الحدّ في الطلب التالي للمفتاح؛ بلا إعادة نشر.

4. التقط الارتفاع الذي لم تتوقّعه: شذوذات التكلفة

سقف ساكن يوقف إنفاقاً توقّعته. ويلتقط كشف الشذوذ في جدار الحماية الإنفاق الذي لم تتوقّعه. يتعلّم الشكل الطبيعي لاستخدام الأدوات في كل مساحة عمل مقابل خط أساس لساعة الأسبوع (متوسط متحرك على 14 يوماً) ويُظهر الانحرافات على تغذية يقرأها Member:
الشذوذما يعلّمه
burn_spikeتكلفة أداة أعلى بكثير من تكلفة خط أساسها المُتعلَّم — إشارة حرمان المحفظة.
rate_spikeحجم استدعاء أعلى بكثير من خط الأساس — تفرّع وطوفان.
retry_loopنفس الأداة بنفس الوسائط تتكرّر في نافذة ضيّقة — الحلقة المنفلتة الكلاسيكية.
فـ “هذه الأداة أحرقت 40× تكلفتها المعتادة هذه الساعة” يبرز حتى حين كان كل استدعاء فردي مسموحاً به بالسياسة. يمكنك تأجيل شذوذ لمدة تصل إلى 7 أيام بينما تحقّق.
كشف الشذوذ هو إنذارك المبكر؛ وcap_cost وcredit_limit_usd هما التوقّفان الصلبان. راقب التغذية لاكتشاف أين يعيش إنفاقك الحقيقي، ثم اكتب سقفاً حوله.

5. تجميعها معاً

طبّق الثلاثة بالطبقات كي لا يصل منفلتٌ إلى الفاتورة أبداً:
الضابطالنطاقمتى يُطلق
قاعدة cap_costتشغيل وكيل واحديتجاوز إنفاق التشغيل المتراكم سقف السنتات
credit_limit_usdمفتاح واحد، مدى الحياةيبلغ إنفاق المفتاح الكلي سقفه بالدولار
burn_spike / retry_loopمساحة العمل، مُتعلَّمينحرف الإنفاق أو نمط التكرار عن خط الأساس
خط أساس عملي: cap_cost لكل تشغيل على *، وcredit_limit_usd على كل مفتاح وكيل، وعادة فحص تغذية الشذوذ. اطرح سياسة cap_cost جديدة في وضع الظل أولاً — يسجّل [shadow] would deny دون حجب — كي تحجّم السقف مقابل حركة المرور الحقيقية قبل أن يعضّ.
يحدّ cap_cost وتغذية الشذوذ استدعاءات الأدوات والتشغيلات التي تعبر البوابة. أداة ينفّذها وكيل كلياً داخل عمليته الخاصة لا تصل إلى المحرك أبداً. وجّه استدعاءات الأدوات بوساطة النموذج وMCP عبر البوابة — وامنح كل مفتاح credit_limit_usd — كي يصمد السقف بغض النظر عن كيفية حلقات الوكيل.

6. تهديدات ذات صلة

حرمان المحفظة نادراً ما يصل وحده — الحلقة التي تحرق ميزانيتك غالباً ما يقودها شيء أعلى:

نظرة عامة على جدار الحماية

الأحكام، وكشف الشذوذ، ومستويات الاستقلالية، والقابلية للملاحظة.

المفاتيح المحددة النطاق والسياسات

كيف تتكامل حدود المفتاح، وحواجز الحماية، وسياسات جدار الحماية لكل مفتاح.