×−+
自动化与远程第 13 课 · Codex 教程
第 13 课 · AUTOMATION & REMOTE

自动化与远程:
你不在电脑前,它也在干活

前面十二课,Codex 干活时你都坐在电脑前。这一课让它更独立:到点自己开工的定时任务,在地铁上用手机遥控家里的电脑,在 GitHub 的 PR 里 @ 它一声就来审代码。学会之后最要紧的是分清两件事:每种方式在哪台机器上跑,越界时谁来批准。

约 35 分钟 11 节 · 6 个动手练习 章末测验 形式参考 luongnv89/claude-howto · 事实依据 OpenAI 官方文档
一个周一上午(示意)点每个时间点看看
入门先用起来 原理弄懂为什么 实战动手练 深入进阶与避坑

时间紧就先看"入门"和第 7 节的演练;定时任务要真正放心地交出去,第 3 节的"没人盯着时的权限"一定要看。

01入门

不在电脑前,也能让它干活

四种方式,按"在哪跑"分成两类:前两种用的是你电脑上的项目,电脑得开着;后两种跑在 Codex Cloud 上,关了电脑也照跑。

定时任务
像定好的闹钟,外加一张写好的便条。到点照着提示词干一次活,结果放进侧栏的 Scheduled。你的电脑第 2–4 节
手机 Remote
像遥控器,电视还在家里。在 ChatGPT 手机 App 里看进度、点批准、看改动、开新对话。你的电脑第 5 节
GitHub / GitLab
像在 PR 里 @ 一位同事。写 @codex review 请它审;写 @codex 加一句话请它去改。Codex Cloud第 6 节
Slack / Linear
像在群里、工单里派活。在 Slack 频道里 @ChatGPT,或者把 Linear 工单指派给 Codex。Codex Cloud第 9 节

定时任务在哪里建、在哪里管

入口定时任务说明
ChatGPT 桌面 App能建、能管能用你电脑上的本地项目,在项目文件夹或 worktree 里跑。本课主线。
ChatGPT 网页版能建、能管工作区开了这个功能才有。能用上传的文件和连接的工具,但碰不到你电脑上的文件夹。
Codex CLI、IDE 扩展没有管理界面可以先在里面把提示词、skill、脚本调好,再到 App 或网页版里定时。
本课的前提

示例项目 order-admin 已经在第 12 课连好了 GitHub,也发布了 Codex Cloud 环境;第 7 课给它的项目配置开了网络,所以 npm 联网不用每次批准。GitHub、GitLab、Slack、Linear 这几种集成,都要先把仓库连到 Codex、备好云端环境。

02入门

定时任务:定好闹钟,写好便条

定时任务(Scheduled tasks)就是:到点让 Codex 照一段写好的提示词干一次活。所有任务和每次运行的记录,都在侧栏的 Scheduled 里。

闹钟:什么时候跑独立定时任务:每天、每周几、每月几号(自定义日程);在对话里定时:按分钟间隔,或者每天、每周。
便条:每次做什么一段提示词。它每次都照着这张便条干,所以要写得比平时更完整(第 4 节)。
操作手册:具体怎么做(可选)流程固定的活,写成 skill(第 8 课),在提示词里用 $名字 点名。官方建议:skill 定方法,定时任务定时间。

两种定时,差在"每次从哪开始"

独立定时任务在对话里定时
每次运行新开一个对话,从保存的提示词开始回到同一个对话,带着之前的上下文接着做
结果在哪Scheduled 里,每次一条运行记录写回那个对话
频率自定义日程;复杂的写 RRULE(第 10 节)按分钟间隔,或者每天、每周的某个时间
适合每次互不相干的检查;一个任务跑多个项目盯着一件正在进行的事直到结束;持续的调研、审查循环
提示词还要写每次做什么、怎样算完成另外写清:什么情况值得报告、什么时候停下或来问你

在哪跑:本地项目还是 worktree

Worktree在一份单独检出的副本里跑(第 12 课),改动和你手上没做完的活分开。想隔离,就选它。
本地项目直接在你的项目文件夹里跑。如果提示词让它改文件,可能改到你正在编辑的文件。
不是 Git 仓库的项目没得选,直接在项目目录里跑。
用本地项目的定时任务,三个前提

① 这台电脑开着;② ChatGPT 桌面 App 开着;③ 项目文件夹还在原来的位置。到点时电脑睡着了、App 关了,这次就跑不了。

Scheduled 视图:定时任务的收件箱

有发现的运行会出现在这里;需要你看的,会标一个未读点。下面是示意:

怎么建一个

1
先在普通对话里试跑官方建议:定时之前,先手动跑一遍这段提示词,确认范围清楚、模型和工具表现正常、结果好审。
2
在对话里直接说,或者去 Scheduled 里建比如"把这个定成每周一早上 9 点,在 worktree 里跑,每次新开一个对话"。说清楚做什么、什么时候跑、每次回到这个对话还是新开对话,Codex 会帮你起草提示词、建好任务;以后改范围、改时间也可以这样说。
3
看头几次的结果,再调结果太泛、缺上下文,就改提示词、工具或频率。模型和推理强度可以用默认,也可以给这个任务单独选。
03原理

没人盯着时,它能做什么

定时任务是无人值守的。你设的沙箱照样生效,但没有人点"允许":在组织允许的默认情况下,越界的操作不会停下来等你,而是直接失败。

第 3 课讲过,权限是两层:沙箱管它能碰什么,审批管什么时候停下来问你。定时任务的规矩是:

  • 沙箱:用你默认的沙箱设置。
  • 审批:组织允许的话,用 approval_policy = "never",也就是从不停下来问。所以沙箱外的事,要么事先放行,要么做不成。
  • 如果管理员用 requirements.toml 禁止了 never,定时任务退回你所选权限档位的审批方式。

试一试:同一个定时任务,换一种沙箱

假设这是 order-admin 的依赖检查任务,而且项目还没开网络(默认设置)。切换三种沙箱:只读(read-only)、工作区可写(workspace-write,默认)、Full access,看它想做的几件事各自会怎样:

"失败"指这一步做不成,不等于整个任务报废,所以提示词里最好写上"做不成时怎么办"。规则依据官方 Scheduled tasks 页的"权限与安全"一节,表格为示意。像第 7 课那样给项目开了网络(network_access = true)的话,工作区可写沙箱本身就允许联网,npm outdated 这一步能照做,演练里就是这样。
  • 从最窄的权限开始,真需要联网、需要更大的文件权限时再给。
  • 放行一条具体命令,用 Rules(第 10 课)实验在沙箱外放行它,比整个放开好。
  • 别用 Full access 跑定时任务:它可能不问你就改文件、跑命令、联网,没人盯着时风险更高。官方建议改用"工作区可写 + Rules"。
  • 最稳的设计:让定时任务只出报告,要不要改、要不要推送,你看完报告再决定。
04实战

动手:写一个定时任务

选类型、频率、时间和运行位置,再写提示词。预览卡片会生成摘要和下次运行时间;提示词下面的体检会查它有没有写完成标准。先点几个示例看看。

类型
频率
星期
日期
每月号
时间
:
间隔
每分钟
运行位置
示例:
提示词体检

界面为示意:真实 App 里的选项和叫法以你的 App 为准。下次运行时间按你电脑现在的时间推算;频率只列了文档写到的几种。

05入门

手机 Remote:遥控家里的电脑

Codex Remote 是 ChatGPT 手机 App 里的功能。手机就像遥控器:你在手机上发指令、点批准、看结果,活还在那台开着桌面 App 的 Mac 或 Windows 电脑上干。

第一次连上:四步

1
在电脑上开始设置打开 ChatGPT 桌面 App,进 Settings > Connections > Control this Mac or PC,点 Set up 或 Add,允许远程访问,完成要求的验证。只能从桌面 App 开始,CLI 和 IDE 扩展里设置不了。
2
用手机扫二维码扫电脑上显示的二维码,会打开手机上的 ChatGPT。一个二维码只配对这台手机和这台电脑;有几台电脑,就分别配对几次。
3
在手机上确认确认是同一个 ChatGPT 账号、同一个工作区,完成多重验证、SSO 或通行密钥(如果要求)。只连你自己的、信得过的设备。
4
打开 Codex,开始用在手机 App 里打开 Codex(iOS 新版的入口叫 Codex;你的 App 还显示 Remote 的话就点它),选这台电脑,开一个新对话,或接着一个旧对话。电脑要保持唤醒、联网。
在手机上能做说明
开新对话、接着旧对话选电脑、选项目、说任务;也能接着电脑上已有的对话
中途插话、回答问题跟在电脑前一样,发补充说明、纠正方向
批准命令和操作它要越界时,批准卡片会出现在手机上
看结果回复、改动的文件和 diff、测试结果、终端输出、截图
收通知任务做完、或者需要你的时候

什么来自电脑,什么来自手机

