用量與節省流量

各 App 的頻寬、與電信業者數據的比較、流量預算、熱點、更新程式和大型上傳。

各 App 的頻寬

每個 App 的列都會顯示最近一分鐘的流量,上傳在線上方,下載在線下方。按一下就能看到這個 App 的回聲:一句話說明它傳輸了什麼,接著是最近五分鐘的即時波形;有 Pro 的話,還能按小時、日、週或月查看歷史。標記會顯示 Mac 加入其他網路或代理程式執行用到這個 App 的時間點,圖塊則顯示承載流量的網路、與這個 App 前四個期間相比如何,以及它佔全部流量的比例。圖表下方是 App 開啟中的連線,附每條連線的傳輸量和國家;如果 App 附有 Internet Access Policy,也會列出開發者宣告的連線。

和路由器或電信業者對帳

當路由器、ISP 或電信業者顯示的總量和 Kilobat 不同時,打開「歷史記錄」›「與路由器或電信業者比較」,或執行 kilobat report compare。依對方顯示的方式輸入數字、單位,以及它計算的是下載、上傳還是兩者,再輸入相同的期間和涵蓋的網路。Kilobat 會以相同單位顯示自己的總量和差異,也會用另一種單位制解讀那個數字,因為很多業者寫的 GB 其實是 1,073,741,824 位元組(GiB),而不是 1,000,000,000。

一條時間軸會顯示 Kilobat 實際記錄到的時數和空缺:Mac 睡眠的時間(自 Kilobat 1.3 起記錄)、關機、離線或 Kilobat 沒在執行的時間、連在其他網路的時間,以及歷史記錄開始之前的時間。下方列出造成差異的可能原因,最可能的排在最前面。Kilobat 只看得到這台 Mac,看不到路由器或業者算進去的手機、電視和其他電腦。它不計入本機網路和 AirDrop 流量,因為這些流量從不經過網際網路;沒有任何 App 認領的封包標頭則計為未歸屬。業者可能用另一個時區計算日期,或延遲入帳用量。Kilobat 不會判定哪個數字才對。可以把比較結果匯出為 CSV 或 JSON,包含期間、網路、記錄時數和每段空缺,提供給你的業者。

熱點限速

許多電信業者為熱點提供獨立流量額度,用完後將速度降至固定值,例如 600 kbps;某些方案則始終限制熱點速度。在手機熱點上(iPhone 的 172.20.10.1、較舊 Android 的 192.168.43.1,或 macOS 或你標記為計量的任何網路),Kilobat 會查看已測量的資料:速度測試、你自行下載的 5 MB 以上檔案及同時進行的其他下載,以及「健康狀態」的背景 ping。當這些測量全部在接近同一速度時停止,且該速度符合業者公布的限制之一(128、512 或 600 kbps,或 1、1.5、3、4、5、6、10 或 15 Mbps),「健康狀態」會顯示「看起來是電信業者的熱點速度上限:這個熱點的所有下載速度都最高約為 3 Mbps。」

Kilobat 會等到模式明確才提示:至少兩個來源的四次測量,例如速度測試和兩個服務的下載,分別在至少相隔兩小時的兩個時段進行;所有結果彼此相差約 8% 以內,沒有更快的結果,閒置 ping 維持正常(150 ms 或以下、抖動小且沒有封包遺失)。訊號弱或基地台繁忙會使速度波動並提高 ping,因此不列入;藍牙網路共享本身速度較慢,也不列入。影片有獨立檢查,只在熱點上被動計時:若 YouTube、Netflix、Twitch、Disney+ 或 Prime Video 在三次工作階段中的擷取速度都未超過約 1.5 Mbps,而其他下載至少快 2.5 倍,「健康狀態」會提示看起來像電信業者的影片速度限制。Kilobat 不會宣稱確定:限制所有數據的方案在 Mac 上看起來也一樣。

結果會說明可檢查的項目:電信業者 App 中剩餘的熱點流量、始終限制熱點速度的方案、斷開 Mac 後在手機瀏覽器中執行速度測試,以及依賴熱點時可考慮的其他方案或旅行路由器。結果會連結至各電信業者的熱點限制中的業者頁面。選擇業者,或按偵測,由 Cloudflare 查詢你的公用位址,再向 RIPE NCC 查詢該位址所屬網路。結果免費;其背後的測量屬於 Kilobat Pro。在終端機中,kilobat hotspot 顯示判斷與證據(--carrier <id>、--detect、hotspot carriers、--json);AI 代理程式讀取 get_hotspot_throttling。

