返回更新列表
新发布Aug 20, 2026

roamr v0.1.4

为你所在的位置找到最佳WiFi网络——根据实际使用质量(而不仅仅是信号格数)为每个已保存的网络评分。

分享

roamr

Release CI Go Reference License: MIT

找到最适合你所在位置的 WiFi 网络,且不会中断现有连接。

在拥有多个 WiFi 网络的办公室(或家庭)中,最佳网络会随着你的移动而变化,而“最佳”并不仅仅是信号格数。一个网络可能显示满格信号,但仍然很慢:2.4 GHz 频段拥挤、WiFi 标准老旧、信道拥塞。roamr 会读取操作系统已知的附近每个已保存网络的信息,根据实际质量为其评分,解释原因,并告诉你该使用哪个。

roamr 对已保存 WiFi 网络进行排名,并解释为何 Office-2G 尽管信号 100% 仍排在最后

状态: 已在 macOS 上可用(brew install --cask sourabh-khot65/tap/roamr),并附带一个菜单栏应用。Windows 已验证可用;Linux 已实现并处于预览阶段(参见平台)。没有 Mac?试试 roamr --demo

Install

macOS(推荐)。 使用 Homebrew 安装。该 cask 会在安装时去除隔离属性,因此二进制文件运行时不会出现浏览器下载所触发的 Gatekeeper 警告:

brew install --cask sourabh-khot65/tap/roamr

Windows。 使用 Scoop 安装:

scoop bucket add roamr https://github.com/sourabh-khot65/scoop-bucket
scoop install roamr

任何平台。最新发布下载二进制文件,或使用 Go 1.26+ 从源码构建:

go install github.com/sourabh-khot65/roamr/cmd/roamr@latest

来自 Releases 页面的二进制文件(与 Homebrew 不同)未签名,因此 macOS 上的 Gatekeeper 会将其隔离。使用 xattr -d com.apple.quarantine ./roamr 清除一次即可。Homebrew 安装不受影响。对 roamr 自身二进制文件进行公证已列入计划,但不在 v0.x 范围内。

Quick start

安装完成后,试试内置演示(无需 WiFi 硬件):

roamr --demo --why          # or, from source: go run ./cmd/roamr --demo --why
→ Switch to Office-6E — clearly better here.

  Office-6E             ▀▀▀▀▁  86%  6GHz   ax    score  95
      - 6 GHz — fast, uncongested
      - channel is clear
  Office-5G             ▀▀▀▀▀  92%  5GHz   ax    score  93
      - strong signal (-54 dBm)
      - channel is clear
  Office-Guest          ▀▀▀▁▁  68%  5GHz   ac    score  81
      - channel is clear
▸ Office-2G             ▀▀▀▀▀ 100%  2.4GHz n     score  69
      - strong signal (-47 dBm)
      - 2.4 GHz — slower, more interference
      - WiFi 4 — older, slower standard

你当前连接的是 Office-2G(带 ▸ 标记),信号为 100%,但 roamr 将其排在最后——旧 WiFi 4 上的 2.4 GHz,并建议你改用 Office-6E。“满格信号”与“实际好用”之间的差距正是 roamr 存在的意义。

Commands

CommandDoes
roamr推荐此处已知的最佳网络(默认)
roamr current诊断你当前所在的网络(包括延迟/抖动)
roamr list列出已知网络及其评分
roamr watch持续采样;仅在某个网络 持久 更优时才建议切换
roamr speedtest测量当前网络的真实下载吞吐量

标志:--why(解释评分)、--json(机器可读)、--demo(无需硬件)、--interval / --samples(用于 watch)。

roamr 仅提供建议:它读取操作系统已知的信息,绝不会更改你的连接。它会告诉你哪个已保存的网络最佳;你可以从操作系统的 Wi-Fi 菜单中切换。

watch 会随时间平滑每个网络的评分(EMA),并且仅当挑战者连续多次采样以明显优势胜过当前网络时才提示切换,从而避免因信号噪声或 2.4/5 GHz 频段引导而导致推荐摇摆不定。

How it works

评分是被动进行的,绝不会断开你的连接。它会综合考量信号、频段、信道拥塞、WiFi 标准,以及(对于当前网络)实时延迟。详细信息见 docs/architecture.md;平台支持位于一个可插拔的接缝之后,相关说明见 docs/adding-a-platform.md

配套的菜单栏应用以下拉菜单形式显示实时排名列表和“原因”——按质量着色的评分、信号格,以及某个网络持久更优时的琥珀色提示。它读取 roamr watch --json,因此所有评分都保留在 CLI 中;与 CLI 一样,它只提供建议,绝不会替你切换。

make app          # build macos/Roamr.app (Swift, no Xcode needed)
make install-app  # build and install it to /Applications

Platforms

OSProviderStatus
macOS通过 macwifi 签名的 CoreWLAN 辅助程序(ADR-0002可用(Apple Silicon,macOS 13+)
Windows原生 WLAN API(wlanapi.dllADR-0004可用(已在设备上验证;需要启用定位)
Linuxnmcli(NetworkManager)已实现(已通过 fixture 测试;待设备实测)

macOS 需要定位权限才能读取 WiFi 详细信息(首次运行时授予嵌入式辅助程序);构建或运行 roamr 无需付费 Apple 帐户(参见 ADR-0002)。macwifi 依赖要求 Go 1.26+,并面向 Apple Silicon;macOS 不报告 PHY 模式,因此该评分信号在 macOS 上会被跳过。

Development

go build ./...   # build everything
go test ./...    # run tests (no WiFi hardware needed)
go vet ./...

License

MIT。参见 LICENSE

分类