RepoDaily · 2026-07-10 · Security tool

PentAGI:在沙箱 Docker 容器中自主编排 20+ 渗透测试工具的 AI Agent 系统

#11 Security tool Go +543 vxcontrol/pentagi 打开仓库

一个 MIT 许可的多智能体系统,将 LLM 推理与 nmap、metasploit、sqlmap 等工具链接在隔离容器中执行,支持包括 Ollama 在内的九种 LLM 提供商实现完全自托管部署。

项目类型Security tool
最适合拥有 Docker 基础设施和自有 LLM 端点、需要自托管 AI 驱动渗透测试的安全团队
风险等级中等——需要 Docker socket 访问权限、LLM API 凭据和严格的网络隔离
评估时间使用 OpenAI 或 Ollama 端点进行 Docker Compose 部署约需 1-2 小时

核心问题: 你的基础设施能否安全托管一个会生成 Docker 容器并执行攻击性工具的自主渗透测试智能体?

92/100

RepoDaily 采用评分

RepoDaily 将该项目的采用分评为 92/100(强):分数来自文章来源、安装路径、生产风险、差异化、许可证清晰度以及 AI/Agent 适配度。

基于 RepoDaily 来源和采用说明的方向性评分,不是基准测试。风险: 中
100证据质量

包含 5 个来源、覆盖 3 类来源;如有 RepoDaily 独有模块,会进一步提高证据分。

100可安装/可试用性

检测到 7 个工作流步骤、5 个下一步动作,以及 6 个命令/安装信号。

64维护可信度

趋势热度为 +543 stars;如内容中有 release、issue 或维护信号,会提高维护可信度。

96生产准备度

采纳风险标记为 medium,并包含 6 条安全说明与 4 条跳过条件。

100差异化

3 个机会视角、4 个替代方案,以及 4 个类型化模块支撑差异化判断。

82许可证清晰度

文章中包含许可证来源或许可证表述。

90Agent / AI 适配度

文章正文和元数据中检测到 7 个 AI/Agent 相关信号。

项目概览

PentAGI(Penetration testing Artificial General Intelligence)是一个采用 MIT 许可的自主安全测试平台,后端使用 Go 编写,前端基于 React。与手动编写工具调用脚本不同,PentAGI 部署 AI 智能体来规划多步骤渗透测试工作流,从内置的 20+ 专业工具套件(包括 nmap、metasploit、sqlmap)中选择合适工具,并在完全隔离的沙箱 Docker 容器中执行。

该项目开箱支持九种 LLM 提供商:OpenAI、Anthropic、Google Gemini、AWS Bedrock、DeepSeek、GLM、Kimi、Qwen 以及自托管 Ollama。这意味着安全团队可以使用 Ollama 端点在本地运行整个技术栈,确保数据不离开网络;也可以通过云端提供商获取更高质量的推理。docker-compose.yml 为每个提供商暴露了细粒度的环境变量,包括自定义服务器 URL、API 密钥、模型名称和配置路径。

在原始工具执行之外,PentAGI 集成了基于 Neo4j 的 Graphiti 知识图谱用于语义关系追踪,一个存储成功攻击路径的智能记忆系统,以及通过 vxcontrol/scraper Docker 镜像实现的内置浏览器。系统还集成了六个外部搜索提供商——Tavily、Traversaal、Perplexity、DuckDuckGo、Google Custom Search 和 Sploitus——用于实时漏洞情报采集。pgvector PostgreSQL 实例作为嵌入向量存储,支持可配置的嵌入提供商、批处理大小和文本限制。

Dockerfile 展示了规范的多阶段构建:Node 23 / pnpm / Vite 前端编译阶段、Go 1.24 静态二进制后端阶段(CGO_ENABLED=0)以及最终的 Alpine 3.23.3 运行时阶段。后端编译四个二进制文件——pentagi、ctester、ftester 和 etester。许可证报告在构建过程中自动生成,后端报告位于 /opt/pentagi/licenses/backend/,前端报告位于 /opt/pentagi/licenses/frontend/。

