9月23日
所有工具終於收進同一張檯面,而你的廚房早就懂這種痛快
貨拉拉開源安卓與鴻蒙桌面調試工具 Hadice,我們把「把所有工具收進一張工作檯」這件事,翻譯成廚房裡關於備料檯、一爐多鍋與順手滋味的餐桌故事。
先說清楚時間:這件事發生在 2026 年 9 月 20 日,貨拉拉的技術團隊把一款叫 Hadice 的桌面調試工具開源了,支援 Android 與鴻蒙兩種系統。工程圈討論了一陣,我們美食編輯部看著看著,忽然想起自家廚房那張永遠不夠用的備料檯。
一個下午,五個視窗,和你家流理臺上的五樣東西
原文的開頭寫得很有共鳴:做一次排查,終端機查程序和日誌,另一個視窗投屏,再設代理和憑證抓封包,檔案還得靠指令來回傳。每一個動作都不難,難的是每天重複。
這段話換到廚房裡,你一定秒懂。週末想好好煎一梚魚,砧板在陽臺晾著,刨刀塞在抽屜最底層,廚房紙巾放在冰箱上頭,鹽罐在爐子左邊,胡椒罐不知道誰收到碗櫃第二層。煎魚本身十分鐘,找東西找了十分鐘,手忙腳亂又十分鐘,魚皮下那層該有的酥脆就在折騰裡軟掉了。
Hadice 做的事,說穿了就是把設備資訊、效能監控、應用安裝、檔案互傳、投屏錄屏、系統日誌和網路抓包,全部放進同一個桌面工作檯。這就像把砧板、刀具、紙巾、鹽罐、胡椒,一次擺回你伸手可及的一公尺之內。備料檯順了,火候才有餘裕。
貨拉拉談組織效率時有個說法,個人再快也攢不成團隊的快,我們在一千個人都學會炒菜了,為什麼餐廳出菜還是那麼慢那篇聊過同一家公司的廚房哲學。這次的 Hadice 是同一個思路的延伸:與其讓每個人自己開五個視窗,不如把工作檯本身做好。
名字從連線工具來的,就像菜從鍋具來的
有個小細節值得記。Hadice 這個名字,源自鴻蒙的連線工具 HDC(Harmony Device Connector)。工具長出名字,名字裡藏著它的血緣。
廚房裡這種事也天天發生。我阿嬤叫那把切了三十年的中式菜刀「厚刀」,叫那支撈麵的長竹筷「麵箸」。名字不是取的,是用出來的。一支鍋鏟煎過幾百條魚之後,它在你家的位置、掛鉤上的那個角度,都是記憶的一部分。Hadice 從鴻蒙調試工具一路長成安卓也共用的桌面工作臺,過程不是推倒重做,而是在原來那張檯子上,多放了 ADB、scrcpy 這幾樣新鍋具。
這一點我特別想幫它說話。很多軟體遇上第二種平臺就急著重寫一套,結果兩套各有各的bug,像家裡同時買了兩個牌子的電鍋,煮出來的飯口感都不一樣。Hadice 的做法是界面歸界面,實作歸實作:同一個截圖按鈕,鴻蒙走 hdc shell snapshot_display,安卓走 adb shell screencap,使用者看到的卻是同一個動作、同一份結果。這就像同一道炒青菜,瓦斯爐用大火快炒,炭爐靠掌控火候,端上桌的標準卻是一致的:鍋氣要足,葉子要綠,蒜要香而不焦。
免改代理的抓包,像免退冰的煎魚
Hadice 最被工程師稱道的功能之一,是「無感抓包」:不必修改手機的系統代理,也不必安裝抓包用的 CA 憑證,就能看 HTTPS 的明文請求與回應。
外行看不懂這串術語沒關係,換個比喻你就懂了。傳統抓包像傳統煎魚儀式:魚要先退冰、擦乾、劃刀、抹鹽、等十分鐘,還沒下鍋已經半小時。無感抓包像你練到某個程度之後,魚從冰箱拿出來,廚房紙一按,直接下鍋,皮照樣酥、肉照樣嫩。省略的是儀式,留下的是結果。
技術上它靠兩條路:原生網路請求由一支 C++ 的 JVMTI Agent 附著到目標程序,採集 OkHttp 和 Cronet 的請求;WebView 則透過 Chromium 的開發者協定走 Network 域,還能用 Fetch 域做 Replace Mock。Mock 這個詞在廚房裡也有對應:食譜上的奶油用不起,用椰子油替代,烤出來的磅蛋糕照樣蓬鬆。替代是開發者的日常,也是每個家用廚房的家常便飯。
抽屜裡的順手小物,與工作檯上的獨立視窗
還有一個設計我很喜歡:每個功能頁都能拆成獨立視窗。排查一個複雜問題時,投屏、抓包、日誌、效能監控可以同時攤在桌面上,不用在側邊欄來回切換。
這跟 廚房抽屜裡那些不起眼卻順手的小工具是同一門學問。好的廚房不追求每樣東西都高級,追求的是「攤開來都看得見」。老一輩的廚房喜歡把長杓、鍋鏟、漏勺掛在牆上一排,炒菜時眼睛一掃就到手。開放式的收納勝過五個藏起來的抽屜,因為做菜的人最需要的資訊是「現在誰在手邊」。Hadice 讓四個視窗同時開著,本質上就是把工具掛上牆。
收在一句日常
如果你家廚房也曾因為備料檯太亂而煮出一鍋火候不對的湯,你會明白為什麼一羣工程師願意花力氣把七種工具收進一張工作檯。滋味這件事,從來有一大半取決於動線。
下次進廚房前,先花五分鐘把檯面清空、把鹽罐歸位,再開火。那一晚炒出來的菜,多半會比平常香一點。貨拉拉把這個道理寫成了開源程式碼,而你早就會了,只是偶爾忘記。