每週摘要

每週一 9:00,Kilobat 會傳送一則安靜的通知,說明前一週的情況:「2 次斷線出在業者那一端(41 分鐘)、12 次通話中有 3 次卡頓,2 次因為 Dropbox,以及在計量網路 Rita’s iPhone 上使用 4.2 GB。」它會從七天中挑出最值得注意的三四件事,依重要程度排列:路由器之外的斷線、卡頓的通話和遠端工作階段、路由器變慢、Starlink 天線被遮擋、惡意軟體、網路釣魚和代理程式守衛的阻擋(AI 代理程式的優先)、代理程式傳到值得一看之處的任何資料、計量網路上的流量、可能符合補償條件的斷線,以及遠低於方案速度的速度測試。沒有發生的事不會列出。一切正常的一週只有一句話:「平穩的一週:沒有斷線、通話全部順暢和在家使用 38 GB。」如果前一週也有記錄,且變化有意義,項目會說明比較情況:「是上週的一半」「多於上週的 2」。

按一下通知,或在指令面板(⌘K)中選擇「上週」,即可在工作區查看這一週:每則資訊都附有一條按天的折線(如果 Kilobat 有儲存每天的資料),以及一個前往詳細資訊所在分頁的按鈕。用箭頭最多可回看十二週。沒有 Pro 時,摘要會顯示次數,例如「2 次斷線」或「12 次通話中有 3 次卡頓」;如果那一週某項本來可以由 Pro 功能解釋,會有一行說明 Pro 能多告訴你什麼。Pro 會顯示每次斷線出在哪一端、每次通話因何卡頓,以及變慢的正是路由器。可在「設定」›「監控」›「每週摘要」中更改星期和時間,或將其關閉。如果那時 Mac 正在睡眠,摘要會在之後第一次喚醒時送達,且在白天、三天之內;Mac 整週都在睡眠的那一週會被略過,而不是延遲傳送,兩份摘要之間也絕不會少於四天。安裝後的第一週會被略過,因為還沒有完整的一週可說。只有在你已允許 Kilobat 傳送通知時才會傳送摘要,通話期間絕不傳送,而且摘要是在你的 Mac 上根據 Kilobat 儲存在那裡的資料產生的。在終端機中,kilobat week 會顯示同樣的內容(--weeks-ago 1 查看前一週,--json 供指令碼使用),代理程式則透過 get_weekly_digest 取得。

分享卡片

在選單列圖像上按右鍵,選擇「分享與輸出」,就能產生一張可以發布的方形圖片:每週回聲(你傳輸的資料量、最忙的一天和最耗流量的 App)、最近一次的速度測試,或「這個地點」(為你正在工作的咖啡廳、共同工作空間、飯店或圖書館產生的 Wi-Fi 報告)。「這個地點」會顯示地點名稱(可以輸入,或從 Apple 地圖搜尋中選取),以及這個網路上最近一次速度測試的下載、上傳和 ping、是否足以進行視訊通話、在負載下的表現,以及 Wi-Fi 頻段。從搜尋中選取地點後,卡片會附上一張附近街區的小地圖,並用圓點標出位置;關閉「顯示地圖」即可拿掉。可以加入「有插座」、「安靜」或「營業到很晚」等標籤,以及一行備註。Kilobat 會在這台 Mac 上為該網路記住它們。可以拷貝卡片、儲存,或分享到 Nomad List、Google 地圖評論或共同工作空間的聊天群組。任何卡片都不會顯示網路名稱或地址。地圖顯示的是你選取的地點,而不是你所在的位置,除非你選擇「使用我的位置」,這也是「這個地點」唯一會要求定位權限的時候。

