Codex v0.138.0 发布 —— 从终端到桌面,Codex 终于走通了最后那一步
v0.138.0 把这条断头路接上了。

终端到桌面,一次 /app 就够了
这版最大的骨架改动在 /app 命令:它现在可以把 CLI 线程「递交」到 Codex Desktop。你在 macOS 或 native Windows 上跑 Codex CLI,敲 /app,当前对话就能直接在 Desktop 界面里继续。不是复制粘贴聊天记录,是带着完整的 thread 状态、tool call 历史、workspace 上下文一起过去。
Windows 上的 workspace 启动也跟着改了——之前深链跳到 Desktop 后还会卡在一个手动确认弹框上,现在直接跳进去了,一个弹窗都不用点。对 Windows 用户来说这是一个「终于不用了」的困扰,差的就是这层直通。
这个功能的工程价值在于:Codex 的交互模型从「CLI 或 Desktop」变成了「CLI 和 Desktop」。你可以在命令行里快速迭代 prompt,然后切换图形界面来 review 结果、做精细控制。两种范式不再二选一,而是作为一个流程的两个阶段。
配合这次加的 app-server 层面的 account token usage 读取和 v2 personal access token 支持(#25344, #25731),桌面端不再是独立的 UI shell——它可以读写 CLI 的认证状态和余额信息。
插件管理终于有了机器界面
Plugin 相关的一系列改动,思路很一致:让人能写脚本管理插件。
codex plugin add, plugin remove, marketplace 三个子命令全部加上了 --json 输出(#26631, #26417)。plugin list 的 JSON 里现在带着 marketplace source(#25887),plugin detail 暴露了 default prompts、remote MCP servers、不可用的 app templates(#26453, #26317)。
以前想用脚本查自己装了什么插件、有没有可用更新、远程 MCP 配置在不在——只能 parse 终端打印的彩色表格,不同终端宽度下输出不一样,写一次 regex 心累一次。现在 --json 喂给 jq,一行命令就搞定了。如果你在团队里批量管理几十台机器的 Codex 插件,这个改动的意义远大于「又加了一个 flag」。
同一批插件改动还顺带填了几个工程坑:add/remove 走结构化输出意味着内部的 plugin 操作也在向更严格的接口定义靠拢,不再靠字符串匹配来传递状态。
图像可以送进模型眼里了
两个改动看起来小,但对 workflow 影响很大:#25944 和 #25947 让本地图像附件和 standalone 图像生成的结果,暴露了保存文件的路径给模型。
之前你在 Codex 里附件一张截图,模型的 tool call 可以「看到」图像内容,但它不知道文件存在哪里——想 follow up 让模型继续编辑那张图?不行,因为没有路径可以引用。现在模型能看到完整的文件路径,后续的 tool call 可以直接读写同一个文件。给模型做图像迭代编辑的工作流,从「几乎不可能」变成「一次交互可能做到」。
推理深度可以选得更细了
Reasoning effort 选型在 v0.138.0 里做了两件事。第一是 fallback 快捷键:有些终端(特别是部分 tmux 配置和 Windows 终端)Alt 绑定不生效,现在加了替代方案,不会因为快捷键缺失而只能用默认 effort 级别(#25623, #26444)。第二是模型自己的 effort 级别按模型广告的顺序排序了,不再是硬编码顺序(#26446)。
后者更值得玩味:之前即使模型支持 5 个 effort 级别,Codex 也只暴露其中 3 个,顺序还是写死的。如果你用的模型推送了新级别,Codex 不会自动识别。现在 TypeScript API 排序的顺序反映了模型原生支持的 effort 分布——新级别加进来就自动出现在选单里。对经常切换模型、比较不同推理深度的用户来说,少了一个「为什么我的模型不支持这个级别」的困惑时刻。
Goal 工作流终于可控了
Goal 相关三个 bug fix 放在一起看,反映出 Codex 在尝试让长时运行的任务行为更可预测:
- 多行粘贴不再触发提交(#26047):
/goal edit里粘贴多行文本会被视为一次「编辑完成」提交,导致意外的流程推进。现在只当显式确认时才提交。 - 空闲自动续话不闯入 Plan 模式(#26147):Idle auto-turn 设计出来是防止你走开太久 session 超时的,但它不应该在你进入 Plan 模式后自作主张继续执行任务。
- Goal 在 terminal turn 失败后不自启(#26690):以前一个 goal 的子任务在终端执行报错后,goal 会自动重试/继续,可能让错误级联。现在停在失败点,给你机会调整。
三个修复指向同一个原则:Agent 的自动化应该在它清楚自己在做什么的时候推进,在不确定的时候停住等你。Goal 的吸引力在于「不用管它自己跑」,但信任的前提是它不会在不该跑的时候乱跑。
TUI 体验的小处见大
TUI 层的几个改动看似是「修边」,实际每个都有经手人。
流式输出不再多打空白行(#26636)。流式输出时最后一行后面挂了一个空行,在多轮对话中最明显——每轮输出之后屏幕凭空多了一行空白。改掉之后每屏能多看一行代码。
取消的 prompt 再次打开时光标在末尾(#26457)。以前你 cancel 掉一条 prompt,重新打开编辑时光标位置是随机的——更多时候是跳回行首。对于长 prompt 来说,要找之前编辑的尾巴得按一堆方向键。
TUI 配置写入失败显示原因(#26537)。之前保存配置时出错了只会显示「Failed to save config」,现在说为什么——校验错误、文件只读、权限不足。排查时间从「猜五分钟」变成「看一眼」。
启动少踩几个坑
Linux 容器场景里,有些镜像没有 /bin/bash 只有 /usr/bin/bash,Codex 之前硬编码了 path,会直接启动失败(#26538)。Linux proxy socket 路径过长问题(#26553)也修了——有些 server 跑的 unix socket 路径超过 108 字节,bind 就炸了。
OAuth-backed MCP credential 过期不再等到调用时才知:启动前自动 pre-refresh(#26482)。如果你配了 GitHub/GitLab 的 MCP,token 刷新逻辑现在走在实际调用之前。
Workspace instruction 加载在远程和 symlink workspace 场景下更准确(#26205, #26465)。AGENTS.md 或类似指令文件不再被错误的 workspace 根目录引用覆盖。
藏在性能优化里的工程思路
v0.138.0 没有单独申报「性能提升」这一节,但几条改动累计出来的加速不小:
- TUI 启动不做全套插件发现,而是复用已发现的结果、只加载 hook metadata(#26469, #26272)。你的 Codex 冷启动快不快,插件数量是个关键因子——这条改动把 O(n) 的发现环节砍成了 O(1)。
resume --last不再遍历所有 session 来找最新的那个,而是先查 state DB(#26462)。本地 session 几十上百条的时候,恢复速度差 10 倍不止。- 大 MCP/Ollama 流和长消息历史的 byte scanning 用上了 memchr 优化(#26265)。最直观的感受是翻看几万字的对话历史不再掉帧。
三条改动都遵循同一个模式:不做全新架构,而是把现有路径上最慢的那个操作换成更短的路。工程上这是性价比最高的优化方式。
这个版本没有新增一个「改变世界」的大功能,但它把 Codex 从终端到桌面的路径走通了,把插件管理脚本化了,把 Goal 工作流的控制权还给了用户。每一个改动单独看都不大,但合在一起,Codex 离「一个你愿意信赖它的自动化」又近了一步。
升级
Codex 会自动更新,也可手动执行:
codex update
完整更新日志:Codex v0.138.0 Release
📢 关注我,获取最新开源更新日志和开发者工具动态。
#OpenAI #Codex #AI编程 #Desktop #终端工具 #开源