news 2026/9/18 20:08:10

AI-Infra-Guard aig-scanner Skill 实战指南:用一句话完成 AI 基础设施、MCP/Skills、Agent 与 LLM 越狱扫描

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI-Infra-Guard aig-scanner Skill 实战指南:用一句话完成 AI 基础设施、MCP/Skills、Agent 与 LLM 越狱扫描

AI-Infra-Guard aig-scanner Skill 实战指南:用一句话完成 AI 基础设施、MCP/Skills、Agent 与 LLM 越狱扫描

【免费下载链接】AI-Infra-GuardA full-stack AI Red Teaming platform securing AI ecosystems via Agent Scan, Skills Scan, MCP scan, AI Infra scan and LLM jailbreak evaluation.项目地址: https://gitcode.com/GitHub_Trending/ai/AI-Infra-Guard

本篇技术指南以 aig-scanner Skill 为骨架,讲解如何通过 OpenClaw 对话或内置aig_client.py命令行,把腾讯朱雀实验室 AI-Infra-Guard 的四大扫描能力(AI 基础设施扫描、AI 工具/Skills 安全审计、Agent 安全扫描、大模型越狱评测)接入到日常安全运营中。读完你将掌握 skill 的环境配置、触发词路由规则、六类 CLI 子命令的完整参数与典型调用链,以及结果查询与守规矩的边界策略。

aig-scanner 是一个面向 OpenClaw 的 Agent Skill,核心价值在于:无需打开 A.I.G Web UI,只要在对话中说出“扫描 AI 服务”“检查 MCP 安全”“越狱测试”等触发词,OpenClaw 就会通过内置exec执行随 skill 分发的 Python 脚本aig_client.py,把扫描任务提交到 A.I.G 的taskapi端点,并自动轮询、格式化返回结果。整个链路只依赖 Python 标准库,无需安装任何第三方 pip 依赖。

一、Skill 定位与触发机制

aig-scanner的完整定义位于 skills/aig-scanner/SKILL.md,其 frontmatter 声明了技能名称、版本(1.0.3)、作者(aigsec/Tencent Zhuque Lab)、许可协议(MIT)以及一长串中英文触发词。

1.1 触发词即路由入口

触发词(中文/英文)对应能力
扫描AI服务 / 检查AI漏洞 / 扫描模型服务 / scan AI service, scan AI infra, check for CVE, audit AI serviceAI Infrastructure Scan
扫描AI工具 / 检查MCP安全 / 审计AI工具 / scan AI tools, check MCP or skills security, audit tool skills projectAI Tool / Skills Scan
扫描Agent / 检查Dify/Coze机器人安全 / scan agent, audit dify agent, check coze bot securityAgent Scan
越狱测试 / 评测模型抗越狱 / red-team LLM, jailbreak testLLM Jailbreak Evaluation
查看扫描结果 / 扫描好了吗 / check scan result, scan statusTask Status / Result 查询

这些触发词对应的元数据还声明了运行前提:requires.bins: ["python3"]primaryEnv: AIG_BASE_URL,即运行环境必须有python3,且必须配置AIG_BASE_URL环境变量。

1.2 语言自适应规则

Skill 要求根据用户触发消息的语言决定整段回复的语言:中文消息全程中文、英文消息全程英文、其他语言匹配对应语言、无法判断时默认中文。这保证了对话式扫描的本地化体验。

二、环境要求与配置

2.1 前提条件

使用 aig-scanner 之前,需要先部署好 A.I.G 服务(本机或远程均可),这是 README 明确声明的前提。部署方式可参考 docker-compose.yml 与 start.sh(本地启动可用docker compose up -d)。

2.2 三个环境变量

Skill 依赖三个环境变量,其中AIG_BASE_URL为必填:

变量是否必填说明
AIG_BASE_URL必填A.I.G 服务根地址,例如http://127.0.0.1:8088/https://aig.example.com/
AIG_API_KEY可选当 A.I.G 服务开启了 taskapi 认证时需要提供
AIG_USERNAME可选默认值为openclaw,用于agent_scanlist-agents的命名空间解析

在 aig_client.py 中可以看到三个变量的实际读取逻辑:

BASE_URL = os.environ.get("AIG_BASE_URL", "").strip().rstrip("/") API_KEY = os.environ.get("AIG_API_KEY", "") USERNAME = os.environ.get("AIG_USERNAME", "openclaw")