你的 Kilobat 年度回顧用一張卡片總結這一年:你傳輸的資料量(每個月一根長條)、最貪吃的 App、你用過多少個網路、最忙的一個月、最棒的咖啡廳 Wi-Fi,以及最長的連續無卡頓視訊通話記錄。最棒的咖啡廳是你在「這個地點」卡片上命名過的地點中速度測試最快的那個,並顯示你輸入的名稱;如果你從未命名過地點,卡片會顯示你的最高速度,並只寫「在我最快的網路上」。沒有資料可顯示的項目會被省略。如果 Kilobat 的歷史記錄是從 1 月第一週之後開始,卡片會寫「自8月以來」,而不會宣稱涵蓋整年;在 1 月,它仍會顯示剛結束的那一年。它一直都在「分享與輸出」中。12 月時,它會移到該選單和分享視窗的最上方,而且在月初,Kilobat 會傳送一次通知告訴你它已準備好,前提是你已經允許 Kilobat 傳送通知。

其他 App 可以用 kilobat:// 連結(1.3.4 起)在正確的位置打開 Kilobat:kilobat://open/speed 會打開一個標籤頁(overview、connections、health、radar、speed、history、tools 或 settings),kilobat://share/speed、kilobat://share/week、kilobat://share/place 或 kilobat://share/wrapped(你的 Kilobat 年度回顧)會打開分享卡片,kilobat://speedtest 會執行速度測試。可以在「終端機」中用 open kilobat://open/history 執行,或在啟動器中綁定到某個按鍵。Raycast 延伸功能的 Open in Kilobat 動作就是使用這些連結,Kilobat 的捷徑動作則可以在「捷徑」App 中執行檢查、速度測試、保持喚醒和報告。

熱點與流量費用

macOS 會把某些連線標為計量,例如 iPhone 熱點,但不是每個 Android 熱點都會,透過 USB 或乙太網路連接的手機網路也不會。每個網路都有流量費用設定:自動依照 macOS,計量或不計量則由你決定。可以在 Wi-Fi 選單、預算選單、「健康狀態」分頁或「設定」中設定,或用 kilobat networks cost metered。在計量網路上,Kilobat 會切換到「旅行」(除非你為該網路選了其他設定檔),離開時換回原本的設定檔,並略過排程的速度測試。kilobat conditions --json 和 MCP 伺服器會同時回報 metered 和 macOS 的判斷(osMetered)。Kilobat 必須能分辨網路,你才能設定它的費用,所以 Wi-Fi 需要定位權限才能看到網路名稱。

在計量網路上暫停更新程式

在計量網路上,網路過濾器也會暫停那些自行下載更新的輔助程式:Google Updater(以及較舊的 Keystone 代理程式)、Microsoft AutoUpdate、macOS 軟體更新(softwareupdated)、App Store 下載(appstored、appstoreagent、storedownloadd)、Sparkle 的下載服務,以及 Sparkle 和 Squirrel 的安裝程式(Autoupdate、Updater.app、ShipIt)。它們是被一般的過濾規則阻擋的,被阻擋連線的記錄會寫「已在計量網路上暫停更新程式」,App 本身照常運作。網路不再計量後,更新就會繼續。其他 App、它們的暫存資料夾或系統設定都不會被更改,所以沒有東西需要還原。這個功能預設開啟;可以在「設定」中或用 kilobat updaters off 關閉。已經適用於某條連線的規則(例如目的地規則或暫時允許)會優先,所以「允許 30 分鐘」可以讓一次更新通過。「不受限」不會暫停任何東西。

「健康狀態」分頁、kilobat updaters 和 MCP 工具 get_updaters 會顯示涵蓋了哪些更新程式、在這個網路上仍溜過去的更新位元組數(更新程式自己的位元組,以及替它連線的 nsurlsessiond 等系統下載,其位元組也包含其他下載),以及哪些已安裝的 App 是從自己的程序內更新。大多數以 Sparkle 或 Electron 打造的 App 會在 App 內下載更新,只把安裝交給輔助程式,所以不阻擋 App 本身就無法暫停。過濾器擋的是新連線,所以網路變成計量時已在進行的下載仍可完成。Kilobat 自己的排程更新檢查也會等到不計量的網路;手動「檢查更新項目」仍然可用。

大檔案上傳:稍後傳送

當某個 App 持續大量上傳時,例如 Dropbox 正在同步資料夾、影片正在上傳,或一次包含大檔案的 git push,選單會為它顯示一列:「Dropbox 正在上傳 · 4.2 MB/s · 已上傳 1.3 GB」。持續 20 秒達到 1 MB/s 以上,或在慢速線路上達到你上次在該網路速度測試所測上傳速度的一半,就算是大檔案上傳。連到你自己網路的流量(例如 NAS 或 AirDrop)不計入。只有在已知總量時,這一列才會顯示剩餘時間:例如 curl -T 傳送單一檔案時,依檔案大小和 curl 已傳送的量來計算。Dropbox、Google Drive、OneDrive、iCloud、git push 和瀏覽器不會告訴你還剩多少,所以 Kilobat 只顯示速率和目前已傳送的量,而不去猜測。

