9 月 9 日,OpenAI 发布了 Codex CLI 0.154.0。

发布说明一出来,大部分人的注意力都落在模型选择器上:GPT-6 Astra 加进来了,Amazon Bedrock 的目录里也能选了。这确实是摆在明面上的头条。

但这份更新里更耐看的,是一组不起眼的改动:实验性的 worktree 支持、运行中可以就地回答问题的 inline answers、Windows 下的后台服务、插件热刷新、MCP 的 OAuth 处理,还有一串围绕审批上下文的加固。

Developers Digest 的作者把这些改动串起来看,给了一个判断:Codex 正把「一次 agent 会话」从一次性的聊天,变成有隔离、可恢复、带权限和插件状态的持久工作区。这个判断我认同。对每天真拿终端 agent 干活的人来说,它比多一个模型选项重要得多。

这次到底更新了什么#

新特性是六组:

  • 模型选择器和 Bedrock 目录里加入 GPT-6 Astra。
  • 实验性的 worktree 支持,入口是 --worktree 和 /worktree。
  • inline answers:Codex 在继续干活的同时可以问问题,人也能就地回答。
  • Windows 会话可以共用后台的 Codex 服务。
  • Vim 替换模式,以及更顺手的 Escape 处理。
  • 更丰富的复制行为,覆盖回答、状态输出和会话字段。

bug 修复那一栏其实更说明问题:

  • 已经开着的会话能捡起新装的插件工具,插件升级或回滚后也会重新加载 skills 和 hooks。
  • MCP 连接之间会协调 OAuth token 刷新,刷新失败时把登录提示亮出来,而不是反复重放被拒的工具调用。
  • 启动时不会在建立信任之前,就去跑工作区里自带的辅助程序。
  • macOS 沙箱挡住了往终端注入输入这条路。
  • 远程恢复和 fork 会保留已保存的权限。
  • 自动审批会通过上下文压缩保住授权信息,并在用户给出新指令或新回答之后,作废那些已经失效的旧审批。

这些都不是演示用的功能。它们是天天用 agent 之后,第一周就会碰到的细节。

worktree 是这次的重心#

Git worktree 本来就是并行 agent 最好用的底座之一。它能让每个任务有自己的检出,不用克隆整个仓库,也不用让所有 agent 挤在同一个工作目录里。

放进 CLI 之后,worktree 的价值主要在「控制」两个字上。

如果 agent 能为一个新会话或 fork 建一份隔离的检出,能浏览这些会话,还能在之后把它们恢复出来,那「一个工作单元」就变得具体了。它从「一段改了文件的对话」,变成绑着 diff、权限、模型选择、插件状态和历史记录的会话。

对团队来说,操作模型也跟着清晰了:

  1. 有风险或探索性的活儿,先开一个单独的 worktree。
  2. 让 agent 在里面跑,别污染主检出。
  3. 把 diff 和会话状态放在一起看。
  4. 只合有用的产出。
  5. 任务结束后删掉或归档这个工作区。

这套流程不会替你把纪律省掉。worktree 一样会漂移,作用域一松,agent 照样会碰错文件。但第一方的 worktree 流程,给了一个比「祈祷当前检出是干净的」更好的默认值。

inline answers 改变的是监督方式#

inline answers 这个功能很容易被低估。

长期运行的 agent 常常栽在「中断」这道坎上:agent 发现了一处模糊,抛出一个问题,整个会话就停在那里。开发者过一阵回来回答,节奏早就断了。更糟的情况是,因为提问的成本太高,agent 干脆自己猜一个。

inline answers 让监督不再像一次强行打断。在你做决定的这段时间里,agent 可以继续收集上下文、跑那些安全的检查,或者把周围能改的顺手改掉。放到真实工作里,这更接近一个同事的做法:可逆的部分继续推进,只在真正被卡住的地方停下来等你。

难的地方在策略。用户一旦给出新回答,之前依赖旧假设的那些审批就可能失效。0.154.0 明确说了,自动审批会拒绝被新指令或新回答作废的旧审批。这个耦合是对的。inline answers 要成立,权限模型就得明白:一句回答本身,就足以改变安全上下文。

安全修复其实是产品方向#

release 里还有几条和安全相关的修复,值得单独拎出来:

  • 建立信任之前,不跑工作区自带的辅助程序。
  • macOS 沙箱挡住终端输入注入。
  • MCP 的 OAuth 刷新在连接之间协调,暴露登录挑战,而不是重放被拒的工具调用。
  • 远程恢复和 fork 保留已保存的权限。
  • 审批在压缩之后仍然保住授权上下文。

这正是 Developers Digest 在另一篇里说的「capability ledger」的样子。agent 安全没法靠一条 prompt、一个沙箱或者一屏审批搞定。它更像一本账,记着 agent 能读什么、写什么、跑什么、调用什么、记住什么、恢复什么,又能升级到什么。

worktree 管文件系统隔离,OAuth 管外部工具的身份,审批上下文管审查的完整性,插件刷新管会话对自己能调用哪些工具的诚实程度。单拎哪一条都不够。合在一起,会话边界才更接近事实。

一个容易被忽略的信号#

作者查了一圈热度。GitHub API 显示 openai/codex 仓库在 9 月 10 日已超过 123,000 星,还在持续更新。Hacker News 上关于 Codex CLI 的讨论有一些,但没有为这次发布炸出爆款帖。他还想去 Google Trends 核一下,结果接口返回 429,于是干脆没写任何数字。

这篇讲的是产品架构,不是搜索热度。这次发布值得写,是因为它改了 agent 会话被管理的方式,而不是因为某个关键词冲上了热搜。

想试的话,从这几步开始#

如果你已经在用 Codex CLI,动手路径很短:

  1. 升级 Codex CLI。
  2. 用 --worktree 或 /worktree 开一个不太关键的小任务。
  3. fork 或恢复它,确认检出边界看得见。
  4. 装一个或升级一个插件,确认活动会话刷新了工具。
  5. 触发一次澄清,看 inline answers 能不能保住这轮工作。
  6. 把 diff 当成工作区产物去审,而不是当成聊天记录去读。

团队可以配一套轻量的规矩:

  • 每个长跑任务都有自己的检出。
  • 权限是审查的一部分,不只是配置的一部分。
  • 工具和插件的变更记在任务里。
  • 改变作用域的澄清回答,要重新审批。
  • 合进去的活儿,必须带上能证明 agent 说到做到的那份测试或验证输出。

这套规矩听着枯燥,但它正是「agent 干的活能被审查到可以信任」的路径。

我的看法#

把这次更新放进更大的脉络里看,它的方向其实很明确:coding agent 的下一段路是会话基础设施。

好用的终端 agent,不会只盯着产出更大的 diff。它会让每一次运行都隔离、可恢复、可检查,而且一旦走错路,丢掉它也不心疼。

「工作区」这个比喻最有共鸣的一点是:它把 agent 的产出从「一段对话」抬成了「一件可以审查、可以合并、也可以直接扔掉的东西」。对我们这种把 agent 塞进 CI 和定时任务里跑的人来说,这个转变的分量,远比模型菜单里多一个名字要重。

方向对,不代表细节已经稳。作者也提醒,worktree 和长会话的边界仍然会漂。工具给了更好的默认值,剩下的还得靠你自己把作用域收紧,把权限摆到审查台面上。

参考来源#