---
title: "健康与速度 | Kilobat 文档"
url: "https://kilobat.app/zh-hans/docs/health"
description: "为什么连不上、测速、卡顿、路由历史、断网，以及给运营商的报告。"
---

# 健康与速度

为什么连不上、测速、卡顿、路由历史、断网，以及给运营商的报告。

## 某个东西连不上时

`kilobat why <host>`（MCP：`diagnose_connection`）从这台 Mac 逐层检查一个主机，不经过 `curl` 或 `nc`，因此严格的配置不会把检查本身拦下。它分别尝试 IPv4 和 IPv6，所以 IPv6 出了故障的网络（这是智能体卡住或反复重连的常见原因）也能得到明确的答案。它会指出所用的接口，比如 Wi-Fi、手机热点或 VPN；有多个接口时会逐一尝试。它会报告系统或其 PAC 文件选中的代理；加上 `--app` 时，还会报告该应用环境中的 `HTTPS_PROXY`，但不含密码。开启 VPN 或代理时，它会对比直连路径和隧道。发往 VPN 自身解析器的私有名称，会注明是哪个解析器、是否有响应。容器、虚拟机或远程机器中的代码有自己的网络：传入 `--context`，报告末尾会附上一条可以在那里运行的命令。当托管服务从自己的服务器发出请求时（比如 Warp 对自定义推理端点的做法），如果目标是私有地址（`localhost`、LAN 或 Tailscale 地址），`--context provider` 会说明它们访问不到，即便从 Mac 上可以连通。

请给出失败的确切 URL，包括查询部分：它会请求该 URL，但所有输出都把查询参数值显示为 `[redacted]`，所以带签名的下载链接不会泄露。它会以应用的方式发送请求：通过应用的 `HTTPS_PROXY`、系统代理，或者用 `--proxy <url>` 指定应用在自身设置中配置的代理地址。当这个代理能用而直连不行时（许多公司网络就是这样），它会如实说明，而不是判定失败；当直连可用而经应用代理的请求失败时，它会说明网络没问题，是应用的路径有问题。对于它无法读取或无法经由的设置，比如 LM Studio 在下载 huggingface.co 内容时使用的 Hugging Face 代理开关，会单独附上一条说明，引用用户反馈的情况，此时结论只会说网络能到达该主机，而不会说应用的请求可以成功。Kilobat 从不更改其他应用的设置。拒绝 HEAD 的服务器只会收到一次读取 1 个字节的 GET，绝不会真的下载。它最多跟随 5 次重定向，指出失败的那一跳，并对重定向最终到达的主机检查 IPv4 和 IPv6。加上 `--app` 时，它会列出该应用到这个主机或其代理的已打开连接，指出它们是否使用了与本次检查不同的 IP 版本或服务器，并在几秒后再看一次：没了动静的传输会被报告为静默，绝不会报告为已完成。报告会记录应用的名称和版本、发送的方法、经过的路径；加上 `--failed-at` 时，还会把应用失败的时间与检查运行的时间并列。检查通过，意味着这个请求此刻能从这台 Mac 经该路径完成；它看不到已在进行的传输状况如何，那要用 `kilobat bandwidth <app>` 来观察。

