arthurpanhku/DocSentinel
GitHub: arthurpanhku/DocSentinel
基于 LangGraph 的 AI 驱动 SSDLC 平台,利用多阶段智能体和 RAG 技术自动化处理从需求到运维的全流程安全文档评估与合规审计。
Stars: 95 | Forks: 10
[English](README.md) | [简体中文](README_zh.md) | [日本語](README_ja.md) | [한국어](README_ko.md) | [Français](README_fr.md) | [Deutsch](README_de.md)
DocSentinel
AI 驱动的 SSDLC 平台 —— 从需求到运维,全流程保障软件安全
大多数工具只涉及测试/部署。 | **全生命周期 agents** 通过专用的 AI 角色覆盖所有 6 个 SSDLC 阶段。 | | **标准碎片化**
策略、标准和先例分散各处。 | 单一 **知识库** 确保发现的一致性和可追溯性。 | | **无自动化威胁建模**
威胁模型是临时创建的。 | **设计 Agent** 从架构文档生成 STRIDE/DREAD 威胁模型。 | | **繁重的问卷工作流**
无休止的审查循环。 | **自动化初审** 和差距分析减少了人工反复沟通的轮次。 | | **SAST/DAST 报告过载**
发现太多,上下文太少。 | **测试 Agent** 对发现进行分类、优先级排序,并将其映射到威胁模型。 | | **发布前审查压力**
所有问题最后都压在安全团队身上。 | **左移** 方法在需求和设计早期发现问题。**结构化报告** 帮助审查者专注于决策。 | | **规模与一致性的矛盾**
人工审查因审查者而异。 | **LangGraph 工作流** 和 **统一管道** 确保跨项目评估的一致性和可审计性。 | | **SSDLC 覆盖缺口**
安全介入在生命周期各阶段不均衡;早期阶段受到的审查较少。 | **阶段感知评估** 涵盖所有 6 个 SSDLC 阶段,配备专门的技能和检查清单。 | *完整的问题陈述和 SSDLC 阶段详情请参阅 [SPEC.md](./SPEC.md)。* ## 架构 DocSentinel 基于 **LangGraph** 构建以实现有状态的 agent 编排,并基于 **LangChain** 实现统一的 LLM 访问。六个特定阶段的 agents 由一个基于图的状态机协调,并具有跨阶段上下文共享。编排器协调解析、SSDLC 阶段路由、知识库 (RAG)、技能和 LLM。您可以根据环境需求使用云或本地 LLMs 以及可选的集成(例如 AAD, ServiceNow)。 ``` flowchart TB subgraph User["User / Security Staff"] end subgraph Access["Access Layer"] API["REST API / MCP"] end subgraph Orchestration["SSDLC Orchestration (LangGraph)"] Router["Phase Router"] A1["Requirements Agent"] A2["Design Agent"] A3["Development Agent"] A4["Testing Agent"] A5["Deployment Agent"] A6["Operations Agent"] end subgraph Core["Core Services"] KB["Knowledge Base (RAG)"] Parser["Parser"] Skill["Skills"] Mem["Memory"] end subgraph LLM["LLM Layer (LangChain)"] Abst["LLM Abstraction"] end subgraph Backends["LLM Backends"] Cloud["OpenAI / Claude / Qwen"] Local["Ollama / vLLM"] end User --> API API --> Router Router --> A1 & A2 & A3 & A4 & A5 & A6 A1 & A2 & A3 & A4 & A5 & A6 --> KB & Parser & Skill A1 & A2 & A3 & A4 & A5 & A6 --> Abst Abst --> Cloud & Local ``` **数据流(简化版):** 1. 用户选择 SSDLC 阶段并上传文档(或选择让 SSDLC Router 自动检测阶段)。 2. **解析器** 将文件(PDF, Word, Excel, PPT, SAST/DAST 报告等)转换为文本/Markdown。 3. **LangGraph Router** 分发到适当的 **阶段 Agent(s)**,加载特定阶段的技能 + 检查清单。 4. 阶段 Agent 查询 **KB**(特定阶段的集合)并应用 **技能**;策略和证据并行运行,然后是起草者和审查者。 5. **LLM**(通过 LangChain)生成具有跨阶段可追溯性的结构化发现。 6. 返回 **评估报告**(风险、威胁、差距、补救措施、置信度、SSDLC 阶段)。 *详细架构:[ARCHITECTURE.md](./ARCHITECTURE.md) 和 [docs/01-architecture-and-tech-stack.md](./docs/01-architecture-and-tech-stack.md)。* ## 核心能力 ### SSDLC 全生命周期覆盖 六个专用 AI agents,每个都拥有特定阶段的技能、提示词和知识库集合。可运行单个阶段或完整的端到端 SSDLC 评估: - **需求**:安全需求,合规映射,初步风险分析。 - **设计**:架构审查,STRIDE/DREAD 威胁建模,SDR。 - **开发**:安全编码标准,代码审查发现。 - **测试**:SAST/DAST 报告分类,渗透测试评估。 - **部署**:发布就绪性,配置安全,加固。 - **运维**:事件响应,漏洞监控,日志审计。 ### 自动化安全评估 提交安全问卷、设计文档或审计报告。DocSentinel 使用配置的 LLMs 分析它们并识别: - **安全风险**:按严重程度分类(严重、高、中、低)。 - **合规差距**:针对 ISO 27001、PCI DSS 等框架的缺失控制措施。 - **补救步骤**:修复已识别问题的可操作建议。 ### 智能 Agent 编排 - **有状态工作流**:LangGraph 状态机在阶段间维护上下文 - **跨阶段可追溯性**:来自设计的威胁链接到测试中的测试用例和运维中的监控规则 - **条件路由**:Agents 根据项目风险等级、合规要求或用户选择激活 - **人机交互**:在阶段边界设置中断点供人工审查 - **检查点**:长时间运行的评估会持久化状态并恢复 ### RAG 驱动的知识库 上传您组织的安全策略、标准和过去的审计记录。特定阶段的集合确保每个 agent 检索最相关的上下文: - 需求:合规框架,安全策略 - 设计:威胁目录,安全模式 - 开发:安全编码标准 (OWASP) - 测试:漏洞数据库,补救指南 - 部署:CIS benchmarks,加固指南 - 运维:CVE 数据库,事件剧本 ### LangGraph Agent 编排 由 **LangChain + LangGraph** 驱动 —— 有状态的、基于图的 agent 工作流,支持按 SSDLC 阶段进行条件路由。并行执行策略和证据 agents,随后是起草者和审查者 agents。 ### API 优先 & MCP 就绪 设计为 headless 服务。通过 REST API 集成到 CI/CD 管道,或通过 MCP 作为 **超级工具** 在 AI agents(Claude Desktop, Cursor, OpenClaw)中使用。 ## Agent 集成 将 DocSentinel 连接到 **Claude Desktop**、**Cursor** 或 **OpenClaw**,将其作为强大的 SSDLC 安全技能使用。 ### 它能做什么? 连接后,您可以向您的 AI agent 提问: ### 配置指南 #### Claude Desktop 添加到您的 `claude_desktop_config.json`: ``` { "mcpServers": { "docsentinel": { "command": "/path/to/DocSentinel/.venv/bin/python", "args": ["/path/to/DocSentinel/app/mcp_server.py"], "env": { "OPENAI_API_KEY": "sk-...", "CHROMA_PERSIST_DIR": "/absolute/path/to/data/chroma" } } } } ``` #### Cursor 1. 前往 **Settings > Features > MCP**。 2. 点击 **+ Add New MCP Server**。 - **Name**: `docsentinel` - **Type**: `stdio` - **Command**: `/path/to/DocSentinel/.venv/bin/python` - **Args**: `/path/to/DocSentinel/app/mcp_server.py` *完整指南请见 [docs/06-agent-integration.md](docs/06-agent-integration.md)。* ## 快速开始 ### 选项 A:一键部署(推荐) ``` git clone https://github.com/arthurpanhku/DocSentinel.git cd DocSentinel chmod +x deploy.sh ./deploy.sh ``` - **API 文档**: [http://localhost:8000/docs](http://localhost:8000/docs) ### 选项 B:手动设置 **前置条件**:**Python 3.10+**。可选:[Ollama](https://ollama.ai) (`ollama pull llama2`)。 ``` git clone https://github.com/arthurpanhku/DocSentinel.git cd DocSentinel python3 -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate pip install -r requirements.txt cp .env.example .env # Edit if needed: LLM_PROVIDER=ollama or openai uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 ``` - **API 文档**: [http://localhost:8000/docs](http://localhost:8000/docs) · **健康检查**: [http://localhost:8000/health](http://localhost:8000/health) - **审查控制台 (HITL)**: [http://localhost:8000/docs/review-console.html](http://localhost:8000/docs/review-console.html) ### 示例:提交 SSDLC 评估 ``` # 运行设计阶段评估(威胁建模) curl -X POST "http://localhost:8000/api/v1/assessments" \ -F "files=@examples/architecture-doc.pdf" \ -F "phase=design" \ -F "scenario_id=threat-modeling" # 响应:{ "task_id": "...", "status": "accepted" } # 获取结果 curl "http://localhost:8000/api/v1/assessments/TASK_ID" ``` ### 示例:上传到 KB 并查询 ``` # 将安全策略上传到 requirements KB collection curl -X POST "http://localhost:8000/api/v1/kb/documents" \ -F "file=@examples/sample-policy.txt" \ -F "collection=kb_requirements" # 查询 KB (RAG) curl -X POST "http://localhost:8000/api/v1/kb/query" \ -H "Content-Type: application/json" \ -d '{"query": "What are the access control requirements?", "top_k": 5}' ``` ## 托管部署 托管部署可在 [Fronteir AI](https://fronteir.ai/mcp/arthurpanhku-docsentinel) 上使用。 ## 项目结构 ``` DocSentinel/ ├── app/ # Application code │ ├── api/ # REST routes: assessments, KB, health, skills │ ├── agent/ # LangGraph orchestrator, phase agents, skills │ │ ├── orchestrator.py # LangGraph state machine & phase routing │ │ ├── agents/ # Phase-specific agent implementations │ │ ├── ssdlc/ # SSDLC pipeline: stage router, stage skills, checklists │ │ ├── skills_registry.py # Built-in skills per SSDLC phase │ │ └── skills_service.py # Skill CRUD and management │ ├── core/ # Config, guardrails, security, DB │ ├── kb/ # Knowledge Base (Chroma + LightRAG graph RAG) │ ├── llm/ # LangChain LLM abstraction (OpenAI, Ollama) │ ├── parser/ # Document parsing (Docling + SAST/DAST + legacy) │ ├── models/ # Pydantic / SQLModel models │ ├── main.py # FastAPI app entry point │ └── mcp_server.py # MCP Server for agent integration ├── tests/ # Automated tests (pytest) ├── examples/ # Sample files (questionnaires, policies, reports) ├── docs/ # Design & Spec documentation │ ├── 01-architecture-and-tech-stack.md │ ├── 02-api-specification.yaml │ ├── 03-assessment-report-and-skill-contract.md │ ├── 04-integration-guide.md │ ├── 05-deployment-runbook.md │ ├── 06-agent-integration.md │ └── schemas/ ├── .github/ # Issue/PR templates, CI (Actions) ├── Dockerfile ├── docker-compose.yml ├── docker-compose.ollama.yml ├── CONTRIBUTING.md ├── CODE_OF_CONDUCT.md ├── CHANGELOG.md ├── SPEC.md # PRD with SSDLC phase definitions ├── ARCHITECTURE.md # System architecture with LangGraph design ├── LICENSE ├── SECURITY.md ├── requirements.txt ├── requirements-dev.txt └── .env.example ``` ## 配置 | 变量 | 描述 | 默认值 | | :--- | :--- | :--- | | `LLM_PROVIDER` | `ollama` 或 `openai` | `ollama` | | `OLLAMA_BASE_URL` / `OLLAMA_MODEL` | 本地 LLM | `http://localhost:11434` / `llama2` | | `OPENAI_API_KEY` / `OPENAI_MODEL` | OpenAI | -- | | `CHROMA_PERSIST_DIR` | 向量数据库路径 | `./data/chroma` | | `PARSER_ENGINE` | 解析器: `auto`, `docling`, 或 `legacy` | `auto` | | `ENABLE_GRAPH_RAG` | 启用 LightRAG 图检索 | `true` | | `LANGGRAPH_CHECKPOINT_DIR` | LangGraph 检查点持久化 | `./data/checkpoints` | | `SSDLC_DEFAULT_PHASES` | 完整评估的默认阶段 | `requirements,design,development,testing,deployment,operations` | | `SSDLC_DEFAULT_STAGE` | 未指定时的默认 SSDLC 阶段 | `auto` | | `UPLOAD_MAX_FILE_SIZE_MB` / `UPLOAD_MAX_FILES` | 上传限制 | `50` / `10` | *完整选项请见 [.env.example](./.env.example) 和 [docs/05-deployment-runbook.md](./docs/05-deployment-runbook.md)。* ## 技术栈 | 层级 | 技术 | 用途 | | :--- | :--- | :--- | | **Agent 编排** | LangGraph | 有状态的基于图的 SSDLC 工作流引擎 | | **LLM 框架** | LangChain | 统一的 LLM 抽象、提示词、工具、RAG | | **Web/API** | FastAPI | 具有自动 OpenAPI 的异步 REST API | | **向量存储** | ChromaDB + LightRAG | 混合向量 + 图 RAG | | **解析** | Docling + legacy 回退 | 多格式文档解析 | | **LLM 提供商** | OpenAI, Ollama | 云端和本地 LLM 支持 | | **语言** | Python 3.10+ | 主要开发语言 | ## 文档和 PRD - **[ARCHITECTURE.md](./ARCHITECTURE.md)** — 系统架构:LangGraph 设计,SSDLC agents,数据流,部署。 - **[SPEC.md](./SPEC.md)** — 产品需求:SSDLC 阶段,功能,安全控制。 - **[CHANGELOG.md](./CHANGELOG.md)** — 版本历史;[Releases](https://github.com/arthurpanhku/DocSentinel/releases)。 - **设计文档** [docs/](./docs/):架构,API 规范 (Open),契约,集成指南,部署 runbook。 ## 开发与测试 ### 选项 A:一键测试(推荐) ``` chmod +x test_integration.sh ./test_integration.sh ``` ### 选项 B:手动 ``` pip install -r requirements-dev.txt pytest pytest tests/test_skills_api.py # Run specific test ``` ## 贡献 欢迎提交 Issues 和 Pull Requests。请阅读 [CONTRIBUTING.md](CONTRIBUTING.md) 了解设置、测试和提交指南。参与即表示您同意 [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)。 AI 辅助贡献:我们鼓励使用 AI 工具进行贡献!请查看 [CONTRIBUTING_WITH_AI.md](CONTRIBUTING_WITH_AI.md) 了解最佳实践。 提交技能模板:有一个很棒的 SSDLC 阶段安全角色吗?提交一个 [Skill Template](https://github.com/arthurpanhku/DocSentinel/issues/new?template=new_skill_template.md) 或将其添加到 `examples/templates/`。 ## 安全 - **漏洞报告**:有关负责任的披露,请参阅 [SECURITY.md](./SECURITY.md)。 - **安全要求**:遵循 [SPEC §7.2](./SPEC.md) 中的安全控制。 ## 许可证 本项目采用 **MIT License** 许可 —— 详情请见 [LICENSE](./LICENSE) 文件。 ## Star 历史 [](https://star-history.com/#arthurpanhku/DocSentinel&Date) ## 作者和链接 - **作者**: PAN CHAO (Arthur Pan) - **仓库**: [github.com/arthurpanhku/DocSentinel](https://github.com/arthurpanhku/DocSentinel) - **SPEC 和设计文档**: 见上方链接。 如果您在组织中使用 DocSentinel 或做出回馈,我们很乐意收到您的反馈(例如通过 GitHub Discussions 或 Issues)。
标签:AI智能体, AI风险缓解, DevSecOps, LangChain, LangGraph, MCP服务器, Python, RAG, Ruby, SSDLC, 上游代理, 多格式解析, 安全软件开发生命周期, 安全运营, 安全问卷, 扫描框架, 文档自动化, 无后门, 漏洞修复, 知识库, 网络安全, 网络安全培训, 轻量级, 逆向工具, 隐私保护, 风险分析