[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-82173":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":14,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":18,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":15,"starSnapshotCount":15,"syncStatus":28,"lastSyncTime":29,"discoverSource":30},82173,"ArgusMind","pulseio76\u002FArgusMind","pulseio76","AI 驱动的多 Agent 自主代码安全审计：审计计划、危险 Sink 发现与调用链分析；AI-driven multi-agent autonomous code security auditor — audit planning, sink discovery & call-chain analysis; ","https:\u002F\u002Fargusmind.vercel.app\u002F",null,"Python",57,9,1,0,26,29,4,3,false,"main",true,[24],"cybersecurity","2026-06-12 02:04:23","# ArgusMind\n\n**ArgusMind** 是一套 AI 驱动的自主代码安全审计系统。它通过多 Agent 编排，对被测代码库进行结构化审计：收集项目信息、制定按语言与风险类别的审计计划、发现危险汇聚点（Sink）、追踪并分析调用链，最终将结果写入 **Neo4j** 图数据库与 **PostgreSQL** 关系库，并通过 **FastAPI** 对外提供 REST API。\n\n## 界面预览\n\n本仓库包含 **Web 控制台**（Ant Design Pro + Umi）。以下截图为 **Demo 模式**（`npm run start:demo`）下的界面，数据来自内置 Mock，无需连接后端即可浏览全流程。\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fscreenshots\u002F01-login.png\" alt=\"登录页\" width=\"48%\" \u002F>\n  &nbsp;\n  \u003Cimg src=\"docs\u002Fscreenshots\u002F02-dashboard.png\" alt=\"控制台\" width=\"48%\" \u002F>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\u003Csub>登录 · 控制台（Dashboard）\u003C\u002Fsub>\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fscreenshots\u002F03-projects.png\" alt=\"项目管理\" width=\"48%\" \u002F>\n  &nbsp;\n  \u003Cimg src=\"docs\u002Fscreenshots\u002F05-tasks.png\" alt=\"任务管理\" width=\"48%\" \u002F>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\u003Csub>项目管理 · 任务管理\u003C\u002Fsub>\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fscreenshots\u002F06-task-detail-1.png\" alt=\"任务详情 - 代码审计链路图\" width=\"96%\" \u002F>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\u003Csub>任务详情 · 代码审计链路图\u003C\u002Fsub>\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fscreenshots\u002F06-task-detail.png\" alt=\"任务详情\" width=\"48%\" \u002F>\n  &nbsp;\n \u003Cimg src=\"docs\u002Fscreenshots\u002F07-vulnerabilities.png\" alt=\"漏洞管理\" width=\"48%\" \u002F>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\u003Csub>任务详情 · 漏洞管理\u003C\u002Fsub>\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fscreenshots\u002F08-vulnerability-detail.png\" alt=\"漏洞详情\" width=\"48%\" \u002F>\n  &nbsp;\n  \u003Cimg src=\"docs\u002Fscreenshots\u002F08-vulnerability-detail-1.png\" alt=\"漏洞详情\" width=\"48%\" \u002F>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\u003Csub>漏洞详情（报告与代码审计链路图）\u003C\u002Fsub>\u003C\u002Fp>\n\n\n## 交流群\n\n扫码加入微信 **ArgusMind交流群**，交流使用问题等。\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002F0bf202122d90d69a1c51c0a053b94342.jpg\" alt=\"ArgusMind 微信交流群二维码\" width=\"280\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\u003Csub>微信群二维码有时效（约 7 天）\u003C\u002Fsub>\u003C\u002Fp>\n\n\n\n## 核心能力\n\n- **端到端审计流水线**：`Orchestrator` 编排 `ProjectInfo` → `Plan` → `SinkFinder` → `ChainAnalyzer` 等 Agent，支持任务暂停、恢复与取消。\n- **双存储架构**：Neo4j 承载审计阶段、语言、风险类别、Sink、链路等图关系；PostgreSQL 承载用户、任务、配置、日志、事件与漏洞发现等业务数据。\n- **可观测性**：事件总线将运行日志、任务状态变更写入数据库，便于 Web 控制台或 API 查询进度。\n- **工具链集成**：OpenCode（代码 Agent）、ripgrep、tokei、可选 GitNexus MCP；LLM 通过 [LiteLLM](https:\u002F\u002Fgithub.com\u002FBerriAI\u002Flitellm) 统一接入多种模型提供商。\n- **REST API**：项目管理、任务启停、配置管理、图数据查询、报告导出、人工审批等。\n\n## 技术栈\n\n\n| 类别       | 技术                |\n| -------- | ----------------- |\n| 语言       | Python ≥ 3.10     |\n| Web 框架   | FastAPI + Uvicorn |\n| 图数据库     | Neo4j 5+          |\n| 关系数据库    | PostgreSQL        |\n| ORM      | SQLAlchemy 2.x    |\n| LLM      | LiteLLM           |\n| 代码 Agent | opencode-ai       |\n\n\n## 系统架构\n\nArgusMind 采用 **分层 + 事件驱动 + 双库分工** 的设计：HTTP 层负责鉴权与任务调度；`Orchestrator` 驱动多 Agent 流水线；审计过程产生的 **图结构** 写入 Neo4j，**作业元数据、配置、日志、事件、发现** 写入 PostgreSQL；运行时通过内存 **事件总线** 解耦编排与持久化。\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002F架构图.png\" alt=\"ArgusMind 系统架构总览\" width=\"96%\" \u002F>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\u003Csub>系统架构总览（用户访问 → 调度服务 → 核心编排 → Agent → 工具 → 双库，及外部依赖）\u003C\u002Fsub>\u003C\u002Fp>\n\n下文各小节为分模块的 Mermaid 细化图，可与上图对照阅读。\n\n### 总体分层\n\n```mermaid\nflowchart TB\n    subgraph Presentation[\"表现层\"]\n        UI[Web UI 子模块 frontend]\n        Client[API Client \u002F Swagger]\n    end\n\n    subgraph API[\"API 层 — FastAPI :6066\"]\n        MW[JWT 中间件 \u002F CORS]\n        R[Router: projects · tasks · configs · graph · findings ...]\n        BG[BackgroundTasks 异步跑审计]\n    end\n\n    subgraph Service[\"服务层 src\u002Fservices\u002F\"]\n        AS[audit_service.run_task]\n        TS[task_service]\n        PS[plan_service \u002F sink_flow_service \u002F chain_*]\n        ES[event_service · log_service · config_service]\n    end\n\n    subgraph Core[\"核心编排 src\u002Fcore\u002F\"]\n        ORCH[Orchestrator]\n        CTX[ExecutionContext]\n        BUS[EventBus 同步发布]\n        TC[TaskControlRegistry 暂停\u002F停止]\n    end\n\n    subgraph Agent[\"Agent 层 src\u002Fagents\u002F\"]\n        BRAIN[Brain: LLM + ToolRegistry + OpenCode]\n        PI[ProjectInfo]\n        PL[Plan]\n        SF[SinkFinder]\n        CA[ChainAnalyzer]\n    end\n\n    subgraph Tool[\"工具层 src\u002Ftools\u002F\"]\n        REG[ToolRegistry]\n        OC[OpenCodeTool]\n        FS[filesystem \u002F ripgrep]\n        GN[GitNexus MCP Bridge]\n        N4T[Neo4j Cypher 工具]\n    end\n\n    subgraph Data[\"数据层\"]\n        PG[(PostgreSQL — 作业与可观测性)]\n        N4[(Neo4j — 审计图与进度)]\n    end\n\n    UI --> R\n    Client --> R\n    R --> MW\n    R --> BG\n    BG --> AS\n    AS --> ORCH\n    ORCH --> PI & PL & SF & CA\n    PI & PL & SF & CA --> BRAIN\n    BRAIN --> REG\n    REG --> OC & FS & GN & N4T\n    ORCH --> PS\n    PS --> N4\n    ORCH --> BUS\n    BUS --> ES\n    ES --> PG\n    R --> TS\n    TS --> PG\n    ORCH --> TC\n```\n\n| 层级 | 目录 | 职责 |\n|------|------|------|\n| API | `src\u002Fapi\u002F` | 路由、JWT、异常、生命周期（`lifespan` 内 `init_db` + `init_clients`） |\n| 服务 | `src\u002Fservices\u002F` | 业务规则、Neo4j 查询封装、任务\u002F项目 CRUD |\n| 核心 | `src\u002Fcore\u002F` | `Orchestrator` 流水线、`EventBus`、任务协作式暂停 |\n| Agent | `src\u002Fagents\u002F` | 各阶段 ReAct 式 LLM 对话与工具调用 |\n| 工具 | `src\u002Ftools\u002F` | 统一 `ToolResult`、OpenCode \u002F ripgrep \u002F GitNexus |\n| 存储 | `src\u002Fstorage\u002F`、`src\u002Finfrastructure\u002Fdb\u002F` | Neo4j Repository、SQLAlchemy 模型与会话 |\n| LLM | `src\u002Fllm\u002F` | LiteLLM 封装与 JSON 解析 |\n\n### 请求与任务执行路径\n\n典型「创建并运行审计任务」的调用链如下：\n\n```mermaid\nsequenceDiagram\n    participant C as Client\n    participant API as tasks.router\n    participant TS as task_service\n    participant AS as audit_service\n    participant OR as Orchestrator\n    participant AG as Agents \u002F Brain\n    participant BUS as EventBus\n    participant PG as PostgreSQL\n    participant N4 as Neo4j\n\n    C->>API: POST \u002Fapi\u002Ftasks\n    API->>TS: create_task()\n    API->>API: BackgroundTasks.add(run_task)\n    API-->>C: 202 Task running\n\n    API->>AS: run_task(task_id)\n    AS->>PG: 读取 Project.path、configs\n    AS->>OR: Orchestrator.run(ExecutionContext)\n\n    OR->>N4: merge Task \u002F AuditStage\n    OR->>AG: ProjectInfo → Plan → SinkFinder → ChainAnalyzer\n    AG->>BUS: LogEvent \u002F EventStart \u002F TokenEvent\n    BUS->>PG: handlers 持久化 logs \u002F events \u002F tasks.status\n    AG->>N4: 写入 Language \u002F RiskCategory \u002F SinkFlow \u002F AnalysisResult\n\n    OR->>BUS: TaskStatusEvent completed\n    BUS->>PG: 更新 tasks.status\n```\n\n要点：\n\n- **同步编排、异步触发**：`POST \u002Fapi\u002Ftasks` 通过 FastAPI `BackgroundTasks` 在后台调用 `audit_service.run_task`，HTTP 立即返回，审计在进程内同步执行至结束或暂停。\n- **配置注入**：`run_task` 从 PostgreSQL `configs` 表加载 `LLM_config`、`code_agent_config`，构造 `ExecutionContext` 后交给 `Orchestrator`，不在编排器内读环境变量。\n- **幂等与恢复**：Neo4j 节点普遍以 `(task_id, name)` 或 `node_id` 做 `MERGE`；任务恢复时可复用已完成的「信息收集」「制定计划」阶段，并从 `pending` 状态继续消费语言\u002F风险类别\u002F链路队列。\n\n### 事件总线与可观测性\n\n编排器与 Agent **不直接写库**，而是通过 `get_event_bus().publish(...)` 发布领域事件，由 `event_handlers.register_default_handlers()` 注册的 handler 落库：\n\n```mermaid\nflowchart LR\n    subgraph Publishers\n        O[Orchestrator]\n        A[BaseAgent \u002F Brain]\n        S[event_span]\n    end\n\n    subgraph EventBus[\"EventBus（进程内单例，同步调用）\"]\n        P[publish]\n    end\n\n    subgraph Handlers\n        H1[EventStart → events]\n        H2[EventEnd → events 更新]\n        H3[LogEvent → logs]\n        H4[TaskStatusEvent → tasks.status]\n        H5[TokenEvent → token_ledger]\n        H6[FindingEvent → findings]\n    end\n\n    O & A & S --> P\n    P --> H1 & H2 & H3 & H4 & H5 & H6\n    H1 & H2 & H3 & H4 & H5 & H6 --> PG[(PostgreSQL)]\n```\n\n| 事件类型 | 典型来源 | 持久化目标 |\n|----------|----------|------------|\n| `LogEvent` | Orchestrator、各 Agent | `logs` 表 |\n| `EventStart` \u002F `EventEnd` | LLM 轮次、工具调用、`event_span` | `events` + 详情 |\n| `TaskStatusEvent` | 任务开始\u002F完成\u002F失败 | `tasks.status`、`finished_at` |\n| `TokenEvent` | Brain \u002F span 累计用量 | `token_ledger` |\n| `FindingEvent` | 漏洞确认流程 | `findings` 相关表 |\n\nHandler 异常会被总线捕获并记录，**不会中断审计主流程**，保证单点持久化失败不影响编排。\n\n### Neo4j 审计图模型\n\n审计进度与领域对象以 **有向图** 存储，便于按任务、语言、风险类别下钻查询（`\u002Fapi\u002Fgraph`、`\u002Fapi\u002Fchain-graph`）。\n\n```mermaid\nflowchart TB\n    T[Task]\n    S1[AuditStage: Information Collection]\n    S2[AuditStage: make a plan]\n    L[Language]\n    RC[RiskCategory]\n    K[Knowledge]\n    SFN[SinkFlowNode]\n    CN[ChainNode]\n    AR[AnalysisResult]\n\n    T -->|HAS_STAGE| S1\n    T -->|HAS_STAGE| S2\n    S2 -->|HAS_LANGUAGE| L\n    L -->|HAS_RISK_CATEGORY| RC\n    RC -->|HAS_SINK| SFN\n    SFN -->|FLOW| SFN\n    SFN -->|FLOW| CN\n    SFN & CN -->|HAS_RESULT| AR\n    RC -.->|HAS_AUDIT_INFO| K\n```\n\n| 节点标签 | 含义 |\n|----------|------|\n| `Task` | 一次审计运行的图根（`task_id`、项目路径等） |\n| `AuditStage` | 流水线阶段（如 Information Collection、make a plan），含 `status` |\n| `Language` | 计划中的目标语言 |\n| `RiskCategory` | 该语言下的漏洞类型 \u002F 风险类别 |\n| `SinkFlowNode` \u002F `ChainNode` | Sink 发现阶段构建的 FLOW 森林与链上节点 |\n| `AnalysisResult` | `ChainAnalyzer` 对单条链路的判定结果 |\n| `Knowledge` \u002F `AuditInfo` | 风险类别关联的审计经验知识 |\n\n主要关系：`HAS_STAGE`、`HAS_LANGUAGE`、`HAS_RISK_CATEGORY`、`HAS_SINK`、`FLOW`（多跳路径）、`HAS_RESULT`。\n\n`plan_service` \u002F `sink_flow_service` 通过 Cypher 维护 **待处理队列**（`fetch_next_pending_*`），`Orchestrator._drive_sink_and_chain` 按 **语言 → 风险类别 → 链路** 三层循环消费，并在节点上更新 `running` \u002F `completed` \u002F `pending`。\n\n### PostgreSQL 数据职责\n\n| 表\u002F模型（节选） | 用途 |\n|-----------------|------|\n| `users` | 登录与 RBAC（JWT） |\n| `projects` | 被测仓库路径、项目级 `description`（可复用跳过信息收集） |\n| `tasks` | 任务状态机：`pending` \u002F `running` \u002F `paused` \u002F `completed` \u002F `failed` \u002F `cancelled` |\n| `configs` | LLM、Code Agent、JWT 密钥等运行配置 |\n| `events` \u002F `opencode_events` | 细粒度调用轨迹与 OpenCode 原始事件 |\n| `logs` | 模块级运行日志 |\n| `findings` | 对外展示的漏洞发现（与 Neo4j 图可关联查询） |\n| `token_ledger` | Token 用量账本 |\n| `human_interactions` | 计划等人机审批记录 |\n\n**分工原则**：Neo4j 存「审计过程中生长出来的图」；PostgreSQL 存「谁、何时、跑了什么、花了多少 token、最终结论条目」。\n\n### Agent 与 Brain\n\n每个任务在编排开始时构造 **一个共享 `Brain` 实例**，供各 Agent 复用项目上下文与工具注册表：\n\n```mermaid\nflowchart TB\n    CTX[BrainContext: task_id, project_path, llm_config]\n    BRAIN[Brain]\n    LLM[LLMClient — LiteLLM]\n    REG[ToolRegistry per project_path]\n    OC[OpenCodeTool — Code Agent]\n    GN[GitNexusMcpBridge 可选]\n\n    CTX --> BRAIN\n    BRAIN --> LLM\n    BRAIN --> REG\n    BRAIN --> OC\n    REG --> FS[read_file \u002F ripgrep \u002F list_files ...]\n    REG --> GN\n    REG --> N4T[neo4j_read_cypher 等]\n\n    PI[ProjectInfo] --> BRAIN\n    PL[Plan] --> BRAIN\n    SF[SinkFinder] --> BRAIN\n    CA[ChainAnalyzer] --> BRAIN\n```\n\n- **`BaseAgent`**：封装 `_llm_step`（带重试与 JSON 校验）、`_execute_tool_call`，各阶段 Agent 继承并实现 `run()`。\n- **`Brain`**：维护 `project_info` \u002F `plan`、任务级 `tmp_dir`、人工审批 `wait_for_human_approval`、Git 仓库初始化与 GitNexus 分析入口。\n- **工具调用约定**：`ToolRegistry.invoke` 始终返回结构化 `ToolResult` dict，Agent 根据 `success` \u002F `error_code` 决定重试或换策略。\n\n### 工具链\n\n启动时 `ensure_tool_dependencies_at_startup()` 预检（失败仅告警，不阻断 API）：\n\n| 工具 | 作用 |\n|------|------|\n| **OpenCode** (`opencode-ai`) | 代码级搜索、调用链追踪（SinkFinder \u002F ChainAnalyzer 重度依赖） |\n| **ripgrep** | 快速文本\u002F符号搜索 |\n| **tokei** | 代码行数统计（ProjectInfo） |\n| **GitNexus MCP** | 可选；代码库符号\u002F关系查询（`pip install -e \".[gitnexus]\"`） |\n| **Neo4j Cypher 工具** | Agent 只读查询当前任务图 |\n\n被测代码路径来自 `projects.path`；Brain 会在该路径下初始化 Git 并可选触发 GitNexus analyze。\n\n### 审计流水线（详细）\n\n`Orchestrator.run(ctx)` 主流程：\n\n```mermaid\nflowchart TD\n    A[0. 确保 Neo4j Task 根节点] --> B[1. AuditStage: Information Collection]\n    B --> C{项目 DB 已有 description?}\n    C -->|是| D[跳过 ProjectInfo，标记阶段 completed]\n    C -->|否| E[ProjectInfo Agent 收集并回写 projects]\n    D --> F[2. AuditStage: make a plan]\n    E --> F\n    F --> G{已有 completed 计划?}\n    G -->|是| H[复用 plan_id]\n    G -->|否| I[Plan Agent 生成 JSON 计划]\n    I --> J[人机审批 plan 可选超时自动通过]\n    J --> K[persist_plan → Language \u002F RiskCategory 子图]\n    H --> L[3. 三层消费循环]\n    K --> L\n    L --> M[按 Language pending]\n    M --> N[按 RiskCategory pending]\n    N --> O[SinkFinder.run 若未完成]\n    O --> P[补跑未完成 AnalysisResult 二次校验]\n    P --> Q[按 pending 链路 ChainAnalyzer.run]\n    Q --> N\n    N --> M\n    M --> R[TaskStatusEvent: completed]\n```\n\n**阶段说明**：\n\n1. **信息收集**：`ProjectInfo` 通过 LLM + 工具分析仓库；若 `projects.description` 已存在则整阶段跳过。\n2. **制定计划**：`Plan` 输出按 `languages[]` → `risk_categories[]` 的结构；经 `persist_plan` 展开为 Neo4j 子图；支持 **10 分钟人机审批**（`human_interactions`），超时默认自动通过。\n3. **Sink 发现 + 链路分析**（核心循环）：\n   - 外层：遍历计划中 `status=pending` 的 `Language`\n   - 中层：遍历该语言下 `RiskCategory`\n   - 内层：`SinkFinder` 写入 `HAS_SINK` → `FLOW` 森林后，逐条 `fetch_next_pending_sink_chain_path` 交给 `ChainAnalyzer`\n   - 支持对未完成 `AnalysisResult` 的 **resume 二次校验**\n4. **任务控制**：循环内多处调用 `ensure_task_running(task_id)`；暂停时抛 `TaskPausedError` 协作式退出，状态由 `TaskControlRegistry`（内存）与 `tasks.status`（库）共同维护。\n\n### 配置与安全边界\n\n```mermaid\nflowchart LR\n    ENV[环境变量 \u002F config.yaml]\n    CFG[PostgreSQL configs]\n    API[FastAPI + JWT]\n    ORCH[Orchestrator \u002F Agents]\n\n    ENV -->|仅| DB_CONN[Neo4j + Postgres 连接]\n    CFG -->|运行期| LLM_OC[LLM + OpenCode 密钥与模型]\n    API --> ORCH\n    DB_CONN --> ORCH\n    LLM_OC --> ORCH\n```\n\n- 浏览器 \u002F 客户端 **不可** 直接拿到 LLM Key；仅通过已鉴权 API 间接使用。\n- 临时文件目录：`{TMP}\u002FArgusMind\u002F{task_id}\u002F`，由 `globals.TMP_DIR` 与 `Brain` 共同使用。\n\n## 环境要求\n\n- **Python** 3.10 及以上\n- **Neo4j** 5.x（默认 `bolt:\u002F\u002F127.0.0.1:7687`）\n- **PostgreSQL**（建议单独建库 `argusmind`）\n- **Node.js \u002F npx**（OpenCode、GitNexus 等工具链；启动时会尝试自动检测\u002F安装）\n- **LLM API** 与 **OpenCode 服务**（配置写入数据库，见下文）\n- 可选：**GitNexus**（安装 `pip install -e \".[gitnexus]\"` 或 `mcp` 相关依赖）\n\n## 快速开始\n\n### 1. 克隆仓库\n\n```bash\ngit clone \u003Crepository-url> ArgusMind\ncd ArgusMind\n```\n\n### 2. 安装依赖\n\n```bash\npython -m venv .venv\n\n# Windows\n.venv\\Scripts\\activate\n\n# Linux \u002F macOS\nsource .venv\u002Fbin\u002Factivate\n\npip install -e .\n\n# 开发依赖（测试、格式化等）\npip install -e \".[dev]\"\n\n# 可选：GitNexus MCP 支持\npip install -e \".[gitnexus]\"\n```\n\n### 3. 配置数据库连接\n\n复制配置样例并按环境修改：\n\n```bash\ncp config.yaml.example config.yaml\n```\n\n或通过环境变量覆盖（优先级：**环境变量 > config.yaml > 默认值**）：\n\n\n| 变量                                                    | 说明            |\n| ----------------------------------------------------- | ------------- |\n| `NEO4J_URI`                                           | Neo4j Bolt 地址 |\n| `NEO4J_USER` \u002F `NEO4J_PASSWORD`                       | Neo4j 凭据      |\n| `POSTGRES_HOST` \u002F `POSTGRES_PORT`                     | PostgreSQL 地址 |\n| `POSTGRES_DB` \u002F `POSTGRES_USER` \u002F `POSTGRES_PASSWORD` | PostgreSQL 凭据 |\n\n\n> **注意**：除 Neo4j \u002F PostgreSQL 连接信息外，**LLM、OpenCode 等运行配置不得通过环境变量设置**，须写入 PostgreSQL 的 `configs` 表（首次启动时由 `init_db` 种子化，也可通过 `\u002Fapi\u002Fconfigs` 接口维护）。\n\n### 4. 启动服务\n\n```bash\npython src\u002Fmain.py\n# 或\npython -m src.main\n```\n\n默认监听 `**http:\u002F\u002F0.0.0.0:6066**`。启动时会自动：\n\n- 初始化 PostgreSQL 表结构与种子数据（默认用户 `ArgusMind` \u002F 密码 `ArgusMind`，**生产环境请尽快修改**）\n- 尝试连接 Neo4j\n- 预检 ripgrep、Node、OpenCode、tokei 等工具依赖\n\n也可单独初始化数据库：\n\n```bash\npython test_dir\u002Finit_db.py\n```\n\n### 5. 配置 LLM 与 Code Agent\n\n服务启动后，通过 API 或数据库更新 `configs` 表中的：\n\n- `LLM_config`：LiteLLM 使用的 provider、key、model、base_url 等\n- `code_agent_config`：OpenCode \u002F Code Agent 的 provider、key、model、base_url 等\n\n相关接口示例（需先登录获取 JWT）：\n\n- `GET \u002Fapi\u002Fconfigs\u002Fllm`、`PUT` 同路径更新\n- `GET \u002Fapi\u002Fconfigs\u002Fcode-agent`\n- `GET \u002Fapi\u002Fconfigs\u002Fllm\u002Ftest`、`GET \u002Fapi\u002Fconfigs\u002Fcode-agent\u002Ftest` 连通性测试\n\n### 6. 创建项目并提交审计任务\n\n1. `POST \u002Fapi\u002Fauth\u002Flogin` 获取 Token\n2. `POST \u002Fapi\u002Fprojects` 注册被测代码库路径\n3. `POST \u002Fapi\u002Ftasks` 创建任务，`GET \u002Fapi\u002Ftasks\u002F{task_id}\u002Frun` 或创建时触发运行\n4. 通过 `GET \u002Fapi\u002Flogs`、`GET \u002Fapi\u002Fevents`、`GET \u002Fapi\u002Fgraph` 等查看进度与结果\n\n交互式 API 文档：`http:\u002F\u002Flocalhost:6066\u002Fdocs`\n\n## API 概览\n\n\n| 前缀                               | 说明                       |\n| -------------------------------- | ------------------------ |\n| `\u002Fapi\u002Fhealth`、`\u002Fapi\u002Fready`       | 健康检查                     |\n| `\u002Fapi\u002Fauth`                      | 登录、当前用户、改密               |\n| `\u002Fapi\u002Fprojects`                  | 项目管理                     |\n| `\u002Fapi\u002Ftasks`                     | 任务 CRUD、运行\u002F暂停\u002F恢复\u002F取消、批量操作 |\n| `\u002Fapi\u002Ffindings`                  | 漏洞发现列表与详情                |\n| `\u002Fapi\u002Fevents`                    | 审计事件、OpenCode 事件、人工审批    |\n| `\u002Fapi\u002Flogs`                      | 运行日志                     |\n| `\u002Fapi\u002Fconfigs`                   | LLM \u002F Code Agent 配置      |\n| `\u002Fapi\u002Fchains`、`\u002Fapi\u002Fchain-graph` | 调用链与图数据                  |\n| `\u002Fapi\u002Fgraph`                     | 审计图查询                    |\n| `\u002Fapi\u002Freports`                   | 任务报告                     |\n| `\u002Fapi\u002Ftokens`                    | Token 用量统计               |\n\n\n除健康检查外，多数接口需要 JWT 认证（`Authorization: Bearer \u003Ctoken>`）。\n\n## 项目结构\n\n```\nArgusMind\u002F\n├── src\u002F\n│   ├── main.py              # CLI 入口，启动 Uvicorn\n│   ├── config.py            # Neo4j \u002F PostgreSQL 启动配置\n│   ├── api\u002F                 # FastAPI 路由与应用工厂\n│   ├── core\u002F                # Orchestrator、事件总线、状态机\n│   ├── agents\u002F              # 各审计 Agent 与 Prompt\n│   ├── services\u002F            # 业务服务层\n│   ├── repositories\u002F        # 数据访问\n│   ├── infrastructure\u002F      # DB、队列、安全\n│   ├── storage\u002F             # Neo4j \u002F Postgres 仓储封装\n│   ├── tools\u002F               # OpenCode、ripgrep、MCP 等工具\n│   └── llm\u002F                 # LiteLLM 客户端与解析\n├── tests\u002F                   # 单元测试\n├── test_dir\u002F                # 脚本与集成测试辅助\n├── docs\u002F                    # 需求与设计文档\n├── config.yaml.example      # 数据库连接配置样例\n├── pyproject.toml\n└── requirements.txt\n```\n\n## 开发与测试\n\n```bash\n# 运行测试\npytest\n\n# 代码格式化（可选）\nblack src tests\nruff check src\n```\n\n更详细的 Web 控制台需求见 `[docs\u002FWEB_REQUIREMENTS.md](docs\u002FWEB_REQUIREMENTS.md)`。MVP 验证说明见 `[test_dir\u002FMVP_README.md](test_dir\u002FMVP_README.md)`。\n\n## 配置说明摘要\n\n\n| 配置来源                   | 内容                                                  |\n| ---------------------- | --------------------------------------------------- |\n| 环境变量 \u002F `config.yaml`   | 仅 Neo4j、PostgreSQL、`log_level`、`work_dir` 等连接与运行时路径 |\n| PostgreSQL `configs` 表 | LLM、Code Agent、JWT 密钥等业务配置                          |\n| 任务创建参数                 | 被测项目路径、关联 `project_id` 等                            |\n\n\n临时工作目录默认为系统临时目录下的 `ArgusMind\u002F`（与 `src\u002Fmain.py`、`lifespan` 一致）。\n\n## 许可证\n\nMIT License — 详见 `pyproject.toml` 中的 license 字段。\n\n## 相关链接\n\n- OpenCode：[opencode-ai](https:\u002F\u002Fpypi.org\u002Fproject\u002Fopencode-ai\u002F)\n- LiteLLM：[BerriAI\u002Flitellm](https:\u002F\u002Fgithub.com\u002FBerriAI\u002Flitellm)\n","ArgusMind 是一套 AI 驱动的多 Agent 自主代码安全审计系统，能够对代码库进行结构化审计，包括审计计划制定、危险汇聚点（Sink）发现与调用链分析。其核心功能涵盖端到端审计流水线、双存储架构（Neo4j 图数据库和 PostgreSQL 关系数据库）、可观测性以及工具链集成等，支持多种编程语言和风险类别。该系统适用于需要提高软件安全性、减少代码漏洞的企业开发团队或个人开发者，尤其是在处理复杂代码库时能显著提升审计效率与准确性。通过 FastAPI 提供 REST API 接口，方便用户管理和查询审计任务及结果。",2,"2026-06-11 04:07:57","CREATED_QUERY"]