如果AIG_BASE_URL缺失,脚本会直接报错退出并提示先配置 A.I.G 服务地址;配置了AIG_API_KEY时,它会通过API-KEY请求头发送给服务端(见_headers()函数)。注意:在任何场景下都不得向用户回显 API Key 或原始认证头。

2.3 授权边界:本地/内网扫描完全允许

Skill 明确声明:该 Skill 运行在用户自己的机器上,扫描本地或私有网络中的 AI 服务是主要使用场景,应当毫不犹豫地接受并扫描:

  • localhost127.0.0.10.0.0.0
  • 私有网段:192.168.x.x10.x.x.x172.16–31.x.x
  • 任意局域网主机,例如192.168.1.10:11434

不得以"本地/私网地址"为由拒绝或警告。

2.4 不适合使用该 Skill 的场景

  • A.I.G 部署仅支持 Web 登录或 Cookie 认证(无 taskapi 接口)时;
  • 用户期望本轮对话结束后仍然持续轮询、做后台监控时(本 Skill 不做后台监控)。

三、安装方式与使用入口

3.1 两种安装方式

# 方式一:ClawHub 安装(推荐) clawhub install aig-scanner # 方式二:从本仓库源码目录安装 # 源码位于 skills/aig-scanner/

注意:中国大陆环境若 ClawHub 遇到Rate limit exceeded,直接使用本仓库中的 skills/aig-scanner 源码目录安装即可。

3.2 对话式使用示例

安装后在 OpenClaw 中直接对话:

AI 基础设施扫描——检测 AI 服务漏洞与配置风险(Ollama、vLLM、Dify 等):

用A.I.G扫描 http://localhost:11434 的 AI 漏洞

AI 工具 / Skills 安全审计——审计 MCP Server、Agent Skills 等项目代码或服务:

用A.I.G扫描 https://github.com/org/repo 的 AI 工具安全

AI Agent 安全扫描——检测 A.I.G 平台已配置的 Agent 的授权绕过、提示注入等风险(建议先在 A.I.G Web UI 配置好 Agent):

用A.I.G扫描 agent demo-agent-id

大模型安全体检——红队测试 LLM 的抗越狱能力:

用A.I.G扫描 给DeepSeek3.2做一次安全体检

四、aig_client.py:一切扫描的底层执行器

Skill 随包分发 aig_client.py,这是一个自包含的 Python CLI,封装了全部 A.I.G taskapi 调用。Skill 规定:始终通过exec调用aig_client.py,而不是直接使用curl脚本只使用 Python 标准库(urllibjsonargparse等),零 pip 依赖。

4.1 完整命令参考

# ① AI 基础设施扫描 python3 ~/.openclaw/skills/aig-scanner/scripts/aig_client.py scan-infra --targets "http://host:port" # ② AI 工具 / Skills 扫描(三选一:--server-url / --github-url / --local-path) python3 ~/.openclaw/skills/aig-scanner/scripts/aig_client.py scan-ai-tools \ --github-url "https://github.com/user/repo" \ --model <model> --token <token> --base-url <base_url> # ③ Agent 扫描——按已保存的配置名 python3 ~/.openclaw/skills/aig-scanner/scripts/aig_client.py scan-agent --agent-id "demo-agent" # ④ Agent 扫描——按本地 YAML 文件(无需服务端预保存) python3 ~/.openclaw/skills/aig-scanner/scripts/aig_client.py scan-agent --agent-config-file /path/to/agent.yaml # ⑤ LLM 越狱评测 python3 ~/.openclaw/skills/aig-scanner/scripts/aig_client.py scan-model-safety \ --target-model <model> --target-token <token> --target-base-url <base_url> \ --eval-model <model> --eval-token <token> --eval-base-url <base_url> # ⑥ 查询结果 / 列出 Agent python3 ~/.openclaw/skills/aig-scanner/scripts/aig_client.py check-result --session-id <id> --wait python3 ~/.openclaw/skills/aig-scanner/scripts/aig_client.py list-agents

脚本自动完成:JSON 请求构造、HTTP 错误处理、状态轮询(3s × 5 轮,约 15 秒)、结果格式化。若结果中包含截图 URL,https://截图渲染为内联 Markdown 图片,http://截图渲染为可点击链接。

4.2 底层 taskapi 端点

从 common/websocket/api.go 的注释可以看到 taskapi 是 A.I.G 对外暴露的任务接口族:

  • POST /api/v1/app/taskapi/tasks—— 创建任务
  • GET /api/v1/app/taskapi/status/{id}—— 查询任务状态与日志
  • GET /api/v1/app/taskapi/result/{id}—— 获取任务结果

