开发机上最常见的混乱不是代码,是端口:昨天开的 Vite 忘了关、某个 node 进程悄悄吃了两小时 CPU、还有一个 Python 的 http.server 跑了 14 小时没人认领。查端口的常规做法是敲 lsof -i :5173,前提是你还记得端口号。Port Radar 把这个流程倒过来:菜单栏常驻列出所有正在监听的进程,按项目分组,看不懂的直接问 Apple Intelligence。
Port Radar 是什么

Port Radar 是一个开源的 macOS 菜单栏工具,用 Swift 和 SwiftUI 写成,作者是 Juan Sebastian Solano,采用 Apache 2.0 许可。当前版本 0.1.0,发布于 8 月 21 日,安装包只有 1.1 MB。
它只做四件事,对应界面上的四个动作:
- Scan:列出本机所有处于监听状态的 TCP 端口,按项目分组,持续刷新
- Ask:选中任意进程,让 Apple Intelligence 解释它是什么、为什么在跑、能不能停
- Stop:优雅停止或强制退出,带确认
- Share:一键把本地服务变成公网可访问的临时链接
菜单栏里每行显示的信息很直接:端口号、进程名、所属项目路径、运行时长、PID 和完整启动命令。官方示例里那个跑了 14 小时 01 分、被标为 Orphan 的 /usr/bin/python3 -m http.server 8128,大概是很多人机器上的真实写照。
它是怎么"看见"端口的
实现路径是标准的 Unix 做法,没有魔法。应用每约 2.5 秒执行一次 lsof -iTCP -sTCP:LISTEN -P -n,把「端口 + PID」的组合做成快照,与上一份快照做 diff,从而知道哪些是新起的、哪些已经消失。
拿到 PID 之后再用系统原生接口补信息:proc_pidpath 取可执行文件路径,KERN_PROCARGS2 取完整命令行参数,kinfo_proc 取父进程和启动时间,PROC_PIDVNODEPATHINFO 取工作目录。工作目录这一步是关键——它才让应用能把端口 5173 归到 ~/dev/checkout-web 这个名下,而不是孤零零一个进程名。
两个安全设计值得一提。一是从不以 root 运行,因此它只能看到并结束当前用户自己的进程,而开发服务器恰好都属于当前用户;二是永远不上 Mac App Store,因为强制的 App Sandbox 禁止检查或信号控制其他进程,而这正是这个应用的核心功能。
Ask:让端侧模型解释进程

Ask 是 Port Radar 最有意思的部分。选中一个进程后,它把命令、项目路径和上下文一起交给 Apple Intelligence,由端侧模型回答三个问题:这是什么、为什么在跑、能不能安全停掉。
官网给出的例子是问 5173 端口那个进程,得到的回答是:这是 checkout-web 项目的 Vite 开发服务器,已运行 2 小时 14 分,只是本地前端,可以安全停止,需要时用 npm run dev 重启。这类判断对人类开发者来说是常识,但对不确定进程来源的场景——比如接手别人的机器、或者忘了两周前跑过什么——省掉的正是翻终端历史的时间。
隐私上的卖点是全程在设备上完成,不出本机、不上云。这也是它敢把命令行和项目路径喂给模型的前提。代价是硬件门槛:Ask 需要 Apple Intelligence,也就是说系统要 macOS 26 或更高、且是受支持的机型。低于这个配置,Scan / Stop / Share 三个功能照常可用,只有 Ask 不可用。
Stop 与 Share:收尾和分享
停止进程分两档。默认是发 SIGTERM 优雅退出,如果 4 秒后进程仍在,自动升级为 SIGKILL;也可以直接选 Force quit 立即强杀。两种操作都需要二次确认,避免手滑关掉数据库。
Share 走的是 Cloudflare quick tunnel。在任意进程上点分享,应用会自动装好 cloudflared,几秒内给出一条公网 URL,例如 https://checkout-web-preview.trycloudflare.com,可以直接复制发给同事或客户预览。链接仅在隧道活动期间有效,随时可以停掉。相比自己配 ngrok 或者手动敲 cloudflared 命令,这一步省掉的是账户和命令行的仪式感。
安装与首次启动的那道坎
系统要求是 macOS 14 或更高,Apple Silicon 与 Intel 都支持。从 GitHub Releases 下载 Port-Radar.dmg,打开后把应用拖进 Applications 即可。
首次启动会被 Gatekeeper 拦住,因为当前构建还没有做公证。解决方式有两种:打开「系统设置 → 隐私与安全性」,滚到底部点「仍要打开」,只需做一次;或者在终端执行:
xattr -cr "/Applications/Port Radar.app"
介意公证状态的用户也可以选择自己编译。项目没有第三方依赖,只需要 Xcode 附带的 Swift 工具链:
git clone https://github.com/juansebsol/port-radar-mac
cd port-radar-mac && make run

Makefile 里提供了 build、bundle、dmg、clean 几个目标,make dmg 能打出和官方一样的拖拽安装包。构建脚本之所以要包一层 .app bundle,是因为通知需要 bundle identifier、菜单栏常驻需要 LSUIElement(即不显示 Dock 图标)。
和现有办法比,值不值得装
端口管理从来不缺工具,缺的是顺手。三种常见路径的差异如下:
| 方式 | 优点 | 短板 |
|---|---|---|
| lsof / netstat 命令 | 系统自带、零安装 | 要记住端口或 PID,无法批量看,不能解释进程 |
| 活动监视器 | 图形界面、能看资源占用 | 不按端口组织,找不到监听关系,也无法按项目分组 |
| Port Radar | 按项目分组、带解释、可一键停止与分享 | 仅 macOS 14+,Ask 需 macOS 26+;0.1.0 早期版本,安装包未公证 |
结论比较清楚:如果你每天要在多个前端、后端服务之间切,尤其是经常忘记哪个端口属于哪个项目,Port Radar 的分组和解释能省下实打实的操作时间;如果你本来就习惯一条 lsof -iTCP -sTCP:LISTEN -P -n 扫全部,它带来的增量有限。
上手前需要知道的三件事
版本很早。0.1.0,仓库 69 star,最后一次提交在 8 月下旬,issue 区目前是空的。功能和界面都可能变,重要机器上建议先观察。
Ask 有硬件门槛。Apple Intelligence 只在 macOS 26 及以上的受支持机型可用,且需要系统里已经开启。老机器装了只能用 Scan / Stop / Share。
分享链接是临时的。Cloudflare quick tunnel 生成的 URL 随隧道生命周期存在,应用退出或手动停止后即失效,不适合当作长期预览地址使用。
这类用原生实现替代繁琐流程的小工具,本站此前还介绍过 OpenLogi(用 Rust 重写 Logitech 驱动)、RustCast、Better Shot,思路同源:把开发者每天要敲的那几行命令,做成常驻的一个界面。
Port Radar for Mac 下载
- 官网:https://portradar.devmesh.xyz/
- dmg 下载:Port-Radar.dmg
- GitHub 仓库:https://github.com/juansebsol/port-radar-mac
- Releases:https://github.com/juansebsol/port-radar-mac/releases/latest
系统要求 macOS 14 或更高,免费开源(Apache 2.0),Apple Silicon 与 Intel 通用。
声明:本文来自苹果迷投稿,不代表苹果家园立场,版权归原作者所有,欢迎分享本文,转载请保留出处!