Ohswedd/sentinelqa

GitHub: Ohswedd/sentinelqa

SentinelQA:Web应用发布信心引擎,自动化测试与评分系统。

Stars: 0 | Forks: 0

SentinelQA **为Web应用提供发布信心。每次推送,一个分数,一个决策。** [![CI](https://img.shields.io/github/actions/workflow/status/Ohswedd/sentinelqa/ci.yml?branch=main&label=ci)](https://github.com/Ohswedd/sentinelqa/actions/workflows/ci.yml) [![PyPI](https://img.shields.io/badge/pypi-sentinelqa--cli-3776ab.svg)](https://pypi.org/project/sentinelqa-cli/) [![npm](https://img.shields.io/badge/npm-%40sentinelqa%2Fts--runtime-cb3837.svg)](https://www.npmjs.com/package/@sentinelqa/ts-runtime) [![Docker](https://img.shields.io/badge/docker-sentinelqa%2Frunner-2496ed.svg)](https://hub.docker.com/r/sentinelqa/runner) [![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](./LICENSE)
SentinelQA爬取您的应用,生成Playwright测试,运行它们,并将结果转换为一个可重复的质量分数和可解释的发布决策。它专为**可防御的CI网关**和**可审计的代理循环**而构建。 ![sentinel audit terminal demo](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/1cb177da30224231.svg) ## 为什么 | 您想要… | SentinelQA为您提供… | | --------------------------------------- | -------------------------------------------------------------------------------------------------- | | 一个可防御的CI网关 | 每次运行一个分数,确定性的退出代码,可解释的策略。 | | 对代理生成的代码的信心 | 专门检查死按钮、假路由、已发货的模拟数据、仅前端认证。 | | 无需单独扫描器的安全性 | 标头、cookie、CORS、CSRF、安全XSS / IDOR探测、秘密扫描、SBOM、OSV — 所有SARIF。 | | 可证明的易用性 | axe-core (WCAG 2.2 A / AA) + 键盘 / 焦点 / 地标检查;报告说明自动化了什么。 | | 不需要添加的安全边界 | 默认情况下仅限localhost。除非明确列入允许列表,否则公共主机被阻止。没有隐蔽,没有CAPTCHA绕过。 | ## 安装 选择与您使用方式相匹配的表面。 ``` # Python CLI + SDK + MCP 服务器(主要安装) uv pip install sentinelqa-cli # or: pip install sentinelqa-cli # TypeScript 运行时(用于自行驱动 Playwright 的项目) pnpm add -D @sentinelqa/ts-runtime # or: npm i -D @sentinelqa/ts-runtime # 独立 Docker 运行器(无需 Python 安装的 CI) docker pull sentinelqa/runner:latest ``` `sentinelqa-cli`带来了`sentinelqa-engine`、`sentinelqa-modules`、`sentinelqa-integrations`、Python SDK(`sentinelqa`)和MCP服务器(`sentinelqa-mcp`)。每个包都可以独立安装以供嵌入式使用。 ## 运行您的第一个审计 ``` sentinel init sentinel doctor sentinel audit --url http://localhost:3000 ``` 打开`.sentinel/runs/latest/report.html`以查看渲染的报告,或`.sentinel/runs/latest/findings.json`以查看机器可读的形式。退出代码是确定性的:`0`通过 · `1`质量网关失败 · `2`配置 · `3`运行时 · `4`不安全的目标 · `5`缺少依赖项 · `6`测试执行 · `7`内部。 ## 包含内容 ### 审计模块 | 模块 | 它覆盖的内容 | | ------------------ | ----------------------------------------------------------------------------- | | **功能** | 登录、注册、CRUD、角色边界、文件上传、支付沙盒。 | | **易用性** | axe-core (WCAG 2.2 A / AA)、键盘、焦点、地标、可访问名称。 | | **性能** | 合成页面 / API / CPU / 包 / 导航稳定性预算。 | | **安全** | 标头、cookie、CORS、CSRF、安全XSS、IDOR烟雾、秘密扫描、SARIF。 | | **API** | OpenAPI + GraphQL合约、负面案例、认证矩阵、延迟预算。 | | **视觉** | 像素 + 感知差异、动态内容屏蔽。没有CI自动接受。 | | **混沌** | 慢网络、离线、500 / 超时模拟、会话过期边缘情况。 | | **LLM-code audit** | 死按钮、假路由、已发货的模拟数据、仅前端认证。 | | **供应链** | CycloneDX SBOM、OSV漏洞查找、许可证审计、安装后扫描器。 | | **合规性** | WCAG 2.2、GDPR基线、CCPA基线、SOC 2审计跟踪包。 | ### 引擎 爬虫 · 规划器(确定性和可选的LLM)· 生成器(Playwright规范 + 页面对象 + 固定值)· 运行器(本地 / Docker、重试 + 隔离)· 失败分析器(根本原因分类)· 评分 · 报告器(HTML / JSON / SARIF / JUnit / Markdown)· 治疗者(定位修复建议)。 ### 分发表面 | 表面 | 它是什么 | 安装 | | --------------- | ------------------------------------------------------------------- | ------------------------------------------------ | | `sentinel` | 基于Typer的CLI;19个命令 | `pip install sentinelqa-cli` | | `sentinelqa` | 类型化Python SDK(`Sentinel`、`AuditResult`、`Finding`、`TestPlan`) | `pip install sentinelqa` | | `sentinel mcp` | MCP服务器通过JSON-RPC公开12个`sentinel.*`工具 | `pip install sentinelqa-mcp` | | `sentinel-ts` | TypeScript运行时(Playwright辅助工具、JSONL桥接) | `pnpm add -D @sentinelqa/ts-runtime` | | Docker运行器 | 预安装一切的自立镜像 | `docker pull sentinelqa/runner:latest` | | GitHub Action | 组合操作 + 可重用工作流程 | [`integrations/github/`](./integrations/github/) | | GitLab模板 | 即插即用的CI模板 | [`integrations/gitlab/`](./integrations/gitlab/) | ## 如何使用它 ``` # Python SDK from sentinelqa import Sentinel result = Sentinel.audit("http://localhost:3000") print(result.score, result.decision) for finding in result.findings.critical: print(finding.title, finding.recommendation) ``` ``` # GitHub Actions - uses: Ohswedd/sentinelqa@v1 with: url: http://localhost:3000 fail-under: 80 ``` ``` # MCP — 将任何具有 MCP 功能的代理指向 stdio 服务器 sentinel mcp # 暴露:sentinel.audit、sentinel.findings、sentinel.suggest_fix、 # sentinel.verify_fix、sentinel.read_report、sentinel.discover 以及更多。 ``` 有关详细信息,请参阅[SDK参考](./packages/python-sdk/README.md)、[MCP参考](./packages/mcp-server/README.md)和[CI集成指南](./integrations/github/README.md)。 ### 扩展SentinelQA 实现`ScannerPlugin`、`RunnerPlugin`或`ReporterPlugin`,注册入口点,声明其功能。插件加载器处理发现、权限门控和沙盒子进程工作器。请参阅[`docs/dev/plugins.md`](./docs/dev/plugins.md)。 ## 文档 - **文档网站** — - [架构](./apps/docs/src/content/docs/concepts/architecture.md) - [模块目录](./apps/docs/src/content/docs/modules/index.md) - [错误代码](./docs/user/error-codes.md) - [架构决策记录](./docs/adr/) ## 安全边界 SentinelQA仅适用于**授权测试**。默认情况下,它拒绝任何`localhost` / `127.0.0.1` / `::1`之外的目标。除非明确添加到您的`target_allowlist`中,否则公共主机被阻止。发出写入形状请求的安全检查还需要授权证明。 我们不——也不会——提供:机器人检测 / CAPTCHA绕过、隐蔽自动化、指纹规避、凭证填充或未经授权的利用。在将SentinelQA指向您不拥有或未明确授权测试的内容之前,请先阅读[SECURITY.md](./SECURITY.md)。 ## 贡献 欢迎拉取请求。请参阅[CONTRIBUTING.md](./CONTRIBUTING.md)了解fork-and-PR流程、常规提交和完成定义。通过参与,您同意[贡献者公约行为准则](./.github/CODE_OF_CONDUCT.md)。 对于安全问题,请遵循[SECURITY.md](./SECURITY.md)中的披露路径——不要公开创建问题。 ## 许可证 Apache-2.0 —— 请参阅[LICENSE](./LICENSE)和[NOTICE](./NOTICE)。
标签:Apache 2.0许可证, MCP工具, Playwright, Python SDK, SEO优化, Web应用测试, 可解释性, 安全测试, 开源框架, 持续集成, 攻击性安全, 自动化测试工具, 请求拦截, 质量保证, 质量评分, 质量门, 软件质量, 逆向工具