按一下稍後傳送即可暫緩上傳。在計量網路上,它會等待不計量網路;否則會等待更快的網路,也就是速度測試測得上傳速度達 20 Mbps 以上的網路。旁邊的箭頭可以暫緩一小時、三小時,或直到你傳送。網路合適時,上傳會繼續,Kilobat 也會通知你,例如「Dropbox 的上傳已在家裡的 Wi-Fi 上恢復。」等待更快網路的暫緩上傳有這個網路夠快了選項,會立刻傳送並記住這個網路。App 如何被暫緩取決於 App 本身:

  • 同步和備份類 App(Dropbox、Google Drive、OneDrive、Box、Backblaze、Arq、Creative Cloud、Synology Drive、pCloud、MEGA、Transmission、qBittorrent):像通話模式一樣暫停,所以正在進行的上傳會立刻停止,之後從停下的地方繼續。開啟網路過濾器時,它們的新連線也會等待。
  • 其他 App:暫緩期間,網路過濾器會拒絕它們的新連線,這需要開啟過濾器,並使用「不受限」以外的設定檔。已在進行的傳輸可能會完成。
  • 絕不暫緩:瀏覽器(每個分頁都會卡住)、iCloud 和照片等 macOS 服務、遊戲啟動器、VPN 和代理伺服器,以及 git、curl 和 rsync 等命令列工具(它們的伺服器會停止等待,終端機也會顯示已停止的工作)。這些 App 的上傳仍會顯示,已知時也會顯示剩餘時間。Kilobat 絕不暫停最前面的 App,切換到已暫緩的 App 也會放行它。

暫緩的上傳一定會繼續:等到它在等的條件出現時、你按一下「立即傳送」時、最多 8 小時後,以及 Kilobat 結束時。被暫停的 App 會在停止前記錄下來,所以即使當機,下次啟動時也會恢復;如果通話或專注模式也暫停了同一個 App,它會保持暫停,直到它們也結束。在終端機中,kilobat uploads 列出大檔案上傳和已暫緩的上傳,kilobat uploads hold Dropbox --until unmetered 暫緩一個上傳(也可以用 fast、fast:50、2h 或 manual),kilobat uploads resume Dropbox 放行它;代理程式使用 get_uploads 和 hold_upload,後者會先詢問使用者。查看大檔案上傳是免費的;暫緩上傳包含在 Kilobat Pro 中。

流量預算與 App 配額

每個網路都有自己的預算。預設會一直累計,直到你手動重設。可以設定為每天、每週(自選星期幾),或每月在方案續約那天重新計算;在 31 日續約的方案,遇到較短的月份會在當月最後一天開始。設有週期的預算會計算該網路的用量歷史,所以重新啟動後仍會接續。Kilobat 預設在每個週期達到 80% 和 100% 時各通知一次,也可以加上 50%。

App 可以有自己的配額:每個週期對它全部的流量或只對上傳設限,可針對單一網路或所有網路。可以在 App 的頻寬面板中設定,或用 kilobat quota com.getdropbox.dropbox 2 --upload。開啟過濾時,預算用完會停止新連線,配額用完則停止該 App 的新連線。暫時允許或連線規則仍可通過。Kilobat 每秒取樣一次流量,所以預算和配額都是近似值:App 可能會稍微超過一點才停下。

流量包和旅行 eSIM

數據包是有期限的預付數據,例如 30 天 10 GB 的旅行 eSIM。不同於預算,它不會重新開始。在「設定」›「數據包」中新增:填入容量、有效天數或最後一天、開始時間,以及使用該數據包的網路。選擇手機熱點或旅行路由器,或輸入其名稱包含的文字,例如 iPhone,以計算該手機的所有熱點和 USB 連線。每個網路一次只能有一個數據包:相同網路的新數據包開始時會結束舊數據包,已結束的數據包會保留在歷史記錄中。