解决什么问题

  • 手动渗透测试需要将 20+ 种不同工具按照适应目标响应的顺序串联执行——这一过程需要深厚的专业知识和大量时间
  • 现有自动化框架执行静态攻击剧本,无法对意外的服务横幅、被过滤的端口或自定义应用行为进行推理
  • 安全团队需要可重复、可记录的测试流程,能够保存成功方法供未来复用,而非每次从零开始
  • 云托管 AI 安全工具会将敏感的目标侦察数据发送到第三方 API,这在受监管或涉密环境中是不可接受的

工作原理

  1. 通过 docker-compose.yml 部署,启动 pentagi 容器、pgvector PostgreSQL 实例和辅助服务,连接到 pentagi-network 桥接网络
  2. 通过环境变量配置至少一个 LLM 提供商——例如 OpenAI 设置 OPEN_AI_KEY,自托管端点设置 OLLAMA_SERVER_URL 和 OLLAMA_SERVER_MODEL
  3. 访问 https://127.0.0.1:8443 的 Web 界面(默认监听地址),用自然语言定义渗透测试任务
  4. AI 智能体将任务分解为计划,从 20+ 内置工具套件中选择合适工具,在隔离的 Docker 容器中执行每个工具
  5. 可选的执行监控通过 ASK_USER 环境标志允许人工在每个步骤观察、暂停或干预
  6. 结果流入智能记忆系统和 Graphiti/Neo4j 知识图谱,构建可复用的成功方法和已发现关系库
  7. 外部搜索提供商(Tavily、Perplexity、Sploitus 等)和内置 scraper 浏览器在执行过程中提供实时漏洞和利用情报

部署架构:Docker Compose 服务与配置面

  • docker-compose.yml 定义了主 pentagi 服务,使用镜像 vxcontrol/pentagi:latest,默认在 127.0.0.1 上暴露 8443/tcp 端口
  • pentagi 服务依赖于 pgvector PostgreSQL 容器(service_healthy 条件)用于向量嵌入存储
  • 五个命名卷持久化状态:pentagi-data、pentagi-ssl、pentagi-ollama、scraper-ssl 和 pentagi-postgres-data
  • 三个隔离的桥接网络分离关注点:pentagi-network、observability-network 和 langfuse-network
  • Dockerfile 运行时阶段(alpine:3.23.3)创建非特权 pentagi 用户并通过组 998 授予 Docker socket 访问权限——这是必需的,因为智能体需要生成隔离的工具容器
  • 前端构建阶段使用 node:23-slim 配合 pnpm、Vite 和 esbuild 压缩(target es2020);后端阶段使用 golang:1.24-bookworm 配合 CGO_ENABLED=0 编译静态二进制文件
  • 编译四个 Go 二进制文件:pentagi(主服务器,位于 ./cmd/pentagi)、ctester、ftester 和 etester——后三者分别是 LLM 智能体、嵌入和功能测试工具

LLM 提供商、搜索 API 与外部集成

PentAGI 通过 docker-compose.yml 中的专用环境变量接受九种 LLM 提供商。每个提供商暴露三个配置项:API 密钥(如 ANTHROPIC_API_KEY、DEEPSEEK_API_KEY、QWEN_API_KEY)、服务器 URL 覆盖(如 ANTHROPIC_SERVER_URL、GLM_SERVER_URL)以及提供商专属配置路径。通用的 LLM_SERVER_URL/LLM_SERVER_KEY/LLM_SERVER_MODEL 三元组支持任何 OpenAI 兼容端点,OLLAMA_SERVER_URL 配合 OLLAMA_SERVER_MODEL 可实现完全自托管推理,并支持可选的模型拉取和加载超时。

嵌入配置同样细粒度:EMBEDDING_URL、EMBEDDING_KEY、EMBEDDING_MODEL、EMBEDDING_PROVIDER、EMBEDDING_BATCH_SIZE、EMBEDDING_MAX_TEXT_BYTES 和 EMBEDDING_STRIP_NEW_LINES 让运维人员独立于推理 LLM 调整向量生成。摘要子系统暴露十个环境变量(SUMMARIZER_PRESERVE_LAST、SUMMARIZER_USE_QA、SUMMARIZER_MAX_BP_BYTES 等)用于控制长多步骤会话中的上下文窗口管理。

情报采集方面,README 列出了六个外部搜索提供商——Tavily、Traversaal、Perplexity、DuckDuckGo、Google Custom Search 和 Sploitus——以及通过 vxcontrol/scraper Docker 镜像实现的内置浏览器。高级设置部分文档记录了用于 LLM 可观测性的 Langfuse 集成、用于语义关系追踪的 Graphiti/Neo4j 知识图谱,以及用于身份认证的 GitHub/Google OAuth。

