FuNianTongXue/secflow-knowledge-security-assistant
GitHub: FuNianTongXue/secflow-knowledge-security-assistant
SecFlow 是一款 macOS 原生 AI 安全智能体,将漏洞情报、知识图谱、多语言代码审计与报告交付集中到一个桌面工作台。
Stars: 6 | Forks: 0
SecFlow 知识安全助手
面向 macOS 的原生 AI 安全智能体,将漏洞情报、知识图谱、代码审计与报告交付集中到一个桌面工作台。
SwiftUI"] MAC --> API["本地智能体服务
FastAPI"] API --> AGENT["安全问答图
LangGraph"] API --> COLLECTOR["情报采集子图
校验 / 拉取 / 去重 / 持久化"] API --> AUDIT["代码审计引擎
Semgrep + AST / CFG / DFG"] API --> REPORT["报告引擎
Markdown / HTML / PDF"] AGENT --> MEMORY["长期记忆
JSON / PostgreSQL"] AGENT --> INTEL["本地优先情报查询"] AGENT --> LLM["兼容 Chat Completions 的 LLM"] COLLECTOR --> NVD["NVD"] COLLECTOR --> GHSA["GitHub Advisory"] INTEL --> OSV["OSV / 公开安全源"] INTEL --> STORE["本地漏洞知识库"] AUDIT --> REPORT STORE --> GRAPH["CVE / GHSA / CWE / 组件知识图谱"] GRAPH --> MAC ``` ### LangGraph 问答流程 ``` classify_query -> load_memory_context -> query_intelligence -> enrich_knowledge_graph -> call_llm -> translate_vulnerability_card -> compose_answer -> persist_memory ``` | 节点 | 作用 | | --- | --- | | `classify_query` | 区分漏洞编号、年份漏洞、供应链、合规和通用安全问题 | | `load_memory_context` | 按用户读取长期记忆,完成历史召回和摘要压缩 | | `query_intelligence` | 本地优先查询,按需并发补充外部结果并归并别名 | | `enrich_knowledge_graph` | 建立漏洞、公告、CWE、组件、影响范围和修复版本关系 | | `call_llm` | 调用兼容 Chat Completions 的模型,并保留可诊断错误 | | `translate_vulnerability_card` | 生成固定字段的中文漏洞卡片,保护版本事实不被猜测或改写 | | `compose_answer` | 汇总检索事实、模型分析、执行状态与置信度 | | `persist_memory` | 保存已经过客户可见信息脱敏的问答结果 | ## 🧩 核心技术 | 层级 | 技术与职责 | | --- | --- | | macOS 客户端 | SwiftUI;总览、智能问答、资讯、图谱、漏洞库、报告、设置与试用状态 | | API 与工作流 | FastAPI、Pydantic、LangGraph;REST API、问答编排、采集器子图与运行诊断 | | 独立问答服务 | `app.assistant_app:app`;只暴露问答、SSE、LangGraph、Interrupt、制品和会话管理 | | 漏洞情报 | NVD、GitHub Advisory、OSV、本地 JSON 知识库、多源别名归并 | | 静态分析 | Semgrep OSS、Tree-sitter、AST / CFG / DFG、Java 跨方法路径分析 | | 数据与记忆 | 本地 JSON、可选 PostgreSQL、应用包内加密存储、macOS Keychain | | 模型适配 | DeepSeek、OpenAI、Ollama、vLLM 等兼容 Chat Completions 的服务 | ## 🚀 快速开始 ### 直接体验桌面应用 从[发布页](https://github.com/FuNianTongXue/secflow-knowledge-security-assistant/releases/tag/v1.2.0-trial-7days)下载对应平台的安装包。macOS 解压后打开 `SecFlow-Trial-7Days.app`;Windows 可运行安装器,或解压便携版后启动 `SecFlow.exe`。应用会启动自己的回环后端,试用数据分别写入: ``` macOS: ~/Library/Application Support/SecFlow-Trial-7Days Windows: %LOCALAPPDATA%\SecFlow\SecurityAI-Trial-7Days ``` ### 从源码运行 环境要求:Python 3.11+、macOS 14+、Xcode Command Line Tools。 ``` git clone https://github.com/FuNianTongXue/secflow-knowledge-security-assistant.git cd secflow-knowledge-security-assistant python -m venv .venv source .venv/bin/activate pip install -r requirements.txt uvicorn app.main:app --reload --host 127.0.0.1 --port 18081 ``` 另开一个终端启动原生客户端: ``` SECFLOW_SERVER_URL=http://127.0.0.1:18081 \ swift run --package-path macos/SecFlowMac ``` 只部署智能问答能力时,使用独立入口: ``` uvicorn app.assistant_app:app --host 127.0.0.1 --port 18082 ``` 该入口不加载扫描任务、订阅、资讯面板或平台管理路由。启动后访问 `http://127.0.0.1:18082/docs` 查看独立 OpenAPI;接口边界与部署说明见 [智能问答独立模块](./docs/ASSISTANT_MODULE.md)。 ### 构建独立 macOS 应用 ``` .venv/bin/python -m pip install -r requirements-macos.txt bash scripts/build_macos_app.sh open dist/SecFlow.app ``` 构建 Apple Silicon 7 天试用版: ``` bash scripts/build_macos_trial_app.sh ``` 构建 Intel 7 天试用版时,`PYTHON_BIN` 必须指向 x86_64 Python 环境: ``` SECFLOW_MACOS_ARCH=x86_64 \ PYTHON_BIN=/path/to/x86_64/venv/bin/python \ bash scripts/build_macos_trial_app.sh ``` 产物分别写入 `dist-macos-trial/SecFlow-Trial-7Days-macOS-arm64.zip` 与 `dist-macos-trial/SecFlow-Trial-7Days-macOS-x86_64.zip`,不会互相覆盖。7 天试用包使用独立标识和数据目录,不会覆盖历史三天试用版或无限期版本。详细说明见 [macOS 构建文档](./macos/SecFlowMac/README.md)。 ## 🛡️ 能力清单 | 能力 | 说明 | | --- | --- | | AI 安全问答 | 长期记忆、跨会话召回、智能路由和模型不可用时的本地专家降级 | | 独立问答 API | 问答、SSE 流式输出、LangGraph 图定义、Interrupt、制品和会话归档可单独部署 | | 中文漏洞卡片 | 固定输出编号、名称、描述、CVSS、严重等级、涉及版本、修复版本、修复方案、缓释措施和代码片段 | | 事实保护 | 不把通配符解释为“所有版本”;缺少结构化证据时不猜测修复版本 | | 实时漏洞情报 | 查询本地记录并按需补充 NVD、GitHub Advisory 与 OSV,归并后写回本地 | | 安全资讯 | 聚合公开安全来源,支持缓存、去重、分类、搜索和来源订阅 | | 知识图谱 | 将 CVE / GHSA、CWE、组件、受影响版本和修复版本组织成可交互关系图 | | 依赖分析 | 解析 Maven / Gradle 项目依赖并关联已知漏洞 | | 代码审计 | 七种语言离线规则、Java 跨方法传播及文件内 AST / CFG / DFG 路径分析 | | 报告中心 | 统一呈现依赖与代码发现,提供 Markdown、HTML、PDF 交付格式 | | 报告状态门禁 | 结果、计划步骤和 `task.completed` 事件全部终态后才允许生成报告 | | 隐私保护 | 响应移除来源 URL、内部集合名与检索链路,API 自动隐藏密钥和 Token |
常用 API
启动后可访问 `http://127.0.0.1:18081/docs` 查看完整 OpenAPI 文档。 | Method | Path | 说明 | | --- | --- | --- | | `GET` | `/health` | 健康检查 | | `GET` | `/api/dashboard` | 获取本地情报总览统计 | | `POST` | `/api/ask` | 调用知识库安全助手 | | `POST` | `/api/assistant/questions` | 独立入口的结构化问答 | | `POST` | `/api/assistant/questions/stream` | 独立入口的 SSE 流式问答 | | `POST` | `/api/assistant/interrupts/resume` | 恢复组件、SBOM 或报告确认流程 | | `GET` | `/api/assistant/conversations` | 查询、归档、恢复或删除问答会话 | | `POST` | `/api/intelligence/query` | 本地检索、外部补充、写回并生成图谱 | | `POST` | `/api/knowledge-graph/query` | 返回富化后的知识图谱节点与边 | | `GET` | `/api/information` | 获取公开安全资讯 | | `POST` | `/api/collect/{collector_id}` | 执行 CVE 或 GitHub Advisory 采集 | | `GET` | `/api/vulnerabilities` | 查看本地漏洞记录 | | `GET` | `/api/runtime` | 查看 LLM 与长期记忆运行状态 | | `GET` | `/api/trial/status` | 查看配置时长对应的试用状态与剩余时间 | | `DELETE` | `/api/memory` | 清空指定用户长期记忆 | ``` curl -X POST http://127.0.0.1:18081/api/ask \ -H 'Content-Type: application/json' \ -d '{"question":"解释 CVE-2021-44228 的影响和修复建议","top_k":5,"user_id":"default","session_id":"demo"}' ```主要环境变量
| 变量 | 默认值 | 说明 | | --- | --- | --- | | `SECFLOW_DATA_DIR` | `data` | 配置、知识库和记忆数据目录 | | `DATABASE_URL` / `POSTGRES_DSN` | 空 | PostgreSQL 长期记忆连接串;为空时使用本地 JSON | | `SECFLOW_MEMORY_LOCAL_ONLY` | `true` | 为 `false` 时才允许使用 PostgreSQL 记忆 | | `SECFLOW_LLM_PROVIDER` | `deepseek` / `openai` | LLM Provider 名称 | | `SECFLOW_LLM_ENDPOINT` | 按 Provider 推断 | 兼容 Chat Completions 的 API Base URL | | `SECFLOW_LLM_MODEL` | 按 Provider 推断 | 模型名称 | | `SECFLOW_LLM_API_KEY` | 空 | 模型 API Key,也支持 `DEEPSEEK_API_KEY` 或 `OPENAI_API_KEY` | | `SECFLOW_SEMGREP_BIN` | 应用内 CLI | 覆盖静态分析可执行文件路径 | | `SELOW_SEMGREP_RULES` | 内置规则目录 | 覆盖离线规则目录或单个规则文件 | | `SECFLOW_TRIAL_ENABLED` | 空 | 打包版试用开关 | | `SECFLOW_TRIAL_DURATION_HOURS` | `72` | 试用时长;当前 macOS 试用构建脚本写入 `168` | | `SECFLOW_KEYCHAIN_SERVICE` | `com.secflow.ai.mac.intelligence` | macOS Keychain 服务名 |这是开源项目吗?
不是 OSI 定义的开源项目。源码公开用于审阅、学习和评估,但生产部署、商业使用、SaaS 包装、镜像和再分发受主许可证限制。没有 LLM API Key 能使用吗?
可以。漏洞情报采集、本地知识库检索、知识图谱和静态分析仍可运行;非漏洞问题会使用本地专家建议降级。配置兼容 Chat Completions 的模型后,可获得完整智能问答能力。必须配置 PostgreSQL 吗?
不需要。默认使用本地 JSON,并按 `user_id` 隔离历史和摘要;只有显式设置 `SECFLOW_MEMORY_LOCAL_ONLY=false` 时才会尝试 PostgreSQL。GitHub Token 和 NVD API Key 会提交到仓库吗?
不会。凭证写入运行态数据文件,并由 `.gitignore` 排除;打包版使用本地加密存储。请勿把真实密钥写入源码、截图或 Issue。
面向本地安全工作流构建,专注可验证的漏洞事实、代码路径与报告交付。
标签:AI智能体, AI风险缓解, AV绕过, CISA项目, FastAPI, LangGraph, SwiftUI, XSS, 测试用例, 漏洞情报