我为什么给自己做了一个 iMessage 到 Codex 的小网关

有一段时间,我经常遇到一个很具体的小问题。

人不在电脑前,手机在手边,突然想让家里的电脑帮我查一件事、整理一段文字、判断一个配置问题,或者只是确认某个后台任务还在不在跑。

这类事情不大,不值得打开一套完整远程桌面,也不一定适合在手机上长时间操作。它更像是随手发一句话,然后家里的电脑替我跑一个受限的小任务,再把结果回给我。

所以我做了一个很小的 iMessage 网关。

它的逻辑并不复杂:我在手机上发一条带固定前缀的 iMessage,家里的 Mac 收到以后,把这句话交给本机 Codex,Codex 处理完,再通过 iMessage 把结果回给我。

听起来像是把 AI 接进了短信,其实我真正想解决的不是“炫技”,而是两个问题。

第一个问题是入口。

很多工具都很好,但入口太重。远程桌面要连,浏览器要开,账号要登录,界面要切换,网络还可能不稳定。人到中年以后,我越来越不喜欢为了一个小动作打开一整套复杂流程。

如果一个需求只需要一句话开始,那它最好真的能用一句话开始。

第二个问题是边界。

让手机远程触发家里的电脑,这件事听起来方便,但如果边界没设计好,就会很危险。它不能变成一个谁都能发命令的远程控制口,也不能让 AI 随便读我的项目、改我的文件、调用我的插件、登录我的账号。

所以这个小网关从一开始就被我设计成“薄”的。

它只认一个已经配对过的一对一会话,只认一个固定前缀。没有开放 HTTP 端口,没有 WebSocket,没有公网入口。消息正文只在处理时经过内存,不保存完整聊天内容。

更重要的是,它调用 Codex 时走的是一次性任务模式,而且限制为只读。它有一个单独的空工作目录,不默认读取其他项目。它不加载我的个人 Codex 配置,不调用插件、MCP、浏览器、Computer Use,也不做图片生成和多代理。需要最新公开资料时,只允许使用内置的只读网页搜索。

也就是说,我要的不是“手机控制电脑”,而是“手机请求电脑替我问一个受限的问题”。

这两者差别很大。

iMessage 到 Codex 网关的受限流程

当然,这两面还有一些细节需要强调,iMessage本身加密,安全足够,不需要vpn,不需要远程权限,更关键的是,就我自己用。

我后来发现,做这类个人自动化,最容易犯的错误就是一开始贪大。

总想做成一个完整 App,带多用户、审批、仪表盘、权限系统、历史记录、任务队列。那些东西当然有价值,但对我自己的真实需求来说,第一版根本不需要。

我真正需要的只是:

手机能发起;
Mac 能收到;
Codex 能回答;
结果能回来;
出了问题我能知道;
它不能乱动我的东西。

这就够了。

这个思路其实可以推广到很多个人工具里。一个工具是否值得做,不取决于它像不像正式产品,而取决于它有没有真正减少生活里的摩擦。

比如我不需要每天远程操作 Mac,但我确实需要偶尔确认一件事。我不需要把 AI 放进所有地方,但我确实需要在某些时刻,让它离我更近一点。

技术辅助的意义也在这里。

不是把生活变得更复杂,不是把所有东西都自动化,更不是把自己交给系统。好的技术辅助,应该让人少记一点、少切换一点、少焦虑一点,同时保留必要的控制感。

我现在越来越相信,个人工具的第一原则不是强大,而是克制。

能不联网的地方不要联网,能不写入的地方不要写入,能不保存的地方不要保存,能只给自己用就先只给自己用。

很多时候,真正有用的不是一个庞大的系统,而是一条小而可靠的路径。

手机发一句话。

家里的电脑安静处理。

结果回到手机。

中间没有多余的门,也没有多余的手。

这就已经很好。

愿你莫白来,与君共勉。


本文是个人技术实践记录,不构成安全方案、产品推荐或部署指南。涉及远程触发、自动化执行和消息处理的工具,都应根据自己的设备、账号、权限和风险承受能力谨慎设置;不建议在不了解边界的情况下开放公网入口、保存敏感消息或授予自动化工具写入权限。

文章皆为原创,转载文章请注明出处。人到中年,记录人生修行、赚钱投资与技术辅助。愿你莫白来。