许可证合规与依赖管理

  • CONTRIBUTING.md 强制要求仅使用 MIT 兼容许可证——GPL、LGPL、AGPL、CC-BY-SA(用于代码时)和专有许可证被明确列为不兼容
  • 批准的许可证列表:MIT、Apache-2.0、BSD-2-Clause、BSD-3-Clause、ISC、MPL-2.0(未修改)和 0BSD
  • 合并 PR 前,开发者需运行 `cd backend && go mod tidy`、`cd ../frontend && pnpm install`,然后运行 `./scripts/generate-licenses.sh` 收集依赖许可证数据到 licenses/ 目录
  • osv-scanner 使用标志 `--experimental-licenses="MIT,Apache-2.0,BSD-2-Clause,BSD-3-Clause,ISC,MPL-2.0"` 扫描后端和前端以捕获不兼容的依赖
  • Docker 构建自动生成许可证报告:后端生成 dependencies.txt(go list -m all)和 licenses.csv(go-licenses);前端生成 dependencies.json、licenses.json 和 licenses.csv(license-checker)
  • LICENSE 文件确认 MIT 许可证,Copyright (c) 2025 PentAGI Development Team

PentAGI 与主流渗透测试平台的对比

Metasploit Framework(rapid7/metasploit-framework)是最主流的开源利用工具包,但需要手动选择模块和配置 payload——PentAGI 将类似工具(包括 metasploit 本身)封装在 AI 智能体之后,自主规划执行序列。

MITRE Caldera(mitre/caldera)基于 ATT&CK 技术链自动化对手模拟,但其决策逻辑是基于规则和插件的,而非 LLM 驱动。PentAGI 使用 LLM 推理根据目标响应实时调整工具选择,而 Caldera 擅长可重复的合规驱动对手模拟。

对于已经使用 Nuclei 模板或自定义 Python 脚本编写渗透测试的团队,PentAGI 提供了更高的抽象层——自然语言任务定义配合自主规划——代价是 LLM API 开销和 Docker 基础设施投入。

谁适合关注

适合关注

  • 拥有现有 Docker 基础设施和 LLM API 预算(或自托管 Ollama GPU 服务器)的安全团队
  • 需要可重复自主测试工作流并通过 ASK_USER 标志保留人工监督的红队
  • 要求完全自托管部署、目标侦察数据不能离开网络的受监管组织
  • 探索 AI 驱动攻击链自动化、需要知识图谱进行关系追踪的安全研究人员

可以先跳过

  • 没有 Docker 专业知识或无法向 pentagi 容器授予 Docker socket 访问权限(GID 998)的团队
  • 自主执行攻击性安全工具(metasploit、sqlmap)无法获得合法授权的环境
  • 依赖树包含 GPL/AGPL 组件的项目——PentAGI 的许可证政策明确拒绝 copyleft 依赖
  • 需要在每次工具调用前都获得人工批准且不可省略的用例(ASK_USER 标志是可选的,非强制)

风险与注意事项

需要具备 Docker socket 访问权限的基础设施、LLM API 凭据和严格的网络隔离。沙箱容器隔离降低了影响范围,但自主执行攻击性工具要求仅在授权目标上进行受控部署。

  • Docker socket 访问权限(GID 998)使 pentagi 容器能够生成和管理同级容器——必须进行网络隔离且不得对外暴露
  • 自主多步骤执行可能每个任务运行数十次工具调用,LLM API 成本不可预测
  • 攻击性安全工具(nmap、metasploit、sqlmap)在对任何目标部署前需要明确的法律授权
  • 基础设施复杂度包括 pgvector/PostgreSQL、可选的 Neo4j(Graphiti)、可选的 Langfuse 以及 scraper 浏览器容器
  • 默认监听地址(127.0.0.1:8443)是安全的,但错误配置 CORS_ORIGINS 或 PENTAGI_LISTEN_IP 可能暴露 Web 界面
  • 所有工具操作在完全隔离的沙箱 Docker 容器中执行——智能体不直接在宿主机上运行工具
  • 运行时容器使用 Alpine 3.23.3,以非特权 pentagi 用户运行(无 root 执行)
  • 默认监听地址为 127.0.0.1:8443,防止意外的外部 Web 界面暴露
  • Cookie 签名盐(COOKIE_SIGNING_SALT)和 CORS 来源(CORS_ORIGINS)可配置但默认为空——生产环境运维人员必须设置这些值
  • osv-scanner 漏洞和许可证扫描在后端(Go 模块)和前端(npm 包)CI 流程中运行
  • Docker socket 访问权限(组 998)是工具容器生成所必需的,必须视为特权能力进行管理

