口袋模式
在手機或平板上標註。觸屏裝置會被自動路由到可滑動的卡片流,控制元件落在拇指夠得著的區域,支援帶同步的離線標註,還能作為 PWA 安裝到主螢幕。
v2.7.0 新增
Potato 支援在手機和平板上標註。啟用口袋模式(Pocket Mode)後,開啟任務的觸屏裝置會被自動路由到移動端介面:卡片流、位於拇指區的標籤按鈕、滑動切換、帶自動同步的離線標註,以及作為 PWA 安裝到主螢幕。桌面端使用者看到的仍是常規介面,對他們沒有任何變化。

並不是所有標註類型都適合放到手機上。片段高亮和邊界框是桌面端的活兒。Potato 對此毫不含糊:支援觸屏的任務會拿到移動端介面,不支援的任務會得到一條明確的警告而不是一個湊合的介面;無論哪種情況,管理儀表板都會顯示誰在用哪類裝置標註。
配置
pocket:
enabled: true # master switch for the mobile interface (default: false)
auto_redirect: true # send phones/tablets to /pocket automatically (default: true)
batch_size: 25 # items fetched per batch; also the offline queue depth (1-200)哪些標註類型適合移動端
| 支援觸屏(會在移動端提供) | 僅限桌面端 |
|---|---|
radio、multiselect、likert、slider、number、text/textbox、pure_display | span、影像與邊界框、影片、音訊、multirate,以及其餘全部 |
一個任務只有在所有方案都屬於左列時才算支援觸屏。只要混入一個僅限桌面端的方案,任務就不會被降級到觸屏上:手機不會被重定向,它們看到的是一條可關閉的提示,說明該任務未針對移動端最佳化。
如果你預期會有移動端標註者,就按移動端來設計。最理想的情況是隻有一個 radio 的任務,一次點選就等於一個標好的條目。
裝置路由如何工作
| 裝置 | 任務支援觸屏且已啟用 pocket | 任務不支援觸屏 |
|---|---|---|
| 桌面端 | 常規介面 | 常規介面 |
| 手機 / 平板 | 重定向到移動端介面 | 常規介面 + 一條可關閉的警告 |
檢測分兩層進行。
- 服務端(User-Agent)。 手機和大多數平板會表明自己的身份,在桌面頁面渲染之前就被重定向。API 客戶端和無法識別的 agent 算作桌面端,因此指令碼和各類整合永遠不會被重定向。
- 客戶端(指標檢測)。 有些平板會偽裝成桌面端。比如 iPadOS 上的 Safari 就把自己報告成 Mac。標註頁面上的一段指令碼會檢查裝置的主要指標是不是粗指標(手指),並把這類裝置也重定向過去。觸屏筆記本不受影響,因為它們的主要指標是觸控板。
路由只作用於處在標註階段的標註者。同意書頁、說明頁和問卷頁不受影響。
桌面端使用者可以主動切換:在支援 pocket 的任務上,導航欄會顯示一個指向 /pocket 的緊湊檢視連結,在那裡卡片流會變成每條一次點選的快速標註檢視。移動端使用者可以用桌面版網站連結切回去,這個選擇在本次會話內一直有效。
移動端介面
- 卡片流 —— 一條一張卡片。向左滑動到下一條,向右滑動回上一條,另有箭頭按鈕供非觸屏使用。在支援的裝置上,每次儲存都會有一下觸覺反饋作為確認。
- 拇指區控制元件 —— 標籤按鈕位於螢幕下方三分之一處,也就是拇指真正夠得著的地方。觸控目標不小於 48px,在劉海屏上會遵守安全區域內邊距,同時尊重
prefers-reduced-motion。 - 方案渲染 —— 只有一個 radio 或 likert 的任務點選後自動前進。多方案卡片會顯示全部控制元件,外加一個明確的儲存並下一條。
- 離線標註 —— 當前批次會預取並映像到 localStorage。連線中斷後標註仍可繼續,介面上的提示條會顯示“離線 —— 已排隊 N 條儲存”,重新聯網後佇列自動回傳。Service Worker 會在首次訪問後快取應用外殼,因此斷網也能開啟頁面。可以在 wifi 下預取一批,然後到任何地方標註,等裝置回到有訊號的地方再同步。
- 安裝為應用 —— 頁面附帶 Web 應用清單,因此“新增到主螢幕”會得到一個帶獨立圖示的獨立應用。
儲存走的是和桌面頁面完全相同的 /updateinstance 端點和載荷。口袋模式沒有新增寫入路徑,因此匯出、一致性統計、管理儀表板和品質控制看到的都是普通標註。
裝置標籤頁
管理儀表板新增了一個裝置標籤頁,按標註者顯示:最近一次見到的裝置、按裝置類別統計的訪問次數、使用移動端介面的次數,以及最後一次出現的時間。頂部有一行彙總(“12 位使用者中有 3 位從手機或平板訪問過”)。
這在兩個方向上都有用。如果你的任務不支援觸屏,而裝置標籤頁卻顯示仍有標註者在用手機,那說明這些人看到警告後照做不誤,他們的產出值得看一看。另外,由於無論是否啟用口袋模式都會記錄訪問,這個標籤頁能在你開啟開關之前就回答“啟用口袋模式會有幫助嗎”。
資料儲存在 <output_annotation_dir>/pocket/device_visits.json,只有按使用者的聚合值。沒有按條目的追蹤。
問題排查
- 手機沒有被重定向。 檢查
pocket.enabled和pocket.auto_redirect是否為 true、任務是否支援觸屏(GET /pocket/api/routing返回capable: true),以及該使用者本次會話是否選擇過“桌面版網站”。 - iPad 首次載入拿到的是桌面頁面。 iPadOS 上的 Safari 把自己報告成 Mac,服務端抓不到它。等頁面指令碼執行起來,客戶端的指標檢測會把它重定向過去。
- 某個使用者在移動端顯示“已完成”,但桌面頁面還顯示有剩餘條目。 他們可能有尚未同步的離線儲存。同步提示條會顯示這個佇列,裝置重新聯網後佇列會回傳。
延伸閱讀
- 任務分配 —— 移動端使用者和其他所有人從同一個佇列裡取條目
- 管理儀表板 —— 裝置標籤頁所在的地方
- 在 Prolific 和 MTurk 上開展研究
- 原始碼文件