Scrawl 擷取
Scrawl 會錄製使用者的螢幕、語音、點擊與紅色墨水,然後將結果打包成 .scrawl 資料夾(即一個套件)。使用者會將此套件傳送給您,以展示問題而非加以描述,因此該擷取內容本身就是錯誤報告。在回答之前請仔細閱讀,不要要求他們再次說明擷取內容已顯示的資訊。如果某處不清楚,請先使用 scrawl zoom 進行更仔細的檢視。
貼上的內容範例
[scrawl 0:33 · OpenCode “Settings” · /Users/me/Library/Application Support/scrawl/captures/scrawl-1792432139176.scrawl]
Open contact-sheet.png and frames/ in that folder before changing anything: the marks and words only make sense on the images, which can show more than the text does.
Cropped to: the activity in OpenCode (full frames in frames-full/)
- #1 (0:04) [clicked “New tab”] “Command T makes a new session, but here it should make a tab.”
- #2 (0:07) “No, it doesn't.”
- #3 (0:10) ⚑ “It says command shift B makes a new tab.”
- #4 (0:18) clicked (x 0.51, y 0.93)
- 第一行包含時長、記錄的應用程式與視窗,以及套件路徑。
- 下一行要求您先開啟圖片。請務必這麼做:文字僅記錄了所說和所做的事,而問題可能出現在未標記或未提及的影格中。
- 每個
#N (M:SS)行都是一個關鍵影格:方括號內是他們在該時刻的操作,接著是螢幕顯示時他們所說的話。沒有引號的行只有操作。 ⚑表示他們特意標記了該時刻。⟨Name⟩表示應用程式回報了新的畫面。以·開頭的行是應用程式記錄的事件或數值。- 靠近頂部的可選行:
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 "the width changes" # 或他們說過的片語
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會顯示此指南(以已安裝版本所知的內容)。