
Среда бенчмаркинга для оценки AI-агентов, работающих с компьютером, на устойчивость к многошаговым косвенным инъекциям промптов, с автоматической декомпозицией состязательных целей и изолированными тестовыми средами на базе AWS.
Сначала установите все зависимости и убедитесь, что у вас установлен Python 3.10.
conda create -n stepjack python=3.10
conda activate stepjack
pip install -r requirements.txt
Мы используем среду AWS, предоставленную RedTeamCUA.
AWS
Настройте NETWORK_INTERFACE_MAP:
Настройте NETWORK_INTERFACE_MAP в aws_config.py в соответствии с вашими собственными экземплярами AWS.
Настройте вашу группу безопасности:
Важно настроить группу безопасности, которая разрешает легитимный доступ к вашим размещённым экземплярам, блокируя при этом попытки несанкционированного доступа. Это крайне важно, поскольку AMI по умолчанию использует только базовую аутентификацию по паролю, которую относительно легко скомпрометировать.
Ваша локальная машина будет обращаться к сервисам, размещённым на AWS, через HTTP/TCP-соединения. Поэтому вам следует явно разрешить доступ к следующим портам: 8092, 6379, 9999, 5000, 9222, 8091, 2999 и 3000, которые используются WebArena или TheAgentCompany.
Кроме того, мы используем SSH для непосредственного изменения базовой базы данных, чтобы имитировать сценарии инъекций. В связи с этим в настройках группы безопасности также должен быть разрешён SSH-доступ с вашего локального IP-адреса.
Настройте свои учётные данные AWS с помощью aws configure, которая запросит у вас:
scripts/run_gpt54_2step.sh — пример запуска GPT-5.4 CUA на StepJack.
Задайте переменные окружения
Ключи API CUA
# For GPT
unset OPENAI_BASE_URL
export OPENAI_API_KEY="sk-proj-XXXX"
# For Kimi
export KIMI_API_KEY='sk-XXXX'
# For Qwen
export OPENAI_BASE_URL="https://dashscope-us.aliyuncs.com/compatible-mode/v1"
export OPENAI_API_KEY="sk-XXXX"
# For Claude
export ANTHROPIC_API_KEY='sk-XXXX'
Учётные данные AWS
export AWS_REGION='XX'
export AWS_ACCESS_KEY='XX'
export AWS_SECRET_KEY='XX'
Запустите эксперименты
# For GPT
python run_gpt54_multienv.py \
--observation_type screenshot \
--agent_type GPT54Agent \
--headless \
--model gpt-5.4-mini-2026-03-17 \
--result_dir ./results_gpt54 \
--test_all_meta_path "./dataset/{subset}/{platform_instruction}/test_{k}_step.json" \
--test_config_base_dir "./dataset/{subset}/{platform_instruction}" \
--max_steps {15*k} \
--sleep_after_execution 4 \
--provider_name aws \
--num_envs 12 \
--aws_ami {reddit | agentcompany}
# For Kimi
python run_kimi_multienv.py \
--observation_type screenshot \
--agent_type KimiAgent \
--headless \
--model Kimi-K2.5 \
--result_dir ./results_kimi \
--test_all_meta_path "./dataset/{subset}/{platform_instruction}/test_{k}_step.json" \
--test_config_base_dir "./dataset/{subset}/{platform_instruction}" \
--max_steps {15*k} \
--sleep_after_execution 4 \
--provider_name aws \
--num_envs 12 \
--aws_ami {reddit | agentcompany}
# For Qwen
python run_qwen35vl_multienv.py \
--observation_type screenshot \
--agent_type Qwen35VLAgent \
--headless \
--model qwen3.5-plus-2026-02-15 \
--coord relative \
--enable_thinking \
--result_dir ./results_qwen \
--test_all_meta_path "./dataset/{subset}/{platform_instruction}/test_{k}_step.json" \
--test_config_base_dir "./dataset/{subset}/{platform_instruction}" \
--max_steps {15*k} \
--sleep_after_execution 4 \
--provider_name aws \
--num_envs 12 \
--aws_ami {reddit | agentcompany}
# For Claude
python run_claude_multienv.py \
--observation_type screenshot \
--action_space pyautogui \
--agent_type AnthropicAgent \
--api_provider anthropic \
--headless \
--model {claude-sonnet-4-6 | claude-haiku-4-5} \
--result_dir ./results_claude \
--test_all_meta_path "./dataset/{subset}/{platform_instruction}/test_{k}_step.json" \
--test_config_base_dir "./dataset/{subset}/{platform_instruction}" \
--max_steps {15*k} \
--sleep_after_execution 4 \
--provider_name aws \
--num_envs 12 \
--aws_ami {reddit | agentcompany}
Код конвейера автоматической декомпозиции находится в auto_decomp/.
cd auto_decomp. Добавьте новые состязательные цели для декомпозиции в adv_goals.py.python iterative_refinement.py -k {k} для каждого k \in \{2, 3\}. Результат: ir/goal_*_k{k}_N20_K3_all.json, содержащий результаты этапа 1.python selected_examples/select_examples.py. Результат: selected_examples/selected_examples.json, в котором отбираются 10 лучших примеров с этапа 1.StepJack создан на основе RedTeamCUA (Liao et al., 2025; arXiv:2505.21936), который, в свою очередь, является производным от OSWorld (XLANG NLP Lab, 2024). Оба вышестоящих исходных проекта распространяются под лицензией Apache-2.0.
Некоторые каталоги данных StepJack не снабжены заголовками лицензии в каждом файле, поскольку содержат двоичные или неисходные файлы-фикстуры. Для указания авторства их происхождение задокументировано здесь:
adv/TheAgentCompany_OwnCloud/file_to_upload/ — скопирован из RedTeamCUA (adv/TheAgentCompany_OwnCloud/file_to_upload/), исходно распространяется под лицензией Apache-2.0.adv/upload_file/ — содержит две фикстуры SSH-ключей (system/authorized_keys, system/id_rsa), используемые в конфигурациях задач набора данных в качестве полезной нагрузки для загрузки. Создан StepJack (значения — строки-заглушки, а не настоящие ключи). Распространяется под лицензией, указанной в файле LICENSE в корневом каталоге этого дерева исходников.adv/upload_file_dir/ — оригинальная разработка StepJack. Отсутствует в RedTeamCUA. Распространяется под лицензией, указанной в файле LICENSE в корневом каталоге этого дерева исходников.dataset/ — адаптирован из evaluation_examples/ RedTeamCUA со значительными изменениями. Примеры оценки RedTeamCUA опубликованы под лицензией согласно их . Модификации и дополнения StepJack к конфигурациям задач выпущены под лицензией, указанной в файле в корневом каталоге этого дерева исходников.Аргументы:
single_step (k=1), w_urgent (Urgent = Y), wo_urgent (Urgent = N).forum, forum_follow, owncloud, owncloud_follow. Они соответствуют 2 платформам и 2 типам пользовательских инструкций.(subset, k): single_step только с k=1; w_urgent и wo_urgent только с k \in \{2,3\}.forum следует использовать reddit, а для платформы owncloud — agentcompany.LICENSEdesktop_env/ — скопирован/адаптирован из desktop_env/ RedTeamCUA, который сам является производным от OSWorld; оба вышестоящих исходных проекта распространяются под лицензией Apache-2.0. Заголовки в каждом исходном файле (.py / .sh / .yml / .service / .txt) фиксируют конкретное происхождение каждого файла (копия или модификация StepJack). Сопроводительные файлы документации (например, README.md, DOCKER_GUIDELINE.md, INSTALL_*.md) скопированы из RedTeamCUA.