HomenShum/AgentRedteam
GitHub: HomenShum/AgentRedteam
一个采用分阶段挑战模式的 AI Agent 红队评估工具构建教学项目,帮助开发者学习如何搭建多层级评判的自动化安全评估流水线。
Stars: 0 | Forks: 0
# 构建你自己的 Agent 红队评估器
一个 CodeCrafters 风格、公开安全的挑战轨道,旨在从零开始构建一个 AI agent 红队评估工具。
你将构建一个小型评估器,能够对风险进行建模、应用攻击、运行受测 agent、评判响应、生成发现结果,并将模棱两可的案例升级为人工审查。
```
Risk + Attack + Prompt
|
v
Attack Transform
|
v
Agent Under Test
|
v
Judge
|
v
Finding + Eval Report
```
本仓库已进行脱敏处理,以便公开分享。它不包含私密的招聘人员信息、日历链接、简历、邮件正文、API 密钥或私密面试材料。
## 挑战
分阶段构建你自己的 AI agent 红队测试工具:
| 阶段 | 你将构建的内容 | 为什么重要 |
|---|---|---|
| 1 | `Risk`, `Attack`, `TestCase`, `Finding` | 将杂乱的安全隐患转化为类型化的评估对象 |
| 2 | 攻击转换 | 将攻击技术与被测试的风险区分开来 |
| 3 | 红队运行器 | 创建执行生命周期 |
| 4 | 确定性评判器 | 处理廉价、稳定的检查,例如泄漏和违规操作 |
| 5 | 人工评估队列 | 捕获需要人类审查的案例 |
| 6 | LLM-as-judge 适配器 | 处理 regex 过于脆弱的语义判断 |
| 7 | SDK 适配器 | 展示 OpenAI、Claude 和 pi-ai 风格的路由如何融入其中 |
| 8 | 报告与修复循环 | 产出有证据支持且团队能够采取行动的输出 |
## 快速开始
```
git clone https://github.com/HomenShum/AgentRedteam
cd AgentRedteam
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -e .[dev]
python -m pytest -q
python -m redteam_eval_lab.cli --judge deterministic
python -m redteam_eval_lab.cli --judge manual
```
测试应该会通过。CLI 会故意报告失败,因为该玩具 agent 存在漏洞。
可选的真实 LLM 评判器:
```
pip install -e .[openai]
$env:OPENAI_API_KEY="..."
python -m redteam_eval_lab.cli --judge openai
python -m redteam_eval_lab.cli --judge openai-chat
python -m redteam_eval_lab.cli --judge openai-agents
pip install -e .[anthropic]
$env:ANTHROPIC_API_KEY="..."
python -m redteam_eval_lab.cli --judge anthropic
```
## 从这里开始
如果你想体验 CodeCrafters 风格的路径,请按顺序阅读各个阶段:
1. [阶段 1 - 定义评估 schema](stage_descriptions/01-define-eval-schema.md)
2. [阶段 2 - 添加攻击转换](stage_descriptions/02-add-attack-transforms.md)
3. [阶段 3 - 构建运行器](stage_descriptions/03-build-runner.md)
4. [阶段 4 - 添加确定性评判器](stage_descriptions/04-add-deterministic-judges.md)
5. [阶段 5 - 添加人工评估](stage_descriptions/05-add-manual-eval.md)
6. [阶段 6 - 添加 LLM-as-judge](stage_descriptions/06-add-llm-judge.md)
7. [阶段 7 - 添加 SDK 适配器](stage_descriptions/07-add-sdk-adapters.md)
8. [阶段 8 - 发布报告和修复](stage_descriptions/08-ship-reports.md)
使用入门套件:
- [Python 入门代码](challenge/starter/python/redteam_lab.py)
- [入门测试](challenge/starter/python/tests/)
- [完整的解决方案](challenge/solutions/python/redteam_lab.py)
- [完整的代码示例](docs/COMPLETED_CODE_EXAMPLES.md)
- [评分器](challenge/grader.py)
- [参考实现](src/redteam_eval_lab/)
运行分阶段评分器:
```
python challenge/grader.py --stage 01 --impl starter
python challenge/grader.py --stage 08 --impl solution
```
## 参考实现
可运行的实现位于 [src/redteam_eval_lab](src/redteam_eval_lab) 中。
重要文件:
- [schemas.py](src/redteam_eval_lab/schemas.py) - risk、attack、testcase、finding、report
- [attacks.py](src/redteam_eval_lab/attacks.py) - prompt injection、base64、JSON injection、hidden markdown
- [agents.py](src/redteam_eval_lab/agents.py) - 故意设置漏洞的玩具 agent
- [judges.py](src/redteam_eval_lab/judges.py) - 确定性、人工、OpenAI、Anthropic 评判器
- [llm_clients.py](src/redteam_eval_lab/llm_clients.py) - 真实的 OpenAI、Anthropic 和 OpenAI Agents JSON 客户端
- [runner.py](src/redteam_eval_lab/runner.py) - 编排循环
- [suites.py](src/redteam_eval_lab/suites.py) - 示例 risk/attack 测试用例
`AgentUnderTest` 是一个 protocol/interface,因此它的 `respond()` 方法只是一个
契约。具体的实现包括 `ToyAgent` 和 `EchoAgent`;真实的应用将提供围绕 SDK、本地服务或已部署 agent 的适配器。
## 评判器设计
生产系统很少只使用一个评判器:
```
Deterministic checks
-> schema validation
-> LLM judge
-> second judge for disputed cases
-> manual review
-> remediation tracking
```
| 评判器 | 用途 | 优点 | 缺点 |
|---|---|---|---|
| 确定性 | 术语、schema、tool-call 权限 | 快速且稳定 | 容易遗漏细节 |
| LLM 评判器 | Hallucination、grounding、政策遵从性 | 能处理语义 | 花费金钱且可能发生漂移 |
| 人工评估 | 模棱两可或高风险的发现结果 | 最佳的校准来源 | 速度慢 |
| 混合 | 真实的生产循环 | 均衡 | 增加系统复杂性 |
## SDK 适配器示例
本仓库包含以下内容的可选模式:
- OpenAI Agents SDK / OpenAI API
- Claude Agent SDK / Anthropic API
- pi-ai 风格的模型路由
- 人工评估队列
默认的测试套件不需要 API 密钥。
参见:
- [评判器设计](docs/JUDGE_DESIGN.md)
- [SDK 适配器](docs/SDK_ADAPTERS.md)
- [人工评估工作流](docs/MANUAL_EVAL_WORKFLOW.md)
- [面试准备笔记](docs/INTERVIEW_PREP.md)
## 面试金句
## 公共安全边界
本仓库旨在教授评估架构,而不会发布私密上下文。请将真实的简历、电子邮件、面试提示、会议链接和私有 API 密钥排除在仓库之外。
标签:AI安全, Chat Copilot, DLL 劫持, Petitpotam, Python, 大语言模型, 安全规则引擎, 无后门, 红队评估, 逆向工具