面向 Agent Skill 红队实验的统一工程。
SkillAttackMain/
├── main.py
├── configs/
│ ├── experiment.yaml
│ ├── models.yaml
│ └── stages.yaml
├── experiments/
│ ├── common.py
│ ├── main_run.py
│ ├── compare_run.py
│ └── case_loader.py
├── core/
├── stages/
├── prompts/
├── sandbox/
├── docker/
├── scripts/
├── data/
│ ├── skillinject/
│ │ ├── obvious/
│ │ ├── contextual/
│ │ ├── pairs/
│ │ ├── task_files/
│ │ └── task_scripts/
│ └── hot100skills/
└── result/
├── runs_organize/
│ ├── main/
│ └── comparison/
├── log/
└── aig_cache/
prompts/ 已收口为当前主链会实际读取的模板:attacker / judge / analyzer 风险重映射 / simulator 环境准备。
主实验:
python main.py或显式写出模式:
python main.py main覆盖所有漏洞面:
python main.py main --collect-all-surfaces单 skill 快速测试:
python scripts/run_single_main_skill.py 001_pskoett_self-improving-agent --collect-all-surfaces对比实验:
python main.py compare --split obvious --max-cases 20 --repeats 1默认直接从 data/skillinject/ 读取 obvious / contextual 的全量 summary 数据,不再使用额外过滤目录。
也可以继续用安装后的命令:
agent-redteam
agent-redteam compare --split contextual --max-cases 10所有实验配置都收口到 configs/experiment.yaml:
common- 通用路径
- sandbox 配置
- 日志 / A.I.G 缓存路径
main- 主实验输入目录
- 主实验 run 输出目录
- 迭代次数、surface 并行数
collect_all_surfaces
comparison- 对比实验 pair 根目录
- comparison run 输出目录
- repeats、resume、surface 策略
模型配置仍在 configs/models.yaml,阶段绑定仍在 configs/stages.yaml。
当前默认约定是:所有模型调用统一走 qwen3.5-flash,通过 QWEN_API_KEY / QWEN_BASE_URL 读取连接信息;A.I.G 扫描服务走本地 http://localhost:18088。
项目会自动读取仓库根目录下的 .env,并默认用 .env 覆盖同名 shell 环境变量。
默认 Docker 拉取和 OpenClaw 构建会优先走国内镜像配置:OpenClaw 基础镜像使用 m.daocloud.io/ghcr.io/...,APT / PyPI 使用阿里云镜像。
从零开始做一次最小可运行验证:
chmod +x quickstart.sh
./quickstart.sh默认会完成这些事情:
- 创建
.venv/ - 仅在
requirements.txt变化时同步 Python 依赖 - 读取
.env - 校验
QWEN_API_KEY/QWEN_BASE_URL - 预拉取 A.I.G 相关 Docker 镜像,并在失败时自动重试
- 启动本地常驻 A.I.G webserver
http://localhost:18088 - 确保
skillrt-openclaw-host可用 - 运行一个 1 skill / 1 lane / 1 round 的 smoke experiment
也可以显式指定模式:
./quickstart.sh smoke
./quickstart.sh compare
./quickstart.sh main如果 Docker Hub 较慢或网络受限,可以在 .env 里覆盖镜像并调大重试次数:
AIG_SERVER_IMAGE=registry.example.com/zhuquelab/aig-server:latest
AIG_AGENT_IMAGE=registry.example.com/zhuquelab/aig-agent:latest
DOCKER_PULL_RETRIES=5
DOCKER_PULL_RETRY_DELAY_SEC=8默认运行模式会复用本地常驻的 A.I.G 服务,不会在每个 skill 扫描前额外拉起一个临时 A.I.G helper agent。
主实验运行产物:
result/runs_organize/main/result/runs_organize/main/_experiment_results/result/runs_organize/main/<skillname>/<skillname>_analyze.jsonresult/runs_organize/main/<skillname>/<surface_id>/round_01.jsonresult/runs_organize/main/<skillname>/<skillname>_global_report.json
对比实验运行产物:
result/runs_organize/comparison/result/runs_organize/comparison/_experiment_results/
日志目录:
result/log/
A.I.G 缓存 / 导入结果:
result/aig_cache/
experiments/main_run.py负责主实验编排。experiments/compare_run.py负责 baseline/main 对比实验编排。experiments/case_loader.py负责 SkillInject case 装载与 trial 计划。core/和stages/保持为底层基础设施与阶段实现。
- 旧入口脚本
run_main_pipeline.py、run_skillinject_obvious_comparison.py已移除。 - 旧目录
baseline/、casestudy/、tools/已移除。 - 旧配置
configs/app.yaml、configs/main_experiment.yaml、configs/comparison_experiment.yaml已移除。 - 旧兼容 stage、旧报表导出链路、旧 schema 兼容层已移除。