用 Codex 跑长任务的人应该都见过这一行:

Selected model is at capacity. Please try a different model.

它不报错、不退出,就是停在那里等一次点击。人不在电脑前,这一停可能就是几小时。

所以我写了个小工具,盯住 Codex 窗口,出现这个错误就自己去点「重试」。现在我的用法是:扔一个长任务,去干别的,回来接着看结果。

官网(有动图演示、双语、常见问题):
https://yuxi1989.github.io/Codex-RetryPilot/

源码(MIT,核心就一个 main.swift):
https://github.com/yuxi1989/Codex-RetryPilot

装起来

有 Homebrew 的话一条命令:

brew install --cask yuxi1989/tap/codex-retrypilot

没有就下载 dmg 拖进「应用程序」:
https://github.com/yuxi1989/Codex-RetryPilot/releases

macOS 13 起,Intel 和 Apple Silicon 都能跑,已过 Apple 公证,双击直接开,不用右键、不用 xattr。

它是怎么点的

三层,前面能用就不往后走:

- 通过 macOS 辅助功能 API 遍历 Codex 窗口结构,找到「重试」按钮,直接 AXPress。不移动鼠标、不抢焦点,你可以同时在别的窗口打字。

- 按压无效就把点击事件直接投递给 Codex 进程(按 PID 投递,不是全局点击)。

- 兼容模式再加坐标点击兜底:先用截图确认屏幕上真的有「重试」按钮才点,点完把焦点还给你原来的窗口。

顺带做了个「指令接力」

Codex 连续空闲 N 分钟后,自动发送指令队列里的下一条。我拿它跑多步 prompt 链——「先分析、再重构、最后补测试」这种一条条喂的场景。默认不开。

需要说清楚的几件事

- 不绕过限流。 只是代替你点按钮。服务端真忙时它也无能为力,只能继续重试。没有 API key、没有代理、不碰请求。

- 不联网。 无遥测、无自动更新、不上传日志和截图,配置存本地 JSON。我没链接任何网络库,可以 otool 自己验。

- 权限要两项。 辅助功能(找按钮按按钮)+ 屏幕录制(只有一个用途:坐标点击前确认按钮真的在)。自动化权限可选,用来归还焦点。

- 找不到就不点。 三层都要求先在 AX 树里找到标题匹配「重试 / Retry / 重試」的按钮,坐标点击还要额外截图确认。

比较想听的是它在你机器上失灵的情况:Codex 版本不同、窗口布局不同、缩放不同,都可能让按钮定位失败。遇到了把日志贴给我(~/Library/Application Support/CodexRetry/),我按你的情况改。

主楼