健康狀態與速度
為什麼連不上、速度測試、卡頓、路由歷史、斷線,以及給電信業者的報告。
連不上的時候
kilobat why <host>(MCP:diagnose_connection)會從這台 Mac 逐層檢查一台主機,不經過 curl 或 nc,所以嚴格的設定檔不會擋住檢查本身。它會分別嘗試 IPv4 和 IPv6,所以當網路的 IPv6 壞掉(這是代理程式卡住或不停重新連線的常見原因)時,也能得到明確的答案。它會指出使用的介面,例如 Wi-Fi、手機熱點或 VPN,有多個介面時會逐一嘗試。它會回報系統或其 PAC 檔選用的代理伺服器;搭配 --app 時,還會回報該 App 環境中的 HTTPS_PROXY,但不含密碼。開著 VPN 或代理伺服器時,它會比較直連路徑和通道。私有名稱送到 VPN 自己的解析器時,會說明是哪一個,以及它有沒有回應。在容器、虛擬機器或遠端機器中執行的程式碼有自己的網路:傳入 --context,報告最後會附上一個要在那裡執行的指令。當代管服務從自己的伺服器發出請求時(例如 Warp 對自訂推論端點的做法),--context provider 會說明目標是否為私有位址(localhost、LAN 或 Tailscale 位址),因此對方連不到,即使從 Mac 連得上。
請給它失敗的確切 URL,包含查詢參數:它會請求那個 URL,但所有輸出都會把查詢參數值顯示為 [redacted],所以簽署過的下載連結不會外洩。它會用 App 的方式送出請求:透過 App 的 HTTPS_PROXY、系統代理伺服器,或用 --proxy <url> 指定 App 在自己設定中填寫的代理伺服器位址。當代理伺服器能用而直連不行時(很多公司網路都是如此),它會說明這一點,而不是回報失敗;當直連可行,但透過 App 的代理伺服器發出的請求失敗時,它會說網路沒問題,是 App 的路徑有問題。對於它無法讀取或無法經過的設定,例如 LM Studio 下載 huggingface.co 時用的 Hugging Face 代理開關,會另外附上一則註記,引用使用者回報的情況,判定結果則改為說明網路連得到主機,而不是 App 的請求能成功。Kilobat 絕不更改其他 App 的設定。拒絕 HEAD 的伺服器會收到一次只取一個位元組的 GET,絕不會真的下載。它最多跟隨五次重新導向,指出失敗的是哪一跳,並對重新導向最終抵達的主機檢查 IPv4 和 IPv6。搭配 --app 時,它會列出 App 連到該主機或其代理伺服器的開啟中連線,說明它們是否用了和這次檢查不同的 IP 版本或伺服器,並在幾秒後再看一次:沒了動靜的傳輸會回報為「沒有動靜」,絕不會說成「已完成」。報告會記錄 App 的名稱和版本、送出的方法、走的路徑;搭配 --failed-at 時,還會把 App 失敗的時間和檢查執行的時間並列。檢查通過,代表這個請求此刻能從這台 Mac 經由那條路徑成功;它看不到已經在進行的傳輸狀況如何,那部分請用 kilobat bandwidth <app> 觀察。
當主機或 App 屬於有公開狀態頁面的服務(例如 slack.com 或 GitHub)時,檢查會以狀態頁面層結束,說明該頁面的回報。如果頁面回報故障且此 Mac 上沒有檢查失敗,結論會首先顯示:「Slack 對所有人都無法使用,不是你的問題」,並附有事件標題和連結。如果此 Mac 本身的網路發生故障,服務故障會作為附註。綠色狀態頁面也會照實說明。請參閱是服務的問題還是我的問題?當故障可能來自此網路本身時,網路封鎖層會說明它是否封鎖網站;當服務拒絕你的連線顯示所在的地區時,地區層會說明;兩者都會成為結論的重點。請參閱此處遭封鎖,並非故障。
為什麼各家速度測試結果不一樣
Kilobat 的速度測試一次只對 Cloudflare 最近的資料中心建立一條 HTTPS 連線,每個方向 8 秒、最多 80 MB,並在傳輸前和傳輸期間 ping 1.1.1.1。Ookla 的 Speedtest、fast.com 和 macOS 的 networkQuality 會同時開多條連線,並自行挑選伺服器,所以在高速或遠距離的線路上,數字通常比較高。在「速度」分頁的測試按鈕旁選擇 4 條連線,或執行 kilobat speedtest --parallel,就能看出這在你的連線上差多少。每次儲存的測試都會保留 Cloudflare 資料中心、連線數、連結資訊(Wi-Fi 頻段、頻道、訊號和連結速率,或乙太網路)、經過的 VPN,以及這台 Mac 同時傳輸了多少其他流量。「歷史記錄」›「速度測試比較」、kilobat speed-compare 和 MCP 的 compare_speed_tests 會把兩次測試並排,列出差異,並說明每項差異如何影響結果。它們列出的是差異,不是原因:網路上的其他裝置也在搶頻寬,而 Kilobat 看不到它們。
路由歷史記錄
「工具」›「DNS 與 LAN」›「追蹤 3 次」或 kilobat trace <host> --rounds 3 會追蹤一條路由三次,每一跳送三個探測封包,並儲存每次追蹤。「歷史記錄」›「已儲存的路由」會把對某台主機的所有已儲存追蹤逐跳彙整,像 mtr 一樣:封包遺失、最佳、平均、最差和最後一次延遲、哪幾跳換了路由器,以及持續延遲從哪裡開始。某一跳不回應、但後面幾跳都有回應,代表那台路由器在限制探測封包的速率,而不是封包遺失。只測本機網路的話,kilobat lan-test <device> 會對執行 iperf3 -s 的裝置跑五秒 iperf3;iperf3 請自行安裝,Kilobat 從不安裝任何東西。
卡頓測試
通話、遊戲串流和遠端桌面可能會卡頓,速度和封包遺失卻看起來正常,因為幾百毫秒的 ping 突波會被平均值吃掉。「健康狀態」中的卡頓測試會每 50 ms ping 一次你的路由器(或網際網路),持續 20 秒,並畫出每一次回應,突波以玫瑰色標示,附上中位數、p95、p99 和最差的 ping。它會告訴你突波是否以固定間隔重複出現(通常指向 AirDrop/AWDL 掃描),還是隨機出現(指向網路繁忙、干擾或訊號弱)。很多路由器每秒只回應大約十個 ping;Kilobat 認得這種模式,不會把它算成封包遺失。有 Pro 的話,開啟低延遲後比較會在暫停 AirDrop/AWDL 的情況下重跑測試,並告訴你有沒有幫助。
低延遲暫停會關閉 AirDrop、Sidecar 和通用控制 15 分鐘、1 或 2 小時,或直到你的遊戲或通話 App 結束,最長 4 小時。時間到、App 結束、Kilobat 結束或網路改變時,它一定會還原;若 Mac 當機,則會在下次啟動時還原。macOS 會要求管理者核准。「健康狀態」的「附近」面板也會顯示 AirDrop 的無線電是否在運作、誰在使用它、你的 AirDrop 可見度,以及(在你要求時)與 Wi-Fi 共用 2.4 GHz 頻段的藍牙裝置。
Wi-Fi 選單會在網路下方列出你的藍牙裝置:按一下即可連接或中斷連接。2.4 GHz 標籤會標出與 Wi-Fi 共用頻段的已連接耳機、鍵盤和滑鼠,並附上切換到已知 5 GHz 網路的捷徑。再下面是 AirDrop,包括它的可見度、正在使用這個連結的項目,以及低延遲暫停。只有在你選擇「顯示藍牙裝置」後才會出現藍牙,所以 macOS 也只會在那時要求取用權限。
是他們的問題,還是我的?
Slack、Zoom 或 GitHub 打不開時,問題在於是你的連線還是對方出了問題。Kilobat 會讀取七十多個 Mac 使用者常用服務的公開狀態頁面,包括 AI 供應商(見下方的AI 代理程式):Zoom、Slack、Microsoft Teams Free、Outlook.com、OneDrive、Google Meet、Gmail、Google Drive、Docs、Calendar 和 Chat、Discord、GoTo Meeting、FaceTime、iMessage、iCloud、App Store、Apple Music 和 Apple TV、Dropbox、Box、Notion、Airtable、Proton、1Password、Figma、Canva、Miro、Linear、Asana、Jira、Confluence、Trello、Grammarly、Claude、ChatGPT、Perplexity、Cursor、GitHub、GitLab、Bitbucket、npm、Docker、Postman、Vercel、Netlify、Supabase、Cloudflare、Tailscale、Epic Games 和 Reddit。它依 bundle ID 對應每個 App,依網域對應每個網站。kilobat down --list 會顯示每個頁面以及 Kilobat 讀取的位址。
它只在有理由時才會查詢:當你打開「健康狀態」且自己的線路正常時,查詢前景或正在傳輸資料的 App;當連線檢查指向有狀態頁面的主機或 App 時;當通話在路由器之外卡頓時;以及當有狀態頁面的 App 一直無法建立連線(連續兩次取樣中,連線都在等待伺服器回應),而你的線路正常時,每分鐘查詢一次。接著它會針對每個事件通知你一次,例如「Slack 服務中斷」,並附上一個打開狀態頁面的按鈕。每個頁面的結果保留三分鐘,最多等待五秒。可在「設定」›「監控」›「我使用的服務中斷時通知我」中關閉通知。服務中斷會顯示在「健康狀態」頂端,以及選單和「總覽」中的服務一列;這一列只在你使用的服務出問題時才會出現。
Kilobat 只轉述頁面上的內容。只有當服務的頁面回報服務中斷時,它才會說該服務對所有人都無法使用;只有當你自己的線路檢查正常時,才會說「不是你這邊的問題」。頁面顯示正常時,它會說頁面沒有回報任何問題;無法讀取的頁面絕不會被當成服務中斷。有些服務不公開狀態:Webex、公司或學校版 Teams(其狀態只向管理員顯示)、Spotify、Steam、WhatsApp、Telegram 和 Signal。瀏覽器中的通話和網站透過連線檢查來確認,因為 Kilobat 看不到瀏覽器分頁開的是哪個網站。在終端機中,使用 kilobat down slack、kilobat down github.com,或用 kilobat down 查看正在執行的 App;AI 代理程式使用 service_status。此功能免費。
AI 代理程式和模型供應商
很多 AI 狀態頁面分成多個部分,Kilobat 會讀取每個 App 所用的那一部分:Anthropic 的頁面包含 claude.ai、Claude API 和 Claude Code,所以 claude.ai 的服務中斷不會算到 Claude Code 頭上,而點名 Claude Code 的 API 事件則會算。OpenAI 的頁面分為 ChatGPT、Codex 和 API;GitHub 的頁面把 Copilot 獨立列出;Cursor 的頁面包含 IDE 及其 CLI。如果頁面上沒有任何指定的部分,就以整個頁面為準。支援:Claude、Claude Code 和 Claude API;ChatGPT、Codex 和 OpenAI API;GitHub Copilot;Cursor 及其 CLI;來自 Google Cloud 資訊來源的 Gemini Code Assist(用 Google 帳號登入時,Gemini CLI 會用到它)和 Vertex AI;Mistral、Groq、Cohere、Fireworks AI、Together AI、Hugging Face 和 Perplexity;Windsurf、Zed、Warp、Replit、Lovable、Bolt 和 v0。
程式碼代理程式依程序辨識(claude、codex、gemini、cursor-agent、copilot),任何 App 則依其連線的 API 辨識:一旦連線卡住,Kilobat 會查詢 api.anthropic.com、api.openai.com、api.githubcopilot.com、api.mistral.ai、api.groq.com 以及其他供應商 API 主機的位址,並保留十分鐘。因此,像 Aider 這種使用你所設定之供應商的代理程式,或呼叫 Claude API 的編輯器,也能被辨識出來。當其中之一一直無法連線、而你的線路正常且供應商回報問題時,通知會同時點出兩者:「Claude Code:Anthropic 回報發生服務中斷,不是你的連線問題。」卡在錯誤上的代理程式可以自己查詢:kilobat down claude-code、kilobat down api.openai.com 或 MCP 工具 service_status;kilobat down claude 和 kilobat down openai 會列出該頁面的每個部分。
由於沒有 Kilobat 能讀取的公開資訊來源,以下服務並未涵蓋:Grok 和 xAI API(其頁面拒絕非瀏覽器的請求)、DeepSeek、OpenRouter、Replicate(其狀態現已併入 Cloudflare 的頁面)、JetBrains AI、Kiro 和 Amazon Q(需登入 AWS),以及 Google AI Studio 中的 Gemini API。Ollama 和 LM Studio 在你的 Mac 上執行。
此處遭封鎖,並非故障
狀態頁面顯示綠色但網站仍無法載入,可能意味著目前網路封鎖了它:例如飯店或機場 Wi-Fi、學校或辦公室網路、行動電信業者或國家規定。當連線檢查、kilobat down 或持續失敗的 App 出現這類跡象時,Kilobat 會測量並說明,例如:「Slack 看起來在此網路上遭封鎖,並非故障:此處無法解析其名稱,而安全解析器傳回了真實位址。」它會指出網路類型(在「裝置」中標記的家庭網路、行動數據或手機熱點、顯示過登入頁面的公共 Wi-Fi,或一般 Wi-Fi),並僅建議中立選項:其他網路、行動數據或漫遊,或詢問網路管理者。Kilobat 測量封鎖情況;它不會協助繞過封鎖,也絕不會建議繞過的方法。
判定依據及每項檢查所需的對照:
- DNS 竄改。此 Mac 的 DNS 表示名稱不存在、沒有回應、傳回公共服務不使用的位址(0.0.0.0、127.0.0.1 或私人位址)、傳回與虛構名稱相同的位址,或將其指向無法為該名稱出示有效憑證的伺服器,而向可信解析器發出的一次 DNS-over-HTTPS 查詢傳回了能夠出示有效憑證的公用位址。能夠出示有效憑證或位於同一位址區塊的不同位址,屬於 CDN 選擇附近伺服器,而非竄改。可信解析器也認為不存在的名稱、對所有名稱都失敗的 DNS、VPN 或公司針對該網域的分離 DNS,以及只有私人網路認識的名稱,絕不計入。
- 安全連線遭中斷。連線建立後,一旦指定網站,TLS 交握就被重置或沒有回應,兩次均如此;而指定為其他網站時同一伺服器會回應。對任何名稱都不回應的伺服器、第二次嘗試成功或始終無法建立的連線,都屬於一般故障。
- 全部無法連線。服務的所有位址都無法連線,但可信解析器本身有回應。只有服務狀態頁面未回報問題時才計入,結論會說明頁面尚未回報的故障也會呈現相同現象。
- 封鎖頁面。一般 HTTP 要求傳回 HTTP 451 或重新導向到服務本身網域之外,可以佐證上述某項結果;單獨出現時證據不足。
Wi-Fi 登入頁面、Kilobat 本身的規則、防護或斷線保護,以及狀態頁面回報的故障,都能更好地解釋連線失敗,因此都不會回報為封鎖。VPN 開啟時,檢查會經過 VPN,結論會註明:封鎖在 VPN 路徑上,不一定在此網路上。
隱私權。DNS-over-HTTPS 查詢只發往你的可信解析器:預設為 Cloudflare(1.1.1.1),除非在「設定 › 監控」或使用 kilobat settings block-check-resolver quad9 選擇 Quad9(9.9.9.9);使用其位址,且只在診斷故障時查詢:針對一個失敗名稱只查詢一次。交握發往服務本身的位址,虛構名稱位於 example.com 下。Kilobat 絕不檢查遭封鎖網站列表,也不在背景掃描。
有狀態頁面的 App 持續失敗而頁面未回報故障時,Kilobat 對每項服務和網路最多每小時檢查一次,在「服務」下列出封鎖,並對每項服務、網路每天傳送一次通知;可在「設定 › 監控 › 當服務看起來在此網路上遭封鎖時通知我」或使用 kilobat settings block-alerts off 關閉。kilobat down slack 對你指定的每項服務建立一次連線,失敗時執行相同檢查;kilobat why slack.com 或 kilobat doctor slack.com 將它作為一層加入。AI 代理程式透過 service_status 和 diagnose_connection 的 block 欄位取得相同資訊。與狀態頁面一樣,此功能免費。
你所在地區無法使用
有些服務以及某些功能(例如歐盟部分地區的 AI 工具)並非到處提供,服務本身會根據你的位址顯示的位置拒絕存取。這不是故障,也不是此網路的封鎖。Kilobat 只有從經過驗證的連線收到服務本身的回應時才會這樣說明:HTTP 451,或曾觀察到的措辭,例如 OpenAI 的 unsupported_country_region_territory、claude.ai 的地區頁面、Anthropic API 關於不支援國家、地區或領土的錯誤,以及 Gemini API 的「User location is not supported」。結論例如:「OpenAI 表示其服務在你所在地區無法使用。你的連線目前顯示位於德國」,其中的國家是公網位址註冊的國家(以 kilobat ip --public 的方式查詢,包括經過任何 VPN)。當 VPN 或漫遊 eSIM 將出口放在另一個國家,或此 Mac 的時區設為另一個國家時,它會說明。它只陳述事實,絕不會建議繞過地區限制的方法;繞過可能違反服務條款。可選方式是查看服務支援的國家列表並聯絡其支援團隊。透過 kilobat why api.openai.com --error '…' 貼上 App 收到的錯誤,或在 diagnose_connection 中使用 error,即可識別。
給業者的報告
連線不佳時,供應商或 IT 服務台需要證據。在「健康狀態」中,報告按鈕會根據 Kilobat 在此網路上過去 24 小時或 7 天的記錄產生報告。內容包括斷網、路由器及其之外的延遲、ping 遺失、與方案比較的速度測試,以及加入失敗網站後的檢查。每條結果說明測量了什麼、在哪裡測量,絕不判斷責任歸屬。可拷貝為文字用於支援聊天,也可儲存或分享為 PDF。報告不包含網路名稱、本機 IP 和硬體位址、裝置名稱或哪些 App 使用了網路。在終端機中執行 kilobat support-report --host github.com,或使用 --html --output report.html 查看頁面。預設省略網站名稱、URL 及其路徑,包括重新導向中的內容。只有希望報告包含這些名稱時,才勾選包含網站名稱,或在 CLI 中傳入 --include-sites,或向 MCP create_support_report 傳入 include_site_names: true。網站檢查的公網 IP 測量仍會保留。
斷線補償
很多業者在長時間斷線後應提供補償,有些甚至不必申請就會發放。「歷史記錄」›「斷線補償」會加總本月 Kilobat 能證明問題出在業者那一端的斷線,並與你的業者公布的規定對照。只有在兩台網際網路伺服器和一項 HTTPS 檢查都失敗、而你的路由器仍在回應 Kilobat 的檢查時,或 Starlink 天線將其記錄為 Starlink 網路的問題(沒有衛星、沒有回應)時,斷線才會計入。你自己的路由器或 Wi-Fi 造成的斷線、飯店或咖啡廳 Wi-Fi 登入頁面佔住連線的時間、檢查次數不足而無法判斷的斷線,以及 Mac 睡眠的所有時間,都不計入,並另外顯示。卡片會在規定門檻旁顯示最長斷線和本月合計;當 Kilobat 核實過的規定適用時,也會顯示可能獲得的補償。
選擇你的業者,或按「偵測」:Kilobat 會向 Cloudflare 查詢你的公用位址,向 RIPE NCC 查詢它所屬的網路,然後將該網路與自己的清單比對。輸入你每月的網路費用以便估算。這些規定都內建在 App 中,每條都附有來源和核對日期:適用於 BT、EE、Plusnet、Sky、Virgin Media、Vodafone、TalkTalk 和 Hyperoptic 的 Ofcom 自動補償(報修的故障在兩個完整工作天內未修復時,每天 £10.34)、適用於德國所有業者的 § 58 TKG、西班牙的 Real Decreto 899/2009 和義大利 AGCOM 的補償規定,以及 Xfinity、AT&T Fiber 和 Internet Air、Orange 和 Free 公布的條款。對於 Kilobat 無法核實規定的業者,例如 Spectrum、Verizon、Cox、T-Mobile Home Internet 或 Starlink,卡片會告訴你仍然可以憑同樣的證據申請。
「拷貝申請」會產生一則使用 App 語言的訊息,包含帳號欄位、每次斷線的日期和時長、Kilobat 的測量結果、規定和金額;「打開申請頁面」會帶你前往業者受理申請的頁面,「儲存業者報告」會將測量結果存成 PDF 以便附上。當規定有申請期限時,例如 Xfinity 的 120 天,「提醒我」會在期限前設定一則通知。Kilobat 從不傳送任何內容。它從斷線開始時計算,而業者從你報修時開始計算,並決定哪些符合條件,所以它只會說「可能符合」。打開「設定」›「監控」›「斷線可能符合補償條件時通知我」後,Kilobat 每次斷線只通知一次,每天最多一次。卡片中的估算、申請和通知屬於 Kilobat Pro。在終端機中,kilobat credit 會顯示本月情況,--draft 會輸出申請,credit providers 會列出規定;AI 代理程式可以透過 get_outage_credit 讀取。
方案檢查
看看你是否得到了付費購買的速度。在「設定」›「網路」›「方案速度」中或速度測試結果下方,輸入這個網路方案的下載速度。之後,「速度」標籤頁會把這個網路過去 30 天的測試與它比較:「你獲得了 500 Mbps 的 61%」、中位數、晚間中位數與其他時段的對比,以及測試結果不到方案一半的頻率。每個網路都有自己的方案,所以咖啡廳的結果不會算進你家裡的方案。使用 Kilobat Pro 時,打開「設定」›「網路」›「方案檢查」,Kilobat 每天最多會進行三次輕量測試,每天的時間都不同,而且一定有一次在晚間尖峰(晚上 7 點到 11 點),這是業者最常變慢的時段。每次檢查透過四條連線使用 25 到 80 MB 流量,以你的方案速度約需兩秒。它會等到沒有進行中的通話、沒有 VPN 承載流量、Mac 的其他流量很少,而且接上電源或電量超過 50% 時才執行,也絕不會在計量網路上執行。業者報告會以這個月的結果開頭:「30 天內 41 次排程檢查:下載中位數 305 Mbps,你付費的方案為 500 Mbps(61%);晚間 180 Mbps。」在終端機中,kilobat plan 會顯示相同內容,AI 代理程式可以透過 get_plan_check 取得。
服務速度
速度測試測量的是到附近測試伺服器的路徑。你實際下載的服務,例如 GitHub、iCloud、Steam、npm、Docker 或 Hugging Face,位於其他路徑的終點;供應商到其中某個服務的連結可能壅塞,而網際網路其他部分依然很快。Kilobat 測量你本來就在進行的下載:每個 5 MB 或以上的下載,將同一服務的連線合併,依實際傳輸的秒數計算。它根據 App 要求的網站(網路過濾器運作時)、App、反向 DNS 名稱,或位址所屬網路來命名;後者使用 App 內建的 GitHub、Apple、Valve、Dropbox、Akamai、Fastly、Cloudflare、Amazon CloudFront、Google 和 Microsoft 公開位址列表。不產生額外網路流量。影片、音樂和通話依播放速度傳輸,因此從不計入;VPN 承載流量時也不計入。
「速度 › 服務」列出此網路上的每項服務:30 天內的典型速度、最近一次下載及其占線路速度的比例。線路速度取此網路最新速度測試或 Kilobat 在此觀察到的最快下載,兩者中較高者。使用 Kilobat Pro 時,「健康狀態」只在證據明確時提示:過去一天從同一服務下載至少三次,速度低於線路的三分之一;每次下載的同一小時內,另一網站或速度測試至少快三倍;該服務當天大多數下載都很慢;且該服務在你使用的其他網路上並非都很慢。被你自己的其他下載擠占的下載不計入。「今晚供應商到 GitHub 的路徑很慢。3 次 GitHub 下載約為 7 Mbps,而同一小時內其他網站達到 267 Mbps。減速發生在供應商與 GitHub 之間,而不是 Wi-Fi 或此 Mac。」
隨後顯示證據。如果服務的狀態頁面回報問題,結果會說明很可能是服務端問題。否則它會追蹤一次到服務伺服器的路由,指出延遲在哪一跳躍升。歷史記錄足夠時,它會找出速度慢的時段,例如每天晚上 7 點到 11 點——這是尖峰時段兩個網路之間連結壅塞的典型跡象。接下來給出建議:嘗試 VPN 或其他 DNS,以另一條路徑連接服務;聯絡供應商,供應商報告中包含相關部分;或稍後再試。
測試此服務會從服務提供的公開下載檔案中最多下載 25 MB,例如 GitHub 發行版、Apple 的 macOS 還原映像檔、npm 或 PyPI 套件,或 Cloudflare 速度測試。只在按下時下載一次,絕不會在計量網路上進行。在終端機中,kilobat service-speed 顯示表格和結果,--test github 執行測試,--list 顯示檔案;AI 代理程式透過 get_service_speed 取得歷史記錄。