---
layout: post.njk
source: https://yage.ai/share/codex-persistent-mode-20260903.html
speaker: yage.ai
title: |-
  改完代码自己定闹钟盯 CI：OpenAI
  源码里的自唤醒机制
date: '2026-09-03'
summary: 文章探讨了OpenAI正在测试的Codex Persistent mode，一种让AI在完成任务后通过‘再次采样与休眠’的循环机制，实现自唤醒、状态检查和主动排查的自动化工作流。该模式强调通过严格的状态纪律（如检查点四要素和无实质变化保持静默）来平衡模型的自主性与人类的控制，旨在将后台Agent的调度权逐步移交给具备推理能力的模型。
area: PAI
category: ai-workflow
tags:
  - persistent-mode
  - ai-workflow
  - agentic-loop
  - state-discipline
  - self-wake
people: []
companies_orgs:
  - OpenAI
products_models:
  - Codex
media_books: []
draft: true
status: evergreen
---

一个具体的下午。你让 Codex
修一个偶发失败的单测。它定位到竞态条件，改好代码，本地跑通测试，回复你：修完了，测试通过。
放到今天，这些后续也能办到：再补一句盯着
CI，它就会去看。只是往后每一步推进，都要你先开口。

在 OpenAI 正在测试的新模式里，连这一句都省了。
它交完差后没有散场，而是给自己留了一张便签，写明四样东西：目标是什么（确认修复在
CI
上也成立）、现在到哪了（流水线刚触发）、收工条件（所有检查全绿）、下次检查（两分钟后）。
两分钟后它自己醒来，查一眼 CI 状态，发现还在跑，什么都没动，接着睡。
再次醒来时流水线红了。它没有弹窗打扰你，而是拉出日志排查，判断出报错来自测试集群的网络抖动，并非自己的改动引发。它把排查结论记下来，主动把下一次检查的时间往后推，接着睡。
最后流水线全绿。它主动发来一条消息：修复已合并，流水线全绿。末尾还附带了一句：同一个文件里还发现两处相同的隐患，要不要我顺手处理？
注意最后这句问话，它没有直接动手。修好指定的单测在授权范围内，改动文件里其他地方超出了授权，它必须停下来先请示。

这不是产品文案里的想象。支撑这套行为的每一句话，都写在 8 月底合入
openai/codex
开源仓库的一份系统提示模板里，句句能查到出处；开篇场景则是按这份模板的语义构造的行为画像，并非官方
demo。

## 媒体标题与代码注释，各说各话

8 月 27 日，WIRED
独家报道 OpenAI 正在为 Codex 开发 Persistent
mode，随后一圈媒体跟进，标题里充斥着
always-on、永不停歇、24/7。这些词描述的是一台永不关机的机器。

翻开开源仓库里的系统提示模板，措辞要冷静得多。模板原文用的词是
sampled
again：完成任务之后，如果系统在没有新用户请求的情况下再次采样它，它应该寻找有用的后续工作。核心词是再次采样与休眠。

这里没有常驻进程，没有专属虚拟机，也没有新的计费面。它本质上依然是那个熟悉的采样循环：每隔一到三分钟醒来一次，看一眼最新状态，有情况就处理，没情况就接着睡；进展缓慢的事，就主动拉长检查间隔。

Persistent mode
的运行形态是一个唤醒-检查-休眠的循环：醒来查看状态，有情况处理，无情况继续睡，一到三分钟一次，进展慢则拉长间隔

入口位置同样说明了问题。它的入口藏在选择模型思考力度的档位菜单里，和
low、medium、max 排在一起。界面选项写着 Continue working until put to
sleep。OpenAI
把持续当成一种消耗算力的方式，而不是一个独立的功能开关。

支撑这一切的是一条状态纪律。模板要求 agent
每次睡下之前，把目标、最近状态、收工条件、下次检查时间四样东西写进检查点，让后续工作在睡眠和上下文重置之后仍然接得上。检查节奏自己定：活跃的近期工作每
1–3 分钟看一次，进展慢就主动退避。

还有一条权限铁律，原文只有一句：Persistence does not broaden that
scope。持续运行不扩大授权范围。要改动授权外的外部状态，必须停下来先请示。这就是开篇场景里，它宁可请示也不顺手修掉另外两处隐患的原因。

## 闹钟与任务单在谁手里，决定了后台形态

看到这种按时唤醒的机制，多半会眼熟：让模型在后台盯事情，不就是定时任务吗？要看清楚差别，只需要问两个问题：闹钟在谁手里？任务单在谁手里？

前一个问题决定下一次行动何时发生，后一个问题决定下一步具体做什么。把这两个问题作为坐标轴，市面上形形色色的后台
agent 都能放进四个格子里。

第一格，人定闹钟，人派活。Codex
Automations、Claude Code
/loop、Perplexity Tasks
都在这一格。你写好时间表和任务提示词，系统到点执行。这是 cron
的精神，人兼任闹钟持有人与派单员，做得最成熟，也最不自主。

第二格，它自己跑，人画终点线。Claude Code /goal 和 Codex /goal
在这一格。你给一个完成标志，比如完成接口迁移且所有调用处编译通过，agent
自动一轮一轮往下跑，直到撞线。节奏是它自己的，但终点由人定死。

