
Бенчмарк и код защиты от атак на постоянную память для компьютерных агентов в стиле OpenClaw, с митигацией зонирования памяти, сценариями атак и скриптами оценки.
Код экспериментов для ZoneClaw: Mitigating Persistent Memory Attack by Establishing Memory-Zoning among OpenClaw-Style Computer-Use Agents.
Этот репозиторий содержит бенчмарк-задачи, реализации защит и скрипты оценки, использованные в статье. Бенчмарк исследует кросс-сессионные атаки на постоянную память в компьютерных агентах в стиле OpenClaw. Он охватывает два класса атак:
ZoneClaw отделяет сохраняемые внешние наблюдения от памяти, несущей полномочия, а затем использует агентов с разделением ролей для наблюдения, классификации и действий на основе постоянной информации.
Это издание, содержащее только код, не включает результаты экспериментов. Транскрипты статьи, доказательства верификатора и сводки доступны в сопутствующем репозитории артефактов.
uvВыделите не менее 20 ГБ свободного дискового пространства для зависимостей, Docker-образов и сгенерированных запусков. Мы рекомендуем 16 ГБ оперативной памяти для параллельных экспериментов. Первоначальная установка обычно занимает 10-20 минут в зависимости от сети и кэша сборки Docker.
Для анонимной загрузки распакуйте ZIP-архив, откройте терминал в его каталоге верхнего уровня и выполните:
bash setup.sh
Установка загружает закреплённые зависимости OpenClaw, Harbor и WorkspaceBench напрямую из их публичных вышестоящих репозиториев. Доступ к исходному приватному репозиторию не требуется.
Для Git-клонирования замените <repository-url> ниже на 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 задач из статьи с фиксированным зерном выбора: