在 Mac 上管理开发服务器、端口、Docker 和构建文件夹
OneMacTools 中的“开发与智能体”让你在一个界面中管理 Mac 上的开发服务器和端口。它按项目列出你启动的每个服务器,显示其端口、内存、CPU 和连接,标出长时间闲置的服务器,并一键停止它们。它还会显示 Docker、Colima 和 OrbStack 的容器及占用空间,并找出 node_modules 等旧构建文件夹供你清理。
本页内容
“开发与智能体”界面显示什么
打开边栏中你的 Mac 下的开发与智能体,或选取前往 › 开发与智能体。副标题说明了它的行为方式:仅限你的进程 · 未经询问不会停止任何内容。它只查看以你的身份运行的进程,绝不查看其他用户或 macOS 自身的进程。
顶部的四个磁贴分别统计智能体会话、开发服务器、闲置服务器和已用内存(智能体和服务器合计,由智能体启动的服务器不会重复计算)。下方有四个标签页:
| Tab 键 | 用途 |
|---|---|
| 智能体 | AI 编程智能体及其启动的所有内容。请参阅监视 AI 编程智能体。 |
| 开发服务器 | 在端口上监听的服务器和数据库,按项目分组。 |
| Docker | 来自 Docker Desktop、Colima 或 OrbStack 的容器、映像和构建缓存。 |
| 项目文件 | 项目中的构建和下载文件夹,例如 node_modules。 |
界面打开时,列表每三秒刷新一次,离开后停止刷新。工具栏中的 刷新 按钮会立即重新读取全部内容。本页介绍后三个标签页。
如何发现开发服务器并按项目分组
开发服务器是指你的某个进程在 TCP 端口上监听,并且它要么是已知的运行时,要么在项目文件夹中运行且不属于某个 App。已知的运行时包括 node、bun、deno、python、ruby、java、php、dotnet、go、vite、esbuild、uvicorn、gunicorn、puma、rails、hugo、caddy、nginx、httpd、streamlit、Jupyter 和 ollama,以及数据库 postgres、redis-server、mysqld 和 mongod。
每个服务器都归入它所运行的项目:即你个人文件夹内最近的一个包含项目文件的文件夹,例如 package.json、.git、pyproject.toml、requirements.txt、Cargo.toml、go.mod、Gemfile、composer.json、pom.xml、build.gradle、Package.swift、deno.json、pubspec.yaml、mix.exs 或 Podfile。通过 Homebrew 运行的 Postgres 不在任何项目中,因此归入不在项目中。

