1069 字
5 分鐘

Expo Exact 試用前先驗收什麼?Contract、agent 時鐘與平台邊界

本文目錄

Exact 想解決的問題,是讓 agent 用同一組操作觀察、操作和測試跨平台 app。它把 UI 寫在 Contract,資料邏輯放在 TypeScript 或 Rust,並讓測試端明確推進時鐘。評估時最有價值的起點,是檢查一個操作前後的狀態與畫面能否重複得到相同結果。

這篇以 expo/exact 的固定 commit為準,於 2026-11-11 檢閱 README、agent 腳本、package.json 與 Caltrain 測試。以下命令供讀者在獨立試用目錄執行;本文未安裝工具鏈、編譯或執行 Exact app,也不引用專案的速度宣稱作為實測。

官方 README 明列 pre-1.0、每日變動,沒有 API 穩定性、向後相容或 migration guide。因此這次評估以可丟棄原型為範圍;若要承接既有產品,先把升級與重做成本列入決策。

先確認自己能承擔工具鏈#

目前使用 source checkout,README 列 Bun 1.4.2 與 Rust;Apple host 另需 Xcode 27.1+。setup 會安裝工具鏈、target、Hermes bundle 與依賴,首次試用應預留下載與編譯時間。固定 commit 可讓測試紀錄與文件對得上:

Terminal window
git clone https://github.com/expo/exact.git
cd exact
git checkout --detach 1b13f53347c09e9dd4cb362f200724f98fd0fdf5
bun --version
bun scripts/exact.mjs setup --check

最後一個命令是 README 提供的離線環境檢查,可能因依賴尚未準備而失敗。記下缺什麼再決定是否執行 bun scripts/exact.mjs setup;在正式專案外試用,可避免把原專案的依賴與工具鏈混進結果。

UI 不是 JSX/React tier,現有元件需要重新評估。README 與程式碼的能力仍快速變動,「不能 import 任意 npm 套件」這類概括說法需要逐個套件確認 runtime、bundle 與平台依賴;本篇沒有驗證第三方套件相容性。

用 Caltrain 檢查 tree、state 與時鐘#

完成官方 setup 後,README 的 web 流程是:

Terminal window
bun host/web/build.mjs caltrain-web
bun scripts/agent.mjs web tree "tap change-station" "type station-search Palo" state "screenshot out.png"
bun scripts/agent.mjs web --test apps/caltrain/app.test.contract

每個操作是一個 shell argument,含空格的操作要保留引號。先讀 tree 找可操作目標,再 tap、type,接著讀 state 與截圖;文字輸入成功與畫面呈現正確要分別觀察。

官方 Caltrain 測試會從首頁進車站選擇頁,輸入 Palo 後確認列表含 Palo Alto、缺 Mountain View,再選取並核對首頁與站名。另一個案例用 clock +60000 推進時間,同時檢查仍停留在 home。這些案例能說明 Contract test 的斷言方式;單獨一個「推進後仍在首頁」還不足以驗證計時功能準確。

若要評估自己的倒數或動畫,另外設計一個最小測試 app:記下初始 state 與畫面,在期限前一毫秒推進一次、跨過期限再推進一次,檢查預期欄位與元件確實只在邊界後改變。這是新增的驗收設計,並非已存在或已執行的測試檔。外部網路回應、真實裝置權限與付款等副作用,也需要各自可控制的測試替身或隔離環境。

同一來源跑多平台,還要留各自證據#

README 列出的十種操作是 tree、screenshot、tap、type、state、layout、logs、clock、prefer、perf。相同操作入口能降低測試介面的差異,平台能力仍須逐項核對。

驗收層要保存什麼失敗時先看哪裡
Contract/狀態commit、案例、初始與結束 statehandler 與資料邏輯
UI/互動tree、layout、截圖、選取與焦點結果host 控制項與字型/版面
平台功能OS、裝置、權限與功能回傳平台實作與打包/交付能力

截至本文查核,README 已列早期 Android build、test 與 agent 路徑,但尚無 delivery/store packaging;Windows 仍有一般控制項一致性與交付缺口。因此只需要四個既有主要 host 的小型原型,與需要完整 Android/Windows 發布的產品,會得到不同採用判斷。請以固定版本實際跑過的案例決定範圍。

若需求只是讓 agent 操作既有網站,可先用 瀏覽器工具驗收方法檢查現有 web app。Exact 值得試的條件是願意用 Contract 建新 UI,並能把跨平台狀態與畫面驗收納入工作流程;已有大量 React 元件時,先算移植成本。

參考資料:

expo/exact:固定版本 README

Exact:agent.mjs

Exact:Caltrain tests

Exact:package.json

Expo Exact 試用前先驗收什麼?Contract、agent 時鐘與平台邊界
https://laplusda.com/posts/expo-exact-agent-clock-evaluation/
作者
Zero
發佈於
2026-11-11
許可協議
CC BY-NC-SA 4.0