當 Mac 連上數據包網路時,選單會依過去三天的使用速度顯示剩餘流量和預計用完的日期,例如「剩餘 6.2 GB · 預計 11 月 14 日左右用完,比數據包到期早 5 天」,或顯示流量足以用到到期。開始未滿一天的數據包會按一天計算,因此首次預測的用完日期可能偏晚。「健康狀態」顯示相同資訊。除非你將數據包網路標記為「不計量」,否則會將其視為計量網路,因此「旅行」、更新程式暫停及「稍後傳送」會將其當作熱點。Kilobat 在達到 50%、80% 和 95% 時通知,也會在使用速度顯示流量將提前用完時通知;後者每天最多一次,且僅當預測日期再提前至少一天時才會再次通知。為數據包開啟等到 Wi-Fi 再傳送大型上傳,或在通知中按此選項,「稍後傳送」就會保留同步與備份上傳,直到連上不計量網路。

Kilobat 只計算這部 Mac 的用量。如果手機或其他裝置使用相同的數據包,實際剩餘量會比 Kilobat 顯示的少。按修正並輸入電信業者 App 顯示的數字;Kilobat 會以該數字為起點,再加上此後 Mac 的用量。在終端機中:kilobat pack add 10 30 --name "Japan eSIM"、kilobat pack、kilobat pack correct 5.1 和 kilobat pack end;AI 代理程式使用 get_data_pack 讀取數據包。App 中的數據包和預算一樣屬於 Kilobat Pro。詳見使用 Mac 隨處工作指南。

計入什麼:網際網路、本機網路和 VPN

預算、配額和已用流量只計算網際網路流量。連到本機網路(印表機、NAS、其他電腦、路由器的管理頁面)、AirDrop 及其他附近裝置連結(AWDL)的流量會分開顯示,例如「本機網路:2.1 GB,不計入」,在游標停留在預算卡片的已用數字上時,以及在每個 App 的頻寬面板中都看得到。Mac 的總量來自 Wi-Fi 和乙太網路的計數器,所以包含沒有任何 App 認領的部分:封包標頭和確認封包(App 的位元組數不含這些,通常會多出 5–10%)、在兩次取樣之間開始又結束的程序、網際網路共享,或 macOS 自己執行的 VPN。同一個提示會把這部分顯示為「未對應到 App」;它絕不會被算到某個 App 頭上。

使用 VPN 時,App 的流量會經過通道,再由 VPN 透過 Wi-Fi 或乙太網路送出去。Kilobat 只在流量離開 Mac 的地方計算一次,和你的電信業者一樣,並把 App 的部分標為「經由 VPN」。使用代理伺服器時(系統代理伺服器、HTTPS_PROXY 或本機代理 App),App 是和這台 Mac 上的代理伺服器通訊,由代理伺服器建立網際網路連線,所以位元組會顯示在代理伺服器底下;Kilobat 無法分辨背後是哪個 App。TUN 模式的代理伺服器對 Kilobat 來說就是 VPN:每個 App 自己的連線會標為「經由 VPN」,代理伺服器的對外流量則顯示在代理伺服器底下。位於私有位址的公司代理伺服器算作本機網路。

系統下載

App 會把部分下載交給 macOS:nsurlsessiond(Music、Podcast 等 App 的背景傳輸)、mobileassetd(Apple Intelligence 和 Siri 模型、語音、字體)、softwareupdated、appstored 和 appstoreagent、cloudd 和 bird(iCloud)、fileproviderd 和內容快取。App 列表會把它們歸為「系統下載」,並說明各自的用途。開啟過濾時,過濾器看得到每條連線是替哪個 App 建立的,所以列表會寫「替 Music」,阻擋記錄則寫「com.apple.Music via nsurlsessiond」。沒有開啟過濾時,nettop 只看得到服務,所以 Kilobat 無法得知下載是替哪個 App。

既不是 App 也不屬於 macOS 的程序,例如 node、python、deno、bun,或你的個人專屬資料夾或 Homebrew 中的 Go 執行檔,展開它的列時會顯示執行檔路徑,讓陌生的代理程式或工具一眼就能認出來。

在「設定」中打開異常上傳,當某個 App 在一小時內上傳了平常的五倍、且至少 50 MB 時就會通知你,每個 App 每天最多一次。它只會通知。暫時規則和會到期的連線規則都列在「設定檔」底下,附剩餘時間,你可以提早結束。