Evy-Wind-Granot/ACIRO

GitHub: Evy-Wind-Granot/ACIRO

ACIRO 是一个基于 Web 的安全分析助手,通过 AI 编排与 RAG 技术自动检测、分拣并缓解网络安全威胁。

Stars: 0 | Forks: 0

# Project VANGUARD / ACIRO — CP3 SENG499 工程设计项目,2026 年夏季。自主网络安全事件响应编排器:这是一个基于 Web 的安全分析助手,能够接收结构化日志事件,使用 AI 编排器检测攻击模式,通过 RAG 检索缓解措施,并透明地展示推理过程。有关完整范围,请参阅项目说明书。 ## 仓库布局 | 路径 | 负责团队 | 技术栈 | |---|---|---| | [frontend/](frontend/) | 前端与安全 UX | Next.js 16 (App Router), TypeScript, Tailwind | | [backend/api/](backend/api/) | 跨团队(API 契约是 Sprint 2 的交付物) | FastAPI | | [backend/orchestrator/](backend/orchestrator/) | AI 编排 | Python — 编排器 agent、RAG、偏见过滤器、推理轨迹 | | [backend/chaos_engine/](backend/chaos_engine/) | 数据与模拟 | Python — Chaos Engine v1 → v2 | | [backend/log_store/](backend/log_store/) | 数据与模拟 | Python — 日志 schema、向量库摄取 | | [infra/](infra/) | DevOps 与红队 | 部署图、部署步骤、CI/CD pipeline 概览 | | [docs/](docs/) | 所有团队 | 每个团队每个 Sprint 的研究笔记 | | [.gitlab-ci.yml](.gitlab-ci.yml) | DevOps 与红队 | Pipeline 定义 | 任何人都可以向任何文件夹提交 MR。轮换图 PDF 是当前子团队成员的权威来源,并将根据轮换政策(说明书 §2.2)在每个 Sprint 发生变化。 ## 分支 `dev` 是默认分支。没有分支保护——这只是一种约定,不被强制执行。 ``` team/ → dev → prod (manual deploy) ``` | 分支 | 用途 | |---|---| | `dev` | 集成。将你的团队分支合并到这里。 | | `prod` | 发布。仅允许从 `dev` 发起 MR。`deploy-prod` 作业是 GitLab 中的一个手动按钮。 | | `team/frontend-security-ux` | 前端与安全 UX 工作 | | `team/devops-red-team` | DevOps 与红队工作 | | `team/ai-orchestration` | AI 编排工作 | | `team/data-simulation` | 数据与模拟工作 | 典型工作流: 1. `git switch team/` 2. 从你的团队分支切出一个特性分支。 3. 准备好后,将特性分支 MR 到团队分支。 4. 将团队分支 MR 到 `dev` 进行集成。 5. 将 `dev` MR 到 `prod` 进行发布;点击手动部署按钮。 ## 使用 Docker Compose 运行 整个技术栈 —— 前端、后端(包含其内嵌的 DuckDB 日志存储)以及 Qdrant —— 只需在仓库根目录下使用一条命令: ``` docker compose up --build ``` - 前端位于 ,API 位于 (Swagger 位于 `/docs`),Qdrant 位于 (控制面板位于 `/dashboard`)。 - DuckDB 内嵌于后端进程中(无需独立服务器,也没有单独的容器); 日志语料库在每次后端启动时都会以确定性方式重新进行种子化。 - 后端镜像使用 `rag,embeddings` 额外依赖构建,并通过 `QDRANT_URL` 指向 Qdrant。`ACIRO_FAST_EMBED=1` 是默认设置,因此第一次 embedding 调用会下载小型的 MiniLM 模型(约 80 MB),而不是 bge-m3。 - 在另一台机器上部署?浏览器需要能够访问 API,因此请使用 `NEXT_PUBLIC_API_BASE_URL=http://:8000 docker compose up --build` 进行重新构建。 ## 本地开发 在两个终端中分别运行后端和前端。前端默认在 `http://localhost:8000` 调用后端,因此请先启动后端。AI 编排器**默认是确定性的**,不需要 LLM,因此只需这两个步骤,整个应用 即可端到端运行;Ollama 是可选的附加组件(见下文)。 ### 后端 ``` # PowerShell,从 repo 根目录 python -m venv .venv .\.venv\Scripts\Activate.ps1 pip install -e ".[dev]" uvicorn backend.api.main:app --reload --reload-dir backend ``` ``` # macOS / Linux,从 repo 根目录 python3 -m venv .venv source .venv/bin/activate pip install -e ".[dev]" uvicorn backend.api.main:app --reload --reload-dir backend ``` - API 位于 - 自动生成的 Swagger UI 位于 - 健康检查:`GET /health` - 测试:`pytest backend/tests/` - `--reload-dir backend` 可防止 `--reload` 监视 `frontend/node_modules` (否则每次 `npm` 写入文件时都会导致服务器重启)。如果你愿意,可以完全去掉 `--reload`。 - 首次启动时会根据已提交的 chaos-engine 语料库构建 DuckDB 日志存储 (约 2000 个事件);你应该会看到 `Successfully initialized log store`。 ### 前端 ``` cd frontend npm install npm run dev ``` - 应用位于 - Lint:`npm run lint` - 构建:`npm run build` - 后端 URL 从 `NEXT_PUBLIC_API_BASE_URL` 读取(默认为 `http://localhost:8000`);参见 [frontend/.env.example](frontend/.env.example)。 如果前端运行在 3000 以外的端口(例如 3000 被占用),请使用 `CORS_ORIGINS=http://localhost:3001` 启动后端,以便允许浏览器进行预检请求。 ### AI 编排器 / LLM(可选,Ollama) 聊天查询层(`POST /api/query`)运行一个使用工具的 agent。在未配置 LLM 的情况下,它使用确定性规划器(正确、完全离线,也是 CI 运行的内容)。若要按照 SRS 技术栈让 **Ollama + LLaMA 3.1** 来编写答案: ``` # 1. 安装 Ollama(在 :11434 上启动一个 service)并拉取 model,执行一次 curl -fsSL https://ollama.com/install.sh | sh ollama pull llama3.1 # 2. 将 backend 指向它(在 --reload 后依然有效) ACIRO_LLM_ENDPOINT=http://localhost:11434 uvicorn backend.api.main:app --reload --reload-dir backend ``` - 或者,在 **Admin** 面板(System Config,LLM 端点)中在运行时设置端点,无需重启。请注意,该值存在于内存中,并在完全重启时会重置,因此环境变量才是持久选项。 - 使用 `ACIRO_OLLAMA_MODEL` 覆盖模型(默认为 `llama3.1`)。 - 如果 Ollama 无法访问,agent 会静默回退到确定性 路径,因此 `/api/query` 永远不会报错。 - 环境变量记录在 [backend/.env.example](backend/.env.example) 中; agent 设计位于 [backend/orchestrator/agent/README.md](backend/orchestrator/agent/README.md)。 ## CI/CD 定义在 [.gitlab-ci.yml](.gitlab-ci.yml) 中。Pipeline 对 通用应用检查和每个 SRS 偏见测试套件设有独立的门控: | 作业 | 触发条件 | 执行操作 | |---|---|---| | `backend-lint` | 每次推送 + MR | Ruff 和严格的 mypy 检查(目前为非阻塞) | | `sprint-1-tests` | 每次推送 + MR | 完整的后端套件以及 Sprint 1 测试计划要求的 60% 覆盖率底线 | | `bias-test-harness` | 每次推送 + MR | Sprint 2 §2.3 基准偏见测试套件,要求至少 10 个选定案例 | | `final-bias-audit` | 每次推送 + MR | Sprint 3 §3.3 完整的扩展偏见测试套件,要求至少 10 个选定案例 | | `adversarial-test-cases` | 每次推送 + MR | Sprint 3 §3.3 仅对抗性案例,要求至少 3 个选定案例 | | `openapi-lint` | 每次推送 + MR | Redocly 对 OpenAPI 契约进行验证 | | `frontend` | 每次推送 + MR | `npm ci && npm run lint && npm run build` | | `frontend-test` | 每次推送 + MR | Vitest 单元和组件测试 | | `frontend-e2e` | 每次推送 + MR | Playwright 功能和 WCAG 测试(目前为非阻塞) | | `deploy-prod` | 仅限 `prod` | 手动按钮;通过 SSH 部署到 CSC VM 的占位符(参见 [infra/README.md](infra/README.md)) | 有关作业详情和推迟的 pipeline 工作,请参见 [infra/README.md](infra/README.md#cicd-pipeline)。 ## 研究笔记(根据 Harrison 要求) 将你团队的 sprint 笔记放在这里: ``` docs/sprint-1//research-notes/.md ``` 团队标识:`frontend-security-ux`、`devops-red-team`、`ai-orchestration`、`data-simulation`。笔记不需要太正式——它们是为团队以及下个 Sprint 负责该领域的人准备的。 如果到今天结束时你团队的文件夹还不存在,请联系 DevOps 与红队,并在你的 GitLab 工作项上注明延迟情况。 ## Sprint 1 交付物(说明书 §5) # | 交付物 | 负责人 | 位置 | |---|---|---| | 初始组织架构图 + 轮换图 | 所有子团队 | [/docs/sprint-1/InitialOrgChart.pdf](/docs/sprint-1/InitialOrgChart.pdf) + [/docs/sprint-1/ThreeSprintRotationPlan.pdf](/docs/sprint-1/ThreeSprintRotationPlan.pdf)| | SRS 文档 | 所有子团队 | [/docs/sprint-1/SENG499_ACIRO_SRS.pdf.pdf](/docs/sprint-1/SENG499_ACIRO_SRS.pdf.pdf) | | 测试策略文档 | 所有子团队 | [/docs/sprint-1/ACIRO_Test_Strategy_v2.md.pdf](/docs/sprint-1/ACIRO_Test_Strategy_v2.md.pdf) | | Chaos Engine v1 | 数据与模拟 | [/backend/chaos_engine/](/backend/chaos_engine/) | | Figma 线框图 | 前端与安全 UX | [Figma 线框图](https://www.figma.com/design/S2nRnSXrqevMbFdbKYielW/ACIRO?node-id=0-1&p=f&t=YCuLZ4LvWljDeN2a-0)(登录 Figma 查看全部) | | 架构图 | AI 编排 | [/docs/sprint-1/ai-orchestration/Architecture_Diagram.pdf](/docs/sprint-1/ai-orchestration/Architecture_Diagram.pdf) | | 偏见代理列表 | AI 编排 | [/docs/sprint-1/ai-orchestration/bias_proxy_list.md](/docs/sprint-1/ai-orchestration/bias_proxy_list.md) | | CI/CD pipeline + 部署文档 | DevOps 与红队 | [.gitlab-ci.yml](.gitlab-ci.yml) + [infra/README.md](infra/README.md) | # ACIRO
标签:AI风险缓解, AV绕过, FastAPI, RAG, SOC分析助手, 版权保护, 网络安全, 自动化安全响应, 逆向工具, 隐私保护