手机只负责发出提示词、批准和后续消息。项目文件、命令、MCP 服务器、skill、浏览器、登录状态,全都用那台电脑上的;电脑上的沙箱、安全设置和批准规则,在远程时照样生效。手机和电脑之间走一层安全中继,电脑不会直接暴露在公网上。

让电脑一直能连上

电脑睡着、断网、关了 App,远程就断了。当远程主机用的电脑,最好接上电源,在 Settings > Connections 里打开保持唤醒(有这个选项的话)。Mac 笔记本开盖接电能一直连着;合上盖子就要接外接显示器;选了"睡眠"就会断。Windows 上用到 Computer Use 的任务,要保持登录会话不锁屏。

试一试:为什么连不上

打开或关掉下面的条件,看手机还能不能连上家里的电脑。

如果是 Mac 笔记本:

Remote 按批次开放,能不能用还要看你的工作区设置。手机上找不到入口(iOS 新版叫 Codex,旧版叫 Remote),先把 ChatGPT 手机 App 更新到最新。

06原理

GitHub 上的 @codex:请它审 PR

在 PR 的评论里写 @codex review,就像请一位只挑大毛病的同事来审。它读这个 PR 的改动,照着仓库里的规矩,发一份标准的 GitHub 代码审查。

先准备好

  • 这个仓库连好了 Codex Cloud(第 12 课)。
  • 在 Codex 的代码审查设置里选这个仓库,打开 Review code 下面的 Automatic review,这个仓库就开了代码审查。想让你自己的 PR 都自动审,再打开 Personal preferences 里的 Automatic review,用 Review trigger 选什么时候审:不用评论它也会审。配置自动审查需要这个仓库的推送或管理权限。
  • 想让它照你的规矩审,准备好 AGENTS.md(第 5 课),下面细说。

试一试:这条评论会让 Codex 做什么

在评论框里写一句,或点下面的示例。

你

GitHub 上的审查只标 P0 和 P1 两级高优先级问题,评论少而准。没看到回应,先查三件事:这个仓库的代码审查开没开、仓库有没有连到 Codex、触发词是不是原样的 @codex review。

告诉它审什么:Code Review Rules

Codex 会在仓库里找 AGENTS.md,照其中的 ## Code Review Rules 一节审。规则写在离它管的代码最近的那个文件里:全仓库的放根目录,只管接口的放 src/api/AGENTS.md(第 5 课写过的那份)。每个改动的文件,都按根目录加上更近那份的规则来审。用 ### 小标题分组。

src/api/AGENTS.md(追加一节)
## Code Review Rules

### 订单接口
- 列表和导出接口不能返回完整的手机号和收货地址。
  安全做法:只返回脱敏字段(手机号保留后 4 位)。
- 金额一律按"分"存整数,不要用浮点数计算。
  例外:只在展示层格式化成"元"。
  • 先写两三条,写审查人经常要解释的那类问题。
  • 写后果和安全做法:为什么要紧、怎样才算没问题,它才分得清真问题和正常写法。
  • 写结果,不写会改名的函数名;规则放在离代码近的地方。
  • 格式、lint 这类机械检查留给 CI,别写进审查规则。
  • 规则只是指导,代替不了测试、分支保护和必需的人工批准。拿一个有代表性的 PR 试审,看结果再增删。
在 App 里审本地改动:/review

还没推到 GitHub 的改动,在桌面 App 的输入框里打 /review,选 Review against a base branch(和基准分支比)或 Review uncommitted changes(没提交的改动)。它只报按优先级排好的问题,不改你的文件,结果作为行内评论出现在审阅面板里。项目在 PR 分支上、装好并登录了 GitHub CLI(gh auth login)时,App 还能直接显示这个 PR 的评论,让你在同一个对话里处理。

07实战

演练:一个周一上午

周五下午把依赖检查定成每周一的任务;周一在地铁上用手机看报告、批准一次提交;再到 PR 上请 Codex 审一遍。点"开始"一步步回放,中途的批准卡片你可以自己点。

画面为教学示意:包名、PR 编号、审查内容和 Codex 说的话都是虚构的;手机和 PR 页面只画功能,不是真实界面。定时、Remote、审查的基本规则依据官方文档,手机通知和 PR 上 Codex 的回复是示意。

08实战

练一练:这件事交给谁

8 个场景,每个选一种最合适的方式。选完会看到解析。

09入门

Slack、Linear、GitLab,还有通知

从团队常用的工具里直接派活,派出去的活都跑在 Codex Cloud 上。每个一句话讲清楚,再看怎么让 Codex 在需要你的时候叫你。

