关于 argus
argus 是面向 AI 辅助开发的 Chrome 网页 QA MCP 服务,可审计应用的实际渲染结果并返回分级问题;Aegis 会在数据外发时隐藏敏感信息。
主要功能
- 01检查 JavaScript、网络、无障碍与安全等问题
- 02比较环境和视觉基线
- 03追踪新增、已解决及持续存在的问题
- 04通过 Aegis 隐去敏感输出
- 05支持 CI、命令行和 Slack 报告
适用场景
- 01在代码离开开发者机器前检查本地应用
- 02发现开发环境与预发布环境之间的回归
- 03引导 Agent 执行审计、修复和复查循环
MCP 相关
提供 MCP 工具,用于审计 Chrome 标签页、比较环境、查看问题和验证 GitHub 拉取请求。Aegis 会在工具响应到达 Agent 前过滤敏感信息。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y argusqa-osTARGET_DEV_URLBase URL of the dev environment to audit (e.g. http://localhost:3000)TARGET_STAGING_URLBase URL of the staging environment — used by argus_compare for dev vs staging diff. Omit to use CSS analysis mode.SLACK_BOT_TOKEN密钥Slack bot token (xoxb-...) for posting reports. Omit to generate a local report.html instead.FIGMA_API_TOKEN密钥Figma personal access token — enables argus_design_audit to fetch design specs from a Figma frame and compare them against the live DOM (13 fidelity finding types). Omit to skip design fidelity audits.ARGUS_REDACT_SENSITIVEAegis confidentiality egress boundary. Default ON: every tool response is redacted so secrets, PII, and exploit detail never cross into the calling agent's context (the local on-disk report keeps full fidelity). Set to 0 for byte-identical pre-Aegis output.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
9收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 是 | 要审计的完整 URL,包括协议和路径(例如 http://localhost:3000/checkout)。运行中的 Chrome 实例必须能够访问该 URL。 |
| cache | boolean | 否 | 为 true 时,如果存在此 URL 的缓存结果(来自本会话中先前的 argus_audit 调用),则返回该结果而不重新爬取。可在修复循环中使用,以较低成本重新读取上次审核结果。缓存按会话隔离,最多 20 条,采用 LRU 淘汰。 |
| critical | boolean | 否 | 为 true 时,将 console.error 调用提升为 critical 严重级别。对于登录、结账、仪表板等业务关键路由,任何错误都属于阻断问题,应设为 true。 |
详细介绍
Argus — AI 辅助开发的 QA 层
你的 AI Agent 编写代码。Argus 检查它实际构建了什么。
只需在 MCP 配置中添加一行,即可让 Claude(或任何 MCP Agent)使用真正的 Chrome 审计引擎 — 67 个审计类别 · 149 种问题类型 · 无需编写或维护测试文件。 借助 Aegis,它发现的问题绝不会将你的秘密泄露给大模型。
Argus 为何存在
如今,AI Agent 编写了大部分代码 — 而它们判断工作是否完成的依据是代码能否编译且看起来已完成,而不是浏览器中实际发生了什么。第三次点击时未捕获的异常。通过 HTTP 发送凭据的表单。4 秒的 LCP。暗色模式下消失的按钮。在无限循环中被反复请求的 API 端点。
Argus 弥合了这一差距。 它通过 Chrome DevTools Protocol 驱动真正的 Chrome,对本地运行的应用进行检查,并向 Agent(或你)提供一份按严重程度排序的结构化错误报告。Agent 修复;Argus 重新检查;在代码离开你的设备之前,整个循环就已完成。
| 🧪 永远无需测试文件 | Argus 审计的是渲染后的应用 — DOM、控制台、网络、像素 — 而不是源代码。无需编写任何内容,也无需在 Agent 重构时维护测试 |
| 🤖 专为 Agent 循环打造 | Claude 唯一可通过 MCP 原生调用的 QA 引擎。审计 → 修复 → 重新审计,无需离开对话 |
| 🔒 默认保障 Agent 安全 | Aegis:在每个出口边界对发现结果进行脱敏 — 秘密、个人身份信息和漏洞利用细节绝不会进入大模型的上下文窗口(OWASP LLM02,默认开启,故障关闭) |
| 🧰 也可作为常规 QA 工具使用 | CLI 批量审计、GitHub Action PR 门禁、附带截图的 Slack 报告、开发环境与预发布环境差异对比、监视模式 — 可搭配 Agent 使用,也可独立使用 |
快速开始
无需安装。 首次运行时,
npx会获取 Argus。
1 — 在项目根目录的 .mcp.json 中添加两行:
{
"mcpServers": {
"chrome-devtools": { "command": "npx", "args": ["-y", "chrome-devtools-mcp@latest"] },
"argus": { "command": "npx", "args": ["-y", "argusqa-os"] }
}
}
或通过 Claude Code 命令行添加:
claude mcp add chrome-devtools -- npx -y chrome-devtools-mcp@latest
claude mcp add argus -- npx -y argusqa-os
2 — 启动 Chrome(自动检测你的 Chrome 并设置正确的标志):
npx -y -p argusqa-os argus-chrome
更喜欢手动启动 Chrome?(macOS / Windows / Linux 命令)
# macOS
open -a "Google Chrome" --args --remote-debugging-port=9222 --headless=new
# Windows (PowerShell)
& "C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --headless=new --no-sandbox --disable-gpu --user-data-dir="$env:TEMP\chrome-argus"
# Linux
google-chrome --remote-debugging-port=9222 --headless=new --no-sandbox
3 — 向你的 Agent 提问:
Run argus_audit on http://localhost:3000
就是这样。发现的问题会以结构化形式返回,并按严重程度排序 — 可直接显示在对话中、发送到 Slack,或保存为本地 report.html。遇到问题?运行 npx -y -p argusqa-os argus-doctor,即可通过一条命令诊断你的设置。
修复循环
Argus 在 Agent 编码会话中的工作方式如下:
You: Build me a checkout page with a card form.
Agent: [writes the code, dev server renders it]
You: Run argus_audit on http://localhost:3000/checkout
Argus: ● 2 critical · 3 warnings
● uncaught TypeError in checkout.js (visible on submit)
● form posts over HTTP — security_no_https
▲ card inputs missing labels + autocomplete (a11y/WCAG)
▲ LCP 4.1s — hero image unoptimized
▲ duplicate POST /api/cart ×7 — likely render loop
Agent: [fixes all five]
You: Run argus_get_context
Argus: ✓ resolved: 5 · persisting: 0 · new: 0
argus_get_context 会与之前的快照进行差异比较,让 Agent 准确了解修复了什么、破坏了什么,以及还剩下什么 — 无需重新阅读大段输出。
“但我的 Agent 已经能驱动浏览器了……” — 确实如此。驱动不等于判断。原始浏览器 MCP(Playwright MCP、裸用的 chrome-devtools-mcp)为 Agent 提供了手和眼睛;Agent 随后必须在每次会话中重新推导要检查的内容,把上下文消耗在翻查控制台日志上。Argus 则是在此之上的判断层:包含 149 种已编码的问题类型,并具备阈值、严重程度策略、跨运行基线、偶发问题过滤、重复项去重和根因提示 — 一次调用即可返回,默认脱敏。
Argus 能捕获的问题
32 个分析引擎、149 种不同的问题类型,无需维护测试文件:
| 类别 | 检测内容 |
|---|---|
| JavaScript | 未捕获的异常、未处理的 Promise 拒绝、关键路由上的 console.error |
| 网络与 API | HTTP 5xx、401/403 身份验证失败、重复 API 调用(无限循环)、4xx 错误、失效链接 |
| 性能 | LCP > 2500ms、CLS > 0.1、TTFB > 800ms、慢速 API > 1s/3s、载荷 > 500KB/2MB、JS 包 > 500KB |
| 无障碍 | axe-core(80 多条 WCAG 规则)、色盲模拟、缺失 ARIA、键盘焦点、标题层级 |
| SEO | 缺少 meta 描述、OG 标签、canonical、viewport、h1 |
| 安全 | localStorage/URL 中的身份验证令牌、eval()、缺少 CSP/X-Frame-Options、CSP 违规、外部脚本缺少 SRI、源码映射暴露、开放重定向、npm CVE |
| CSS | 级联覆盖、组件样式泄漏、未使用的规则、React 内联样式冲突 |
| 内容 | 作为可见文本的 null/undefined、Lorem ipsum、失效图片、空数据列表 |
| 响应式 | 在 375px/768px 下出现水平溢出、触控目标 < 44×44px |
| 内存 | 通过 V8 堆快照检测分离的 DOM 节点、导航过程中的堆增长 |
| 视觉 | 通过 pixelmatch 进行像素级截图回归(≥0.1% 警告,≥5% 严重) |
| Figma | 设计与实现的一致性——13 种属性类型(颜色、间距、排版、阴影等) |
| 表单 | 缺少 required、autocomplete、aria-describedby;未标注的输入框 |
| 字体 | FOIT、FOUT、缺少回退字体、加载缓慢 > 1s、格式不理想 |
| 动效 | 违反 prefers-reduced-motion、autoplay 未提供暂停控件 |
| 主题 | 深色模式缺失——静态 CSS 变量、缺少 prefers-color-scheme 处理 |
| 网络基线 | 与已保存的 HAR 基线相比,新增请求、缺少请求、状态码回归 |
| 环境差异 | 开发环境与预发布环境的差异——截图差异、DOM 更改、控制台/网络回归 |
此外,每项发现都会经过后处理:
| 后处理器 | 增补内容 |
|---|---|
| 智能基线过滤 | 在多次运行中反复变化的发现会标记为 noisy,并降级为 info——纯粹基于跨运行启发式判断,不调用 API(设置 ARGUS_NOISE_FILTER=0 可禁用) |
| 根因关联 | 为新发现标注最可能导致问题的近期 git 提交和文件(设置 ARGUS_ROOT_CAUSE=0 可禁用) |
所有发现都会归类为
critical/warning/info,并发送到相应的 Slack 频道,或显示在本地 HTML 报告中。有关每项发现的严重性表格和检测方法,请参阅 REFERENCE.md。
适配你的技术栈
Argus 检查的是渲染后的输出,而不是源代码,因此从设计上就与框架无关。只要能在 Chrome 中运行,Argus 就能检查:
| SPA 框架 | React、Vue、Angular、Svelte/SvelteKit、Solid、Preact、Astro…… |
| 元框架 | Next.js、Nuxt、Remix、Gatsby,以及框架感知的额外功能:Next.js 和 React Router 路由发现、基于导入图的 PR 映射(“此组件发生更改 → 仅检查渲染该组件的路由”)、感知单体仓库路径 |
| 服务端渲染 | Rails、Django、Laravel、Flask、Spring、PHP——以及任何向浏览器提供 HTML 的技术 |
| 静态页面 / 无框架 | 纯 HTML/CSS/JS、文档站点、落地页 |
| API(通过页面) | 响应架构验证、对页面发出的每个请求进行状态/耗时检查 |
**如实说明其局限:**仅支持 Chrome/Chromium 渲染(不涉及 Safari/Firefox 引擎差异),仅支持 Web(不支持原生移动/桌面应用),后端服务通过页面生成的流量进行检查,而不是作为独立的 API 测试套件进行检查。
保密性 — Aegis 出站边界
默认开启。 Argus 会审计你的应用,查找机密信息和漏洞,因此它的发现结果恰恰是你最不希望离开本机的数据。它们跨越任何外部边界之前,Aegis 都会对其进行脱敏。对于采用 AI Agent 的团队,这正是“我们在使用 AI QA 工具”与“我们能准确告诉安全负责人它为何安全”之间的区别。
发送到外部接收端的发现结果——MCP 工具响应(会进入发起调用的 Agent 的上下文窗口,并传输到该 Agent 的模型提供商)、Slack 消息、GitHub PR 评论及其 ::error 注释、托管版/CI HTML 报告或 CI 日志——都会被精简为按需展示的内容:敏感发现结果只会以其 type + route + severity 和一个 🔒 标记的形式传出,绝不会包含原始载荷(message、evidence、请求/响应正文、标头、Cookie、堆栈)。URL 会去除查询字符串后再展示(令牌可能藏在其中)。良性发现结果会保留其消息,但仍会对消息进行清理,以去除其中意外嵌入的机密信息或个人身份信息(PII)。
| 原则 | 行为 |
|---|---|
| 保留本地完整性 | 磁盘上的 JSON 报告和本地打开的 HTML 会保留 100% 的详细信息——脱敏只会在数据传出时删除详细信息 |
| 故障时默认阻止 | 如果分类器出错或发现结果形态未知,Aegis 会增加脱敏,不会减少 |
| 默认拒绝 | 只有安全字段的显式允许列表中的字段才会传出;新字段在被主动加入允许列表前不会泄露任何信息 |
| 5 层检测 | 类别规则 ∪ 13 个机密信息正则表达式 ∪ 统计稀有度(熵 / 令牌效率)∪ 7 个通过 Luhn 校验的 PII 规则 ∪ 上下文增强 |
| 选择退出 | ARGUS_REDACT_SENSITIVE=0 → 输出与启用 Aegis 前逐字节一致 |
这会在 Argus 自身的边界处实施 OWASP LLM02:2025 — 敏感信息泄露缓解措施(数据最小化、脱敏、默认拒绝的出站过滤)。可选的仅限本地重新填充保险库(ARGUS_REDACT_VAULT=1)可生成可逆且不含信息的令牌,用于生成差异稳定的工件;使用 npm run report:rehydrate 可在本地还原。完整的行为变更说明请参阅 CHANGELOG.md。
MCP 工具
向 Claude(或任何 MCP 客户端)提问——无需终端:
| 工具 | 描述 |
|---|---|
argus_audit | 快速检查 — JS、网络、无障碍、SEO、安全、CSS、内容 |
argus_audit_full | 深度检查 — 增加 Lighthouse、响应式检查、内存泄漏检测、悬停状态错误 |
argus_compare | 比较开发环境与预发布环境 — 截图、发现结果差异、环境回归 |
argus_get_context | 捕获打开的标签页中所有异常 — 与上次快照进行 resolved / new / persisting 差异比较(修复循环) |
argus_watch_snapshot | 在不导航的情况下对打开的标签页拍摄快照(保留身份验证/表单状态) |
argus_last_report | 返回上次 JSON 报告,不重新运行 |
argus_design_audit | Figma URL → 13 种设计令牌发现结果类型(颜色、间距、排版、阴影等) |
argus_visual_diff | 截图基线比较。传入 updateBaseline: true 可重置。 |
argus_pr_validate | 获取 GitHub PR 差异 → 将变更文件映射到受影响的路由 → 定向审计 → 考虑基线的阻止决策(仅阻止 PR 引入的发现结果)+ 幂等 PR 评论 + Check Run → { blocked, findings, baseline, reporting } |
每个工具响应在到达 Agent 前,都会经过 Aegis 出站边界处理;如果有敏感详细信息被隐藏,还会附带可选的
redaction附加信息({ redacted, total })。
示例提示词:
Run argus_audit on http://localhost:3000/checkout
Run argus_audit_full on http://localhost:3000/dashboard
Run argus_compare
Run argus_get_context
经实战检验,而非凭感觉检验
Argus 自身的正确性也通过审计你时所用的方式来保障:
- 171 个区块的集成测试框架中,998/998 项硬性断言全部通过,使用真实 Chrome 测试 64 个固定页面——包括每个类别的负向对照(误报为零)、全部 9 个 MCP 工具的黄金响应架构,以及一个上游漂移哨兵,可在版本升级时捕获 chrome-devtools-mcp API 变更
- 562 个无需 Chrome 的单元测试(Vitest)+ 基于属性的解析器模糊测试
npm audit:0 个漏洞 · 每个 PR 均运行 CodeQL + Dependabot · Socket.dev:漏洞/质量/许可证评分均为 100/100/100- 会话文件和捕获的令牌均以
0600权限写入,仅所有者可访问
完整设置
前置条件
| 要求 | 版本 |
|---|---|
| Node.js | v20.19+ |
| Chrome | 稳定版(桌面或无头模式) |
| Claude Code | 最新版(npm install -g @anthropic-ai/claude-code)——或任何 MCP 客户端 |
| Slack 工作区 | 可选——不配置时使用本地 report.html 模式 |
选项 A — MCP 服务 (推荐 Claude Code 用户使用)
无需本地安装。使用上面的快速开始,然后添加目标 URL:
# .env in your project root
TARGET_DEV_URL=http://localhost:3000
TARGET_STAGING_URL=https://staging.example.com # optional — enables argus_compare
可选 — Slack 通知:
- 前往 api.slack.com/apps → 创建新应用 → 将其命名为 BugBot
- OAuth & Permissions → Bot Token Scopes:
chat:write、files:write、files:read - 安装到工作区 → 复制
xoxb-...令牌 - 创建频道
#bugs-critical、#bugs-warnings、#bugs-digest,并在每个频道中运行/invite @BugBot
SLACK_BOT_TOKEN=xoxb-...
SLACK_CHANNEL_CRITICAL=C0000000000
SLACK_CHANNEL_WARNINGS=C0000000001
SLACK_CHANNEL_DIGEST=C0000000002
不使用 Slack 时:Argus 会自动生成
reports/report.html并在浏览器中打开——无需额外配置。
选项 B — npm 包(CI / 开发依赖)
npm install --save-dev argusqa-os
npx argus init # interactive wizard — detects framework, discovers routes, writes .env
npm run crawl # run after Chrome is started
选项 C — 克隆仓库(贡献者 / 完整源代码)
git clone https://github.com/ironclawdevs27/Argus.git
cd Argus
npm install
npm run init # interactive setup wizard
手动设置(跳过向导):
cp .env.example .env
# Fill in TARGET_DEV_URL and optional Slack tokens
然后在 src/config/targets.js 中配置路由:
export const routes = [
{ path: '/', name: 'Home', critical: true, waitFor: 'main' },
{ path: '/login', name: 'Login', critical: true, waitFor: 'form' },
{ path: '/dashboard', name: 'Dashboard', critical: true, waitFor: '[data-testid="dashboard"]' },
{ path: '/settings', name: 'Settings', critical: false, waitFor: null },
];
critical: true— 此路由上的错误会发送到#bugs-criticalwaitFor— Argus 在捕获前等待的 CSS 选择器(表示页面已就绪)
CLI 命令
npm run chrome # Launch Chrome with --remote-debugging-port=9222 (auto-detects binary)
npm run doctor # Pre-flight check: Chrome reachable, .mcp.json valid, .env has TARGET_DEV_URL
npm run crawl # Batch audit of all configured routes
npm run compare # Dev vs staging diff (CSS-only if no staging URL)
npm run watch # Passive monitor — polls open Chrome tab every 1s
npm run report:html # Generate reports/report.html from last JSON audit
npm run report:pdf # Export HTML report to A4 PDF (requires: npm install puppeteer)
npm run server # Start Slack slash-command server (port 3001)
npm run init # Interactive setup wizard
npm run test:unit # 562 unit tests — no Chrome required
npm run test:harness # 171-block correctness harness — requires Chrome
npm run test:harness:log # same, but tees full output to harness-results.txt
npm run test:coverage # merged unit + harness coverage gate (requires Chrome)
监视模式 — 在你(或你的 Agent)开发时实时监控:
# Terminal 1: start your app
npm run dev
# Terminal 2: start Argus watcher
npm run watch
# Ctrl+C → stops monitor and writes reports/report.html
Slack 斜杠命令(可在任意频道中按需调用):
/argus-retest https://staging.example.com/checkout
要通过隧道公开服务:cloudflared tunnel --url http://localhost:3001(免费,无需账户)。将生成的 URL 设置为 Slack App → Slash Commands 中的 Request URL。
GitHub Actions CI — PR 门禁
Argus 以复合 GitHub Action 的形式提供:每次 PR 触发时,它都会将差异映射到受影响的路由并进行审计,仅当发现 PR 引入的问题时才阻止合并(考虑基线)——同时生成幂等的 PR 评论和 Check Run。
将以下内容添加到仓库的机密中(Settings → Secrets → Actions):
| 机密 | 必需 | 值 |
|---|---|---|
TARGET_STAGING_URL | 是 | 你的预发布环境基础 URL |
SLACK_BOT_TOKEN | 否 | xoxb-... 令牌(仅 HTML 模式时省略) |
SLACK_CHANNEL_CRITICAL | 否* | 频道 ID(配置 Slack 时需要) |
SLACK_CHANNEL_WARNINGS | 否* | 频道 ID |
SLACK_CHANNEL_DIGEST | 否* | 频道 ID |
GITHUB_TOKEN | 否 | Actions 自动注入,用于 PR 评论 + Check Run |
随附的 工作流 会在推送到 main、每天 UTC 时间上午 6 点以及手动触发时运行。如果发现严重问题,流水线将失败。
环境变量
完整参考(点击展开)
| 变量 | 默认值 | 描述 |
|---|---|---|
TARGET_DEV_URL | — | 必填。 开发环境的基础 URL |
TARGET_STAGING_URL | — | 预发布环境 URL——启用 argus_compare;省略则仅使用 CSS 模式 |
SLACK_BOT_TOKEN | — | xoxb-... 令牌。省略则使用本地 report.html 模式 |
SLACK_SIGNING_SECRET | — | 用于验证 /argus-retest 斜杠命令 |
SLACK_CHANNEL_CRITICAL | — | 严重错误的频道 ID |
SLACK_CHANNEL_WARNINGS | — | 警告的频道 ID |
SLACK_CHANNEL_DIGEST | — | 信息/每日摘要的频道 ID |
PORT | 3001 | Slack 斜杠命令服务端口 |
REPORT_OUTPUT_DIR | ./reports | JSON 报告的写入位置 |
ARGUS_CONCURRENCY | 1 | 用于路由爬取的并行 MCP 客户端数 |
ARGUS_LOG_LEVEL | info | trace / debug / info / warn / error |
ARGUS_LOG_PRETTY | — | 在开发环境中设为 1,以输出易读日志 |
ARGUS_RETRY_ATTEMPTS | 3 | navigate/fill MCP 调用的最大重试次数 |
ARGUS_WATCH_INTERVAL_MS | 1000 | 监视模式轮询间隔(ms) |
ARGUS_WATCH_UI_PORT | 3002 | 监视模式 Web 仪表板端口 |
ARGUS_SOURCE_DIR | — | 应用源代码路径——启用环境变量/功能标记/失效路由分析,并且启用框架感知的 PR 路由映射(导入图:更改的组件/样式表 → 仅呈现该组件的路由) |
ARGUS_ENV_FILE | — | 用于代码库交叉引用的应用 .env 路径 |
SCREENSHOT_DIFF_THRESHOLD | 0.5 | 环境对比的像素差异百分比阈值 |
GITHUB_TOKEN | — | 用于 PR 评论和检查运行 |
GITHUB_REPOSITORY | — | owner/repo 格式 |
GITHUB_PR_NUMBER | — | 由 Actions 根据 PR 上下文自动注入 |
ARGUS_CRITICAL_THRESHOLD | 1 | 阻止合并前允许新增的严重问题数(0 = 永不阻止) |
ARGUS_DIFF_IMAGE_URL | — | 要嵌入 PR 评论的视觉差异图片 URL |
OTEL_EXPORTER_OTLP_ENDPOINT | — | Jaeger / Grafana Tempo 的 OTLP 收集器 |
FIGMA_API_TOKEN | — | argus_design_audit 必填 |
FONT_SLOW_MS | 1000 | 慢速 Web 字体加载阈值(ms) |
A11Y_CONTRAST_AA | 4.5 | CVD 模拟的 WCAG AA 最低对比度 |
ARGUS_REDACT_SENSITIVE | ON | Aegis 出站数据脱敏。0 会禁用(输出与 Aegis 之前的版本逐字节一致) |
ARGUS_REDACT_MODE | mask | 匹配内容的样式:mask / label / hash / token / drop |
ARGUS_REDACT_HTML | 本地为 off / CI 中为 ON | 1 也会对托管的 HTML 报告进行脱敏 |
ARGUS_REDACT_VAULT | OFF | 1(配合 ARGUS_REDACT_MODE=token)会将可逆的 AEGIS_<hmac16> 令牌写入本地 0600 密钥库;使用 npm run report:rehydrate 还原 |
故障排除
遇到任何问题,首先运行:
npx -y -p argusqa-os argus-doctor——它会检查 Chrome 是否可访问、MCP 配置是否有效以及必需的环境变量键是否齐全,并为每项故障给出确切的修复方法。
Chrome DevTools MCP 无法连接
claude mcp add chrome-devtools -- npx chrome-devtools-mcp@latest
# Restart Claude Code after adding
Slack 消息未能发送
- 令牌必须以
xoxb-开头(不能是xoxp-、xoxe-或xapp-) - 在每个频道中运行
/invite @BugBot - 必需的权限范围:
chat:write、files:write、files:read
截图为空白
- 页面尚未加载完成——在
src/config/targets.js中增大pageSettleMs,或为该路由添加waitFor选择器
/argus-retest 返回 "dispatch_failed"
- 隧道 URL 已更改——在 Slack App → Slash Commands 中更新 Request URL,然后重新安装
CSS 分析结果为空
- 页面可能需要身份验证——确保你已在 Argus 控制的 Chrome 实例中登录
CI 流水线立即失败
- Chrome 可能无法及时启动——在 .github/workflows/argus.yml 中将
sleep 3增加到sleep 5
Argus 与 Playwright / Cypress 的区别
Argus 是一个互补层,并非单元测试或 E2E 测试的替代品:
| Playwright / Cypress | 原生浏览器 MCP(Playwright MCP、chrome-devtools-mcp) | Argus | |
|---|---|---|---|
| 用途 | 测试你的逻辑和 API 契约 | 为 Agent 提供浏览器的操作能力和观察能力 | 让 Agent(以及你)判断哪些地方出了问题 |
| 你能获得什么 | 你编写的脚本的通过 / 失败结果 | 原始 DOM / 控制台 / 网络访问能力 | 149 种编码后的问题类型、严重程度、基线、噪声过滤、根因提示 |
| 维护 | 测试文件,永无止境 | 每次会话都要重新提示执行检查 | 零维护——审计渲染后的应用 |
| 运行时机 | 在测试套件中 | Agent 想到要检查时 | 按需运行、在 CI 中作为 PR 门禁,或持续运行(监视模式) |
| 输出 | 通过 / 失败 | Agent 注意到的任何内容 | 包含屏幕截图的结构化报告——可发送到 Slack、HTML、PR 评论——并对机密信息进行脱敏 |
已知限制
全部 998 项测试框架断言均已通过(998/998)——目前没有已知的 MCP 或 Chrome 层限制。Lighthouse 以无头模式运行(修复 lighthouse_audit 参数后);其余软断言(性能跟踪、依赖 GC 的堆增长)仅在每周严格软断言流程(harness-strict.yml)中通过 ARGUS_HARNESS_STRICT_SOFT 提升为计入结果的硬断言。范围限制:仅支持 Chrome / Chromium,仅支持 Web 应用——请参阅适配你的技术栈。
托管版 Argus——创始会员
想要获得审计、历史记录、趋势、计划任务和团队仪表板,而无需运行 Chrome 或 npm?Argus Cloud 已开放创始会员早期体验:每月 $19,永久锁定此价格(常规价格为 $29)。
本页上的开源引擎始终采用 MIT 许可且功能完整——托管版提供的是便利和记忆能力,而非检测功能。
项目结构
src/
argus.js — single-page audit entry point
mcp-server.js — 9 MCP tools exposed to Claude / any MCP client
orchestration/ — crawl loop, Slack/GitHub dispatch, env comparison, watch mode
utils/ — 32 analysis engines (accessibility, security, performance, PDF, recording, etc.)
adapters/browser.js — CdpBrowserAdapter — wraps all chrome-devtools-mcp calls
config/targets.js — routes, thresholds, auth steps
cli/
init.js — argus init interactive setup wizard
chrome-launcher.js — npm run chrome / argus-chrome — launches Chrome with correct flags
doctor.js — npm run doctor / argus-doctor — pre-flight checks
pr-validate.js — headless CI entry point for GitHub Actions
test-harness/ — 171-block correctness harness, 998 hard assertions, 64 fixture pages
test/unit/ — 562 Vitest unit tests (no Chrome required)
landing/ — Product landing page (React 19 + Vite + Tailwind)
完整源代码索引 → CLAUDE.md · MCP / DSL 参考 → SKILL.md
贡献
欢迎贡献——测试页面、新的检测类别、框架路由发现功能、文档等。请从 CONTRIBUTING.md 开始。
- Fork 此仓库并创建一个分支
npm run test:unit— 无需 Chrome 即可验证(562 项测试)npm run test:harness— 完整集成测试覆盖(需要在 9222 端口运行 Chrome)- 提交 PR — Argus 会通过 CI 工作流审计自身
许可证
MIT © ironclawdevs27
Argus Panoptes——希腊神话中永不入睡、全知全视的巨人。
argus-qa.com · npm · MCP 注册表
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。