Dogfood 是一个用于系统化探索和测试 Web 应用的工具,目标是发现 bug、UX 问题及其他缺陷,并为每个发现生成带完整复现证据的报告。
用途
当被要求进行「dogfood」、「QA」、「探索性测试」、「查找问题」等任务时,可使用该工具。它会像真实用户一样操作浏览器,系统性地遍历应用的主要导航和核心功能,寻找异常。
主要能力
- 仅需提供目标 URL 即可开始,其余参数(会话名称、输出目录、范围、认证方式)均有默认值。
- 支持按需登录,包括邮箱/密码表单填写及 OTP/邮件验证码(需向用户询问)。
- 可保存登录状态以便复用。
- 自动生成带注释的截图、录制复现视频、捕获浏览器控制台错误。
- 为每个问题记录编号、严重程度、复现步骤及对应截图/视频证据。
- 探索过程中增量写入报告,避免会话中断导致发现丢失。
工作流程
- 初始化:创建输出目录(screenshots、videos),复制报告模板并填写头部字段,启动命名会话并等待网络空闲。
- 认证:若应用需要登录,通过快照识别表单引用,填写凭据并提交;成功后保存状态。
- 定位:截取初始带注释截图和快照,识别主导航并规划要访问的区块。
- 探索:从主导航开始逐层访问各区块,测试交互元素(点击按钮、填写表单、打开下拉/模态框),检查边界情况(空状态、错误处理、边界输入),尝试端到端工作流,并定期检查控制台错误。
- 记录问题(复现优先):发现问题后立即记录,不批量处理。交互/行为类问题需录制视频并按步截图;静态/可见类问题(错别字、占位文本、裁剪、错位、加载时控制台错误)仅需一张带注释截图。每个问题分配编号(ISSUE-001、ISSUE-002……)。
- 收尾:目标找到 5-10 个记录充分的问题,更新摘要严重性计数,关闭会话,并向用户汇报发现总数、严重性分布及最关键项。
使用方式与命令要点
- 始终直接使用
agent-browser,不要使用npx agent-browser,因为直接二进制使用快速的 Rust 客户端,而 npx 通过 Node.js 会明显更慢。 - 初始化命令示例:
mkdir -p {OUTPUT_DIR}/screenshots {OUTPUT_DIR}/videos、cp {SKILL_DIR}/templates/dogfood-report-template.md {OUTPUT_DIR}/report.md、agent-browser --session {SESSION} open {TARGET_URL}、agent-browser --session {SESSION} wait --load networkidle。 - 认证:
snapshot -i查找登录表单引用,使用fill和click,等待网络空闲,并用state save保存状态。 - 录屏:
record start开始,record stop结束。视频中填写表单建议使用type(逐字符输入)而非fill。 - 截图与快照:
screenshot --annotate生成带注释截图;snapshot -i用于查找可点击/可填写元素,不带标志的snapshot用于读取页面内容。 - 滚动使用
agent-browser --session {SESSION} scroll down 300,不要使用 key 或 evaluate。 - 检查控制台:
agent-browser --session {SESSION} errors和agent-browser --session {SESSION} console。 - 当命令互相独立时,可在单个 shell 调用中批量执行以提升效率。
适用场景
适用于对 Web 应用进行探索性测试、质量保证、用户视角的 bug 挖掘,尤其适合需要在报告中附上可复现证据(视频、分步截图)的团队。
限制与注意事项
- 不阅读目标应用的源代码(HTML、JS、配置文件),所有发现必须来自浏览器中观察到的现象,以用户身份测试而非代码审计。
- 收集证据前需先验证问题可复现(至少重试一次),无法稳定复现的不算有效问题。
- 静态问题不应录制视频。
- 复现视频需控制节奏:动作间加 sleep 1,最终结果截图前加 sleep 2,确保 1x 速度可观看。
- 禁止删除输出文件,不要中途关闭并重启会话,应向前推进。
- 找到 5-10 个记录充分的问题即可收尾,证据深度比数量更重要。
参考资料与模板
references/issue-taxonomy.md:会话开始时阅读,用于校准查找目标、严重性级别和探索清单。templates/dogfood-report-template.md:复制到输出目录作为报告文件。