第三格，它自己转，职责写死在代码里。Claude Code 泄露源码里的
auto-dream 是典型代表：每隔 24 小时、积满 5 个会话之后，它自动派生子
agent
去整理记忆。它确实不需要人催，但能干什么在代码里已经硬编码锁死，不接新任务。

第四格，闹钟和任务单都在模型手里。这一格过去一直空着。Persistent mode
要占的就是它：什么时候醒来、醒来后做什么，都由模型自己判断，人类只留下一份划定边界的纪律。

把后台 agent
放进坐标系：横轴是任务单（预先写死还是模型自己找），纵轴是闹钟（你定还是它自己定），定时器在左下，终点线与写死职责在左上，Persistent
mode 独占右上

也有厂商做了相反的选择：开源项目 LoopX 和 Gemini Managed Agents 的
background
execution，把唤醒判定和任务流转留在确定性代码里，模型只负责领工单干活。同一个问题，两种截然不同的答案。以后再看到各类后台
agent
宣传，不用记复杂的产品名，拿闹钟和任务单这两个问题套一下就能看清。

## 为什么 OpenAI
至今按着开关不上线

关于这个新模式，最耐人寻味的一个细节出现在网络请求里。发给服务端的请求中，这个档位的值依然写着
disabled。本地配置认这个词，界面上也看得见，但后端的 Responses API
根本没有启用它。计费系统不存在，官方发言人也明确表示目前没有近期上线计划。直到今天，没有任何一位真实用户摸到过它。

把开关按住不放，一部分原因是计费模型还没理顺，但更深层的原因藏在两组评测数据里。学术界刚给出一个基线：ProAgentBench
使用超过两万八千条真实事件测了一件事，模型判断现在该不该主动帮忙的准确率，最好的只有
64.4%，三个决定里错一个。Anthropic
的工程博客给出了另一组数：用户面对 agent 的权限弹窗，93%
直接点同意；换成模型自动审查，对真实过度行为的漏检率是
17%。把三分之一的时机误判和两位数的漏检率，放在一个近期活跃时常按 1–3
分钟节奏自唤醒的系统里，出事只是频率问题。

回头看开源仓库里的系统提示模板，那些看起来严苛的约束，逐条都能对上。防重复消息写了整整一段，因为什么时候出声恰恰是模型最容易判断失误的那三分之一；监控任务禁止自行提前收工，因为学会在没有实质变化时保持安静，比频繁发消息刷存在感难得多。

OpenAI 自己在这条路上交过学费。去年九月上线的 ChatGPT
Pulse，每天早上给用户生成一份个人简报，Altman
曾称它是自己最喜欢的功能。今年六月十七日正式退役，活了九个月。它死于三件事：一直抓着用户几周前早就解决的话题凑数；该出声的时候不出声，不该打扰的时候频繁弹窗；每天产出的只是一份逼用户阅读的材料，而非替用户办完的事。它的有用部分最终并入了用户显式配置的定时任务和网页监控。

WIRED 把 Persistent mode
定性为同一个赌注的更激进版本：上一把输在放任模型自作主张，这一把押的是用严格纪律把自作主张圈起来。在
OpenAI
自己的事故报告里，在看似不可能的任务上持续不停位列四种失配行为之一，行业事故为这些设防提供了现实背景；但真正让产品按兵不动的，始终是模型判断准确率与交互收益之间的落差。

## 哪些任务交给它，哪些别交

如果未来这种机制正式开放，什么样的任务适合交给它？适合的是有明确完成指标、但结果需要等待的交付型任务：CI、部署、构建、数据回填、外部接口的生效确认。

这类任务的共同画像是执行一分钟、等待十分钟。今天你当然可以一次次补指令让它盯，但并行的任务一多，光是记住哪些事还在等结果，本身就成了负担。Persistent
mode
收走的是这份记挂：从你交代目标那一刻起，节奏由它接管，算力只是载体。

不适合的是开放式任务。写方案、做设计，下一步本来就依赖人类反馈。把开放式任务丢进持续循环里，模型不会凭空顿悟，只会变成一台按时向你催问的自动追问机。

还有一类任务要特别小心：监控。系统提示模板明文规定，对于用户要求持续监控的任务，agent
不能自行提前收工，监控任务的成本因此没有天然上限。传统的 cron
跑的是固定间隔，花销可控；把调度权交给模型，它觉得自己该看几次就调用几次，挂的事情越多，账单越不可预测。

## 今天就能搬走的三条后台纪律

不必等厂商点亮功能。这份系统提示模板里真正值钱的东西，现在就能搬走。

第一条，写好检查点四要素。让 agent
睡前记下目标、最近状态、收工条件、下次检查时间，外加一份授权范围。跨会话的长期任务最容易死在新的对话不知道上次进行到哪一步，这四样东西就是最干净的交接单。

第二条，无实质变化保持静默。已经说过的话不说第二遍，没有实质进展就保持安静，定时唤醒本身不构成发消息的理由。把这一条搬进任何具备主动通知能力的系统，交互体验立刻上一个台阶。

第三条，优先复用确定性机制。固定周期的轮询和现成的完成通知交给外部确定性的
cron 脚本或
Webhook，模型只负责处理异常分叉。这不是退让，模板原文自己就写着：优先使用现有的完成通知或产品提供的等待机制。

调度权从人类脚本逐步移交给具备推理能力的模型，是大势所趋。但眼下它最具体的载体，是一份基于
Apache-2.0
许可证开源的代码文件。读懂这份文件里的克制与纪律，比等它上线有用得多。