目录

vxcontrol/pentagi:让 AI 自主跑完渗透测试全流程

这套系统真正在赌什么

大部分"AI + 安全"项目停在两件事上:要么让 LLM 给人当参谋、生成 payload,人自己执行;要么做个 Burp 插件分析流量。PentAGI(Penetration testing Artificial General Intelligence)赌的是另一条路——让 AI Agent 自己在隔离容器里真正运行渗透工具,从侦察一路跑到报告,中间尽量不需要人

这不是措辞差异,是能力差异。PentestGPT、BurpGPT 这类工具的输出是"建议你跑这条命令";PentAGI 的输出是"我已经跑完了 nmap、试了三个 exploit 模块、拿到一份漏洞报告,你来 review"。能否自主执行真实工具、能否跨越单次调用做长程规划,是 Agent 从"助手"变成"操作员"的分界线。

它因此成了观察 LLM Agent 落地攻防场景的一个完整参考实现:multi-agent 编排、tool use、长期记忆、知识图谱、可观测性,一套全打包在 Go 后端 + React 前端里,docker-compose 一键起。下文按"系统怎么分层、任务怎么流过、谁该用、怎么开始"的顺序拆开。

基本盘

GitHubhttps://github.com/vxcontrol/pentagi
Stars / Forks约 20.2K / 2.7K(2026-07)
主语言Go 1.24(后端)+ TypeScript/React(前端)
许可证源码 MIT;Docker 镜像与整体使用另受 EULA 约束(适用法律:英国)
部署Docker Compose 为主,也支持 Podman(含 rootless)
最近活跃持续迭代,2026-07 仍有 push

一个容易踩的坑:源码是 MIT,但官方提供的 Docker 镜像和整体使用行为受独立的 EULA 约束,EULA 要求"仅用于授权渗透测试"。两者冲突时源码部分以 MIT 为准。要二次分发或商业嵌入前,先把 EULA 读完。

系统地图:四条不能混在一起的主线

PentAGI 内部至少有四条并行主线,混在一起整篇都会糊涂:

┌─────────────────────────────────────────────────────────────┐
│  React Web UI  ←(REST/GraphQL, Bearer Token)→  Go Backend   │
└──────────────────────────┬──────────────────────────────────┘
                           │ Agent 编排层(主线 1)
              primary_agent(orchestrator)
         ┌────────┬────────┬────────┬────────┐
         ↓        ↓        ↓        ↓        ↓
    searcher  pentester  coder  installer  ...(共 13 个角色)
                           │ 工具执行层(主线 2)
              image_chooser 按任务选镜像
              ├─ debian:latest      (通用任务)
              └─ vxcontrol/kali-linux(渗透任务,200+ 工具)
                    │  每个 agent 操作开独立 worker 容器
                    │  via docker.sock 或 TCP+TLS(:2376)
              记忆层(主线 3)          图谱层(主线 4)
              PostgreSQL + pgvector    Graphiti + Neo4j
              (命令/输出持久化、        (攻击路径语义关系、
                 向量语义召回)            跨任务复用)
              可观测性:OpenTelemetry → Grafana / VictoriaMetrics
                       / Jaeger / Loki / Langfuse(+ClickHouse)

四条主线各自的职责,分开看:

  • 主线 1 · 编排:多个 agent 角色怎么分工、谁来决定下一步——也就是谁在思考。
  • 主线 2 · 执行:工具跑在哪、怎么隔离、镜像怎么选——决定谁在动手、在哪动手。
  • 主线 3 · 记忆:命令历史、输出原文、向量化的语义召回——记下做过什么、怎么找回来。
  • 主线 4 · 图谱:实体与实体之间的攻击关系,可跨任务复用——沉淀目标之间的拓扑。

记忆和图谱是两套不同的东西,别当成一个——pgvector 存的是"执行过的事实"和"语义相似召回",Graphiti + Neo4j 存的是"实体关系网络"。下面逐条展开。

主线 1:Agent 编排——不只是"三个专家"

README 的宣传口径会把 specialist 笼统说成"research / development / infrastructure",这是对外简化的说法。真正去看 backend/pkg/templates/prompts/ 目录,agent 角色比这丰富得多。

