关于 antithesis-agent-browser
为 Antithesis 页面提供已认证浏览器读取能力的技能,在 snouty API 无法提供所需数据时作为补充。它可从报告、日志、运行记录和因果关系页面提取信息,并由其他 Antithesis 技能调用。
主要功能
- 01复用 Antithesis 登录会话
- 02读取报告、日志和运行页面
- 03提取运行元数据与属性
- 04查看因果关系报告
适用场景
- 01从网页报告查找运行 ID
- 02下载失败运行的错误日志
- 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.jsdownload-logs-from-url.shreferences/error-reports.mdproperties-from-ui.mdrun-discovery-ui.mdsetup-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,了解错误报告工作流。
此技能的功能
- 对租户进行身份验证。 请阅读
references/setup-auth.md,了解交互式登录流程。 - 从运行页面发现运行。 请阅读
references/run-discovery-ui.md。尽可能优先使用snouty runs list;仅当 API 不可用或未提供所需内容时,才使用 UI。 - 从分诊报告中读取属性。 请阅读
references/properties-from-ui.md。尽可能优先使用snouty runs --json properties。 - 从无法与
snouty runs list匹配的分诊报告 URL 中查找run_id。run_id显示在主报告页面底部(API 目前未提供report_id → run_id的对应关系)。 - 从失败运行的报告页面下载错误日志。 请参阅
references/error-reports.md。 - 阅读因果关系报告。 请向用户索取因果关系报告 URL。主要信号是日志中 bug 发生前的 bug 概率变化轨迹。