在哪怎么叫它结果回到哪要先准备
GitHubPR 评论里 @codex review,或 @codex 加任务PR 上的审查;改动推回分支(有权限时)GitHub 仓库连到 Codex;为仓库打开代码审查
GitLab BetaMR 评论里 @codex review,或 @codex 加任务MR 上的讨论和备注连好 GitLab;为项目建云端环境(GitLab.com 上审查也要),建时打开 Enable Codex activity from GitLab
Slack频道里 @ChatGPT 加任务,写上是哪个仓库讨论串里:开工时回一条,做完贴结果工作区管理员部署好 Slack 应用、开了 Cloud delegation;有一个共享给工作区、已发布的云端环境
Linear把工单指派给 Codex,或评论里 @Codex工单的 Activity 里写进度,做完贴总结和链接连好 GitHub、建好环境;装 Codex for Linear
  • Slack:现在叫的是 @ChatGPT,不再是 @Codex。要改代码时,它把活交给一个单独的 Codex Cloud 任务,用你的账号跑,只从共享给工作区的云端环境里挑,你的个人环境不算。所以请求里写清仓库,比如 @ChatGPT 查一下 acme/order-admin 里退款测试为什么挂了,给个修法;接着改就在同一个讨论串里再 @ChatGPT。跨组织共享的 Slack Connect 频道用不了。
  • Linear:在 Linear 的分诊规则(Triage rules)里选 Delegate > Codex,新进分诊的工单会自动指派给它,用创建工单的人的账号跑。
  • GitLab:默认情况下,手动请求的审查可以包括 P0、P1、P2,自动审查只看 P0、P1。自动审查在 Codex 的代码审查设置里选这个仓库打开 Automatic review,用 Review 选审谁的 MR,用 Trigger 选什么时候审。
  • GitHub、GitLab 收到后会先回一个 👀。官方提醒:模型会犯错,回复和 diff 都要自己看过。

各个集成对套餐和工作区有要求,以你的账号为准;要在桌面 App、CLI 里本地读 Linear 工单,用 Linear 的 MCP 服务器(第 9 课)。

通知:需要你的时候叫你

桌面 App 的系统通知在 Settings 里选"回合结束"的提醒:从不、只在 App 在后台时、总是。需要批准、有问题要问你的提醒,各有单独的开关。系统可能会先问你给不给 ChatGPT 发通知的权限。
Activity 视图点侧栏的铃铛(有这个视图的话),看未读、正在跑、等你回复的对话;快捷键 ⌘⌥U(Windows 是 CtrlAltU)。可以只看 Work、Chat、Pinned 或 Scheduled,也能一键 Mark all as read。
宠物(Pets)一个浮在桌面上的小宠物,在你用别的 App 时显示对话的状态:Running、Needs input、Ready、Blocked。
手机 Remote任务做完、需要你的时候,手机上会收到通知。
网页版在 Settings > Notifications 里管,渠道可能有推送、邮件、短信;在任务通知设置里点 Manage tasks 会打开 Scheduled。

命令行里的通知在 config.toml 里设置:终端什么时候提醒,回合结束时要不要运行一个外部程序。本地长任务想在你离开时继续跑,打开 Settings > General 里的 Prevent sleep while running。

顺便认识:Codex Security

一个帮安全和开发团队找漏洞、确认漏洞、修漏洞的应用安全代理。在桌面 App 里装上 Codex Security 插件,侧栏会多一个 Security,里面有 Scans、Findings、Repositories;GitHub 的 PR 上还可以写 @codex security review 做更深的安全审查 研究预览。本教程不展开,需要时读官方的 Codex Security 文档。

10深入

进阶与避坑

给已经用起来的人:事件触发、RRULE、worktree 越攒越多、远程的安全边界,以及别的教程里还在用的旧叫法。

旧教程对照

别的教程里常见的写法,现在是这样:

  • "Automations(自动化)":现在叫 Scheduled tasks(定时任务),侧栏里是 Scheduled。
  • "thread automations"(让同一个对话定时醒来):现在叫在对话里定时(Scheduled task in a chat);官方术语表里也叫 Heartbeat。
  • "定时任务只能在本地跑"或"只能在 worktree 跑":2026 年 3 月起,Git 仓库里两种都能选,还能单独选模型和推理强度。
  • "@codex review 会把所有问题都列出来":GitHub 上只标 P0、P1。
  • "Codex App 里的定时任务":Codex App 在 2026 年 7 月 9 日并进了 ChatGPT 桌面 App(第 1 课),定时任务也在那里。