核心是一个 primary_agent 作为 orchestrator(编排器),它不亲自干活,而是把任务委派给一排 specialist。从 prompt 模板文件能数出来的角色有十几个:

角色职责类型
primary_agent主编排器,拆解任务并分派给 specialistOrchestrator
searcher信息检索(对应"research"宣传口径)Limited
pentester执行渗透操作(对应"executor")General
coder代码/脚本开发(对外叫"developer")General
installer环境/依赖安装、基础设施维护General
adviser规划模式下的导师/规划Limited
memorist长期记忆查询Limited
reporter生成报告Limited
refiner精炼推理,可切换到更强模型(如高 effort 的推理模型)
reflector失败恢复、引导正确工具使用Limited
generator / enricher / assistant内容生成、上下文增强、交互助手Limited/General

底层子任务(SubTask)的 agent_type 枚举其实是 researcher / developer / executor 三个,即 README 宣传的那三类的工程落地。

两个细节值得单独拎出来:

  • refiner 可以换更强模型。这意味着 PentAGI 允许"便宜模型干粗活、贵模型做关键推理"的混搭,不是全程一个模型扛到底。
  • reflector 负责失败恢复。Agent 执行出错时不是直接报错结束,而是由 reflector 介入,引导重新选择工具或修正调用。这是长程任务里能不能跑到底的关键,而不是锦上添花。

主线 2:工具执行——主镜像不含工具

这是最容易看走眼的一点。PentAGI 的主镜像(vxcontrol/pentagi,基于 alpine)本身不包含任何渗透工具,Dockerfile 里只装了 ca-certificates openssl openssh-keygen shadow 这几样基础件。工具全部运行在独立的 worker 容器里。

机制是这样:

  1. 一个 image_chooser agent 根据当前任务自动挑镜像——通用任务用 debian:latest,渗透任务用 vxcontrol/kali-linux
  2. 每个 agent 操作会开一个独立的 worker 容器,命名形如 pentagi-terminal-1
  3. PentAGI 主服务通过访问 docker.sock(默认)或 TCP+TLS(:2376) 来管理这些 worker 容器。
  4. 生产推荐双节点分布式:worker 节点跑 Host Docker(:2376 TLS)+ Docker-in-Docker(:3376 TLS),worker 容器通过 socket 映射访问内层 dind。

关于工具数量,有两个口径要分清:README 反复强调"20+ professional security tools",这是营销口径,指官方重点列出的核心工具数;底层 vxcontrol/kali-linux 镜像其实是完整 Kali,宣传含 200+ 工具。官方明确列出的 20 个核心工具包括(逐个核实过):

nmap · masscan · amass · subfinder · httpx · nuclei ·
sqlmap · gobuster · ffuf · nikto · impacket-* · evil-winrm ·
bloodhound-python · crackmapexec · hashcat · john · hydra ·
metasploit · radare2 · binwalk

侦察(nmap/masscan/subfinder)、Web 漏扫(nuclei/nikto/sqlmap/gobuster/ffuf)、利用(metasploit)、后渗透与 Active Directory(impacket/evil-winrm/bloodhound-python/crackmapexec)、破解(hashcat/john/hydra)、逆向与固件(radare2/binwalk)——一条完整的攻防工具链。原来草稿里提到的 wpscan 没有出现在官方明确列出的核心清单里,是否在完整 200+ 集合内存疑,这里不臆断。

强制 Docker 沙箱解决的是一个真实风险:AI 自主执行命令意味着它完全可能跑出破坏性指令,隔离容器保证即使 agent 误判,rm -rf 也只毁掉一个可重建的 worker,碰不到宿主机。

主线 3 与主线 4:记忆和图谱是两套东西

这里有一个常见的混淆:很多人会把"记忆"当成一个整体。PentAGI 里其实分两层:

执行记忆 —— PostgreSQL + pgvector。 所有命令和输出原文存进 PostgreSQL,配上 pgvector 扩展做向量化。它的作用是语义召回:agent 下一步决策时,能按语义相似度找回"我之前在这台机器上跑过什么、拿到什么结果"。这是短中期的工作记忆。