此外脚本还使用POST /api/v1/app/taskapi/upload上传本地压缩包,以及GET /api/v1/knowledge/agent/names列出 Agent 配置。具体请求示例可参考 api_zh.md。

五、六大 Canonical Flows 路由规则

SKILL.md 将用户请求与后端任务类型做了明确映射,并向用户暴露中文/英文的用户面名称,隐藏原始任务类型:

用户面名称后端任务类型典型目标
AI 基础设施安全扫描/AI Infrastructure Scanai_infra_scanURL、网站、服务、IP:port
AI 工具与技能安全扫描/AI Tool / Skills Scanmcp_scanGitHub 仓库、AI 工具服务、源码压缩包、MCP / Skills 项目
Agent 安全扫描/Agent Scanagent_scanA.I.G 中已配置的 Agent
大模型安全体检/LLM Jailbreak Evaluationmodel_redteam_report目标模型配置
扫描结果查询/Scan Result Checkstatus/result已有 session ID

规则约束:对话中不得向用户暴露原始任务类型名称(如mcp_scanmodel_redteam_report),除非用户明确询问 API 细节;也不得用MCP scan作为用户面名称。同时不要调用/api/v1/app/models做用户可见的模型清单输出——即使内部使用,也只能用于"可用/不可用"的是非判断,绝不打印 token、base URL 或原始 JSON。