能不能"有事就触发",而不是按时间?
可以,但只在网页版和手机上:符合条件的套餐能让定时任务在 Gmail 来新邮件、Slack 频道有新消息、GitHub 的 PR 有动静时运行。桌面 App、CLI、IDE 扩展都没有。一个任务可以挂多个事件触发,但不能同时再按时间跑;几件事挨得很近时,可能合并成一次运行。Slack 要把 @ChatGPT 拉进要盯的每个频道;GitHub 要让连接的应用能访问这个仓库。管理员可以用 Allow event-triggered scheduled tasks 权限控制能不能用。
RRULE 是什么?
一种写重复日程的标准格式(RFC 5545)。自定义日程满足不了时,可以直接改任务的 RRULE,比如每月 1 号 9 点:RRULE:FREQ=MONTHLY;BYMONTHDAY=1;BYHOUR=9;BYMINUTE=0。第 4 节的编辑器会按你的选择生成对应的写法(示意)。
worktree 越攒越多怎么办?
跑得勤的定时任务选了 worktree,就会攒下很多 worktree。不需要的运行记得归档;除非真想留着那份 worktree,否则别置顶(Pin)运行记录,置顶的不会被自动清理。App 还会自动清理旧的 worktree,清理前存快照(第 12 课)。
定时任务和 skill 怎么配合?
skill 写"怎么做",定时任务管"什么时候做"。在桌面 App 里,可以在定时任务的提示词里用 $skill-name 点名一个 skill,流程就不靠它自己挑工具。官方的例子:先写一个个人 skill $recent-code-bugfix(找出并修掉自己最近一周引入的 bug),再定一个任务"检查我过去 24 小时的提交,用 $recent-code-bugfix 修"。skill 自己也能建定时任务,比如"看护一个 PR"的 skill 定时查 PR 状态、处理新的审查意见。
定时任务里选了具体模型,要注意什么?
模型和推理强度可以一直用默认;单独选了某个模型的任务,那个模型退役前要换成还能用的。哪些模型要退役、换成什么,看专题 A。
命令行里能不能定时?
Codex CLI 和 IDE 扩展没有 Scheduled 管理界面,只能在 App 或网页版里建。但可以先在命令行里把提示词、skill、脚本调好。把 Codex 放进脚本和 CI 自动跑(codex exec),第 14 课讲。
用手机遥控,安全吗?
几条边界:只配对自己的、信得过的设备;手机能用的,就是那台电脑上的项目、文件、凭据、插件和工具,所以配对等于把这台电脑交给这部手机;电脑上的沙箱、安全设置和批准规则照样生效;两边之间走安全中继,电脑不直接暴露在公网上。工作区用户可能还要管理员先开 Remote Control 访问。退出 ChatGPT 登录会关掉 Remote Control,但不会删配对,重新登录后把它打开就行。
除了手机,还能怎么远程?
① 另一台 Mac 或 Windows 电脑也能当遥控器:在它的 Settings > Connections > Control other devices 里添加(有这个选项的话),同一台电脑可以同时"被控"和"控别人"。② 在桌面 App 里添加 SSH 主机上的项目,对话直接在远程机器上读文件、跑命令:主机要写在 ~/.ssh/config 里、能 ssh 上去、远程装好并登录了 codex。③ 对话还能带着 Git 状态在本机和远程主机之间转交(Hand off)。别把 app server 直接暴露在公网上,要跨网络就用 VPN。
批准请求没出现在手机上 / Remote 老断
  1. 在手机 App 里打开 Codex(旧版叫 Remote),确认手机和电脑是同一账号、同一工作区;再扫一次二维码,或在电脑上重新设置。
  2. 手机上看不到这台电脑:确认电脑上的 App 开着、允许了其他设备连接。很久没用的旧配对(文档写的是 2026 年 6 月 8 日以来没用过的),把两边 App 都更新后重新配对。
  3. 点 Add 时报错:重启电脑上的 ChatGPT 桌面 App 再试。
  4. 用着用着断了:看电脑是不是睡着了、断网了、关了 App。
为什么定时任务的结果和我手动跑的不一样?
常见原因:手动跑时你点过"允许",定时跑时没人点,那一步就失败了(第 3 节);或者本地模式下你正好在改同一批文件。解决办法:提示词里写清"做不成时怎么办",能只读就只读,Git 仓库里用 worktree。
11检验

小测验

8 道题,每题选完会立刻看到解析。