Skip to content

ISAQQSAI/SkillAttack

Repository files navigation

SkillAttack

面向 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 使用阿里云镜像。

Quickstart

从零开始做一次最小可运行验证:

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.json
  • result/runs_organize/main/<skillname>/<surface_id>/round_01.json
  • result/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.pyrun_skillinject_obvious_comparison.py 已移除。
  • 旧目录 baseline/casestudy/tools/ 已移除。
  • 旧配置 configs/app.yamlconfigs/main_experiment.yamlconfigs/comparison_experiment.yaml 已移除。
  • 旧兼容 stage、旧报表导出链路、旧 schema 兼容层已移除。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors