Latency Compass 是一个基于 Electrobun 的桌面应用,用于通过 clash-speedtest 测试网站访问延迟。
- 使用 React 构建界面,并采用 shadcn/ui 风格组件。
- 使用 Electrobun 提供桌面应用外壳。
- 内置香港和日本两个地区预设。
- 支持配置测试站点,默认包含 YouTube、X 和 GitHub。
- 引导用户通过
go install github.com/nic519/clash-speedtest@latest安装clash-speedtest。 - 将历史记录存储在
~/Library/Application Support/Latency Compass/latency-compass.sqlite。 - 展示汇总卡片,以及按节点和站点排列的延迟矩阵。
- 支持将当前筛选结果导出为汇总 CSV 文件到指定文件夹。
bun install在应用内运行测试之前,需要单独安装 clash-speedtest:
go install github.com/nic519/clash-speedtest@latest当前桌面 app 会校验 clash-speedtest -v 输出的版本号,要求它不低于本应用 package.json 里的最低版本要求。当前最低要求为 0.1.3,因此 0.1.3 及以上版本都可以使用。如果本机二进制版本过低,依赖状态会显示为不可用,需要先在 Go 项目中重新编译:
cd /Users/nicholas/Desktop/my_program/clash-speedtest
go build -ldflags "-X main.version=0.1.3 -X main.commit=$(git rev-parse --short HEAD)" -o ~/go/bin/clash-speedtest .
~/go/bin/clash-speedtest -v开发时如果使用手动路径或 CLASH_SPEEDTEST_PATH,也需要指向满足最低版本要求的二进制。
应用会让 clash-speedtest 通过每个节点访问 Probe API,用于记录节点出口 IP、国家/地区、ASN 和组织信息。默认配置为:
启用: 是
Probe URL: https://api.ip.sb/geoip/
字段映射: ip=ip,country=country,country_code=country_code,region=region,city=city,asn=asn,org=organization
超时时间: 8s
如果某个 IP API 在你的网络或节点出口下不可用,可以在“工具设置”里的“出口 Probe API”关闭 Probe,或切换 URL、字段映射和超时时间。保存后,下一次测速会使用新的配置。
为了避免 IP API 影响整体测速,桌面 app 只会在每个地区的第一个启用网站上执行出口 Probe;YouTube、X、GitHub 等目标站点的延迟测试使用独立的 --latency-timeout 8s,不会再被 --max-latency 的筛选阈值误当作请求超时。
bun test
bun run typecheck
bun run build:web
bun run dev本项目使用 shadcn/ui 风格组件,凡是 shadcn/Radix 已提供的常见 UI 模式,应优先使用或安装对应组件,不要先手写一套同类组件。常见例子包括弹窗、确认框、下拉菜单、表格、按钮、卡片、输入框、滚动区域等。
新增 shadcn 组件时,使用项目包管理器运行:
bunx --bun shadcn@latest add <component>组件应落在 src/mainview/src/components/ui。components.json 已配置为项目实际源码路径;如果 CLI 输出到了其它目录,需要先修正配置,不要保留重复 UI 组件。
推送任意 Git tag 都会触发 GitHub Actions 自动构建。tag 名称不再需要与 package.json 中的版本号保持一致。
示例:
git tag v0.1.0
git push origin v0.1.0该工作流会先运行测试和类型检查,然后为 macOS 和 Windows 构建桌面应用。构建完成后,压缩包会同时上传到 Actions 运行记录,以及对应 tag 的 GitHub Release。
应用界面中需要填写本地 Clash/Mihomo 配置路径或订阅 URL。第一版暂不支持用户自定义筛选规则;选择 香港 或 日本 时,会使用 src/shared/domain.ts 中定义的地区正则。
本地开发和调试时,仍然可以设置 CLASH_SPEEDTEST_PATH,也可以在诊断视图中手动指定二进制文件路径。