GrayCodeAI/inspect

GitHub: GrayCodeAI/inspect

这是一个基于 LLM 智能体的全功能浏览器测试平台,支持通过自然语言指令驱动浏览器完成自动化测试、安全扫描及性能审计。

Stars: 0 | Forks: 0

Inspect

AI 驱动的浏览器测试平台

Tests License Node Version Packages CLI Commands

Inspect 使用 AI 智能体在真实浏览器中测试网站。只需提供自然语言指令,它就会启动 Playwright,导航页面,查找 Bug,并报告结果。它作为一个包含 34 个包的 monorepo 发布,涵盖浏览器自动化、5 个 LLM 提供商、视觉回归、可访问性审计、性能评分、安全扫描、网页爬取、隐身浏览、网络故障注入、智能体基准测试、智能体治理、企业级 RBAC/SSO、自愈等更多功能。 **灵感来源**:Playwright(浏览器 API)、Vitest(运行器/报告器)、Lighthouse(审计)、GitHub CLI(命令结构)、Vercel(开发者体验)、Expect(断言) ## 功能 - **AI 驱动测试** -- 用简单的英语描述测试内容;AI 智能体驱动真实浏览器 - **76 个 CLI 命令** -- 分为 8 个组:测试、浏览器、质量、基础设施、治理、企业、数据与工作流、设置与信息 - **交互式 TUI** -- 基于表单的界面,包含指令历史、自动 URL 检测、智能体/设备/模式选择器 - **REPL 模式** -- 14 个斜杠命令(/help、/model、/heal、/generate、/cost、/audit 等) - **7 种报告器格式** -- list、dot、json、junit、html、markdown、github - **5 个 LLM 提供商** -- Claude、GPT、Gemini、DeepSeek、Ollama(本地) - **视觉回归** -- 像素差异,支持滑块、并排和叠加对比模式 - **可访问性审计** -- WCAG 2.2 合规性,支持 iframe(axe-core) - **性能评分** -- 集成 Lighthouse,支持 Core Web Vitals - **安全扫描** -- OWASP Top 10、CVE 扫描、Nuclei 多协议(DNS/TCP/SSL) - **网页爬虫** -- Sitemap 解析、robots.txt、链接发现、批量爬取、媒体提取 - **变更跟踪** -- 定时监控,支持文本/JSON 差异对比和 webhook 通知 - **隐身浏览** -- 指纹轮换、反检测标头、CAPTCHA 检测 - **网络故障注入** -- TCP 代理,提供毒性预设(slow-3g、flaky-wifi、offline) - **WebSocket Mock** -- 用于 WS 处理器 Mock 的流式 API,支持消息匹配和录制 - **浏览器配置文件** -- 加密的会话持久化,包含 Cookie 管理 - **iFrame/Shadow DOM** -- 跨 frame 和 shadow root 的遍历与元素发现 - **智能体基准测试** -- MiniWoB、WebArena、WorkArena 套件,支持奖励塑形 - **CAPTCHA 求解** -- 多智能体群体架构,集成视觉检测 - **Story 测试** -- Storybook、Ladle、Histoire story 级别视觉回归 - **YAML 工作流** -- 14 种块类型(crawl、track、proxy、benchmark、task、loop、code 等) - **微服务架构** -- 服务注册中心、API 网关、消息总线 - **凭证保险库** -- AES-256-GCM 加密存储,支持 Bitwarden、1Password、Azure - **CI/CD 就绪** -- JUnit/GitHub 报告器、分片、预设、模板生成 - **智能体治理** -- 审计跟踪、自主性级别、权限管理、合规报告 - **企业功能** -- RBAC(5 个角色)、SSO(SAML/OIDC/Azure/Okta)、多租户、混合 LLM 路由 - **自愈** -- 智能选择器修复,支持相似性匹配和恢复 - **会话录制** -- 基于 rrweb 的会话录制,包含隐私控制 - **Human-in-the-Loop** -- 自主测试的人工审批检查点 - **工作流录制** -- 录制工作流并导出为测试脚本 - **可视化测试构建器** -- 拖拽式测试步骤创建 - **多智能体场景** -- 针对复杂测试的多智能体编排 - **沙箱执行** -- 具有资源限制的隔离测试执行 - **插件市场** -- 可扩展的插件系统,支持 hooks - **测试生成** -- 页面分析、基于 sitemap 的生成、YAML/指令导出 - **MCP 服务器** -- 独立的 Model Context Protocol 服务器(14 个浏览器工具) - **SDK** -- 9 个方法:`act()`、`extract()`、`observe()`、`agent()`、`navigate()`、`screenshot()`、`crawl()`、`track()`、`createProxy()` ## 快速开始 ``` # 安装和构建 pnpm install && pnpm build # 检查你的环境 node apps/cli/dist/index.js doctor # 运行测试 ANTHROPIC_API_KEY=sk-ant-... node apps/cli/dist/index.js test \ -m "test the login flow" \ --url https://your-app.com \ -y ``` ## CLI 参考 Inspect 提供了 76 个命令,分为 8 个组。 ### 测试 | 命令 | 描述 | | ----------------- | --------------------------------- | | `inspect test` | 使用自然语言指令进行 AI 浏览器测试 | | `inspect run` | 运行已保存的测试套件或 YAML 测试文件 | | `inspect pr` | 使用完整的 git 上下文测试 GitHub pull request | | `inspect replay` | 从 trace 重放之前的测试运行 | | `inspect compare` | 并排比较两次测试运行 | | `inspect watch` | 监视文件更改并自动重新运行测试 | ``` inspect test -m "test checkout flow" --url https://shop.example.com inspect test -m "test forms" --headed --agent gpt --mode cua inspect test -m "test search" --workers 4 --shard 1/3 --grep "login" inspect pr https://github.com/user/repo/pull/123 inspect run tests/checkout.yaml --retries 2 inspect watch --grep "login" --reporter dot ``` ### 浏览器 | 命令 | 描述 | | ------------------ | -------------------------- | | `inspect open` | 在受管理的浏览器会话中打开 URL | | `inspect screenshot` | 截取页面屏幕截图 | | `inspect pdf` | 将页面导出为 PDF | | `inspect codegen` | 从浏览器交互生成测试代码 | ``` inspect open https://example.com --device "iPhone 15" inspect screenshot https://example.com -o screenshot.png --full-page inspect pdf https://example.com -o page.pdf inspect codegen https://example.com ``` ### 质量 | 命令 | 描述 | | ------------------ | ------------------------------ | | `inspect a11y` | 运行可访问性审计(axe-core,WCAG 2.2) | | `inspect lighthouse` | 运行 Lighthouse 性能审计 | | `inspect security` | 运行安全扫描(OWASP Top 10) | | `inspect chaos` | 运行混沌/猴子测试 | | `inspect visual` | 运行视觉回归对比 | ``` inspect a11y https://example.com --standard wcag22aa inspect lighthouse https://example.com --budget perf:90,a11y:95 inspect security https://example.com --level full inspect chaos https://example.com --duration 30s inspect visual --baseline main --branch feature/ui ``` ### 基础设施 | 命令 | 描述 | | ---------------- | ---------------------------------------- | | `inspect serve` | 启动 REST API 服务器 | | `inspect tunnel` | 创建到 API 服务器的 Cloudflare 隧道 | | `inspect sessions` | 管理浏览器会话 | | `inspect mcp` | 启动 MCP (Model Context Protocol) 工具服务器 | ``` inspect serve --port 3000 --auth jwt inspect tunnel --subdomain my-inspect inspect sessions list inspect mcp ``` ### 治理 | 命令 | 描述 | | ------------------ | ---------------------------------- | | `inspect trail` | 显示智能体审计跟踪 | | `inspect autonomy` | 管理智能体自主性级别 | | `inspect permissions` | 管理智能体权限(域名、操作) | | `inspect cost` | 显示会话成本明细 | ``` inspect trail --limit 50 inspect trail --compliance eu-ai-act inspect autonomy --level supervision inspect permissions --allow-domain example.com inspect permissions --block-action navigate inspect cost --json ``` ### 企业 | 命令 | 描述 | | -------------- | ---------------------- | | `inspect rbac` | 管理基于角色的访问控制 | | `inspect tenant` | 管理租户计划和配额 | | `inspect sso` | 配置单点登录提供商 | ``` inspect rbac inspect rbac --role admin inspect tenant --plan enterprise inspect tenant --name "Acme Corp" --plan team inspect sso --provider saml --sso-url https://idp.example.com/sso ``` ### 数据与工作流 | 命令 | 描述 | | ------------------ | -------------------------------------------- | | `inspect extract` | 从页面提取结构化数据 | | `inspect crawl` | 爬取网站并提取内容 | | `inspect track` | 监控页面内容变更 | | `inspect proxy` | 网络故障注入代理服务器 | | `inspect benchmark` | 运行智能体基准测试 | | `inspect workflow` | 运行或创建 YAML 工作流 | | `inspect credentials` | 管理加密凭证保险库 | ``` inspect extract https://example.com -s '{"title": "string", "price": "number"}' inspect crawl https://example.com --depth 3 --max-pages 100 --format json inspect track https://example.com/pricing --interval 3600 inspect proxy start --preset slow-3g --upstream localhost:3000 inspect proxy presets inspect benchmark run --suite miniwob --concurrency 2 inspect workflow run tests/e2e.yaml inspect workflow create inspect credentials set STAGING_PASSWORD ``` ### 设置与信息 | 命令 | 描述 | | ------------------ | --------------------------------------------- | | `inspect init` | 初始化项目配置和 CI 模板 | | `inspect doctor` | 检查环境、依赖和 API 密钥 | | `inspect generate` | 从描述生成测试文件 | | `inspect audit` | 审计项目依赖和配置 | | `inspect install` | 安装浏览器二进制文件 | | `inspect show-report` | 在浏览器中打开生成的报告 | | `inspect show-trace` | 在查看器中打开 trace 文件 | | `inspect devices` | 列出可用的设备预设(25 个设备) | | `inspect agents` | 列出可用的 AI 智能体及其功能 | | `inspect models` | 列出所有提供商可用的 LLM 模型 | | `inspect completions` | 生成 Shell 补全脚本(bash/zsh/fish) | | `inspect alias` | 管理命令别名 | | `inspect engine` | 管理浏览器引擎设置 | ``` inspect init inspect init --ci github-actions inspect doctor --json inspect devices --format json inspect models --provider anthropic inspect completions --shell zsh >> ~/.zshrc ``` ## SDK 使用 ``` import { Inspect } from "@inspect/sdk"; const inspect = new Inspect({ apiKey: process.env.ANTHROPIC_API_KEY, headless: true, }); await inspect.init(); // Navigate await inspect.navigate("https://example.com"); // Execute a single action await inspect.act("Click the login button"); // Extract structured data const data = await inspect.extract("Get all product prices"); // Get suggested actions const actions = await inspect.observe("What can I do on this page?"); // Run a multi-step autonomous agent const result = await inspect.agent("Complete the checkout flow", { maxSteps: 20, }); // Crawl a website const crawled = await inspect.crawl("https://example.com", { depth: 3, maxPages: 100, }); // Track changes on pages const changes = await inspect.track(["https://example.com/pricing"], { interval: 3600, }); // Start a fault injection proxy const proxy = await inspect.createProxy({ preset: "slow-3g" }); // ... run tests with degraded network ... await proxy.stop(); await inspect.close(); ``` ## 配置 ### 配置文件 在项目根目录下创建 `inspect.config.ts`(或 `.js`、`.json`): ``` import { defineConfig } from "@inspect/sdk"; export default defineConfig({ provider: "anthropic", headless: true, device: "Desktop Chrome", timeout: 30_000, retries: 2, reporter: ["list", "html"], outputDir: "./inspect-results", }); ``` ### 预设 ``` inspect test -m "test login" --preset ci # CI-optimized (headless, retries, junit) inspect test -m "test login" --preset fast # Fast mode (reduced timeouts) inspect test -m "test login" --preset thorough # Thorough (more steps, screenshots) ``` ### 性能预算 ``` inspect lighthouse https://example.com \ --budget perf:90,a11y:100,bp:90,seo:90,pwa:50 ``` ## CI/CD 集成 ### GitHub Actions ``` # .github/workflows/inspect.yml name: Inspect Tests on: [push, pull_request] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: node-version: 20 - run: pnpm install && pnpm build - run: npx inspect test -m "test critical flows" --preset ci --reporter github env: ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} ``` ### GitLab CI ``` # .gitlab-ci.yml inspect: image: node:20 before_script: - npm i -g pnpm && pnpm install && pnpm build script: - npx inspect test -m "test critical flows" --preset ci --reporter junit artifacts: reports: junit: inspect-results/junit.xml ``` ### CircleCI ``` # .circleci/config.yml version: 2.1 jobs: inspect: docker: - image: cimg/node:20.0-browsers steps: - checkout - run: npm i -g pnpm && pnpm install && pnpm build - run: npx inspect test -m "test critical flows" --preset ci --reporter junit - store_test_results: path: inspect-results ``` ### 分片 将测试拆分到 CI worker 上以并行执行: ``` # Worker 1 of 3 inspect run tests/ --shard 1/3 --reporter junit # Worker 2 of 3 inspect run tests/ --shard 2/3 --reporter junit # Worker 3 of 3 inspect run tests/ --shard 3/3 --reporter junit ``` ### 模板生成 ``` inspect init --ci github-actions # Generate .github/workflows/inspect.yml inspect init --ci gitlab-ci # Generate .gitlab-ci.yml inspect init --ci circleci # Generate .circleci/config.yml ``` ## 架构 ``` inspect/ ├── apps/ │ └── cli/ CLI (Commander + Ink TUI, 76 commands) ├── packages/ │ ├── shared/ Types (160+), utils (24), constants, device presets │ ├── observability/ Analytics, tracing, metrics, logging, cost intelligence │ ├── browser/ Playwright, ARIA, DOM, vision, profiles, backends (Lightpanda) │ ├── devices/ Device presets and device pool │ ├── llm/ 5 LLM providers (Claude, GPT, Gemini, DeepSeek, Ollama) │ ├── agent/ Backward-compat facade (re-exports llm, agent-*) │ ├── agent-memory/ Action cache, short/long-term memory, compaction │ ├── agent-tools/ Tool registry, decorators, judge, validator │ ├── agent-watchdogs/ Captcha, crash, DOM, download, popup watchdogs │ ├── agent-governance/ Audit trail, autonomy levels, permissions │ ├── orchestrator/ Test execution, scheduling, recovery, caching │ ├── core/ Backward-compat facade (re-exports orchestrator, git, devices) │ ├── git/ Git integration, GitHub PR management │ ├── workflow/ YAML engine, 14 block types (crawl, track, proxy, benchmark) │ ├── credentials/ AES-256-GCM vault (Bitwarden, 1Password, Azure) │ ├── data/ Crawler, change tracking, extractors, parsers, cloud storage │ ├── api/ REST server, webhooks, SSE, WebSocket │ ├── network/ Stealth browsing, proxy, domain security, data masking │ ├── quality/ Backward-compat facade (re-exports a11y, chaos, etc.) │ ├── a11y/ Accessibility auditing (axe-core, WCAG 2.2) │ ├── lighthouse-quality/ Core Web Vitals, budgets, history │ ├── chaos/ Gremlins.js chaos testing │ ├── security-scanner/ Nuclei, ZAP security scanning │ ├── mocking/ REST/GraphQL/WebSocket mocking │ ├── resilience/ Network fault injection (TCP proxy, toxics) │ ├── visual/ Pixel diff, masking, storybook, slider reports │ ├── reporter/ 7 formats: list, dot, json, junit, html, markdown, github │ ├── sdk/ Public SDK (9 methods) │ ├── mcp/ Standalone MCP server (Model Context Protocol) │ ├── enterprise/ RBAC, SSO, multi-tenancy, hybrid LLM routing │ └── services/ Microservice architecture (9 services + 3 infra) ├── evals/ Benchmarks (MiniWoB, WebArena, WorkArena, reward shaping) └── docker/ Dockerfile + Dockerfile.fast ``` ## 环境变量 | 变量 | 描述 | 必填 | | ------------------- | ------------------------------------- | ---------------------- | | `ANTHROPIC_API_KEY` | Claude API 密钥(Sonnet、Opus、Haiku) | 用于 Anthropic 提供商 | | `OPENAI_API_KEY` | OpenAI API 密钥(GPT-4o、GPT-4.1、o3) | 用于 OpenAI 提供商 | | `GOOGLE_AI_KEY` | Google Gemini API 密钥(2.5 Pro/Flash) | 用于 Gemini 提供商 | | `DEEPSEEK_API_KEY` | DeepSeek API 密钥(R1、V3) | 用于 DeepSeek 提供商 | | `INSPECT_LOG_LEVEL` | 日志级别:`debug`、`info`、`warn`、`error` | 否(默认:`info`) | | `INSPECT_TELEMETRY` | 设置为 `false` 以禁用遥测 | 否(默认:`true`) | | `INSPECT_CONFIG` | 配置文件路径 | 否 | | `INSPECT_OUTPUT_DIR` | 结果输出目录 | 否 | ## 支持的 AI 提供商 | 提供商 | 模型 | 功能 | | ---------- | -------------------------------- | -------------------------------- | | **Anthropic** | Claude 4 Sonnet/Opus、Haiku 3.5 | 视觉、扩展思考、工具使用 | | **OpenAI** | GPT-4o、GPT-4.1、o3 | 视觉、函数调用 | | **Google** | Gemini 2.5 Pro/Flash | 视觉、思考预算 | | **DeepSeek** | DeepSeek-R1、V3 | 推理、高性价比 | | **Ollama** | 任何本地模型 | 隐私、离线使用、无需 API 密钥 | ## 测试类型 | 类型 | 工具 | 作用 | | ------------------ | ----------------- | -------------------------------------- | | **功能** | AI 智能体 | 使用自然语言指令测试用户流程 | | **可访问性** | axe-core | WCAG 2.2 合规性,支持 iframe | | **性能** | Lighthouse | Core Web Vitals、SEO、PWA 评分 | | **安全** | Nuclei + ZAP | OWASP Top 10、CVE 扫描、DNS/TCP/SSL | | **视觉** | Pixel diff | 截图,支持可配置阈值 | | **混沌** | Gremlins.js | 随机猴子测试(5 种物种) | | **弹性** | Toxiproxy | 网络故障注入(TCP 代理、毒性预设) | | **网页爬取** | 自定义 | Sitemap/robots.txt、链接发现、批量爬取 | | **变更跟踪** | 自定义 | 定时监控,支持文本/JSON 差异对比 | | **隐身** | 自定义 | 指纹轮换、反检测、CAPTCHA 检测 | | **Mock** | MSW-inspired | REST + GraphQL + WebSocket 处理器 Mock | | **基准测试** | BrowserGym | MiniWoB、WebArena、WorkArena 智能体评估 | | **Story 测试** | Lost Pixel | Storybook、Ladle、Histoire 视觉回归 | ## 开发 ``` # 安装依赖 pnpm install # 构建所有包 pnpm build # 运行所有 1642 个测试 npx vitest run # 运行特定的测试文件 npx vitest run packages/shared/src/utils/index.test.ts # Watch mode npx vitest # Typecheck pnpm typecheck # 运行 CLI node apps/cli/dist/index.js --help ``` ## 贡献 请参阅 [CONTRIBUTING.md](CONTRIBUTING.md) 了解开发设置、编码规范以及如何提交更改。 ## 许可证 [MIT](LICENSE) -- 版权所有 (c) 2026 Lakshman Patel
标签:Agent, AI驱动, BeEF, C2, DLL 劫持, DNS解析, LLM, MITM代理, Playwright, QA, RBAC, REPL, SSO, TUI, UI测试, Unmanaged PE, Web自动化, 交互式终端, 人工智能, 企业级, 前端测试, 可访问性测试, 大语言模型, 威胁情报, 安全扫描, 开发者工具, 开源框架, 开源项目, 性能测试, 持续集成, 数据管道, 时序注入, 测试报告, 浏览器测试, 爬虫, 特征检测, 用户模式Hook绕过, 网络故障注入, 自动化攻击, 自动化运维, 自愈, 视觉回归测试, 请求拦截, 质量保证, 软件工程, 隐形浏览