
كود القياس والدفاع لهجمات الذاكرة الدائمة على وكلاء استخدام الحاسوب بأسلوب OpenClaw، مع تخفيف تقسيم الذاكرة، وسيناريوهات الهجوم، ونصوص التقييم.
كود تجريبي لـ ZoneClaw: Mitigating Persistent Memory Attack by Establishing Memory-Zoning among OpenClaw-Style Computer-Use Agents.
يحتوي هذا المستودع على مهام المعيار، وتطبيقات الدفاع، ونصوص التقييم المستخدمة في الورقة البحثية. تدرس المعيار هجمات الذاكرة الدائمة عبر الجلسات في وكلاء استخدام الحاسوب من نمط OpenClaw. ويغطي فئتين من الهجمات:
يفصل ZoneClaw بين الملاحظات الخارجية المحتفظ بها والذاكرة الحاملة للصلاحية، ثم يستخدم وكلاء منفصلي الأدوار للمراقبة والتصنيف والتصرف بناءً على المعلومات الدائمة.
لا تتضمن هذه النسخة المقتصرة على الكود نتائج التجارب. النصوص الكاملة للورقة، وأدلة المدقق، والملخصات متاحة في مستودع المصنفات المرفق.
uvخصّص ما لا يقل عن 20 GB من المساحة الحرة على القرص للاعتماديات وصور Docker والتشغيلات المُنشأة. نوصي بـ 16 GB من الذاكرة العشوائية للتجارب المتوازية. يستغرق الإعداد الأولي عادةً من 10 إلى 20 دقيقة، اعتمادًا على الشبكة وذاكرة بناء Docker المؤقتة.
للتنزيل المجهول، استخرج ملف ZIP، وافتح طرفية في دليله الأعلى، ثم شغّل:
bash setup.sh
يجلب الإعداد اعتماديات OpenClaw وHarbor وWorkspaceBench المثبّتة مباشرةً من مستودعاتها العامة الأصلية. لا حاجة للوصول إلى المستودع الخاص الأصلي.
لنسخة Git، استبدل <repository-url> أدناه بعنوان استنساخ المستودع:
git clone --depth 1 --recurse-submodules --shallow-submodules \
<repository-url> ZoneClaw-code
cd ZoneClaw-code
bash setup.sh
يتحقق السكربت من الأدوات المحلية وخادم Docker، ويبني الصور المطلوبة، وينشئ .env من .env.example. يُنشئ OPENCLAW_GATEWAY_TOKEN محليًا؛ عدّل .env فقط لتعيين مفاتيح المزوّد اللازمة للتشغيل. لا تُودِع .env في المستودع.
| التجربة | مفاتيح API المطلوبة |
|---|---|
| النموذج الرئيسي Anthropic | ANTHROPIC_API_KEY |
| النموذج الرئيسي OpenAI | OPENAI_API_KEY |
| النموذج الرئيسي Z.AI | ZAI_API_KEY |
| النموذج الرئيسي Alibaba Qwen | ALIBABA_KEY |
| Watcher أو MELON مع نموذج رئيسي غير Anthropic | مفتاح النموذج الرئيسي وANTHROPIC_API_KEY |
| تقييمات سلطة WorkspaceBench والأداة الحميدة | OPENAI_API_KEY وANTHROPIC_API_KEY |
تُجري التجارب استدعاءات مدفوعة للمزوّد. ابدأ بتجربة واحدة للتحقق من المسار الكامل:
MODEL=anthropic/claude-sonnet-4-6 \
E2E=bcc-zoneclaw-userprompt N=1 P=1 bash bench.sh
تستخدم تجارب الورقة الرئيسية Claude Sonnet 4.6. بعد نجاح اختبار الدخان، أعد إنتاج الصف الكامل باستخدام:
MODEL=anthropic/claude-sonnet-4-6 \
E2E=bcc-zoneclaw-userprompt N=15 P=3 bash bench.sh
تُكتب المخرجات في runs/<timestamp>__e2e-<experiment>/. تطبع الأمر تفصيلًا لكل تجربة بعد التجميع؛ ويمكن عرض تشغيل موجود مرة أخرى باستخدام:
bash show-bench.sh runs/<run-directory>
تتبع التجارب الشاملة المسماة النمط:
<scenario>[-<defense>]-<setting>
| مصطلح الورقة | رمز الأمر |
|---|---|
| تسريب BCC | bcc |
| نسخ المحادثة | chat |
| إعادة توجيه المصدر | sr |
| إعادة توجيه السوق | market |
| تحديث مُفعّل من المستخدم | userprompt |
| تحديث دوري | heartbeat |
| بدون دفاع | احذف رمز الدفاع |
| Watcher بنمط ClawKeeper | auditor |
| فصل الصلاحيات | privsep |
| ClawGuard | clawguard |
| MELON | melon |
| ZoneClaw | zoneclaw |
أمثلة:
# Undefended BCC, user-triggered update
MODEL=anthropic/claude-sonnet-4-6 \
E2E=bcc-userprompt N=15 P=3 bash bench.sh
# ClawKeeper-style Watcher, periodic Chat Mirror update
MODEL=anthropic/claude-sonnet-4-6 \
E2E=chat-auditor-heartbeat N=15 P=3 bash bench.sh
# ZoneClaw, user-triggered source-redirection update
MODEL=anthropic/claude-sonnet-4-6 \
E2E=sr-zoneclaw-userprompt N=15 P=3 bash bench.sh
جميع الأسماء الصالحة وأزواج مهام الحقن/الاستغلال الخاصة بها مدرجة في experiments/e2e.tsv.
لاستخدام نموذج مدعوم آخر، استبدل MODEL؛ على سبيل المثال:
MODEL=openai/gpt-5.5 OPENCLAW_THINKING=medium \
E2E=bcc-zoneclaw-userprompt N=15 P=3 bash bench.sh
MODEL=zai/glm-5.2 \
E2E=bcc-zoneclaw-userprompt N=15 P=3 bash bench.sh
BENCH_TOKEN_PRICES_FILE="$PWD/experiments/measurement/qwen3.7-plus-2026-05-26.json" \
MODEL=alibaba/qwen3.7-plus-2026-05-26 OPENCLAW_THINKING=medium \
E2E=bcc-zoneclaw-userprompt N=15 P=3 bash bench.sh
تُؤرشف التشغيلات المقاسة زمن التشغيل لكل مرحلة، واستخدام النموذج، واستخدام
النموذج المساعد إلى جانب كل تجربة. تحتفظ تشغيلات Alibaba Qwen إضافةً إلى ذلك
بسجل استخدام خام خالٍ من المحتوى حتى لا تُحتسب رموز الاستدلال مرتين بواسطة
محوّل التوافق. راجع docs/measurement.md للمخطط وقواعد التجميع.
تقيّم الورقة كل استئصال على الصيغة المُفعّلة من المستخدم لجميع السيناريوهات الأربعة. أوامر BCC هي:
# w/o Zone
MODEL=anthropic/claude-sonnet-4-6 \
E2E=bcc-zoneclaw-no-authority-metadata-userprompt N=15 P=3 bash bench.sh
# w/o Gatekeeper
MODEL=anthropic/claude-sonnet-4-6 \
E2E=bcc-zoneclaw-auto-promotion-userprompt N=15 P=3 bash bench.sh
# w/o Cross-check
MODEL=anthropic/claude-sonnet-4-6 \
E2E=bcc-zoneclaw-low-context-userprompt N=15 P=3 bash bench.sh
استبدل bcc بـ chat أو sr أو market للسيناريوهات المتبقية.
for experiment in \
bcc-prompt-aware-promotion-userprompt \
bcc-zoneclaw-prompt-aware-promotion-userprompt \
bcc-prompt-aware-composed-userprompt \
bcc-zoneclaw-prompt-aware-composed-userprompt \
sr-prompt-aware-finegrained-userprompt \
sr-zoneclaw-prompt-aware-finegrained-userprompt
do
MODEL=anthropic/claude-sonnet-4-6 \
E2E="$experiment" N=15 P=3 bash bench.sh
done
MODEL=anthropic/claude-sonnet-4-6 \
TASK=bcc-exfiltration-zoneclaw-promotion/benign-only \
N=30 P=3 bash bench.sh
MODEL=anthropic/claude-sonnet-4-6 \
TASK=bcc-exfiltration-zoneclaw-promotion/malicious-only \
N=30 P=3 bash bench.sh
تستخدم الورقة جدول الهجوم المتكرر BCC، وعشر جلسات تحديث، ونقاط تحقق بعد 0 و1 و2 و3 و5 و10 تحديثات:
MODEL=anthropic/claude-sonnet-4-6 \
SYSTEM=no-defense SCHEDULE=repeated-attack \
N=3 P=1 bash longitudinal-bench.sh
MODEL=anthropic/claude-sonnet-4-6 \
SYSTEM=zoneclaw SCHEDULE=repeated-attack \
N=3 P=1 bash longitudinal-bench.sh
تتطلب تجارب WorkspaceBench بياناتها الوصفية Lite وملفات مساحة العمل الخاصة بها:
uv run --with huggingface_hub python \
workspace-bench/evaluation/scripts/download_hf_assets.py \
--eval-root workspace-bench/evaluation \
--language en --lite --workspaces
بعد تنزيل المهام الأصلية، أنشئ مجموعتَي المهام المنفصلتين المكوّنتين من 15 مهمة الخاصتين بالورقة باستخدام بذرة الاختيار الثابتة:
WB_SUBSETS="$PWD/workspace-bench/evaluation/.generated/memory_authority_probe/subsets"
python3 scripts/workspacebench_privilege_probe.py make-subset \
--n 15 --seed 20260709 --language en \
--dest "$WB_SUBSETS/lite-en-15-seed20260709"
python3 scripts/workspacebench_privilege_probe.py make-subset \
--n 15 --seed 20260709 --language en \
--exclude-selection "$WB_SUBSETS/lite-en-15-seed20260709/selection.json" \
--dest "$WB_SUBSETS/lite-en-15-extension-seed20260709"
شغّل كل شرط من شروط السلطة الأربعة على كلتا المجموعتين:
for batch in lite-en-15-seed20260709 lite-en-15-extension-seed20260709; do
for condition in \
benign-instruction memory-injection \
memory-instruction-conflict intra-memory-conflict
do
python3 scripts/workspacebench_privilege_probe.py run \
--docker-run \
--condition "$condition" \
--probe-kind risk-assumption-section \
--seed-file all \
--harness openclaw \
--model gpt-5.5 \
--dataset lite \
--task-path "workspace-bench/evaluation/.generated/memory_authority_probe/subsets/$batch" \
--task-parallel-workers 3 \
--run-name "Authority-${batch}-${condition}"
done
done