Codex 远程唤醒怎么做:Remote、Slack 和 App Server 该选谁
假设一台 Mac mini 上有个 Codex Agent,能够自己接任务、改代码、跑测试,连续工作几个小时。
真正棘手的问题往往不是怎样让它开始,而是它做到一半发现需求不清楚、需要批准一条命令,或者准备汇报阶段结果时,怎样找到已经离开电脑的我。
很多人的第一反应是接 Telegram、Slack 或企业微信。我的判断是:如果这是我自己的 Mac mini,最合适的第一选择不是再造一个聊天机器人,而是使用 ChatGPT Remote;只有 Agent 是自建的常驻进程,或者需要进入团队协作频道时,才值得用 Codex App Server 接 Slack 或 Telegram。
因为所谓“远程唤醒”,其实混合了三件不同的事:
- 触发:人在外面时给 Agent 一个新任务;
- 通知:Agent 完成、失败或卡住时主动提醒人;
- 对话与控制:人回答问题、批准操作、改变方向,并继续同一个任务。
Webhook 能解决通知,聊天软件能提供界面,但只有把任务状态、权限和后续对话接回同一个 Agent 线程,才算真正的远程控制。
Mac mini 个人值守,ChatGPT Remote 已经覆盖了闭环
ChatGPT Remote 官方文档给出的使用方式非常接近这个场景:Codex 继续运行在已经连接的 Mac、Windows 或 SSH 主机上,手机则成为控制面。
在手机上可以开始或继续同一个聊天、发送后续要求、回答 Agent 的问题、批准操作、查看 diff、测试和终端输出。任务结束或需要注意时,Remote 还会发出通知。正在执行的任务既可以 Queue 一条消息,让它在下一轮处理,也可以 Steer,把新指示注入当前工作过程。
这比自建 Telegram Bot 少掉了最难维护的一层:会话映射。
Agent 在电脑上拥有什么仓库、Shell、MCP、Skill 和浏览器能力,仍然由这台电脑提供;手机只负责提示、审批和接管。权限沙箱也不会因为远程访问而消失。它不是把 Mac 的终端暴露到公网,而是通过安全中继连接已登录的设备。
它也有明确前提:
- Mac mini 必须保持开机、联网,ChatGPT 桌面应用保持运行;
- 手机和主机使用同一个账号及工作区,并完成配对;
- 持续访问最好使用本来就长期在线的机器;笔记本睡眠、断网或退出应用都会中断连接;
- Remote 提供的是“Agent 到关键节点提醒我,然后我进入同一对话处理”,不是让 Agent 任意给联系人发送私信。
对于一台常开的 Mac mini,这些限制反而很匹配。它天生适合承担执行端,手机承担随身控制端。
四种接入方式,解决的不是同一个问题
把常见方案放在一起,差别会更清楚:
| 方案 | 能主动提醒 | 能继续原任务 | 能审批与回答 | 更适合什么 |
|---|---|---|---|---|
| ChatGPT Remote | 可以 | 可以,直接回到同一聊天 | 可以 | 个人远程值守自己的电脑 |
| Codex 原生 Slack 集成 | 可以在频道回帖 | 继续对应的云端任务 | 适合频道协作 | 团队从 Slack 派发 Codex Cloud 任务 |
| App Server + Slack/Telegram | 由自己实现 | 可以,需维护线程映射 | 可以,需实现按钮和回调 | 自建常驻 Agent、定制工作流 |
| Hook/CLI 通知 + Webhook | 可以 | 通常不行 | 不适合作为完整对话 | 完成、失败等单向告警 |
邮件也能发送通知,但不适合高频的人在回路(Human-in-the-loop)协作。邮件延迟高,审批体验差,也很难可靠地把一次回复关联到正确的 Agent、线程、轮次和待回答问题。它更适合日报和审计摘要,不适合中途接管。
所以,“接入什么聊天软件”不应该是第一个问题。第一个问题应该是:我要控制的是 ChatGPT 里正在运行的 Codex,Codex Cloud 任务,还是我自己实现的 Agent 进程?
原生 Slack 适合团队派单,但不是本地 Agent 的遥控器
Codex 的官方 Slack 集成允许团队在频道或帖子里 @Codex,由此创建 Codex Cloud 聊天,并把结果发回 Slack。
它很适合这样的场景:产品经理在问题讨论串里叫 Codex 调查一个 Bug,工程师都能看到任务和结果,代码仓库与云端环境也已经配置好。
但它不等于“连接我 Mac mini 上已经跑了三小时的那个 Agent”。原生集成创建的是云端任务;如果仓库和环境信息不够明确,还可能根据最近使用记录或默认设置选择目标。
因此我会这样区分:
- 团队共享、云端执行、从频道发任务:用原生 Slack 集成;
- 个人电脑、本地工具链、需要接回当前工作现场:用 ChatGPT Remote;
- 已有自建 Agent 守护进程,还要接公司内部流程:自己做 App Server 桥接。
不要因为团队平时使用 Slack,就默认所有 Agent 都应该从 Slack 启动。聊天入口相同,不代表执行环境和会话状态相同。
自建常驻 Agent,App Server 才是正确的控制面
如果这个“全自动 Agent”不是 ChatGPT 桌面应用里的一个聊天,而是我写的服务:它从任务队列取工作、按照计划循环执行、可能运行数天,那么 Remote 就不再是完整答案。
这时更稳妥的结构是:
1 | 手机上的 Slack / Telegram |
Codex App Server提供双向 JSON-RPC 接口。客户端可以创建或恢复 thread,开始新的 turn,在工作过程中 steer,并持续接收 Agent 消息、工具执行和任务状态事件。Agent 需要人回答时,可以发出 tool/requestUserInput;需要授权时,也有对应的审批请求。
Slack 或 Telegram 在这套架构里只是交互外壳。真正保存任务状态的是 Relay 和 App Server。Relay 至少要做好下面几件事:
| App Server 事件 | Relay 应怎样处理 |
|---|---|
turn/started |
更新频道状态,不必每次都打扰人 |
| Agent 消息与进度事件 | 聚合、限流,定期发送阶段摘要 |
tool/requestUserInput |
发送高优先级问题,并把回复关联到原 request |
| 审批请求 | 显示具体动作、影响范围与允许/拒绝按钮 |
turn/completed |
发送结果、diff、测试与下一步摘要 |
| 失败或超时 | 告警,并保留恢复 thread 所需的标识 |
这里最容易低估的是关联关系。每条外部消息都需要知道自己属于哪个 threadId、turnId 和 requestId;按钮需要幂等,重复点击不能执行两次;等待人的问题需要过期时间,超时后 Agent 应该停止、采用安全默认值,或者转入待处理队列。
这也是为什么我不建议直接写一个脚本,把 Agent 输出原样转发到 Telegram。能把消息发出去,只完成了“门铃”;能把人的回答安全地送回正确一轮任务,才有了“对讲机”。
Hook 适合做门铃,不适合承担整套对话
Codex 的生命周期 Hooks可以在工具调用、权限请求、任务停止和会话结束等节点执行脚本;通知能力也可以在一轮结束时调用外部程序。
因此,用 Hook 调一个 Webhook,把“测试已经完成”或“任务失败”发送到手机,是低成本而实用的方案。
但 Hook 本身不是会话协议。后台 Hook 不会凭空开启新一轮对话,脚本也没有自动解决身份、线程恢复、问题应答和审批语义。把 Hook 不断扩展成双向机器人,最终还是会重新实现一套简化版 Relay。
我的边界是:
- 只要完成和失败通知:Hook 或 CLI notification 足够;
- 需要我回来继续同一个 Codex 聊天:Remote;
- 需要外部聊天软件驱动自建 Agent:App Server + Relay。
不要把 App Server 直接暴露到公网
App Server 默认支持标准输入输出的 JSONL,也支持 Unix socket;WebSocket 传输仍属于实验能力。官方文档特别提醒,非本机回环地址如果没有额外认证并不安全,不应该直接暴露在共享网络或公网。
更安全的做法是让 Relay 和 App Server 位于同一台 Mac mini,通过 stdio、Unix socket 或 127.0.0.1 通信;Relay 只建立出站连接,接收 Slack/Telegram 平台经过签名验证的 Webhook。必须跨机器时,再使用 VPN、mesh 网络或受控 SSH 隧道。
除此之外,还应保留这些边界:
- 只允许指定账号和频道控制 Agent;
- 审批消息必须展示将要执行的真实命令或外部写入;
- 高风险动作不能因为“来自我的手机”就永久免审;
- 对进度消息做合并和节流,只有需要人时才强提醒;
- 保存最小必要审计记录,同时避免把密钥、代码和终端输出完整复制到第三方聊天平台;
- Agent 长期无人应答时进入安全停顿,而不是自己扩大权限继续尝试。
远程控制的价值是让人离开桌面,不是让安全边界也一起离开。
最后怎么选
如果今天就要给一台 Mac mini 上的 Codex 增加远程值守能力,我会按这个顺序做:
- 先启用 ChatGPT Remote,验证手机通知、继续对话、Queue、Steer 和审批是否已经覆盖日常需求;
- 只有通知不够时,再用 Hook 把少量关键事件发到现有告警渠道;
- 只有 Agent 已经是独立守护进程,才实现 App Server Relay;个人偏 Telegram 的轻量体验,团队偏 Slack 的身份、频道和审计能力;
- 原生 Slack 集成留给 Codex Cloud 的团队派单,不把它误当作本地会话接管工具。
一句话总结:个人远程值守选 Remote,团队云端派单选原生 Slack,自建无人值守 Agent 选 App Server 加聊天桥接,Hook 只负责敲门。
最好的接入方式,不是消息能到达最多平台,而是在 Agent 真正需要人时,用最少的中间层把人带回正确的任务、正确的轮次和正确的权限边界。
资料与口径
- OpenAI:ChatGPT Remote,远程连接、移动端控制、通知、Queue/Steer 与安全边界
- OpenAI:Mastering Codex Remote for Engineering,手机控制面与长任务工作流
- OpenAI:Codex App Server,thread、turn、steer、用户输入请求、审批与传输协议
- OpenAI:Hooks与Notifications,生命周期事件与单向通知能力
- OpenAI:Codex in Slack,Slack 中创建 Codex Cloud 任务的适用边界
- 查询日期:2026-08-15。Remote 可用范围、移动端入口、Slack 集成和 App Server 协议仍可能变化,落地前应重新核对官方文档。