SkillSpector 详细部署教程
SkillSpector 是 NVIDIA 开源的一款 AI Agent 技能安全扫描器,用于在安装 Claude Code、Codex 等 Agent 技能前检测漏洞、恶意模式、提示注入和数据外泄风险。本教程将涵盖三种部署方式:uv 工具安装、源码安装和 Docker 部署。
一、环境准备
前置条件
- Python 3.12+(Docker 方式无需本地 Python)
- uv 包管理器(推荐)或 pip
- Docker(仅 Docker 方式需要)
安装 uv(如未安装)
1 2 3 4 5
| curl -LsSf https://astral.sh/uv/install.sh | sh
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
|
二、方式一:uv 工具安装(推荐,最简洁)
这种方式将 SkillSpector 作为全局 CLI 工具安装,适合日常快速扫描使用。
纯 CLI 安装
1
| uv tool install git+https://github.com/NVIDIA/skillspector.git
|
安装完成后可直接使用 skillspector 命令。
含 MCP 支持的安装
如果你计划将 SkillSpector 作为 MCP 服务器运行(供 Claude Code 等 Agent 调用),需要安装 mcp 附加依赖:
1
| uv tool install 'skillspector[mcp] @ git+https://github.com/NVIDIA/skillspector.git'
|
更新工具
1
| uv tool update skillspector
|
验证安装
1
| skillspector scan --help
|
三、方式二:源码安装(适合开发与定制)
源码安装适合需要修改代码、扩展分析器或进行二次开发的场景。
1. 克隆仓库并创建虚拟环境
1 2 3 4 5 6 7 8
| git clone https://github.com/NVIDIA/skillspector.git cd skillspector
uv venv .venv && source .venv/bin/activate
python3 -m venv .venv && source .venv/bin/activate
|
2. 安装依赖
1 2 3 4 5
| make install
make install-dev
|
Makefile 会优先使用 uv,若不可用则回退到 pip。
3. 验证
1
| skillspector scan --help
|
四、方式三:Docker 部署(无需 Python)
Docker 方式适合不希望在本机安装 Python 环境的场景,也适合 CI/CD 流水线集成。
1. 构建镜像
1 2 3
| make docker-build
docker build -t skillspector .
|
镜像基于官方 python:3.12-slim-bookworm 构建。
2. 基础扫描(仅静态分析)
将当前目录挂载到容器的 /scan 工作目录:
1
| docker run --rm -v "$PWD:/scan" skillspector scan ./my-skill/ --no-llm
|
3. 带 LLM 分析的扫描
方式 A:使用 .env 文件
1 2 3 4 5 6 7 8 9
| cat > .env <<'EOF' SKILLSPECTOR_PROVIDER=anthropic ANTHROPIC_API_KEY=sk-ant-... EOF
docker run --rm \ -v "$PWD:/scan" \ --env-file .env \ skillspector scan ./my-skill/
|
方式 B:直接传递环境变量
1 2 3 4 5
| docker run --rm \ -v "$PWD:/scan" \ -e SKILLSPECTOR_PROVIDER=anthropic \ -e ANTHROPIC_API_KEY="$ANTHROPIC_API_KEY" \ skillspector scan ./my-skill/
|
4. 输出报告到宿主机
1 2 3
| docker run --rm \ -v "$PWD:/scan" \ skillspector scan ./my-skill/ --no-llm --format json --output report.json
|
报告文件 report.json 将写入当前目录。
5. 创建别名(可选)
1 2
| alias skillspector-docker='docker run --rm -v "$PWD:/scan" skillspector' skillspector-docker scan ./my-skill/ --no-llm
|
6. 边缘/资源受限环境优化
在资源受限设备上运行时,可限制资源并禁用 LLM:
1 2 3 4 5 6 7 8
| docker run --rm \ --memory=512m \ --cpus=1 \ -v "$PWD:/scan" \ skillspector scan ./skill-directory/ \ --no-llm \ --format json \ --output report.json
|
五、LLM 分析配置(可选但推荐)
启用 LLM 语义分析后,SkillSpector 能过滤误报并提供人类可读的解释,精度可提升至约 87%。
选择 Provider
SkillSpector 支持多种 LLM 提供商,通过 SKILLSPECTOR_PROVIDER 环境变量切换:
| Provider |
凭证环境变量 |
默认模型 |
openai |
OPENAI_API_KEY |
gpt-5.4 |
anthropic |
ANTHROPIC_API_KEY |
claude-opus-4-6 |
ollama |
无需 |
llama3.1:8b |
nv_build |
NVIDIA_INFERENCE_KEY |
z-ai/glm-5.2 |
claude_cli |
使用本地 CLI 登录 |
本地 Claude 运行时 |
常用配置示例
使用 Anthropic:
1 2 3
| export SKILLSPECTOR_PROVIDER=anthropic export ANTHROPIC_API_KEY=sk-ant-... skillspector scan ./my-skill/
|
使用本地 Ollama(完全离线):
1 2 3
| export SKILLSPECTOR_PROVIDER=ollama export SKILLSPECTOR_MODEL=llama3.1:8b skillspector scan ./my-skill/
|
使用 Claude CLI(无需 API Key):
1 2 3
| export SKILLSPECTOR_PROVIDER=claude_cli skillspector scan ./my-skill/
|
跳过 LLM 分析
如果只需要快速静态扫描:
1
| skillspector scan ./my-skill/ --no-llm
|
六、MCP 服务器部署(用于 Agent 运行时防护)
将 SkillSpector 作为 MCP 服务器运行,让 Agent 在安装技能前自动调用扫描,实现运行时防护。
1. 安装 MCP 支持
1
| uv tool install --force 'skillspector[mcp] @ git+https://github.com/NVIDIA/skillspector.git'
|
2. 启动 MCP 服务器
stdio 传输(本地 CLI Agent):
HTTP 传输(远程调用):
1
| skillspector mcp --transport http --host 127.0.0.1 --port 8000
|
安全提醒:HTTP 传输默认无认证。任何能访问该端口的调用者都可执行扫描。如需暴露到网络,务必置于认证反向代理之后。HTTP 模式会自动拒绝本地路径和 file:// URL,仅接受远程 Git 和 .zip URL。
3. 注册到 Claude Code
1
| claude mcp add skillspector -- skillspector mcp
|
七、CI/CD 集成
SkillSpector 的退出码和 JSON/SARIF 输出是稳定契约,便于集成到流水线中。
退出码含义
| 退出码 |
含义 |
| 0 |
扫描完成,风险分 ≤ 50(SAFE 或 CAUTION) |
| 1 |
扫描完成,风险分 > 50(DO_NOT_INSTALL) |
| 2 |
错误(输入无效、源不可读等) |
GitHub Actions 示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| name: Security Scan on: push: paths: ['skills/**'] pull_request: paths: ['skills/**']
jobs: scan: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4
- uses: actions/setup-python@v5 with: python-version: '3.12'
- name: Install SkillSpector run: pip install git+https://github.com/NVIDIA/SkillSpector
- name: Scan skills run: | skillspector scan ./skills --no-llm \ --format sarif --output skillspector.sarif
- name: Upload SARIF uses: github/codeql-action/upload-sarif@v3 with: sarif_file: skillspector.sarif
|
八、常用命令速查
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| skillspector scan ./my-skill/
skillspector scan ./SKILL.md
skillspector scan https://github.com/user/my-skill
skillspector scan ./my-skill.zip
skillspector scan ./my-skill/ --format json --output report.json
skillspector scan ./my-skill/ --format markdown --output report.md
skillspector scan ./my-skill/ --format sarif --output report.sarif
skillspector scan ./my-skill/ --no-llm
skillspector baseline ./my-skill/ -o .skillspector-baseline.yaml
skillspector scan ./my-skill/ --baseline .skillspector-baseline.yaml
|
九、故障排查
| 问题 |
可能原因 |
解决方案 |
skillspector: command not found |
PATH 未包含 uv 工具目录 |
运行 uv tool update-shell 或手动添加 ~/.local/bin 到 PATH |
| MCP 初始化挂起 |
FastMCP stdio 传输已知问题 |
检查 issue #199 |
| LLM 分析返回空结果 |
API Key 无效或额度耗尽 |
检查环境变量,或临时使用 --no-llm |
| Docker 扫描时找不到文件 |
挂载路径不正确 |
确保使用 -v "$PWD:/scan" 并扫描 /scan 下的相对路径 |
| SC4 漏洞查询失败 |
无法访问 api.osv.dev |
离线环境会自动回退到内置列表,无网络时仍可用静态分析 |
以上三种部署方式可根据实际场景灵活选择:日常使用推荐 uv 工具安装,开发定制选源码安装,隔离环境或 CI 流水线用 Docker。部署完成后,建议先对已有的技能目录执行一次 --no-llm 快速扫描,了解当前技能生态的安全状况,再根据需要配置 LLM 分析和 CI 集成。