替代方案比较

方案适用场景代价
Metasploit Framework
需要手动控制漏洞利用选择、payload 生成和后渗透操作,且需要最大的公开漏洞利用数据库免费,开源(BSD-3-Clause)
MITRE Caldera
需要基于规则的自动化对手模拟,与 ATT&CK 框架对齐,适用于合规驱动的紫队演练免费,开源(Apache-2.0)
Nuclei + 自定义自动化脚本
需要轻量级基于模板的漏洞扫描,无需 Docker 基础设施或 LLM API 成本免费,开源(MIT)
商业 AI 渗透测试平台(如 Pentera、NodeZero)
需要供应商支持的托管式自主渗透测试产品,含合规报告和专属技术支持商业订阅,通常每年 2万-10万+ 美元

这个趋势说明了什么

使用 Ollama 实现气隙红队自动化

在 docker-compose.yml 中设置 OLLAMA_SERVER_URL 和 OLLAMA_SERVER_MODEL 即可实现完全自主的渗透测试,无需任何外部 API 调用——目标侦察和利用数据完全不离开网络。这对于金融、国防、医疗等无法使用云端 LLM API 的受监管行业意义重大。

在隔离实验室中使用 Ollama 端点部署 PentAGI,对授权目标执行限定范围的 nmap + sqlmap 序列,并与 OpenAI 后端运行的决策质量进行对比。

攻击链知识图谱持久化

Graphiti/Neo4j 集成将发现的主机关系、凭据和漏洞存储为跨会话持久化的语义图谱。后续测试可受益于先前的侦察结果,无需手动知识传递。

对同一目标范围运行两个连续的多步骤任务,查询 Neo4j 图谱确认第一次运行的关系是否影响了第二次运行。

多提供商成本优化

借助九种支持的提供商(包括 DeepSeek 和 Qwen 等高性价比选项),运维人员可以将规划路由到高质量模型(Claude、GPT-4),将常规工具选择路由到更便宜的端点,完全通过环境变量控制。

分别使用 DEEPSEEK_API_KEY 和 ANTHROPIC_API_KEY 运行相同任务,对比 token 消耗、执行时间和任务完成率。

下一步建议

在隔离实验室中使用单一 LLM 提供商部署 PentAGI,针对授权目标进行限定测试

克隆仓库,在 docker-compose.yml 中配置单一提供商的 API 密钥,启动整个技术栈,定义一个窄范围任务(如对一台授权主机进行端口扫描和服务识别),在扩展到完整测试范围前评估智能体的规划质量。

  1. 克隆 vxcontrol/pentagi 仓库并查看 docker-compose.yml 中的环境变量
  2. 设置一个 LLM 提供商:OpenAI 设置 OPEN_AI_KEY,自托管端点设置 OLLAMA_SERVER_URL 和 OLLAMA_SERVER_MODEL
  3. 运行 `docker compose up` 启动 pentagi 容器、pgvector PostgreSQL 和辅助服务
  4. 打开 https://127.0.0.1:8443 的 Web 界面并接受自签名 TLS 证书
  5. 针对明确授权的目标定义限定范围任务,设置 ASK_USER=true 以在每个步骤保留人工审批

RepoDaily 判断

PentAGI 提供了一个真正自主的渗透测试平台,LLM 驱动的智能体规划多步骤攻击序列,从 20+ 专业工具中选择并在沙箱 Docker 容器中执行。九种 LLM 提供商集成(包括自托管 Ollama)、Graphiti/Neo4j 知识图谱和严格的 MIT 许可证合规工具链使其区别于基于脚本的替代方案。Docker socket 要求和不可预测的 LLM 成本是主要部署约束——这是一款面向具备 Docker 专业知识、有授权测试范围和明确 LLM 预算的安全团队的工具。

信息来源