用途:在 GitHub PR 描述中附加截图和屏幕录制,适合 diff 涉及界面变化的 PR,在 PR 即将打开或更新时自动调用。
主要能力:根据 diff 判断受影响的页面,为每个页面截取 PNG(有基线时做前后对比),仅在变化涉及动效时录制不超过 15 秒的视频;文件名会成为图注。截图任务交给 Haiku 子代理执行,要求使用 claude-haiku-5-5 或更新版本,否则省略 model 让子代理继承当前模型。浏览器操作可使用 t3 preview 工具(preview_navigate、preview_click、device_screenshot)或 chrome-devtools MCP(navigate_page、take_screenshot)。
使用方式:从 PR 仓库的检出目录运行 scripts/pr-media.sh <pr> <files...>,先打开 PR 再运行脚本,成功时输出 attached … to PR #<N>。脚本默认后端为 gh pr edit --attach(gh ≥ 2.99.0),文件上传到 GitHub 的 user-attachments CDN,私有仓库中保持私有,视频以内联播放器呈现,单文件不超过 10 MB(付费计划视频可达 100 MB,用 PR_MEDIA_ATTACH_MAX_MB=100)。旧版 gh 或超限时回退到孤儿分支 pr-assets/pr-<N>,通过 commit SHA 链接,视频转为链接 MP4 的 GIF,单文件不超过 25 MB,可用 PR_MEDIA_GIF_WIDTH=540 PR_MEDIA_GIF_FPS=8 缩小 GIF;可用 PR_MEDIA_BACKEND=attach|branch 强制后端。PR 正文中在 <!-- pr-media --> 标记之间生成一个块,重跑会替换同名文件并保留其他项;--no-edit 只打印块而不编辑 PR(分支后端)。
限制:上传视为永久;截图前需评估成本,慢速场景(认证、fixture、真实第三方 API、多步骤流程或多视口)应先询问用户;需裁剪主机名、令牌、API 密钥和用户邮箱;不要将截图像素读回上下文,应使用文本快照验证页面;需抽查一个文件确认显示的是变化而非登录墙、加载动画或空白页;失败时报告错误,不要把本地文件路径粘贴到 PR 中。