Ohswedd/sentinelqa
GitHub: Ohswedd/sentinelqa
SentinelQA:Web应用发布信心引擎,自动化测试与评分系统。
Stars: 0 | Forks: 0

**为Web应用提供发布信心。每次推送,一个分数,一个决策。**
[](https://github.com/Ohswedd/sentinelqa/actions/workflows/ci.yml)
[](https://pypi.org/project/sentinelqa-cli/)
[](https://www.npmjs.com/package/@sentinelqa/ts-runtime)
[](https://hub.docker.com/r/sentinelqa/runner)
[](./LICENSE)
SentinelQA爬取您的应用,生成Playwright测试,运行它们,并将结果转换为一个可重复的质量分数和可解释的发布决策。它专为**可防御的CI网关**和**可审计的代理循环**而构建。

## 为什么
| 您想要… | 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应用测试, 可解释性, 安全测试, 开源框架, 持续集成, 攻击性安全, 自动化测试工具, 请求拦截, 质量保证, 质量评分, 质量门, 软件质量, 逆向工具