news 2026/9/18 14:12:54

AI-Infra-Guard aig-scanner:一条聊天消息触发全栈 AI 安全扫描的 OpenClaw 技能实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI-Infra-Guard aig-scanner:一条聊天消息触发全栈 AI 安全扫描的 OpenClaw 技能实战指南

AI-Infra-Guard aig-scanner:一条聊天消息触发全栈 AI 安全扫描的 OpenClaw 技能实战指南

【免费下载链接】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-Infra-Guard 中的aig-scanner技能:如何把 AI 基础设施漏洞扫描、MCP/工具/Skills 安全审计、AI Agent 安全扫描与大模型越狱评测能力,直接挂载到 OpenClaw 聊天入口,通过一句自然语言完成调用,无需打开 A.I.G Web UI。读完你将掌握技能安装与环境配置、五种后端任务类型的路由规则、aig_client.py全部子命令参数、参数补齐策略与结果轮询机制,并理解任务提交在服务端 common/websocket/api.go 中的真实处理链路。

一、技能定位与工作原理

aig-scanner是 skills/aig-scanner 目录下的一个 OpenClaw Skill,其元数据声明(见 SKILL.md)为:

  • 名称aig-scanner,版本1.0.3,作者aigsec/Tencent Zhuque Lab,协议 MIT;
  • 能力定位:面向 AI 基础设施(infrastructure)、AI 工具/技能(AI tools / skills)、AI Agent 与 LLM 越狱评测(jailbreak evaluation)的 AI 安全扫描;
  • 依赖python3二进制,无需插件,无需 pip 依赖(aig_client.py仅使用 Python 标准库);
  • 必填环境变量AIG_BASE_URL

它的工作模式可以概括为一条调用链:

用户在 OpenClaw 聊天输入自然语言 ↓ OpenClaw 按 SKILL.md 的 triggers / Routing Rules 命中技能 ↓ 以 exec 方式执行 scripts/aig_client.py <子命令> ... ↓ aig_client.py 调用 A.I.G 服务端 REST 接口 /api/v1/app/taskapi/* ↓ A.I.G 后端调度扫描任务,返回 session_id 与结果

这里的核心桥梁是 A.I.G 暴露的taskapiREST 接口。服务端注册位于 common/websocket/server.go,共五类端点:

端点作用
POST /api/v1/app/taskapi/tasks创建扫描任务(按type分派)
GET /api/v1/app/taskapi/status/{id}查询任务状态与日志
GET /api/v1/app/taskapi/result/{id}获取任务结果
POST /api/v1/app/taskapi/upload上传本地文件(如源码压缩包)
POST /api/v1/app/taskapi/uploadChunk/mergeChunks大文件分片上传与合并

技能内的所有调用都封装在 scripts/aig_client.py 中,SKILL.md 明确规定“Always useaig_client.pyviaexecinstead of rawcurl”,即禁止绕过脚本直接用 curl 拼请求——因为脚本已经处理了 JSON 构造、HTTP 错误、状态轮询与结果格式化等细节。

前置条件:A.I.G 服务已部署(本机或远程均可),并已通过docker compose up -d等方式启动,对外暴露/api/v1/app/taskapi/*

二、安装与回退方案

2.1 推荐:ClawHub 安装

clawhub install aig-scanner

2.2 中国大陆回退:从源码目录安装

如果 ClawHub 返回Rate limit exceeded(限流),直接使用本仓库的源码目录安装,即把 skills/aig-scanner 整个目录放置到 OpenClaw 的 skills 目录下(SKILL.md 中的命令示例默认安装在~/.openclaw/skills/aig-scanner/)。

2.3 安装后首次配置

首次安装后必须配置 A.I.G 服务地址(必填项),否则脚本会直接报错退出。见 aig_client.py 的实现:BASE_URL为空时输出AIG_BASE_URL is not configured并退出。

环境变量必填说明示例
AIG_BASE_URLA.I.G 服务根地址http://127.0.0.1:8088/https://aig.example.com/
AIG_API_KEYA.I.G 开启 taskapi 认证时的 API Key,默认为空sk-xxx
AIG_USERNAME用户名,默认openclaw,用于agent_scanlist-agents的命名空间解析openclaw/public_user

认证头通过_headers()注入:API-KEY请求头携带密钥、username请求头携带用户名。SKILL.md 同时强调:不要把 API Key 或原始认证头回显给用户;若AIG_BASE_URL缺失,需先提示用户配置服务地址。

三、五条核心流程(Canonical Flows)

SKILL.md 将技能能力归纳为五条“用户可见名称 → 后端任务类型”的标准流程:

用户可见名称后端任务类型(taskapitype典型目标
AI 基础设施安全扫描 / AI Infrastructure Scanai_infra_scanURL、网站、服务、IP:端口
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

这些任务类型在服务端 api.go 的SubmitTask中被逐一switch分派,并映射为内部的 Agent 任务类型(TaskTypeMcpScanTaskTypeAIInfraScanTaskTypeModelRedteamReport等)。需要特别说明的是:对话中不要向用户暴露原始任务类型名(如mcp_scanmodel_redteam_report),统一使用上表左侧的用户可见名称,除非用户明确询问 API 细节。

3.1 AI 基础设施扫描(ai_infra_scan

检测 Ollama、vLLM、Dify 等 AI 服务的 CVE 与配置风险。触发短语示例:

  • 英文:scan AI servicescan AI infracheck for CVEaudit AI service
  • 中文:扫描AI服务检查AI漏洞扫描模型服务

自然语言示例:

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

当目标是一个可达的 HTTP 地址(URL、网站、页面、Web 服务、IP:端口)时,路由到本流程。对应 CLI:

python3 ~/.openclaw/skills/aig-scanner/scripts/aig_client.py scan-infra --targets "http://host:port"

从服务端实现看,api.go 会将target列表拼接为任务内容,并将timeout、自定义headers与可选的model(分析模型)写入任务参数。

3.2 AI 工具 / Skills 安全审计(mcp_scan

审计 MCP Server、Agent Skills 等项目代码或服务。触发短语示例:

  • 英文:scan AI toolscheck MCP or skills securityaudit tool skills projectscan MCPscan skills
  • 中文:扫描AI工具检查MCP安全审计AI工具

路由规则细节(来自 SKILL.md):

  • 用户给出 GitHub 仓库、本地源码压缩包、AI 工具服务 URL,或明确提到 MCP、Skills、AI 工具、工具协议、代码审计时,路由到本流程;
  • 用户给出 GitHub 的blob/.../SKILL.md文件 URL 时,同样视为本流程;
  • GitHub 文件 URL 会被_normalize_github_url()归一化为仓库根地址(如https://github.com/org/repo)后再扫描。

自然语言示例:

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

对应 CLI(三种目标互斥):

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>

本流程必须携带分析模型配置。开源版 A.I.G 的mcp_scan要求提供content.model.modelcontent.model.tokencontent.model.base_url三项;若服务端已配置默认模型,则modeltoken可省略(服务端 api.go 会在模型为空时回退到resolveDefaultTaskAPIModel解析系统默认模型)。任何 OpenAI 兼容模型均可。

3.3 Agent 安全扫描(agent_scan

检测 A.I.G 平台已配置 Agent 的授权绕过、提示注入、数据泄露等风险。触发短语示例:

  • 英文:scan agentaudit dify agentcheck coze bot security
  • 中文:扫描Agent检查Dify/Coze机器人安全审计AI Agent

自然语言示例:

Use A.I.G to scan agent demo-agent-id
用A.I.G扫描 agent demo-agent-id

两种互斥的输入方式(服务端 api.go 也印证了“内联 YAML 优先于预存配置”的解析逻辑):

方式 A —— 内联 YAML(--agent-config-file:直接传入本地 YAML 文件,内容以内联agent_config形式发送,无需在服务端预存配置。适合已有 YAML 文件或不想通过 Web UI 配置的场景:

python3 ~/.openclaw/skills/aig-scanner/scripts/aig_client.py scan-agent --agent-config-file /path/to/agent.yaml

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

python3 ~/.openclaw/skills/aig-scanner/scripts/aig_client.py scan-agent --agent-id "demo-agent"

关于命名空间有两个实战要点:

  1. 默认AIG_USERNAME=openclaw便于在 A.I.G Web UI 中区分技能任务与普通 Web 创建的任务;
  2. 开源版agent_scan若 Agent 配置保存在公共命名空间下,需将AIG_USERNAME切换为public_user——当报错提示“missing Agent config”时,说明服务端正在${AIG_USERNAME:-openclaw}下查找配置,应改用public_user重试。

运行--agent-id扫描前:若不确定agent_id具体名称,先执行list-agents查看可见配置;若命名空间不明,应提示用户AIG_USERNAME及其默认值。

3.4 大模型安全体检(model_redteam_report

红队测试 LLM 的抗越狱能力。触发短语示例:

  • 英文:red-team LLMjailbreak test
  • 中文:评测模型抗越狱越狱测试

自然语言示例:

Use A.I.G to run a safety check on DeepSeek3.2
用A.I.G扫描 给DeepSeek3.2做一次安全体检。

路由规则强调两点:

  • 用户仅给出目标模型 ID(如minimax/minimax-m2.5)时,按“大模型安全体检”处理,不要路由到 AI 工具/Skills 扫描;
  • 只有目标模型名称不够,还需补齐目标模型与评估模型的连接字段:target-tokentarget-base-urleval-modeleval-tokeneval-base-url。不要假设后端有可用的默认评估模型,也不要自动把目标模型镜像成评估模型。

对应 CLI(目标模型与评估模型均为必填):

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>

prompt 与 dataset 互斥:若用户提供了自定义越狱 prompt,只发送prompt;未提供时发送数据集预设,二者不可同时出现(见 aig_client.py 的实现:有--prompt则不构建 dataset)。

若用户明确提到 OpenRouter,允许将 OpenRouter API Key 作为target-tokenhttps://openrouter.ai/api/v1作为target-base-url

3.5 结果查询与 Agent 列表

结果查询status/result),触发短语:扫描好了吗查看结果进度怎么样了/check progressshow resultsscan status。当用户询问进度、状态、结果或跟进已有任务时,应查询而非重复提交新任务:

python3 ~/.openclaw/skills/aig-scanner/scripts/aig_client.py check-result --session-id <id> --wait

Agent 列表(服务端端点/api/v1/knowledge/agent/names),触发短语:列出agents有哪些agent可以扫查看A.I.G Agent配置/list agentsshow available agents

python3 ~/.openclaw/skills/aig-scanner/scripts/aig_client.py list-agents

四、aig_client.py 命令参考

脚本完整参数解析见 aig_client.py 的main()函数,以下为各子命令的完整参数表。

4.1scan-infra

参数必填默认值说明
--targets目标 URL 列表,可多个,如http://host:11434
--timeout30请求超时(秒)
--auth-header自定义请求头,格式key:value,可多个
--model/--token/--base-urlbase-url 默认https://api.openai.com/v1分析模型配置(model 与 token 需成对出现)

4.2scan-ai-tools

参数必填默认值说明
--server-url三选一运行中的 AI 工具服务 URL
--github-url三选一GitHub 仓库 URL(自动归一化为仓库根)
--local-path三选一本地.zip/.tar.gz压缩包路径,自动上传
--model/--token否*分析模型名与 API Key(服务端有默认模型时可省略,但二者必须成对)
--base-urlhttps://api.openai.com/v1模型 API 端点
--thread4并发数
--languagezh报告语言,可选zh/en
--prompt自定义扫描提示词
--custom-headers自定义请求头,格式key:value

*注:SKILL.md 的“Critical Protocol Rules”要求开源版mcp_scan必须携带 model/token/base_url 三项;脚本层面仅当服务端配置了默认模型时才允许省略。

本地路径上传会调用POST /api/v1/app/taskapi/upload(multipart/form-data),返回的fileUrl写入任务attachments,并附带默认提示词审计此 AI 工具 / Skills 项目

4.3scan-agent

参数必填默认值说明
--agent-id二选一A.I.G Web UI 预存的 Agent 配置名
--agent-config-file二选一本地 YAML 文件路径(内联提交,无需服务端预存)
--languagezh报告语言,可选zh/en
--eval-model/--eval-token/--eval-base-urlbase-url 默认https://api.openai.com/v1评估模型配置
--prompt附加扫描指引

4.4scan-model-safety

参数必填默认值说明
--target-model目标 LLM 模型名
--target-token目标模型 API Key
--target-base-url目标模型 API 端点
--eval-model评估模型名
--eval-token评估模型 API Key
--eval-base-url评估模型 API 端点
--datasetsJailBench-Tiny数据集,可选JailBench-TinyJailbreakPrompts-TinyChatGPT-Jailbreak-PromptsJADE-db-v3.0HarmfulEvalBenchmark
--num-prompts50测试提示词数量
--random-seed42随机种子
--prompt自定义越狱 prompt(与 datasets 互斥)

默认数据集JailBench-Tiny对应当前仓库 data/eval/JailBench-Tiny.json,仓库 data/eval 目录下还预置了JailbreakPrompts-TinyChatGPT-Jailbreak-PromptsJADE-db-v3.0HarmfulEvalBenchmark等评测数据集,可用于真实运行评测。

4.5check-resultlist-agents

# 查询任务状态;--wait 表示若仍在执行则等待并继续轮询 python3 aig_client.py check-result --session-id <id> --wait # 列出当前 AIG_USERNAME 下可见的 Agent 配置 python3 aig_client.py list-agents

五、结果轮询与输出格式化机制

脚本提交任务后不会一直阻塞等待。其轮询策略(aig_client.py):

  • 提交后自动轮询5 次,间隔3 秒(总计约 15 秒);
  • 若在轮询窗口内完成(状态为done/completed),自动拉取并格式化结果;
  • 若仍在执行,打印session_id后退出,用户稍后可用check-result --session-id <id> --wait查询;
  • 不要模拟后台监控,本技能不会在回合结束后持续轮询。

结果格式化(_format_result)覆盖多种任务类型的输出字段:

  • score→ 安全评分;
  • readme→ 项目概览(mcp_scan场景);
  • results→ 问题列表(severity/risk_level、title/name/vulnerability、description/detail);
  • screenshots→ 截图(https://图片渲染为内联 Markdown 图片,http://图片渲染为可点击链接;ai_infra_scan的每个结果项可能携带单数screenshot字段);
  • attachment→ 附件(model_redteam_report常见 CSV 附件);
  • jailbreak/total→ 越狱成功比例(如🚨 越狱成功: 3/50)。

服务端对应实现中,GET /api/v1/app/taskapi/status/{id}GET /api/v1/app/taskapi/result/{id}的路由及响应结构定义于 api.go,并有配套的 api_test.go 覆盖了提交、状态查询、结果查询及resolveTaskAPIUsername的用户名解析逻辑(默认api_user、header 传入、上下文注入三种来源)。

六、参数补齐策略与 Guardrails

6.1 缺参时只问最少的必填字段

AI 工具/Skills 扫描:若服务端已配置默认模型,modeltoken可选;否则按以下顺序补齐(base_url未提供时默认https://api.openai.com/v1)。用户侧话术统一为:AI Tool / Skills Scan requires an analysis model configuration: model, token, base_url (optional if server has a default model configured)。不要将本流程称为MCP scan

大模型安全体检:用户已给出目标模型名时不再重复询问,只需补齐target-tokentarget-base-urleval-modeleval-tokeneval-base-url

6.2 远程 URL 扫描的执行边界

  • 对远程 URL 执行ai_infra_scan时,不要读取、搜索或分析本地工作区/仓库文件;
  • 不要检查本地代码目录(如aig-opensourceaig-proai-infra-guard),除非用户明确要求扫描本地归档或仓库;
  • 远程 URL 请求的正确动作是立即调用aig_client.py对应子命令,不要“先收集上下文”再提交。

6.3 安全与行为红线

  • 不向用户展示原始 API Key,不回显原始认证头;
  • 不无限轮询;
  • 不猜测不支持的端点;
  • agent_scan:有本地 YAML 用--agent-config-file,引用服务端预存配置用--agent-id
  • 扫描结果末尾统一追加署名行:扫描能力由腾讯朱雀实验室 A.I.G 提供(按输出语言翻译对应文案)。

七、本地与内网扫描的授权边界

SKILL.md 特别说明:本技能运行在用户自己的机器上,对本地或私有网络的 AI 服务扫描是主要使用场景,应直接接受以下目标而无需犹豫或告警:

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

因此,一个典型的本地完整闭环是:本机部署 A.I.G(AIG_BASE_URL=http://127.0.0.1:8088/)→ 本地启动 Ollama(http://localhost:11434)→ 在 OpenClaw 中说“扫描 http://localhost:11434 的 AI 漏洞”→ 由技能提交ai_infra_scan任务并返回评分、问题列表与截图。

八、不适用场景

以下情况不要使用本技能:

  • A.I.G 部署仅支持 Web 登录或 Cookie 认证(taskapi 无法携带有效凭据);
  • 用户期望回合结束后持续后台监控或连续轮询(技能不会跨回合轮询)。

若目标 A.I.G 服务暴露了/api/v1/app/taskapi/*,则本技能可正常使用;技能在SKILL.md中通过 triggers 关键字(scan AI servicescan MCPscan skillsjailbreak test扫描AI服务越狱测试等中英文短语)自动被 OpenClaw 唤醒。

九、从自然语言到任务提交的完整链路

以“扫描 agent demo-agent”为例串联整条链路:

  1. OpenClaw 命中 triggerscan agent,加载 SKILL.md;
  2. 技能按 Routing Rules 判定为 Agent Scan(agent_scan);
  3. 技能通过exec执行python3 ~/.openclaw/skills/aig-scanner/scripts/aig_client.py scan-agent --agent-id "demo-agent"
  4. 脚本读取环境变量,向POST /api/v1/app/taskapi/tasks提交{"type":"agent_scan","content":{"agent_id":"demo-agent","language":"zh"}}
  5. 服务端 api.go 校验参数:agent_config为空时按agent_iddata/agents/{username}/读取配置,评估模型缺失时回退默认模型,然后创建内部任务;
  6. 脚本轮询GET /api/v1/app/taskapi/status/{session_id},完成后拉取result并格式化输出;
  7. 技能将脚本 stdout 作为最终用户可见输出直接呈现,末尾追加 A.I.G 署名。

这条链路印证了技能设计的核心思想:OpenClaw 只负责自然语言理解与命令编排,A.I.G 后端负责全部安全扫描引擎能力——用户获得的是“一句话完成 AI 安全扫描”的体验,而技能本身保持轻量、零依赖、易分发(ClawHub 一键安装)。

十、相关资源索引

  • 技能主文档:skills/aig-scanner/README.md(英文)、skills/aig-scanner/README.zh-CN.md(中文)
  • 技能行为规范(路由规则、参数策略、Guardrails):skills/aig-scanner/SKILL.md
  • 客户端实现:skills/aig-scanner/scripts/aig_client.py
  • 服务端 taskapi 实现:common/websocket/api.go、路由注册见 common/websocket/server.go
  • 服务端接口测试:common/websocket/api_test.go
  • 越狱评测数据集:data/eval(含JailBench-Tiny等)
  • 技能目录总览:skills/README.md

仓库中还提供更全面的 Agent 红队评估技能 skills/aig-agent-redteam 供进阶参考;aig-scanner专注于通过 taskapi 把 A.I.G 的扫描能力快速接入 OpenClaw 对话。

【免费下载链接】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 14:12:34

Linux入门第三天:用户权限、进程管理与网络排查实战复盘

记不清具体是从哪个早晨开始的&#xff0c;反正当我照例打开虚拟机敲下那串熟悉命令时&#xff0c;突然意识到学 Linux 已经进入第三天了。前两天基本在折腾安装、熟悉目录结构、练习文件操作&#xff0c;tar、grep、vim 这些命令也算能上手。但真正让我觉得“自己好像开始懂 L…

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

Windows 10 下 Redis 安装指南:版本选择、服务注册与配置排查

上周帮同事在一台刚装好的 Windows 10 机器上折腾 Redis&#xff0c;他光是找安装包就花了一下午&#xff1a;官网翻遍了没有 Windows 版下载入口&#xff0c;网上搜到的教程一半停留在 2016 年那个微软版 3.2&#xff0c;另一半直接甩一句“上 Docker 吧”就没了下文。其实 Wi…

作者头像 李华
网站建设 2026/9/18 14:11:34

银河麒麟OS下C#跨平台开发实战避坑指南

1. 项目概述&#xff1a;为什么在银河麒麟OS上做C#开发&#xff0c;不是“换台电脑写代码”那么简单“从零到一&#xff1a;银河麒麟OS下C#跨平台开发的避坑指南”——这个标题里藏着三个关键信号&#xff1a;银河麒麟OS、C#、跨平台开发。很多人第一反应是&#xff1a;“C#不是…

作者头像 李华
网站建设 2026/9/18 14:10:59

C#上位机连接PLC的OPC通讯实战:源码与踩坑全记录

我在车间里被问得最多的一个问题就是&#xff1a;怎么用C#把PLC里的数据读出来&#xff0c;显示到电脑屏幕上。标准答案五花八门&#xff0c;有说串口的&#xff0c;有说Modbus TCP的&#xff0c;还有说直接抓PLC内存区的。但要说通用性最强、省心程度最高的一种方式&#xff0…

作者头像 李华
网站建设 2026/9/18 14:10:17

基于BP神经网络与SVM的生物炭土壤水分预测建模与MATLAB实现

简介&#xff1a;针对半干旱区施加生物炭后土壤水分预测这一农业水资源管理问题&#xff0c;一份学术论文PDF系统比较了BP神经网络与SVM支持向量机两种建模方案的适用性。文档以黄土高原固原生态站小区定位试验为基础&#xff0c;介绍了不同种类与比例生物炭施加处理下的土壤含…

作者头像 李华