跳至主要內容
Buzzdope Buzzdope
社群

Agent 修完程式碼,自己上雲端借了一臺 Samsung

Buzzdope 編輯室
Agent 修完程式碼,自己上雲端借了一臺 Samsung

用 AI Agent 寫過程式的人,對某一種收尾應該不陌生。你請它修一個「Pixel 上正常、某臺 Samsung 啟動後版面錯位」的問題,它改完程式碼,很有禮貌地補一句:建議你在 Samsung 真機上測試一下。然後對話就停在那裡。找機器、裝 APK、跑到位、截圖回傳,最後這段路,長期以來都得由人類自己走。

2026 年 10 月 5 日,開發者戀貓de小郭在掘金發文,談 Android CLI 的一次更新。在他筆下,這條斷了很久的路,出現了接法。(來源:掘金開發者文章)

那句「建議上真機測試」,有了下文

這次的主角是 Android CLI 正式支援 Android Device Streaming。用作者的原話說,等於遠端 Android 被暴露成一個標準的 ADB 端點,Agent 從申請設備到安裝、操作、截圖、抓日誌、抓 trace,全部可以留在終端機裡完成。

ADB 是開發者與 Android 設備之間的老牌通用管道,圍繞它長出來的工具族繁不及備載。這也是「標準 ADB 端點」幾個字的分量所在:雲端那臺手機一旦掛上這條管道,在工具眼裡,它和插在你電腦上的實體機沒有分別。

嚴格說來,這些能力原本就散落在各處,Android Studio 裡有,ADB 與模擬器有,Firebase Device Streaming 也有。這次更新做的事,是把它們收攏成一套適合 Agent 呼叫的 runtime 介面。差別聽起來細微,對 Agent 卻是能不能自己開工的分界:工具散落時,它只能建議你去組裝;工具成套後,它可以自己上工。

發文者也不是無名帳號。掘金頁面資料顯示,戀貓de小郭是 Flutter 與 Dart 的 GDE,也是平臺簽約作者,累積閱讀約六百萬次,追蹤者三萬七千人。他在文中舉的例子,正好是這次更新最好的註腳。

掘金開發者戀貓de小郭在文中寫道,過去 AI Agent 改完程式碼,多半只能建議使用者自行在 Samsung 真機上測試

一臺雲真機,被包裝成插在本機的手機

更新後的 Android CLI 多了一組 android device remote 指令,把雲端租借的整條流程搬進終端機。它可以查詢可用的 Google Cloud 專案,瀏覽機型,建立 reservation,也能延長、斷開、釋放。申請成功後,CLI 預設會自動接上 ADB。

這裡有個設計上的巧勁。Agent 建立 reservation 之後,CLI 會在背景啟動一個連線程序,把雲端設備接到本機的 ADB。連線指令返回之後,背景程序繼續撐著,於是下遊的工具全被瞞在鼓裡:android run 照跑,install 照裝,Logcat 照吐日誌,其他基於 ADB 的工具也照常上工。用作者的形容,後面的工具其實不知道「這是一臺雲真機」。

對 Agent 更關鍵的是讀畫面的方式。android layout 能把當前 App 的 UI 層級輸出成 JSON,加上 —diff 之後,只回傳上次檢查以來變動的節點。遇到 WebView 或動畫這種層級不好使的場景,還有另一手:android screen capture —annotate 會在截圖上偵測 UI 元素,標上 #1、#2 這樣的編號;再用 screen resolve 把編號換算成實際座標,交給 adb shell input tap 代為點擊。

一個完整流程因此長成這樣:

從雲端借用手機到代為點擊的五個步驟:登入授權、查詢專案與機型、建立預約自動連上 ADB、部署 APK 並輸出 UI 層級、截圖標註後換算座標執行點擊

流程走完,那個 Samsung 版面錯位的 bug,理論上可以由 Agent 自己查機型、借真機、裝 APK、跑到出錯頁面、讀版面或截圖,再依結果繼續修改。人類收到的,是一份附了截圖的結案報告。作者在文中點名了 Codex,說的正是這種用法。

「在我電腦上是好的」,這句免責聲明活了二十年

把鏡頭拉遠,這次更新處理的其實是個老問題。works on my machine,在我機器上是好的,這句開發者之間的免責聲明被印上馬克杯和貼紙,流傳了二十多年。它的難纏之處在於環境:同一份程式碼,換臺機器、換個系統版本、換一層廠商客製介面,結果就可能不同。

Android 一直是這句話的重災區。機海與版本碎片是老生常談,各家還要在系統層上疊自己的客製介面,模擬器跑得出解析度,卻跑不出 One UI 的脾氣。Pixel 正常而 Samsung 錯位,正是碎片化最典型的那種劇本。早年論壇時代,使用者回報問題常被要求附上 logcat,開發者隔著螢幕猜現場;這類回憶在開發者社羣裡,幾乎是共同語言。

雲真機本身也不是新發明。Firebase Test Lab 從約十年前就開放遠端借用真實設備跑測試,國內外的雲真機平臺也經營多年,流程大同小異:人打開網頁控制臺,點選機型,排隊等機器,手動操作,到期歸還。租賃櫃檯一直都在,只是開在瀏覽器裡,客人也一直是人。

這次更新的實質,是把櫃檯搬進終端機,而且允許上門的客人不是人。掘金社羣這兩年對這類話題並不陌生,先前才有一篇宣稱只會增刪改查的後端正在被快速替代的長文引發圍觀,後端飯碗被排成兩列的辯論言猶在耳。對照之下,這篇貼文的語氣輕鬆許多:工具成套了,Agent 能自己動手的範圍,又往前多了一段。

每月三十分鐘免費,夠 Agent 跑幾趟

免費的部分掛著計時器。依作者在文中的說法,Android Device Streaming 每個專案每月只有三十分鐘免費額度,而且照他的觀察,就連 Android Partner Device Labs 也要收費,費率是每小時 9 美元。他自己的做法更直接:讓喚作 Dot 的 Agent 把整套環境架起來,設好額度,用免費的部分跑幾次,還算夠用。連安裝與設定都交給 Agent,這件事本身,也像是這次更新想示範的用法。

三十分鐘是個耐人尋味的長度。它夠 Agent 完成幾輪部署、翻頁、截圖、修改的循環,卻遠遠不夠把一臺雲真機當成常駐設備。計費錶於是成了欄杆:Agent 可以自己動手,但花誰的錢、跑多久,開關仍握在人類手裡。開發者的省錢本能也跟著換了標的,以前精算的是測試人力,現在要盯的,變成 Agent 跑出來的雲端帳單。

Android Device Streaming 每個專案每月提供三十分鐘免費額度,超過免費額度後以每小時九美元計費

它說「我已經測過了」,你要全信嗎

沿著這條線再往後想一步。Agent 本來就會寫程式碼,現在它借得到機器,裝得上 APK,翻得動頁面,也讀得到版面的差異。從寫程式到驗證,這段路第一次有機會在極少人為介入的情況下走完一圈。同一個國慶假期,一款由吧友用半年下班時間搓出來的視覺小說才剛登上熱門話題,一個人做完一款遊戲的故事又添了新章節;如今連真機測試這段路也鋪平了,一個人開發能走到的終點,看起來又遠了一截。

不過,迴圈轉完之後,責任的位置也跟著移動。過去你至少親眼見過那臺 Samsung 上的錯位畫面;以後你收到的,可能只是 Agent 附上的截圖與標好編號的報告。當它的回覆從「建議你測試」變成「我已經在 Samsung 上測過了」,那份報告本身,會不會變成下一個需要人類親自驗收的東西?