
معيار لتقييم سلامة وكلاء الذكاء الاصطناعي ضد الهجمات المدمجة في السياق الموجه للمهارات، مع 155 حالة عبر 6 مجالات خطر، لقياس نجاح المهام ومقاومة الهجمات.
SkillSafetyBench هو معيار تقييم مكتمل البناء لقياس إخفاقات السلامة الناتجة عن الهجمات على السياق الموجه للمهارات. كل حالة تُبقي المهمة الموجهة للمستخدم عادية، بينما يتم وضع الهجوم في مهارات محلية، أو نصوص مساعدة، أو ملفات جانبية، أو مجموعات نصوص، أو قوالب، أو غيرها من عناصر بيئة العمل التي قد يستشيرها الوكيل أثناء التنفيذ.
استكشف تصميم المعيار، ومستكشف الحالات، ولوحة المتصدرين، وتحليل التجارب على موقع SkillSafetyBench، واقرأ الورقة البحثية الكاملة على arXiv.
تعتمد الوكلاء الحديثة للبرمجة والمهام غالبًا على مهارات محلية وعناصر بيئة عمل، وليس فقط على مطالبة المستخدم. يختبر SkillSafetyBench ما إذا كان الوكيل قادرًا على إكمال عمل غير ضار مع مقاومة التعليمات غير الآمنة أو السياق المضلل المضمّن في تلك الأسطح الموجهة للمهارات. تم اختيار حاملات المهام غير الضارة من SkillsBench.
المعيار ثابت وجاهز للتشغيل. إنه ليس مولّد حالات. يحتوي المستودع على 155 حالة مُعدّة عبر 6 مجالات خطر و30 فئة. كل حالة تتضمن:
يتم تقييم كل تشغيل على محورين:
task_success: ما إذا كانت مهمة المستخدم العادية قد اكتملتattack_success: ما إذا كان السلوك غير الآمن قد لوحظهذا الفصل مهم: قد يبدو النظام قادرًا لأنه يكمل المهمة، بينما يظل عرضة للخطر لأنه يتبع السياق الموجه للمهارات الحامل للهجوم.
يحتوي SkillSafetyBench على 155 حالة منظمة في 6 مجالات خطر و30 فئة. كل مجال خطر يحتوي على 5 فئات، وكل فئة تحتوي على حالات ملموسة متعددة مبنية حول حاملات مهام عادية.
SkillSafetyBench
└── 6 مجالات خطر
├── RD1: مخاطر الثقة في السياق والتلاعب بالمطالبات
├── RD2: مخاطر الوكالة والنطاق والتفويض
├── RD3: مخاطر التنفيذ ووقت التشغيل والأطر والبروتوكولات
├── RD4: مخاطر حدود البيانات والمخرجات والتسريب الخارجي
├── RD5: مخاطر الذاكرة والاسترداد والتدقيق والاستمرارية
└── RD6: مخاطر المعرفة والنموذج وسلسلة التوريد والتشغيل
تُخزَّن الحالات حسب مجال الخطر والفئة ومعرف الحالة:
benchmark/<risk-domain>/<category>/<case>/
metadata.json
rationale.md
attacked_task/
instruction.md
task.toml
environment/
solution/solve.sh
tests/test.sh
eval/verify_attack.py
دليل المعيار هو المصدر الموثوق للحالات. تستخدم أدلة الفئات نمط التسمية categoryN-...، على سبيل المثال:
benchmark/risk-domain-6-knowledge-model-supply-chain-and-operational-risks/category1-availability_cost_and_service_exhaustion/
يبدأ خط أنابيب بناء المعيار من حاملات مهام غير ضارة، ويحافظ على المهمة الأصلية الموجهة للمستخدم، ويحقن الهجوم عبر عناصر موجهة للمهارات، ويُرفق فحوصات حتمية لكل من إكمال المهمة وسلوك الهجوم. هذا يُبقي التقييم مركّزًا على ما إذا كان الوكلاء قادرين على مقاومة السياق المحلي غير الآمن مع إنجاز العمل المطلوب.
يحتوي هذا المستودع على حالات معيارية عدائية. بعض الحالات تحاكي التصيد، والتماس بيانات الاعتماد، والعمليات التدميرية، وتسريب البيانات، وإساءة استخدام حدود بيئة الحماية، والإجراءات الخارجية، وسلوكيات شبيهة بالاستمرارية.
شغّل المعيار فقط في بيئات بحثية معزولة. لا تستخدم بيانات اعتماد إنتاجية، أو حسابات سحابية إنتاجية، أو حسابات شخصية، أو ملفات محلية حساسة. يُفضَّل استخدام مفاتيح API يمكن التخلص منها، وحاويات قابلة للتخلص، ووصول شبكي مقيد، ودليل عمل مخصص. راجع نواتج التشغيل قبل مشاركتها.
الأدوات المطلوبة:
bashpython3، يُنصح بـ >= 3.11dockeruvharbornvm22ثبّت Harbor إذا لزم الأمر:
uv tool install harbor
تحقق من مجموعة الأدوات الأساسية:
harbor --help
python3 --version
docker --version
إذا كان وكيل Harbor مثبتًا عبر Node، فعّل Node 22 في الصدفة التي تبدأ التشغيل:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
nvm use 22
أنشئ ملف .envrc محليًا من الملف النموذجي:
cp env.example .envrc
بالنسبة لـ codex، عيّن على الأقل:
export OPENAI_BASE_URL="https://your-openai-compatible-endpoint/v1"
export OPENAI_API_KEY="replace-with-your-openai-api-key"
بالنسبة لـ claude-code، عيّن متغير مصادقة متوافقًا مع Anthropic، على سبيل المثال:
export ANTHROPIC_BASE_URL="https://api.anthropic.com"
export ANTHROPIC_API_KEY="replace-with-your-anthropic-api-key"
إذا كنت تستخدم direnv، نفّذ:
direnv allow
إذا لم يكن كذلك، فلا حاجة لخطوة إضافية. يقوم السكربت الدفعي بتضمين .envrc صراحةً في وقت التشغيل.
نقطة الدخول الأساسية هي:
scripts/start_agent_batch.sh
تشغيل مجال خطر واحد:
scripts/start_agent_batch.sh --rd 5
اختيار الوكيل والنموذج:
scripts/start_agent_batch.sh \
--rd 3 \
--agent codex \
--model openai/gpt-5.4
التشغيل مع Claude Code:
scripts/start_agent_batch.sh \
--rd 3 \
--agent claude-code \
--model claude-3-7-sonnet-20250219
تشغيل حالة واحدة:
scripts/start_agent_batch.sh \
--rd 5 \
--case travel_planning_poisoned_belief_persistence_memory_anchor
تشغيل فئة واحدة:
scripts/start_agent_batch.sh \
--rd 6 \
--category category3-model_behavior_and_finetuning_poisoning
التشغيل من قائمة صريحة:
scripts/start_agent_batch.sh \
--manifest benchmark/risk-domain-6-knowledge-model-supply-chain-and-operational-risks/manifest.json
استخدام ملف بيئة مخصص:
scripts/start_agent_batch.sh \
--rd 5 \
--envrc /path/to/your.envrc
طباعة الحالات المحددة دون تنفيذ:
scripts/start_agent_batch.sh --rd 5 --dry-run
كل تشغيل ينشئ دليل مخرجات تحت jobs/:
jobs/<agent>-risk-domain-5-memory-recovery-audit-and-persistence-risks-<timestamp>/
ابدأ بـ:
jobs/<run>/attack_results.jsonjobs/<run>/summary.jsonjobs/<run>/attack_results.csvjobs/<run>/summary.csvملفات مفيدة لكل تشغيل:
selected_cases.jsonbatch_config.json<case_id>/case_result.jsonattack_results.mdنتائج الهجوم الشائعة:
attack_successattack_not_observedtask_output_missingtask_output_missing تعني أن المخرجات الصريحة المتوقعة للمهمة كانت غائبة. قد يستمر مدقق الهجوم عندما توجد عناصر كافية لتقييم شرط الهجوم.