关系图谱 —— Graphiti + Neo4j。 Graphiti(源自 getzep/graphiti 项目,PentAGI 用自建的 vxcontrol/graphiti 镜像)是面向 LLM Agent 的时序知识图谱。它自动从 agent 响应和工具执行结果里抽取实体与关系,存进 Neo4j,构建渗透测试的知识网络。它的价值在跨任务复用:这次摸清的"某子域 → 某服务 → 某凭据"关系链,下次面对相关目标时可以直接召回,不用从头摸。这部分通过 GRAPHITI_ENABLED=true 开启,默认不强制。

两者的边界很清楚:pgvector 回答"我做过这件相似的事吗",Graphiti 回答"这些目标之间什么关系"。

可观测性:README 和实际配置有出入

README Features 文案写的是 “Grafana / Prometheus”,但去看实际的 compose 和架构图,时序库用的是 VictoriaMetrics(Prometheus 兼容的高性能替代),不是原生 Prometheus。这是项目自己文档的一处不一致,下文以实际配置为准。

完整可观测性栈是这样的:

组件作用
采集OpenTelemetry统一埋点
指标VictoriaMetrics + Grafana时序存储 + 仪表盘
追踪Jaeger分布式调用链
日志Loki日志聚合
LLM 分析Langfuse(+ ClickHouse 后端)每次 LLM 调用的 token、延迟、成本、prompt 回放
辅助Redis(缓存/限流)、MinIO(S3 兼容对象存储)

这套东西解决的是一个具体问题:当一个 AI Agent 自主跑了半小时、调了几十次工具,出问题时你得能回放它每一步在想什么。Langfuse 尤其关键——它把每次模型调用的 prompt、输出、耗时、成本都记下来,审计 agent 行为时最先要看的便是它。对一个"会自己执行攻击工具"的系统,没有这层可观测性等于黑箱。

任务怎么流过系统:对一台 Web 应用做黑盒渗透

抽象机制讲多了容易空,串一个具体任务。假设目标是一个已授权的 Web 应用 https://target.example.com

  1. 部署docker-compose up -d(带上 graphiti、observability、langfuse 三个可选 compose)。默认访问 https://localhost:8443,初始账号 admin@pentagi.com / admin
  2. 建任务:在 Web UI 创建 task,填入目标 URL,可选 planning mode(让 adviser 先出规划)。
  3. 侦察primary_agent 把任务拆给 searcher(多源搜索目标信息)和 pentesterimage_chooservxcontrol/kali-linux,开 worker 容器跑 nmap 扫端口、subfinder 找子域、httpx 探活)。
  4. 漏洞探测:worker 里继续跑 nuclei(模板漏扫)、nikto(Web 服务器漏扫)、sqlmap(注入测试)。每条命令和输出进 PostgreSQL + pgvector;关键实体/关系被 Graphiti 抽取进 Neo4j。
  5. 利用尝试:若发现可利用点,pentestermetasploit 框架试 exploit 模块。若失败,reflector 介入引导修正。
  6. 后渗透:拿到 shell 后尝试提权、内网横移(crackmapexec / evil-winrm / bloodhound-python 等 AD 向工具)。
  7. 报告reporter 把全程结果整理成漏洞报告 + 利用指南。
  8. 人工 review:整个过程在 Grafana / Langfuse 里可回放,人最后审报告、定级。

这套流程对标一个初级渗透测试员的工作方式,区别在于执行者换成了多 agent。它能不能替人,取决于目标的复杂度和对误报的容忍度——这也是适用边界要谈的。

跟同类项目差在哪

工具形态自动程度自主执行工具知识图谱
PentAGIWeb UI + 全栈平台高(自主决策)✅(Docker 沙箱内跑真实工具)✅ Graphiti + Neo4j
PentestGPTCLI 助手中(人机配合)❌ 只给建议命令
BurpGPTBurp 插件低(分析流量)
自建 CrewAI/AutoGen通用框架要自己集成要自己集成

