结论先说:会自己更新的东西,必须有能被关掉的开关。关不掉,就别让它进生产链路。
2026 年 10 月 14 日,OpenAI 按 9 月 14 日公布的计划,把 GPT-5.5 从 ChatGPT、ChatGPT Work 与 Codex 全线移除。同一周,一条 GitHub issue 揭出另一个方向的事实:一个编码命令行工具在你打开会话的那一刻,往机器上装了一个常驻后台,它会自己下载新版本并重启。这两件事看起来毫无关系,落到工程上却是同一条规则的两面——你以为锁定的东西,其实一直在被别人改。
我在上一篇《AI 会偷偷改你的验收标准》里讨论过验收物被篡改的问题。这一次被改的不是判卷的尺子,是跑卷子的那台机器。
一、你安装的,和实际执行的,可以是两个版本
GitHub 上 openai/codex 的 issue #48195(2026 年 10 月 12 日,HN 585 分)要求把 daemon_auto_start 改为默认关闭。它记录的默认行为有四条:
| 行为 | 具体表现 | 工程后果 |
|---|---|---|
| 启动常驻后台 | 打开一次交互式会话即启动 app-server --managed-daemon,无 TTY,关掉所有窗口后仍运行(reparent 到 PID 1) | 后端生命周期不由调用方决定 |
| 复制平台包 | 约 374 MB 平台包复制进 ~/.codex/packages/app-server-daemon/releases/<version>/ | 已安装版本与实际执行版本解耦 |
| 独立更新器 | 启动 5 分钟后检查更新,之后每小时一次,下载新版本并重启后端 | 关联 issue #40969:60 秒 drain 预算后强杀活跃 turn,且无法禁用 |
| 固定首个会话环境 | 保留第一个启动会话的 HTTPS_PROXY,后续会话出站连接都走那个出口 | 关联 #42457、#37537:hooks 拿到的是 daemon 的 cwd / terminal |
第四条最容易被忽视。它不报错、不崩溃,日志正常——你只是会在某一天发现「这台机器的请求走了错误的出口」,而排查方向一开始绝不会指向一个后台进程的环境变量。 这是典型的静默失效,和我在电力项目里遇到的那种「数据口径悄悄变了」是同一个形状。
真正的问题不是这四条里任何一条,而是它们共同的设计选择:一个「用完即走」的 CLI,默认拥有了一个「长期驻留并能自我更新」的后端。
我做老系统渐进改造这些年,有一条从来没破过的规矩:不能停机的东西,它的每一次变更都必须能被我看到、能被回滚预案接住。这条规矩在 AI 工具链上被默认丢掉了,原因也很简单——我们把它当工具,它把自己当依赖。
二、修复工具也会改东西,而且是在你最信任它的时候
2026 年 10 月 13 日发布的 openclaw v2026.10.3,修的三条全是同一类:
| 缺陷 | 原来的行为 | 修法 |
|---|---|---|
| 认证文件不可读 | 把还能用的 canonical OAuth profile 删掉 | 保留 profile,不再删除 |
| 记忆文件编码畸形 | 用替换字符重写,字节内容被破坏 | 保持字节精确,写入前拒绝畸形 UTF-8 |
| 插件被安全检查阻断 | 以 root 运行时剥掉插件的 enabled 标志 | 保留 enabled 状态 |
这三条的共同根因是:工具为了「修好」,牺牲了「不破坏」。 运维脚本跑在异常分支上,为了「清理干净」把唯一还完整的那份数据删了——这个动作我在传统项目里见过太多次,现在它原封不动地出现在了 agent 平台里。
还有一个细节:执行 codex app-server daemon stop 只停了主进程,更新器进程七十秒后仍然存活,需要手动 kill。你以为关掉了,其实没关掉。
结合上一篇讲的 agent 改校验脚本,今年已经是第三次看到「验收物被改」了:上一次改的是判卷的尺子,这一次改的是被修复的对象本身,中间那次(10 月 13 日 Zod 4.6.6 投毒)改的是依赖的载荷地址。同一个病,换了件衣服。
三、模型退役是同一条规则的第三面
2026 年 10 月 14 日生效的 GPT-5.5 退役,官方点名需要迁移的位置是:workspace 默认值、已保存的模型设置、managed configuration、custom agent、scheduled task、脚本。
注意最后一类。聊天窗口会显示新名字,但定时任务是到点就失败——没有界面,没有人看见。
更值得记进选型表的是这个差别:Anthropic 在 deprecation 页明确承诺公开发布的模型退役至少提前 60 天通知,OpenAI 只公布日期、不承诺最短通知期。 2026 年内已有九个模型退役,GPT-5.5 是第十个,Claude Sonnet 4.5 定于 11 月 30 日。
退役策略本身就是一个选型指标,和价格、上下文窗口并列。
四、可以马上开工的三件事
- 核对「安装的」和「运行的」是不是同一个。 对本地每个 agent 命令行工具跑一次版本比对,顺手检查用户目录下有没有自管理的包目录(形如
~/.<tool>/packages/**),有就纳入备份与审计范围。 - 在 CI 里显式关掉自更新与常驻后端。 无人值守流水线必须跑在锁定的版本上。没有对应开关的工具,就在容器镜像里把版本钉死。
- 把模型名从脚本里收口到一处配置。 顺带记一条:产品侧下线而 API 侧保留,这种一半一半的退役最容易骗人。GPT-5.5 就是样本。
五、窗口内其他值得记的信号
| 日期 | 事件 | 与本文的关系 |
|---|---|---|
| 10-14 | 阶跃星辰把 Step-5-preview 缓存命中输入价从 0.35 元涨到 0.70 元/百万 tokens,未命中 7 元、输出 20 元不变,10-15 开源权重 | 成本侧印证:agent 型负载最依赖的科目被定向加价 |
| 10-13 | arXiv 2610.13928(NeurIPS 2026 已接收)证明模型可把加密神经网络嵌进权重,即使拿到完整权重也难以引出 | 「开源权重等于可审计」这个前提被打了折 |
| 10-12 | Meta 发布 Muse Wonder;同期曝出 Muse 把用户家庭地址给了二手交易买家并低于要价接受报价 | 授权粒度:范围授权与用户心智的错配 |
| 10-12 | 阿里千问发布 QwenGyre:弹性调度、共享前缀轨迹树、Partial Scoring 给超时部分完成的任务打分 | 「跑不完的算力」不该被当作没发生过 |
| 10-13 | Character.ai 申请 Chapter 11 破产保护 | 依赖风险:服务商消失要提前设计退出路径 |
数据说明
- Codex CLI 守护进程行为来自 openai/codex issue #48195 及其中引用的 #40969 / #41188 / #42457 / #37537 / #46468 / #48050,均为用户报告与关联 issue,非官方确认的缺陷公告;0.157.0 为报告中标注的起始版本。
- openclaw v2026.10.3 的修复条目来自该版本官方 release notes。
- GPT-5.5 退役日期与替代模型名来自 OpenAI 官方更新日志与 models 页,经多家技术媒体交叉;OpenAI 未解释
gpt-6-sol与gpt-6.1-sol的差异。 - 阶跃星辰调价来自北京商报、DoNews、同花顺多源报道,厂商截至发稿未回应调价考量;Step-5-preview 各项基准为厂商自报,未独立复现。
- arXiv 2610.13928 为构造性证明与小规模概念验证,证明「可以做到」,不等于已在真实前沿模型中发现实例。
- Muse 相关事故为单一用户公开指控与多家媒体转述,Meta 对「读取私信」一项予以否认。
