# 為 Mole 實測幾百款 Mac 軟體

> 把 Mac 軟體一個個裝上，再移除，查殘留，也查哪些檔案不該動，記錄這段重複但有用的測試過程。

Published: 2026-09-22

這段時間我在做一件笨事情，或者也是 AI 時代工程師很不願意做的事情，非常重複的事。為了讓 Mole 移除軟體更徹底，清理殘留的能力更好，我整理了國內外 300 多款 Mac 軟體，下載下來差不多 100 多個 GB，分成 30 組，每次 10 個，讓 AI 藉助 computer use 的能力去官網下載，然後依次安裝到我的電腦，檢查目錄、軟體更新 bundle、自動啟動項目，再移除、查找殘留，補上缺少的規則。

## 從 100 個，到 300 個，再到 549 個

當時想著最多測 100 個主流軟體，結果想著不如再測 100 個，到 200 個的時候，又想再測 100 個，就到了 300 多個，後來又增加到 549 個，補充了 App Store 版本和擴充功能。平時強迫自己把 Mac 控制在 30 個軟體的我，一下子就有了下面這個非常凌亂的桌面，哈哈給大家看看。

<figure class="blog-diagram">
  <img src="https://mole.fit/img/blog/testing-mac-apps-desktop.webp" width="2400" height="1549" loading="lazy" alt="測試期間的真實桌面，開啟的軟體、權限提示和工作視窗擠在一起。">
  <figcaption>測試期間的真實桌面，開啟的軟體、權限提示和工作視窗擠在一起。</figcaption>
</figure>

這個過程看著很無聊，每次安裝也會遇到不少麻煩的軟體，不停跳出權限提示、購買畫面，有些還必須輸入管理員密碼。Agent 大部分能自己做，少部分我幫一手，讓我驚喜的是，AI 還寫了自動安裝、移除、檢查殘留的腳本，讓自己工作更輕鬆，哈哈我就只能給它打打下手。

<figure class="blog-diagram">
  <video src="https://mole.fit/img/blog/testing-mac-apps.mp4" poster="/img/blog/testing-mac-apps-poster.webp" width="1920" height="1080" controls muted playsinline preload="none" aria-label="安裝、移除、檢查殘留時的一段真實錄影，影片無聲，可手動播放。"></video>
  <figcaption>安裝、移除、檢查殘留時的一段真實錄影，影片無聲，可手動播放。</figcaption>
</figure>

## 安裝完，還只是剛開始

最花時間的是把一個軟體從頭到尾走一遍，下載和安裝只是開始，後面還有首次開啟、權限提示、軟體更新、自動啟動，以及移除以後留下的東西。只看安裝套件，容易漏掉執行以後才產生的資料夾；只刪掉 App，也看不出它之前放在其他位置的檔案有沒有跟著移除。

每組都得確認具體問題：資料夾是誰建立的，更新 helper 屬於誰，自動啟動項目是否還在，移除後留下哪些檔案。先確認路徑和歸屬，再補進規則，名字相似還不夠，App Store 版和官網版也要分開看，同一個產品名稱不代表相同的安裝方式和資料位置。

AI 能反覆檢查，還會把已經摸清的步驟寫成腳本，但權限、管理員密碼、歸屬不明的檔案仍然需要處理。還好有 AI，不然全靠手工，我估計要多花 10 倍的時間。

## 有些事情只能裝一個查一個

這也改變了我的一些想法，本來以為軟體工程應該是規範的、有秩序的，測了 100 個軟體後，後面應該沒有多少規則可以補了，結果越往後走，發現完全不是這樣。有些路徑怎麼寫通用規則都找不到，甚至有些 bundle id 不是反向網域名稱，看著規範的慣例，可能只是某個開發者當年隨手填的，只能裝一個查一個。

查殘留的過程中，也改掉了一些原本以為要清、其實不該動的地方。軟體的快取、使用者的檔案、幾個軟體共用的資料，不能因為都出現在同一個目錄，就一起當成垃圾，測得更多，也意味著找到更多需要保留的東西。

## 清得更乾淨，也要知道哪裡不該動

最初那輪 300 多款軟體的測試，補出了 13 類通用規則、90 多條精確清理路徑，也改掉了 30 多個原本以為要清、其實不該動的地方，更新和自動啟動檢查都有補充，還加了 100 多條單元測試。這些是當時那一輪的數字，後面的軟體名單還會繼續增加。

不該動的地方和新找到的殘留一樣有價值，快取可能可以重新產生，使用者寫的檔案卻不能，幾個軟體共用的資料也不能因為移除其中一個就一起刪掉。看起來像殘留的檔案，可能仍被其他軟體使用，歸屬不清楚時，留下來比猜著刪更合適。

只追求清理數字變大，容易做偏，真正要補的是判斷依據。通用規則處理可重複的部分，特殊路徑逐一確認，不該刪的情況用測試留下來，後面改規則時才不容易又犯同樣的錯。

## 無障礙帶來的意外幫助

Mole 早期版本就開始支援視障使用者，加入了很多無障礙屬性，沒想到這次也幫了大忙，AI 可以藉助這些屬性找到準確的元素和按鈕位置，測試順利了不少。之前做的事情，後來又反過來幫到自己，挺有意思的。

無障礙屬性不只提供位置，也能說明按鈕名稱、控制項類型和目前狀態，版面移動後，腳本還有機會找到同一個按鈕；只有截圖和固定座標時，視窗一挪、提示一變，就可能點錯地方。

不過它首先是給人用的，AI 能找到按鈕，不等於視障使用者能順利完成操作，標籤、焦點順序、VoiceOver 能否讀到結果，仍需要檢查。這次讓我更體會到，替不同使用方式留下支援是有價值的，考慮到每個人都可以使用，真好。

原本以為測到 100 個，後面就只是重複，做到 300 個、549 個卻還有新細節，以後還想把常用軟體一個個裝過、查過，把碰到的問題補回 Mole，讓使用者真正移除軟體時能更放心。

獨立開發者做 App、網頁時，也可以讓 AI Coding 幫忙補好無障礙屬性，一方面讓視障使用者更方便，另一方面，也可能讓自己的自動化測試更順利。這個測試我會繼續做下去，具體測過哪些軟體，放在[實測軟體名單](https://mole.fit/tw/tested-apps)裡；希望繼續補充的軟體，也歡迎到[討論串](https://github.com/tw93/Mole/discussions/1604)告訴我。

---

Canonical HTML page: https://mole.fit/tw/blog/testing-mac-apps-one-by-one
Blog index for agents: https://mole.fit/tw/blog/llms.txt
Site index for agents: https://mole.fit/llms.txt
