quareth/drowAI

GitHub: quareth/drowAI

DrowAI 是一个基于 LangGraph 和 Docker/Kali 运行时的任务隔离式红队 AI agent 平台,旨在用 AI 编排安全测试工作流。

Stars: 0 | Forks: 0

# DrowAI

DrowAI logo

DrowAI 是一个活跃的 v1 版本之前的 AI agent 平台,用于通过 Web 控制平面、基于 LangGraph 的 agent 编排以及 Docker/Kali 执行运行时来运行任务隔离的安全工作流。 本项目作为正在进行的工作公开。它是可用的,但并不是一个完善的 v1 版本:在架构趋于稳定的过程中,其设置、部署打包、API 和文档可能仍会发生变化。 ## 链接 - [官网](https://www.drowai.com) - [用户指南](https://www.drowai.com/user-guide) - [演示](https://www.drowai.com/videos) - [Medium 上关于 DrowAI 背后的故事](https://medium.com/@alcangunes) ## 为什么会有这个项目 DrowAI 探索了通常被称为“氛围编程”的 AI 辅助软件开发在应用于大型复杂应用时能取得怎样的成果。当前版本完全是通过 AI 辅助编码构建的,由一位拥有十年专业经验但没有正式软件开发背景的网络安全工程师进行指导和审查。该项目既是一个可用的平台,也是对这种方法的优点和局限性的持续检验。 开发更新目前发布在 [更新日志](CHANGELOG.md) 和 [GitHub issue 跟踪器](https://github.com/quareth/drowAI/issues) 中。 ## 仓库包含的内容 - **后端控制平面:** 用于身份验证、租户、任务、聊天、设置、配置、报告、runner 控制和实时 WebSocket/SSE 扇出的 FastAPI 应用。 - **前端:** 用于操作任务、流、artifacts、终端、报告、设置和设置流程的 React + TypeScript UI。 - **Agent 运行时:** `agent/` 下面向 LangGraph 的 agent 和工具运行时模块。 - **运行时提供层:** 用于本地 Docker 运行时和受管 runner 运行时的提供商中立后端边界。 - **受管 runner:** `drowai_runner/` 进程,它连接到控制平面,并通过主机 Docker socket 为每个任务启动 Kali 运行时。 - **Kali 执行器:** `kali_executor/` 下的容器内执行支持。 - **部署资产:** 本地一致性启动器,以及 `deploy/` 下的独立和分布式 Docker Compose 配置。 ## 工具概况 已实现的工具注册表和面向 LLM 的工具目录有意设计为不是同一个东西。 - **当前 LLM 可见的工具集:** 为模型规划和自主选择而完善的工具,包括已接入的解析、规范化的结果投影以及知识/证据层集成。参见 [LLM 可见工具集](docs/tooling/llm-visible-tools.md)。 - **完整的已注册工具集:** 运行时注册表发现的所有可执行的 `BaseTool` 类。参见 [完整的已注册工具集](docs/tooling/registered-toolset.md)。 只有完成的工具子集对 LLM 可见。一个工具可能已经在代码中实现并注册,但在其参数契约、输出解析、紧凑结果投影、artifact/来源行为以及知识/证据挂钩完善到足以让 agent 能够可靠地基于结果进行推理之前,不应将其暴露给模型进行自主选择。完整的注册表仍然很重要:它展示了更广泛的已实现工具面,以及随着达到该标准可以晋升到 LLM 可见目录中的待办工具。 ## 当前架构 DrowAI 围绕三个平面组织: - **管理平面:** FastAPI router、租户上下文、任务生命周期、runner 控制、运行时调度、设置、配置和实时网关。 - **数据平面:** 关系记录、任务工作区、流数据包、artifacts、报告、知识和证据。 - **执行平面:** 通过运行时提供者契约选择的任务本地 Docker/Kali 运行时,支持本地或受管 runner 后端。 特定架构的 Kali 运行时镜像从 [Docker Hub 上的 `drowai/kali-pentesting`](https://hub.docker.com/r/drowai/kali-pentesting) 拉取,在使用前可以检查已发布的标签和镜像元数据。镜像构建定义也可以在 [`runtime/image/`](runtime/image/) 中找到。 要获取更深入的架构说明,请从以下内容开始: - [应用平面架构](docs/architecture/architecture.md) - [管理平面](docs/architecture/management-plane.md) - [数据平面](docs/architecture/data-plane.md) - [执行平面](docs/architecture/execution-plane.md) - [运行时提供者架构](docs/architecture/runtime-provider.md) - [Agent 架构](docs/architecture/agent-architecture.md) - [LangGraph 图架构](docs/architecture/langgraph-graph-architecture.md) ## 本地开发 标准的贡献者路径通过单主机部署所使用的相同控制通道架构来启动后端、受管 runner 和前端。 前置条件: - Python 3.11 或更高版本; - Node.js 20.19 或更高版本,并带有 npm; - PostgreSQL 15 或更高版本,在运行时提供 pgvector 扩展; - Docker Engine 或 Docker Desktop,用于受管 runner 和任务运行时。 首先安装应用依赖项: ``` python3 -m venv .venv source .venv/bin/activate python -m pip install -r requirements-dev.txt npm install ``` 生成的本地默认配置针对位于 `localhost:5432` 的数据库,该数据库名为 `drowai`,用户为 `drowai_user`。在第一次执行 `up` 时,启动器会检查该登录角色、数据库和 pgvector 扩展。如果缺少任何一个,它会显示计划的管理更改并在创建它们之前询问。启动器首先尝试当前本地的 PostgreSQL 管理员身份;如果不可用,交互式流程会要求输入 PostgreSQL 管理员用户名和密码。 管理员凭据仅用于引导连接,不会被存储。 您可以在启动技术栈之前显式运行相同的引导程序: ``` python3 scripts/local_dev.py bootstrap-db ``` 对于非默认或使用密码验证的应用程序数据库,请在运行引导程序之前在 shell 或可选的根 `.env` 文件中设置 `DATABASE_URL`。远程或单独管理的 PostgreSQL 安装通常应由其操作员进行配置。当引导程序必须使用特定的管理员连接时,可以使用一次性的 `DROWAI_POSTGRES_ADMIN_URL` 覆盖;请勿提交或保留该凭据。 启动本地技术栈,并在出现提示时接受数据库引导: ``` python3 scripts/local_dev.py up ``` 启动器会在 `.drowai-local` 下生成本地配置和密钥。读取根 `.env` 文件仅用于开发覆盖。在首次运行设置和登录后,模型提供商凭据将在 **Settings → API** 下配置。 `requirements-dev.txt` 包含 `requirements.txt` 以及贡献者和测试依赖项。生产镜像仅安装 `requirements.txt`。 启动器可以为本地开发数据库对象进行配置,但它不会安装或启动 PostgreSQL,也不会安装 pgvector 服务端扩展。它在数据库就绪成功后应用迁移。此路径不支持将 SQLite 作为主要的应用程序数据库。启动器适用于开发和一致性测试,而不是生产部署的入口点。 有用的 URL: - 前端:http://localhost:5000 - 后端 API:http://localhost:8000 - API 文档:http://localhost:8000/docs ## 部署路径 DrowAI 目前有两种产品部署通道: - **独立模式:** 一台 Linux 主机运行 Postgres、后端、前端和受管 runner。 - **分布式模式:** 控制平面主机运行 UI/API/DB,而执行站点主机运行连接回控制平面的打包 runner。 独立模式手动 compose: ``` docker compose --project-directory . \ -f deploy/compose/standalone.yml \ up -d --build ``` 分布式控制平面: ``` docker compose --project-directory . \ -f deploy/cloud/control-plane.yml \ up -d --build ``` 有关面向部署的命令,请参见 [deploy/README.md](deploy/README.md)。 ## 项目状态 DrowAI 不是一个最终的产品发布。当前的重点是: - 稳定任务隔离的运行时模型; - 完成工具实现,并在已注册的工具目录中扩展面向 LLM 的工具; - 完善 agent 行为、记忆和上下文工程; - 优化 token 使用并提高缓存命中率; - 使知识提取、数据来源、artifacts 和报告在整个工具面变得完整、稳定和可靠。 ## 安全说明 DrowAI 运行安全工具和任务运行时。请像对待基础设施一样对待它: - 请勿将本地开发实例直接暴露在互联网上; - 不要将 JWT 密钥、加密密钥、模型密钥、cookie 和 runner token 放在日志和提交中; - 将运行时的副作用限制在运行时提供者边界之后; - 保持任务工作区和流的作用域限于租户/任务。 请按照 [SECURITY.md](SECURITY.md) 中的说明私下报告可疑的漏洞。 ## 贡献 DrowAI 欢迎在项目处于 v1 版本之前期间进行针对性的修复和改进。 有关设置、测试和 pull request 指导,请参见 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## 许可证 Apache-2.0。请参见 [LICENSE](LICENSE)。
标签:AI智能体, Docker, LangGraph, 代理服务器, 安全防御评估, 数据展示, 测试用例, 红队, 网络调试, 自动化, 请求拦截, 逆向工具