读懂服务器行
- 端口标签,例如 :3000。点按即可在浏览器中打开
http://localhost:3000。 - 数据库标记 Postgres、Redis、MySQL 和 MongoDB。
- 对你的网络开放(橙色)表示它在所有网络接口上监听,因此你 Wi-Fi 上的其他设备也能访问它,而不仅是这台 Mac。
- 闲置 3 小时(橙色)表示在这段时间内没有 CPU 占用也没有连接(见下文)。
- 命令,例如
node next dev -p 3000,然后是 来自终端 或 来自 Cursor(启动它的 App)、已运行多长时间,以及打开了多少个连接。 - 右侧是内存和 CPU,然后是停止…。
如何在 Mac 上查找占用端口的程序
在 开发服务器 顶部的搜索框中输入:端口上运行的是什么…(3000、8080)或名称。数字会匹配以它开头的端口(80 会找到 8000 和 8080);单词会匹配命令(astro、uvicorn)。相关背景知识以及在终端中使用 lsof 的方法,请参阅指南Mac 上是什么在占用端口?。
由 App 和 macOS 服务(而非开发工具)占用的端口汇总在底部的其他正在监听端口的 App(N)下。展开它即可查看每个 App 及其端口。例如,“隔空播放接收器”监听 5000 和 7000 端口,这就是端口 5000 上的 Flask App 有时无法启动的原因。你无法在这里停止它们;退出该 App(或在“系统设置”中关闭“隔空播放接收器”)即可释放端口。
闲置服务器,以及如何安全地停止服务器
在 OneMacTools 监视期间,如果某个服务器至少 15 分钟几乎没有使用 CPU,也没有任何打开的连接,就会被视为闲置。闲置服务器磁贴会统计它们,每个闲置服务器都会带一个闲置标签并显示闲置时长。你三天前启动后就忘掉的 Astro 文档网站就是典型例子。
停止服务器
- 点按该行的停止…。
- 阅读确认信息,例如停止端口 4321 上的 node?以及可释放 298 MB 和该端口。需要时可从你的项目中重新启动。
- 点按停止。一行绿色文字会确认停止了多少个进程,列表会在一秒后更新。
停止会请求进程退出,与 Ctrl-C 发送的温和信号相同,以便服务器干净地关闭。OneMacTools 只会停止你自己的进程,并会再次确认进程 ID 仍属于它列出的同一个程序,因此绝不会误停被回收重用的进程 ID。
失控进程提醒
即使此界面已关闭,OneMacTools 也会每 30 秒检查一次你的开发进程;当某个进程持续 10 分钟占满一个核心、一小时内增长 1 GB,或在某个端口上闲置一天时,就会发送一条带停止按钮的通知。rustc、clang、tsc 和 webpack 等编译器忙碌是正常的,因此不会被打扰。在“设置 › 失控进程”中,你可以关闭此功能,或让 OneMacTools 自行停止进程:停止卡在满载 CPU 的进程(15 分钟、30 分钟或 1 小时后)和停止无人使用的开发服务器(1、3 或 7 天后)。两者默认均为永不。请参阅设置参考。
Docker、Colima 和 OrbStack
Docker 标签页支持 Docker Desktop、Colima 和 OrbStack。你看到的内容取决于其状态:
- Docker 未安装:这台 Mac 上三者都没有。
- Docker 未运行:显示其虚拟机在停止状态下仍占用多少磁盘空间。打开 Docker Desktop 或启动 Colima 可将其启动(Colima 会运行
colima start,可能需要一分钟)。对于 Colima,还有拷贝“colima delete”,如果你不再使用它并想收回空间,可将其粘贴到“终端”中运行。 - 正在运行:Docker 占用的空间和容器。
Docker 占用的空间
镜像、容器、本地宗卷和构建缓存各占一行,显示数量、大小以及可释放的空间。清理…会在运行前说明它将执行的操作:
| 横排 | 清理会移除什么 |
|---|---|
| 图像 | 未被任何容器使用的镜像。需要时会重新下载或构建。 |
| 容器 | 已停止的容器。它们存储在宗卷之外的任何内容都会丢失。 |
| 构建缓存 | Docker 的构建缓存。下次构建会花更长时间。 |
| 本地宗卷 | 没有任何容器使用的卷。其中的数据(例如数据库和上传内容)会被永久删除。 |
容器列出每个容器的映像、状态、端口、内存和 CPU,如有 Compose 项目也会显示。正在运行的容器有停止…(数据保留);已停止的容器有开始和移除…(宗卷保留)。如果安装了 OrbStack,OrbStack 虚拟机会列出其 Linux 虚拟机,并提供开始和停止…。
清理旧的 node_modules 和构建文件夹
每个 JavaScript 项目都带有一个可能多达数百 MB 的 node_modules,Rust、Python 和 Flutter 项目也有各自的对应文件夹。项目文件会遍历你的个人文件夹(深入六层,跳过资源库、应用程序、媒体文件夹以及各工具自己的隐藏文件夹),逐个项目列出构建文件夹,最大的排在前面。
只有当用于重新生成某个文件夹的文件就在它旁边时,该文件夹才会列出,因此仅仅碰巧名为 build 或 target 的文件夹绝不会被动到:
| 文件夹 | 旁边需要有 | 它是什么 |
|---|---|---|
node_modules | package.json | 下载的软件包;npm install(或 yarn、pnpm、bun)可重新获取 |
.next、.nuxt、.svelte-kit、.turbo、.parcel-cache、.open-next | package.json | 框架的构建输出与缓存 |
.angular | angular.json 或 package.json | Angular 构建缓存 |
.wrangler | wrangler.toml、wrangler.jsonc 或 package.json | Wrangler 的本地状态和缓存 |
target | Cargo.toml | Rust 构建输出 |
.venv、venv | pyproject.toml、requirements.txt 等 | Python 虚拟环境 |
Pods | Podfile | CocoaPods 依赖项 |
.build | Package.swift | Swift Package Manager 构建输出 |
.dart_tool、build、.gradle | pubspec.yaml 或 Gradle 文件 | Dart、Flutter 和 Gradle 的输出与缓存 |
每个项目都会显示你上次更改它的时间,依据你自己的文件和 Git 活动。30 天未改动的项目会自动勾选,日期变为橙色。点按放大镜可在访达中查看文件夹。
- 取消勾选你正要处理的内容。
- 点按将 N 个移到废纸篓…并确认。对话框会显示可释放的空间。
- 下次你处理该项目时,包管理器或构建过程会重新生成这些文件夹。在你清倒废纸篓之前,都可以从历史记录中放回原处。
指南在 Mac 上删除 node_modules介绍了通用方法;“项目文件”则是点一点就能完成的版本。如需清理整台 Mac 的空间,请参阅 Mac 清理。
从你的 AI 助手中使用
Claude、Cursor、Codex 等助手也能通过 OneMacTools MCP 服务器获取相同的读数:端口上运行的是什么、按项目划分的开发服务器、Docker 状态以及旧的项目文件。助手可以在任务进行中询问“谁在占用 3000 端口?”,并得到与你在这里看到的相同答案。停止任何东西仍需你的批准(审批的工作方式)。
问题
Mac 上如何不用终端结束占用端口的进程?
打开“开发与智能体”,选择“开发服务器”,在搜索栏中输入端口号,然后点按该行上的“停止…”。OneMacTools 会请服务器干净地退出并释放端口。被 App 占用的端口列在“其他正在监听端口的 App”下;退出相应 App 即可释放这些端口。
为什么我 Mac 上的 5000 端口已被占用?
macOS 的“隔空播放接收器”会监听 5000 和 7000 端口。“开发与智能体”会将它列在“其他正在监听端口的 App”下。请在“系统设置 › 通用 › 隔空投送与接力”中关闭“隔空播放接收器”,或将你的 App 改在其他端口上运行。
开发服务器上的“向你的网络开放”是什么意思?
该服务器监听所有网络接口,而不仅仅是本机,因此同一 Wi-Fi 下的手机和电脑都能访问它。这便于在手机上测试,但在公共 Wi-Fi 上,你可能更希望将其绑定到 localhost。
OneMacTools 会自行停止我的服务器吗?
除非你要求,否则不会。默认情况下,它只会通知你失控或闲置的进程。在“设置 › 失控进程”中,你可以选择在 15、30 或 60 分钟后停止一直满载 CPU 的进程,或在 1、3 或 7 天后停止未使用的开发服务器。
删除 node_modules 安全吗?
可以,只要旁边有 package.json 即可,“项目文件”会检查这一点。运行 npm install(或 yarn、pnpm、bun)就能恢复。OneMacTools 会将这些文件夹移到废纸篓,在你清倒废纸篓之前,都可以从历史记录中放回原处。
“开发与智能体”支持 Colima 和 OrbStack 吗?
是的。Docker 标签页可读取 Docker Desktop、Colima 或 OrbStack,可以启动 Colima 或打开 Docker Desktop,并列出 OrbStack 的 Linux 虚拟机,提供“启动”和“停止”。