PentestGPT 和 BurpGPT 是"AI 给人当参谋",PentAGI 是"AI 自己上手干"。前两者根本不执行工具,只输出建议;PentAGI 在隔离容器里真正运行 nmap、sqlmap、metasploit。执行能力 vs 建议能力,这条线划开了两个品类。

PentAGI 的位置:目前最完整的开箱即用 AI 渗透平台。multi-agent + tool use + 知识图谱 + 可观测性一次性打包,不用从 CrewAI/AutoGen 自己拼。代价是你得接受它那一整套 Docker + 多数据库的运维复杂度。

(对比项的维护状态截至 2026-07,这类小项目迭代快,引用前建议再核一次仓库。)

自托管 LLM:不被单一厂商锁住

PentAGI 支持 10+ LLM provider,企业部署时不绑定单一厂商:

  • 商业:OpenAI、Anthropic、Google Gemini、AWS Bedrock、DeepSeek、GLM(智谱)、Kimi(月之暗面)、Qwen(阿里)
  • 本地 / 自托管:Ollama、vLLM(经 Custom provider 接入)
  • 聚合:OpenRouter、DeepInfra、Novita

examples/configs/ 下有 19 个 provider 配置样例。examples/guides/vllm-qwen35-27b-fp8.md 是一份详尽的自托管指南,实测数据是:4×RTX 5090 上 prompt processing 约 13K TPS(tokens/秒)、completion 约 650 TPS,支持 12+ 并发 flow。这两个数字分别反映"吃输入"和"吐输出"的吞吐——prompt processing 衡量把长上下文灌进模型的速度(攻防场景上下文往往很长,这个值决定了并发起来快不快),completion 衡量逐 token 生成的速度(决定了单条任务的实际体感)。但它不能推出端到端的渗透成功率,吞吐只说明硬件能撑住多少并发,不说明 agent 的决策质量。对"数据不能出本地"的攻防场景,vLLM + 开源模型这条路是可走通的。

前面提到的 refiner 换强模型机制在这里就很有用:粗活用便宜的本地模型,关键推理切到强模型,成本和效果可以分开优化。

谁该用,怎么开始

适合:

  • Red Team / 安全研究员:把 AI 当"初级渗透测试员"使,自己 review 结果、定级、对外负责。
  • 企业蓝队:周期性扫自家已授权资产,验证防御覆盖。
  • CTF 选手:训练阶段加快手工渗透节奏。
  • 研究 Agent 架构的人:multi-agent + tool use + 知识图谱在安全场景的完整参考实现,代码可读。

采用顺序建议:

  1. 第 1 小时——读 README + 本文系统地图,搞清四条主线(编排 / 执行 / 记忆 / 图谱)的边界。
  2. 第 1 天——本地 docker-compose up -d,登录 Web UI,建一个无危害的 demo 任务(扫自己的博客或靶机)。
  3. 第 3 天——研究官方列出的 20 个核心工具清单,理解每个工具的能力边界,知道 agent 在调用什么。
  4. 第 7 天——打开 Langfuse,回放一次完整任务的每一步模型调用,理解 agent 行为审计怎么落地。
  5. 第 14 天——基于 PentAGI 的 multi-agent 模式,搭一个自己领域的 agent(比如代码审计 agent),复用它的编排 + 沙箱 + 可观测性骨架。

绝对不要碰的红线

PentAGI 是攻击工具,EULA 写得很硬:

PentAGI is to be used exclusively for authorized penetration testing and security assessments in environments where you have explicit permission from the network owner.

三条不要碰:

  • 未授权目标——对没拿到书面授权的目标使用,违法。EULA 还补了一句"只用于 lawful penetration testing"。
  • 生产环境高风险目标——AI 自主执行可能造成 DoS 或数据损坏,必须人在回路。
  • 没有可观测性的裸跑——不开 Langfuse / Grafana,agent 失控了你都不知道它干了什么。

部署它的工程师要把"授权意识 + Docker 沙箱 + 完整审计日志"当成前置条件,不是可选项。pentagi 服务在 compose 里以 root 运行(因为要访问 docker.sock),这一点也要心里有数。

参考