苹果迷苹果迷  2026-09-05 14:21 苹果家园 隐藏边栏 |   抢沙发  4 
文章评分 0 次,平均分 0.0
导语: Port Radar 是一款开源的 macOS 菜单栏工具,按项目列出所有正在监听的本地端口,可用端侧 Apple Intelligence 解释进程来源与能否安全停止,支持优雅退出与一键 Cloudflare 公网分享,需 macOS 14 或更高版本。

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

Port Radar 是什么

Port Radar 菜单栏菜单,按项目分组列出 4 个监听端口:checkout-web 的 Vite、Python uvicorn、Python http.server Orphan
图片来源: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:让端侧模型解释进程

Apple Intelligence 官方视觉图,Port Radar 的 Ask 功能在设备端运行
图片来源:Apple

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
Xcode 官方视觉图,Port Radar 从源码构建需要 Swift 工具链
图片来源:Apple Developer

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 驱动)、RustCastBetter Shot,思路同源:把开发者每天要敲的那几行命令,做成常驻的一个界面。

Port Radar for Mac 下载

系统要求 macOS 14 或更高,免费开源(Apache 2.0),Apple Silicon 与 Intel 通用。

声明:本文来自投稿,不代表苹果家园立场,版权归原作者所有,欢迎分享本文,转载请保留出处!

发表评论

表情 格式 链接 私密 签到

友情链接

    扫一扫二维码分享