Scrawl 捕获 是做什么的?
Scrawl 录制用户的屏幕、语音、点击和红色墨水,然后将结果打包到一个 .scrawl 文件夹中(一个包)。用户发送它来向你展示问题,而不是描述问题,因此这个捕获就是错误报告。在回答之前请仔细阅读它,不要要求他们再次解释捕获中已经显示的内容。如果有什么不清楚,先用 scrawl zoom 仔细查看。
粘贴内容的格式
[scrawl 0:33 · OpenCode “设置” · /Users/me/Library/Application Support/scrawl/captures/scrawl-1792432139176.scrawl]
在进行任何更改前,先打开 contact-sheet.png 和 frames/ 文件夹:标记和文字只有放在图片上才有意义,因为图片能展示比文本更多的信息。
裁剪至:OpenCode 中的活动(完整帧在 frames-full/ 中)
- #1 (0:04) [点击了“新建标签”] “Command T 会新建一个 session,但这里应该新建一个标签。”
- #2 (0:07) “不,它不会。”
- #3 (0:10) ⚑ “它说 command shift B 会新建一个标签。”
- #4 (0:18) 点击 (x 0.51, y 0.93)
- 第一行包含录制时长、录制的应用和窗口,以及包路径。
- 下一行要求你先打开图片。请执行:文本只记录了说过的话和做过的操作,问题可能出现在画面中而未被打标记或提及。
- 每个
#N (M:SS)行是一个关键帧:括号内是该时刻进行的操作,然后是在画面显示时说的话。没有引号的行只有操作。 ⚑表示用户特意标记了该时刻。⟨名称⟩表示应用报告了新的屏幕。以·开头的行是应用记录的事件或值。- 靠近顶部的可选行:
For session:(Scrawl 发送到的会话)、Screen:(带有应用上下文)、Note:和Cropped to:。 - 坐标是捕获区域的分数,从左上角开始(x 0.51 略过中心偏右)。
回答时,请使用相同的方式引用时刻,如“#3 (0:10)”,这样对方可以在联系图上找到它们。
读取包
- 首先查看包中的
contact-sheet.png(通常已经附加)。它以时间顺序从左到右、从上到下显示每个关键帧,每个帧的右上角有一个带有编号N的小白片(对应summary.md中的#N)。 - 紧接着阅读旁边的转录行。语音识别可能会误听名称和代码术语,因此当两者不一致时,请相信屏幕内容。
- 对于任何需要全尺寸查看的关键帧,打开
frames/frame-NN.png(frame-03.png对应 #3)。当摘要显示Cropped to:时,未裁剪的屏幕位于frames-full/中。
绘图的含义:
- 红色的描边、圆圈、下划线和箭头是用户的标记,它们指向问题所在。绘制在同一个屏幕上的所有标记都会显示在一个关键帧上。当有多个标记时,文本会按绘制顺序编号(
✎① 0:06 …、✎② 0:09 …);图片上只显示墨水,因此请使用scrawl zoom --mark来查看哪个墨水是哪个。 - 光标周围的涟漪表示点击或轻触,手指拖痕表示滑动。
- 一条逐渐变细的发光红色轨迹是激光笔,用于指向而不留下标记。
其他文件:scrawl.json 是完整清单(关键帧、带形状和边框的 marks、events、带时间的 transcript.words、应用 context 和 autocrop)。recording.mp4 或 recording.mov 和 audio.wav 是源媒体。.media-pending 文件表示视频仍在从另一台 Mac 复制。
Scrawl CLI
scrawl 是 Scrawl 应用自带的二进制文件。如果 command -v scrawl 找不到任何内容,请使用 /Applications/Scrawl.app/Contents/MacOS/scrawl(或在 ~/Applications 下的相同路径),并告诉用户可以在 Scrawl 的“设置”›“代理”中将其添加到 PATH。它只能在安装了 Scrawl 的 Mac 上运行。在其他任何地方,请直接读取 contact-sheet.png、frames/ 和 scrawl.json。每个命令都接受一个包路径,大多数命令默认使用 latest(最新的捕获)。请对路径使用引号,因为它通常包含“Application Support”。
仔细查看某个时刻
当问题是动态的(动画、跳跃、闪烁)或发生在关键帧之间,或者无法判断标记指向什么时,使用 zoom:
scrawl zoom <bundle> --at 0:21 # 一个时间点,M:SS 或秒
scrawl zoom <bundle> --at "宽度变化" # 或者他们说过的一句话
scrawl zoom <bundle> --at 0:21 --span 1 --frames 16 --full
scrawl zoom <bundle> --mark 2 # 文本中标记为 ✎② 的标记
scrawl zoom <bundle> --mark 1 --frame 4 # 关键帧 #4 的 ✎①,当多个关键帧都有 ✎① 时
它会输出围绕该时刻的一组帧的 PNG 图片路径、每单元格的时间以及说过的话。打开 PNG 并在根据反馈采取行动之前查看它。--span 是覆盖的秒数(默认为 2,该时刻之前的四分之一),--frames 是单元格数量(默认为 12),--full 显示整个屏幕而非裁剪区域。单元格在表中从 #1 开始编号,因此这些数字不是关键帧编号。
--mark 接受文本中标记的编号或其 ID(m2),并将表格中心对准标记绘制的时间,仅显示该标记的墨水,从绘制开始到完整结束。scrawl inspect <bundle> --marks 列出每个标记(#2 ✎② 0:09 marked (2 strokes) · m2:关键帧、编号、时间、形状、绘制内容、ID),--marks --json 以 JSON 格式输出相同内容。
其他命令
scrawl inspect <bundle> # summary.md,上述文本
scrawl inspect <bundle> --json # scrawl.json
scrawl inspect <bundle> --marks # 标记,按文本中的编号列出 [--json]
scrawl frames <bundle> --from 0:04 --to 0:06 [--fps 4] # 输出范围内的普通 PNG;打印它们的路径
scrawl send <bundle> --session ses_… # 将捕获排队到 OpenCode 会话
scrawl send <bundle> --clipboard # 将摘要文本复制到剪贴板
scrawl export <bundle> [--out demo.mp4] [--zoom] [--crop auto|full|x,y,w,h] [--size 1920]
zoom和frames会写入<bundle>/zoom/。请保持包的其余部分不变,因为 Scrawl 管理这些文件并会清理它们。- 不带
--session的send会发送到捕获指定的会话(For session:行),否则发送到最近活动的会话。如果录制时指定了目标,它会拒绝不同的--session,除非你传递--reroute,因此在重新路由前请与用户确认。 export会写入一个.mp4文件,其中包含叠加的墨水和点击以及同步的音频(默认路径~/Movies/Scrawl/<bundle>.mp4)。--zoom会平滑缩放到活动区域。--no-ink、--no-clicks、--hevc和--fps也可用。- 除非用户在设置中更改,否则视频和音频会在捕获后 7 天移至废纸篓。之后,
zoom、frames和export无法读取视频,但frames/、联系图和scrawl.json会保留。 scrawl <command> --help列出所有标志,scrawl skill会按安装版本输出本指南。