别再背着电脑等 Codex:把 Mac mini 变成 24 小时在线的远程工作站|iPhone + MacBook Air 完整攻略

我以前出差时有一个很具体的烦恼。

在 MacBook Air 上把任务交给 Codex,刚跑到一半就要登机、坐车或者换地方。笔记本一合盖,最担心的不是少工作十分钟,而是一个本来可以继续推进的长任务被硬生生打断。

后来我换了一个思路:不要让 Air 承担“必须一直开机”的角色。

我把家里的 Mac mini 设成常开的 Codex 主机。项目、账号、插件、浏览器环境和本地工具都留在 Mini 上;出门以后,MacBook Air 和 iPhone 只负责发指令、看进度、回复问题和批准下一步。

这样一来,Air 发完任务就可以合盖进包。路上想看 Codex 做到哪了,拿出 iPhone 就能继续。

这不是远程桌面

先把最容易误解的地方说清楚。

Codex Remote 不是把 Mac mini 的桌面画面压缩后传到手机上,也不需要我在路由器上开放端口。它更像是把同一个 Codex 工作现场同步到经过授权的 ChatGPT 客户端。

手机和 Air 能看到 Mini 上正在运行的任务、终端输出、截图、测试结果、差异和审批请求;真正的文件、凭据、插件和执行环境仍然留在 Mini。

这也是它比传统远程桌面更适合长任务的原因:我不需要盯着一块缩小的 Mac 屏幕找按钮,只需要继续对话。

准备工作

开始之前,三台设备最好都更新到最新版:

- Mac mini:安装并登录最新版 ChatGPT/Codex 桌面客户端;

- MacBook Air:安装最新版 ChatGPT 桌面客户端;

- iPhone:安装最新版 ChatGPT App;

- 三台设备使用同一个 ChatGPT 账号和工作区;

- Mac mini 保持联网,ChatGPT/Codex 客户端保持运行。

Remote 仍处于逐步开放阶段。如果 Air 上暂时看不到“控制其他设备”,先更新客户端,再确认账号和工作区是否已经获得这项能力。

第一步:把 Mac mini 设成可远程控制的主机

在 Mac mini 打开 ChatGPT/Codex 桌面客户端,进入:

设置 → 连接 → 控制这台 Mac

打开“允许连接”,再选择“设置”或“添加”。客户端会要求确认账号,并生成用于配对的二维码。

这里还有一个非常重要的开关:

保持这台 Mac 唤醒

打开以后,只要 Mini 接着电源、网络正常,并且客户端仍在运行,它就更适合承担长期任务。主动点“睡眠”、断网或退出客户端,远程连接仍然会停止。

我更推荐 Mini,而不是另一台笔记本当主机。它没有合盖这件事,功耗低,长期插电也更自然。项目文件、开发依赖、MCP、技能和浏览器登录状态也可以一直留在同一套环境里。

第二步:让 iPhone 接入 Mac mini

在 iPhone 打开 ChatGPT App,进入 Remote(远程)。

用手机扫描 Mac mini 客户端显示的二维码,确认使用的是同一个 ChatGPT 账号和工作区,再完成可能出现的双重验证、SSO 或 Passkey 验证。

配对成功以后,Mac mini 会出现在 Remote 的主机列表中。点进去,可以继续已有任务,也可以在 Mini 的项目里新建任务。

手机端能做的事情比我最初想象得完整:

- 发送新指令和补充要求;

- 回答 Codex 的澄清问题;

- 批准命令和其他操作;

- 查看终端输出、截图、测试结果和代码差异;

- 在多个任务和多台已连接主机之间切换。

二维码相当于设备配对入口,不要放进公开截图。手机丢失或不再使用时,回到 Mini 的“设置 → 连接”里移除对应设备。

第三步:让 MacBook Air 控制 Mac mini

在 Air 的 ChatGPT 桌面客户端进入:

设置 → 连接 → 控制其他设备

选择“设置”,把 Mac mini 添加为可控制主机。功能开放后,一台电脑可以同时允许别人控制,也可以控制另一台设备。

连接完成后,先不要急着跑正式工作。我会新建一个测试任务,让 Codex 执行:

hostname
pwd

hostname

pwd

确认返回的是 Mac mini 的主机和项目路径,而不是 Air 本机。这个小测试可以避免“看起来连上了,实际任务还跑在笔记本上”的误判。

如果 Air 上没有“控制其他设备”,还有一条更偏开发者的路线:通过 SSH 把 Mini 上的项目添加到桌面客户端。不过这和 Remote 不是一回事,配置复杂度也更高。普通使用优先选 Remote。

第四步:实际流畅度怎么样

