mcpField
A
antithesis-agent-browser

antithesis-agent-browser

github.com/antithesishq测试与质量302328 次安装1 周前更新
代码仓库

关于 antithesis-agent-browser

为 Antithesis 页面提供已认证浏览器读取能力的技能,在 snouty API 无法提供所需数据时作为补充。它可从报告、日志、运行记录和因果关系页面提取信息,并由其他 Antithesis 技能调用。

主要功能

  1. 01复用 Antithesis 登录会话
  2. 02读取报告、日志和运行页面
  3. 03提取运行元数据与属性
  4. 04查看因果关系报告

适用场景

  1. 01从网页报告查找运行 ID
  2. 02下载失败运行的错误日志
  3. 03读取 API 未提供的页面信息

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/antithesishq/antithesis-skills --skill antithesis-agent-browser

安装后在 Claude Code 中输入/antithesis-agent-browser确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
antithesis-agent-browser.js
download-logs-from-url.sh
references/
error-reports.md
properties-from-ui.md
run-discovery-ui.md
setup-auth.md

详细介绍

Antithesis agent-browser

技能版本: 2026-09-23 a8fe900

一个辅助技能,用于在 snouty API 无法提供所需内容时,从经过身份验证的 Antithesis 网页读取数据。其他技能(antithesis-triage、antithesis-debug、antithesis-query-logs)在需要经过身份验证的浏览器会话时会委托给此技能。

用途

  • 以尽量少的干扰,处理与用户的 Antithesis 租户进行交互式身份验证。
  • 加载 Antithesis 网页(报告、日志、运行记录、因果关系),并通过注入的运行时从中提取数据。

何时使用

  • 其他技能需要 Antithesis 网页上的信息,而 snouty 无法可靠提供这些信息时。
  • 用户或其他技能需要直接与 Antithesis 网页交互时。

前提条件

  • 如果未安装 agent-browser,请勿继续。请参阅 https://raw.githubusercontent.com/vercel-labs/agent-browser/refs/heads/main/README.md 查看安装选项。
  • 如果 agent-browser 版本低于 v0.23.4,请勿继续。可使用 agent-browser upgrade 进行升级。
  • 如果未安装 jq,请勿继续。请参阅 https://jqlang.org/download/ 查看安装选项。

参考文件: 此技能的 references/ 目录包含针对特定任务的详细指南。请勿一开始就全部阅读——仅在收到指示时阅读相应的参考文件。需要使用参考文件时,会在对应位置注明其名称。

通用指南

  • 务必先确认已通过身份验证。
  • 使用一次性会话。 每次调用此技能时,都生成一个唯一的 SESSION。
  • 导航后注入运行时。 每次 open、可能导致页面变化的链接点击,以及从发现结果路由重新打开报告后,都要等待 networkidle,注入 assets/antithesis-agent-browser.js,然后使用对应的 *.waitForReady() 方法再继续。
  • 切勿并行运行 agent-browser 调用。 这些调用会改变状态并产生副作用。
  • 重新注入以重试运行时缺失错误。 如果命令因 window.__antithesisAgentBrowser 未定义或缺失而失败,请注入运行时,并重新运行同一方法。
  • 在主报告视图中执行报告查询。 如果误点进入其他页面,请重新打开原始报告 URL,然后再使用报告查询。

使用 agent-browser 管理会话

agent-browser 有两个会话变量:

  • --session:唯一、隔离的浏览器实例名称
  • --session-name:按名称自动保存/恢复 Cookie

每次调用都必须使用唯一的 --session 值。生成一次,并在此技能引用 $SESSION 时重复使用。

SESSION=antithesis-ab-$(date +%s)-$$

首次使用新 $SESSION 执行 agent-browser 命令时,使用 --session-name antithesis。这会创建会话并恢复已保存的 Cookie。此后针对同一 $SESSION 执行的命令无需再使用 --session-name——会话已存在。

完成后关闭当前会话。

agent-browser --session $SESSION close

身份验证

请勿仅为检查身份验证状态而导航至主页。请改用会话创建命令,直接导航到目标 URL(报告、运行页面等):