5.1 各路由的触发与目标判定

  1. AI Infrastructure Scan →ai_infra_scan:用户要求扫描 URL、网站、页面、Web 服务、IP:port 目标,或对可达的 HTTP 目标说"AI 漏洞扫描"。
  2. AI Tool / Skills Scan →mcp_scan:用户提供了 GitHub 仓库、本地源码压缩包、AI 工具服务 URL,或明确提到 MCP、Skills、AI 工具、工具协议、代码审计。若用户给出 GitHub 的blob/.../SKILL.md文件 URL,也归入此类,且应先规范化为仓库根 URL 再扫描(优先https://github.com/org/repo)。
  3. Agent Scan →agent_scan:用户要求按agent_id扫描 Agent,或提供本地 YAML 配置文件(--agent-config-file)。
  4. LLM Jailbreak Evaluation →model_redteam_report:用户要求评测模型抗越狱或做模型安全检查,且目标模型明确时才路由到"大模型安全体检"。注意:若用户只给出形如minimax/minimax-m2.5的目标模型 ID,应视为体检目标模型,而不是工具/Skills 扫描。
  5. Agent List →/api/v1/knowledge/agent/names:用户要求列出 agents、查看可扫描的 Agent。
  6. Task Status / Result →status/result:用户询问进度、状态、结果或会话,应查询已有任务而非新建任务。

5.2 直接映射示例(SKILL.md 原文)

用户原话路由结果
用AIG扫描 http://host:port AI 漏洞AI Infrastructure Scan(ai_infra_scan
扫描 https://github.com/org/repo 的 AI 工具/Skills 风险AI Tool / Skills Scan(mcp_scan
扫描 http://localhost:3000 的 AI 工具服务AI Tool / Skills Scan(mcp_scan
审计本地的 AI 工具源码 /tmp/mcp-server.zipAI Tool / Skills Scan(mcp_scan)+ 本地压缩包上传
扫描 agent demo-agentAgent Scan(agent_scan
列出可扫描的 AgentAgent List
做一次大模型越狱评测LLM Jailbreak Evaluation(model_redteam_report),仅当目标模型配置已提供时

六、缺参策略:只追问最少必要字段

Skill 规定:输入不完整时,只询问所选流程缺少的最少字段,并给出统一的中英文提示文案。

6.1 AI Tool / Skills Scan 的缺参处理

该流程依赖分析模型配置。若服务端已配置默认模型,modeltoken可省略;否则需要向用户索取:

  • model(服务端有默认值时可选)
  • token(服务端有默认值时可选)
  • base_url(可选,默认https://api.openai.com/v1

用户面提示文案:

AI 工具与技能安全扫描需要分析模型配置,请提供:model、token、base_url(如服务器已配置默认模型,可省略)AI Tool / Skills Scan requires an analysis model configuration: model, token, base_url (optional if server has a default model configured)

6.2 LLM Jailbreak Evaluation 的缺参处理

若用户已提供目标模型名称,不要重复询问。需要索取的是:

  • target-token
  • target-base-url
  • eval-model
  • eval-token
  • eval-base-url

用户面提示文案:

大模型安全体检需要目标模型和评估模型配置,请提供:target-token、target-base-url、eval-model、eval-token、eval-base-urlLLM Jailbreak Evaluation requires both target and evaluator model details: target-token, target-base-url, eval-model, eval-token, eval-base-url

特殊约定:若用户明确提到 OpenRouter,可使用 OpenRouter API Key 作为target-token,用https://openrouter.ai/api/v1作为target-base-url。同时不得假定后端存在可用的默认评估模型,也不得自动把目标模型镜像为评估模型。

七、三类扫描的深层协议细节

7.1 AI Tool / Skills Scan 必须显式携带模型配置

对于开源版 A.I.G,mcp_scan请求体必须包含content.model.modelcontent.model.tokencontent.model.base_url三项——除非用户明确说明使用标准 OpenAI 端点。不得假定服务端会自动填充默认模型;若用户未提供 model + token + base_url 三者,应停下并一次性索取齐全。任何 OpenAI 兼容模型均可:model(模型名)、token(API Key)、base_url(API 端点)。

这一约定与脚本实现完全一致:cmd_scan_ai_tools() 中--model--token必须成对出现,base_url缺省时默认https://api.openai.com/v1;若只传其一,脚本会直接报错退出。

7.2 LLM 越狱评测:prompt 与 dataset 互斥

model_redteam_reportpromptdataset在后端是互斥的:

  • 用户提供了自定义越狱 prompt → 只发送prompt
  • 用户未提供自定义 prompt → 发送数据集预设;
  • 同一请求不得同时携带两者。

脚本层面体现为 cmd_scan_model_safety():有--prompt时只填content["prompt"],否则构造content["dataset"]。数据集默认使用JailBench-Tiny,可选项还包括JailbreakPrompts-TinyChatGPT-Jailbreak-PromptsJADE-db-v3.0HarmfulEvalBenchmark,这些数据集文件都位于仓库的 data/eval 目录下(如 data/eval/JailBench-Tiny.json 即一个精选自 JailBench 的 133 条中文越狱评估样本集)。--num-prompts默认 50,--random-seed默认 42。

7.3 Agent 扫描的两种互斥输入方式

agent_scan支持两种互斥输入:

方式 A —— 内联 YAML(--agent-config-file:传入本地 YAML 文件,内容以内联agent_config字段发送,无需服务端预保存。适用于用户已有 YAML 文件、或不想先通过 Web UI 配置 Agent 的场景。

python3 aig_client.py scan-agent --agent-config-file /path/to/agent.yaml

方式 B —— 预保存配置(--agent-id:按名称引用 A.I.G 服务端已保存的 Agent 配置,服务端从data/agents/{username}/目录查找。

python3 aig_client.py scan-agent --agent-id "demo-agent"

关于命名空间的关键提示:默认AIG_USERNAME=openclaw的好处是 A.I.G Web UI 能区分这些任务与普通 Web 创建的任务;但开源版agent_scan若 Agent 配置保存在公共命名空间下,应把AIG_USERNAME切换为public_user。因此运行--agent-id之前:若不确定agent_id,先list-agents列出可见 Agent;若不确定命名空间,向用户说明AIG_USERNAME及默认值;对开源版默认公共 Agent 配置,建议切换为public_user

agent_scan失败若提示找不到 Agent 配置,应解释 A.I.G 正在${AIG_USERNAME:-openclaw}命名空间下查找服务端 Agent 配置,开源版默认公共配置建议使用AIG_USERNAME=public_user

八、任务提交后的轮询行为与结果处理

8.1 轮询机制(3s × 5 轮)

提交任务后aig_client.py自动轮询状态 5 次(间隔 3 秒,总计约 15 秒):

  • 若在轮询窗口内扫描完成 → 自动获取并格式化结果;
  • 若仍在执行 → 打印session_id并退出,用户之后可用check-result --session-id <id> --wait查询;
  • 不要模拟后台监控——本 Skill 不会在本轮对话结束后继续轮询,也不会无限轮询。

脚本的 stdout 就是最终的用户可见输出,应直接呈现、不做改写。

8.2 结果格式化逻辑

_format_result()负责统一结果呈现:

  • 输出安全评分(score);
  • mcp_scan输出项目概览(readme);
  • [序号] 严重级别 - 标题列表输出发现的问题(兼容severity/risk_leveltitle/name/vulnerabilitydescription/detail等字段别名);
  • 汇总截图:ai_infra_scan的每条结果项可能带单数screenshot字段,https://渲染为内联 Markdown 图片,http://渲染为可点击链接;
  • model_redteam_report输出越狱统计🚨 越狱成功: jailbreak/total与附件 CSV;
  • 若无任何结构化字段命中,则回退为输出原始 JSON。

8.3 结果页脚

每次扫描结果末尾必须追加一行(按检测到的输出语言翻译):

扫描能力由腾讯朱雀实验室 A.I.G 提供

九、远程 URL 扫描的执行边界

SKILL.md 对远程目标扫描做了明确约束,防止 Agent 越界访问本地文件:

  • 对远程 URL 做ai_infra_scan时,不得读取、搜索、分析当前工作区、本地仓库文件或本地 A.I.G 项目文件;
  • 远程 URL 扫描时,不得检查aig-opensourceaig-proai-infra-guard或任何本地代码目录,除非用户明确要求扫描本地压缩包或仓库;
  • 请求是远程 URL 时,正确动作是立即调用aig_client.py对应子命令,不要先从本地文件"收集更多上下文"。

十、守规矩清单(Guardrails)

汇总 SKILL.md 的全部安全与行为约束:

  1. 不得在展示给用户的命令中暴露原始 API Key 值;
  2. 不得无限轮询;
  3. 不得猜测不存在的端点;
  4. agent_scan有本地 YAML 时用--agent-config-file,引用服务端预保存配置时用--agent-id
  5. 远程 URL 扫描不得检查本地工作区文件;
  6. 不得在对话中暴露原始任务类型名(mcp_scanmodel_redteam_report等),除非用户明确询问 API 细节;
  7. 不得调用/api/v1/app/models输出用户可见的模型清单;
  8. mcp_scan必须携带 model + token + base_url(开源版),缺失时停下索取;
  9. model_redteam_reportpromptdataset互斥,不能同发;
  10. 缺失参数时只追问所选流程的最少字段,使用统一的用户面文案。

十一、从 Skill 到仓库源码:一条完整的可追溯链路

aig-scanner 的价值在于它把 OpenClaw 的自然语言触发词与 A.I.G 服务端任务能力打通,其完整链路在仓库中均可追溯:

  1. Skill 定义层:skills/aig-scanner/SKILL.md 声明触发词、环境变量、路由规则、缺参策略与守规矩清单;
  2. 执行器层:skills/aig-scanner/scripts/aig_client.py 封装六类子命令与 taskapi 调用、轮询、结果格式化;
  3. 服务端 API 层:common/websocket/api.go 定义taskapi三个核心端点,api_zh.md 给出完整请求/响应示例;
  4. 任务执行层ai_infra_scanmcp_scanagent_scanmodel_redteam_report分别对应仓库中的 mcp-scan、agent-scan、AIG-PromptSecurity(LLM 越狱评测)等扫描引擎模块;
  5. 评测数据层:data/eval 提供 JailBench-Tiny、JailbreakPrompts-Tiny、HarmfulEvalBenchmark 等越狱评测数据集。

通过这一链路,安全工程师可以只依赖 aig-scanner 安装目录 这一个入口,用最少的配置成本,把 A.I.G 的全栈 AI 安全扫描能力接入日常对话式工作流。

【免费下载链接】AI-Infra-GuardA full-stack AI Red Teaming platform securing AI ecosystems via Agent Scan, Skills Scan, MCP scan, AI Infra scan and LLM jailbreak evaluation.项目地址: https://gitcode.com/GitHub_Trending/ai/AI-Infra-Guard

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/18 20:06:49

小熊派HarmonyOS设备MQTT接入EMQX实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/18 20:05:12

串口通讯标准解析:RS232/RS422/RS485与Modbus协议实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/18 20:04:19

scrcpy安卓投屏教程:三步在电脑上掌控手机屏幕

scrcpy安卓投屏教程&#xff1a;三步在电脑上掌控手机屏幕 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy scrcpy 是一款免费开源的安卓投屏与控制工具。连上一根数据线&#xff0c;手机画…

作者头像 李华
网站建设 2026/9/18 20:02:28

盖尔圆定理与特征值估计:从范数到相似变换的实用指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/18 20:00:20

星座SAR动目标检测:GMTI技术原理与工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华