我在 Air 上通过远程连接读取 Mini 上的现有任务,连续做了两组各五次测试。

第一组:刷新远程任务状态

- 最快 1.51 秒;

- 最慢 1.65 秒;

- 平均 1.56 秒。

第二组:打开远程任务并读取最新内容

- 最快 2.46 秒;

- 最慢 3.04 秒;

- 平均 2.64 秒。

这个速度不是本地窗口那种“点下去立即出现”,但已经足够流畅。因为我操作的不是远程鼠标,而是在发消息、看状态和做审批。两三秒的同步时间,对一个本身可能要运行十几分钟甚至几小时的 Codex 任务来说,几乎不会打断思路。

iPhone 端的主观体验也更像普通聊天,而不是远程桌面。短指令和审批通常很快就能送达;截图、较长的终端输出和大段 diff 会更受移动网络影响。网络差的时候,文字状态往往先到,重内容稍后出现。

我真正关心的不是 50 毫秒还是 100 毫秒,而是三个问题:

1. 能不能在路上及时看到 Codex 卡在哪里;

2. 能不能马上回答它的问题,不让任务空等;

3. 能不能在不打开电脑的情况下批准下一步。

这三件事,远程连接都解决了。

第五步:出差路上怎么用

现在我的实际工作流变成了这样:

出门前,Mac mini 保持通电和联网,ChatGPT/Codex 客户端保持运行。

在高铁站、机场或咖啡店,我用 MacBook Air 打开 Mini 上的任务,把需要完整键盘输入的背景、文件要求和验收标准一次说清楚。

指令发完,Air 直接合盖,放进包里。

Codex 继续使用 Mini 上的文件、凭据和工具工作。它需要选择方案、补充信息或批准命令时,我在 iPhone 的 Remote 里处理。

到了目的地,再拿出 Air,继续打开同一个任务,查看完整 diff、终端输出和最终结果。

这套方式解决的不是“手机也能写代码”这种噱头,而是把长任务从笔记本的开合状态里解放出来。

Air 变成了适合认真输入和审阅的大屏控制器,iPhone 是随时在线的遥控器,Mac mini 才是那个一直工作的主机。

几个容易踩的坑

1. 主机显示离线

先检查 Mini 是否睡眠、断网或退出了客户端。远程连接依赖主机保持在线,并不是关机后还能继续运行。

2. 手机看不到 Remote

更新 ChatGPT App,确认手机与 Mini 登录的是同一个账号和工作区。如果是团队工作区,还要确认管理员已允许 Remote Control。

3. 重新登录后远程控制关闭

退出 ChatGPT 会关闭 Remote Control,但通常不会删除已经完成的设备配对。重新登录后,再把 Remote Control 打开。

4. 一直卡在连接中

重启 Mini 上的客户端,再重新添加设备。如果平时使用 Clash 或其他 VPN,Remote 通常不需要你额外开放公网端口;但规则或代理异常可能影响长连接,可以先确认 ChatGPT 正常联网,再切换规则排查。

5. 需要操作浏览器或桌面软件

在 Mini 的连接设置中打开 Computer Use,并按需要安装浏览器扩展。远程会继承 Mini 上已经允许的权限,但原有的沙盒和操作审批并不会消失。

安全边界

官方的 Remote 使用安全中继层连接受信任设备,不要求把 Codex App Server 直接暴露到公网。

这不等于可以忽略安全:

- 只配对自己控制的设备;

- 开启 ChatGPT 账号的双重验证或 Passkey;

- 定期检查 Mini 上的已连接设备;

- 对删除、发布、付款、权限修改等操作保留审批;

- 不在公开截图里出现二维码、账号、项目名、主机名和路径。

为什么我会长期保留这套设置

第一,它让 Mac mini 真正变成了一台 24 小时可调用的工作机器。

我不必把所有项目复制到 Air,也不必为了一个长任务让笔记本一直摊在桌上。只要 Mini 不睡眠、不掉线,计算环境就一直在那里。

第二,它解决了出差途中最真实的痛点:笔记本一定会合盖。

以前合盖意味着“工作暂停”。现在合盖只代表我暂时不用大屏。任务仍然在 Mini 上推进,iPhone 随时可以让我回来回答一句话、批准一个步骤,或者发现方向不对时马上纠偏。

这才是我觉得 Codex Remote 最有价值的地方。

它不是让人 24 小时工作,而是让机器在合适的时候继续工作,而我只在真正需要判断时出现。

参考资料:

OpenAI Remote connections:https://learn.chatgpt.com/docs/remote-connections

OpenAI《Work with Codex from anywhere》:https://openai.com/index/work-with-codex-from-anywhere/