agent-browser --session "$SESSION" --session-name antithesis open "$TARGET_URL"
agent-browser --session "$SESSION" wait --load networkidle
agent-browser --session "$SESSION" get url

如果 URL 以 https://$TENANT.antithesis.com 开头,则表示已通过身份验证。如果重定向到了登录页面,则需要进行身份验证——请阅读 references/setup-auth.md,其中会要求用户确认后才启动交互式有头登录。

运行时注入

此技能附带一个运行时(assets/antithesis-agent-browser.js),可在 window.__antithesisAgentBrowser 上公开用于从 Antithesis 页面读取数据的辅助方法。导航完成后注入该运行时:

cat assets/antithesis-agent-browser.js \
  | agent-browser --session "$SESSION" eval --stdin

使用 agent-browser eval 调用其方法:

agent-browser --session "$SESSION" eval \
  "window.__antithesisAgentBrowser.report.getRunMetadata()"

agent-browser eval 会自动等待 Promise,因此异步和同步方法使用相同的调用方式。

错误处理: 运行时方法遇到错误时会抛出异常,导致 agent-browser eval 返回非零退出代码。检查退出代码即可检测失败,无需解析输出。错误消息会说明问题所在(例如,页面错误、找不到元素或超时)。

如果缺少 window.__antithesisAgentBrowser,请重新注入 assets/antithesis-agent-browser.js 并重试。

绝不要并行运行 agent-browser 调用。这些调用有状态且会产生副作用;并行调用可能导致错误或返回令人困惑的结果。

导航和加载

每个 Antithesis 页面都会异步加载内容。导航到任何 Antithesis 页面后,请按以下步骤操作:

首先,等待 networkidle:

agent-browser --session "$SESSION" wait --load networkidle

然后,检查 url,确认是否被重定向到了身份验证页面:

agent-browser --session "$SESSION" get url

如果进入了身份验证页面,请停止操作并重新进行身份验证,然后再继续。

接着,注入运行时:

cat assets/antithesis-agent-browser.js \
  | agent-browser --session "$SESSION" eval --stdin

最后,执行页面专用的等待函数,等待所有异步内容加载完成:

  • 报告页面:window.__antithesisAgentBrowser.report.waitForReady()
  • 日志页面:window.__antithesisAgentBrowser.logs.waitForReady()
  • 运行页面:window.__antithesisAgentBrowser.runs.waitForReady()

每个等待方法默认轮询最多 60 秒。成功时会返回 { attempts, waitedMs }。超时时,方法会抛出异常,导致 agent-browser eval 返回非零退出代码。

需要进行一次性探测时,请使用较低级别的布尔值检查:

  • 报告页面:window.__antithesisAgentBrowser.report.loadingFinished()
  • 日志页面:window.__antithesisAgentBrowser.logs.loadingFinished()
  • 运行页面:window.__antithesisAgentBrowser.runs.loadingFinished()

如果页面仍未就绪,请检查状态:

  • 报告页面:window.__antithesisAgentBrowser.report.loadingStatus()
  • 日志页面:window.__antithesisAgentBrowser.logs.loadingStatus()
  • 运行页面:window.__antithesisAgentBrowser.runs.loadingStatus()

处理错误报告

每次调用报告页面的 waitForReady() 后,都要检查 result.error。如果存在,请阅读 references/error-reports.md,了解错误报告工作流。

此技能的功能

  1. 对租户进行身份验证。 请阅读 references/setup-auth.md,了解交互式登录流程。
  2. 从运行页面发现运行。 请阅读 references/run-discovery-ui.md。尽可能优先使用 snouty runs list;仅当 API 不可用或未提供所需内容时,才使用 UI。
  3. 从分诊报告中读取属性。 请阅读 references/properties-from-ui.md。尽可能优先使用 snouty runs --json properties。
  4. 从无法与 snouty runs list 匹配的分诊报告 URL 中查找 run_id。 run_id 显示在主报告页面底部(API 目前未提供 report_id → run_id 的对应关系)。
  5. 从失败运行的报告页面下载错误日志。 请参阅 references/error-reports.md。
  6. 阅读因果关系报告。 请向用户索取因果关系报告 URL。主要信号是日志中 bug 发生前的 bug 概率变化轨迹。

评论

支持 Markdown