当主机或应用属于有公开状态页面的服务（例如 slack.com 或 GitHub）时，检查会以**状态页面**层结束，说明该页面的报告。如果页面报告故障且此 Mac 上没有检查失败，结论会首先显示：“Slack 对所有人都不可用，不是你的问题”，并附有事件标题和链接。如果此 Mac 自身的网络出现故障，服务故障会作为附注。绿色状态页面也会照实说明。请参阅[是服务的问题还是我的问题？](https://kilobat.app/zh-hans/docs/health#is-it-down)当故障可能来自此网络本身时，**网络封锁**层会说明它是否封锁网站；当服务拒绝你的连接显示所在的地区时，**地区**层会说明；两者都会成为结论的重点。请参阅[此处被封锁，并非故障](https://kilobat.app/zh-hans/docs/health#blocked-here)。

## 为什么各家测速结果不一样

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` 的设备执行 5 秒 iperf3 测试；iperf3 需要自行安装，Kilobat 从不安装任何东西。

## 卡顿测试

通话、游戏串流和远程桌面可能卡顿，而速度和丢包看起来都正常，因为几百毫秒的 ping 尖峰会被平均值掩盖。健康标签页里的卡顿测试会在 20 秒内每 50 ms ping 一次路由器（或互联网），画出每一次回应，尖峰用玫红色标出，并给出中位数、p95、p99 和最差 ping。它会告诉你尖峰是按固定间隔重复出现（通常指向隔空投送/AWDL 扫描），还是随机出现（指向网络繁忙、干扰或信号弱）。许多路由器每秒只回应约 10 个 ping；Kilobat 能识别这种模式，不会把它算作丢包。有 Pro 时，*开启低延迟后对比*会在暂停隔空投送/AWDL 的情况下再测一次，并告诉你是否有改善。

低延迟暂停会关闭隔空投送、随航和通用控制，持续 15 分钟、1 小时或 2 小时，或直到游戏、通话等应用退出，最长 4 小时。时间到、应用退出、Kilobat 退出或网络变化时，它都会恢复；如果 Mac 崩溃，下次启动时也会恢复。macOS 会要求管理员批准。健康标签页的“附近”面板还会显示隔空投送的无线电是否活跃、被谁使用、你的隔空投送可见性，并可按需显示与 Wi-Fi 共用 2.4 GHz 频段的蓝牙设备。

Wi-Fi 菜单会在网络下方列出你的蓝牙设备：点按即可连接或断开。已连接且与 Wi-Fi 共用频段的耳机、键盘和鼠标会带有 2.4 GHz 标签，并提供切换到已知 5 GHz 网络的快捷方式。再往下是隔空投送，显示其可见性、正在使用该链路的程序以及低延迟暂停。只有在你选择“显示蓝牙设备”后才会出现蓝牙，macOS 也只在那时请求访问权限。

## 是他们的问题，还是我的？

Slack、Zoom 或 GitHub 打不开时，问题在于是你的连接还是对方出了问题。Kilobat 会读取七十多个 Mac 用户常用服务的公开状态页面，包括 AI 提供商（见下方的[AI 智能体](https://kilobat.app/zh-hans/docs/health#ai-agents-down)）：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；智能体使用 `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` 或持续失败的应用出现这类迹象时，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 绝不检查被封锁网站列表，也不在后台扫描。

有状态页面的应用持续失败而页面未报告故障时，Kilobat 对每项服务和网络最多每小时检查一次，在“服务”下列出封锁，并对每项服务、网络每天发送一次通知；可在“设置 › 监控 › 当服务看起来在此网络上被封锁时通知我”或使用 `kilobat settings block-alerts off` 关闭。`kilobat down slack` 对你指定的每项服务建立一次连接，失败时运行相同检查；`kilobat why slack.com` 或 `kilobat doctor slack.com` 将它作为一层加入。智能体通过 `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 '…'` 粘贴应用收到的错误，或在 `diagnose_connection` 中使用 `error`，即可识别。

## 给运营商的报告

连接不佳时，运营商或 IT 服务台需要证据。在“健康”中，报告按钮会根据 Kilobat 在此网络上过去 24 小时或 7 天的记录生成报告。内容包括断网、路由器及其之外的延迟、ping 丢失、与套餐对比的速度测试，以及添加失败网站后的检查。每条结果说明测量了什么、在哪里测量，绝不判断责任归属。可复制为文本用于支持聊天，也可存储或分享为 PDF。报告不包含网络名称、本地 IP 和硬件地址、设备名称或哪些应用使用了网络。在终端中运行 `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 自动补偿](https://www.ofcom.org.uk/phones-and-broadband/service-quality/automatic-compensation-need-know)（报修的故障在两个完整工作日内未修复时，每天 £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` 列出规定；智能体可以通过 `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` 会显示同样的内容，智能体可以通过 `get_plan_check` 获取。

## 服务速度

速度测试测量的是到附近测试服务器的路径。你实际下载的服务，例如 GitHub、iCloud、Steam、npm、Docker 或 Hugging Face，位于其他路径的终点；运营商到其中某个服务的链路可能拥堵，而互联网其他部分依然很快。Kilobat 测量你本来就在进行的下载：每个 5 MB 或以上的下载，将同一服务的连接合并，按实际传输的秒数计算。它根据应用请求的网站（网络过滤器运行时）、应用、反向 DNS 名称，或地址所属网络来命名；后者使用应用内置的 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` 显示文件；智能体通过 `get_service_speed` 获取历史记录。
