← 返回更新日志

Codex rust-v0.117.0

2026-03-26 · GitHub 原文
## 新功能 - **插件现为一流工作流**:Codex 可在启动时同步产品范围的插件,在 `/plugins` 中浏览它们,并通过更清晰的认证/设置处理来安装或移除它们。(#15041, #15042, #15195, #15215, #15217, #15264, #15275, #15342, #15580, #15606, #15802) - **子代理现使用可读的基于路径的地址**(如 `/root/agent_a`),并支持结构化代理间通信和代理列表,用于多代理 v2 工作流。(#15313, #15515, #15556, #15570, #15621, #15647) - **`/title` 终端标题选择器**现同时在经典 TUI 和应用服务器 TUI 中生效,使并行会话更易区分。(#12334, #15860) - **应用服务器客户端**现可发送 `!` shell 命令、监视文件系统变更,并使用持有者令牌认证连接到远程 WebSocket 服务器。(#14988, #14533, #14847, #14853) - **图像工作流更顺畅**:`view_image` 现为代码模式返回图像 URL,生成的图像可从 TUI 重新打开,且图像生成历史在恢复后仍保留。(#15072, #15154, #15223) - **提示词历史回忆**现可在应用服务器 TUI 中使用,包括跨会话回忆。(#14945) ## 问题修复 - `tui_app_server` 不再重复显示实时推理摘要或 `/review` 输出,并在背压下保留转录文本而非丢弃它。(#15758, #15839, #15759) - `tui_app_server` 中的 ChatGPT 登录现重新打开本地浏览器,在 `Ctrl+C` 时干净取消,且当您未登录时不再导致启动失败。(#15672, #15673, #15670) - **提前退出现可靠地恢复终端状态**,避免退出后 shell 状态损坏;tmux 用户还可在 `Shift+Left` 上使用可工作的队列消息编辑快捷键。(#15671, #15480) - **Linux 沙盒化工具调用**在较旧发行版(使用旧版 `bubblewrap`)上更可靠,Windows 受限令牌沙盒现支持更多拆分策略 carveout 布局。(#15693, #14172) - **远程多代理会话**现显示代理名称而非原始 ID,并能从过时的回合转向竞争中更优雅地恢复。(#15513, #15714, #15163) - **插件支持的提及和产品管控**现行为更可预测,修复了显式提及丢失上下文或插件被错误过滤的情况。(#15372, #15263, #15279) ## 文档 - 扩展了应用服务器和执行服务器的文档/模式固定装置,涵盖执行服务器设置、文件系统监视 RPC、实时转录通知,以及新的 Python `thread.run(...)` 快速入门流程。(#15089, #14533, #15344, #15088) ## 杂项 - **应用服务器支持的 TUI 现默认启用**,插件/应用部署标志已在正常构建中翻转开启。(#15661, #15713, #15719, #15820) - 作为持续工具表面清理的一部分,移除了遗留的工件工具,并停用了旧的 `read_file` 和 `grep_files` 处理程序。(#15851, #15864, #15773, #15775) ## 更新日志 完整更新日志:https://github.com/openai/codex/compare/rust-v0.116.0...rust-v0.117.0 - #14945 feat(tui):在应用服务器 TUI 中恢复编写器历史记录 @fcoury - #15092 fix:尝试修复 ci.yml 中的 "Stage npm package" 步骤 @bolinfest - #15075 将工具错误传播到代码模式 @pakrym-oai - #15072 从 view_image 工具返回图像 URL @pakrym-oai - #15076 为自定义提示词添加启动弃用警告 @etraut-openai - #15102 还原 "fix:强化插件功能管控" @xl-openai - #15077 在实时交接输出中添加最终消息前缀 @aibrahim-oai - #13494 使 SQLite 反馈日志与反馈格式化程序对齐 @charley-oai - #14888 功能:在线程恢复时重用持久化的模型和推理努力 @shijie-oai - #15111 不为 v2 实时添加转录 @aibrahim-oai - #15103 添加 update_plan 代码模式结果 @pakrym-oai - #15100 添加 apply_patch 代码模式结果 @pakrym-oai - #15104 fix:强化插件功能管控 @xl-openai - #15089 添加执行服务器存根服务器和协议文档 @starr-openai - #15042 支持精选插件 @alexsong-oai - #15088 添加 Python SDK thread.run 便捷方法 @shaqayeq-oai - #15119 从执行服务器中移除 stdio 传输 @pakrym-oai - #14632 feat(core, tracing):在 WebSocket 上创建回合跨度 @owenlin0 - #15011 将会话和回合头转发到 MCP HTTP 请求 @nicholasclark-openai - #15118 [钩子] 为 Stop 和 UserPromptSubmit 添加 turn_id 扩展 @eternal-openai - #14970 简单目录提及 @canvrno-oai - #14988 将 thread/shellCommand 添加到应用服务器 API 表面 @etraut-openai - #15041 feat:支持产品范围的插件。 @xl-openai - #15056 feat:添加代理网络的图形表示 @jif-oai - #15163 fix:代理已关闭的情况 @jif-oai - #15125 将环境抽象移入执行服务器 @pakrym-oai - #15180 chore:为配置文件添加指标 @jif-oai - #15175 chore:morpheus 不生成记忆 @jif-oai - #15185 还原 "将会话和回合头转发到 MCP HTTP 请求" @nicholasclark-openai - #14867 [钩子] 使用用户消息 > 开发者消息进行提示词延续 @eternal-openai - #15196 添加实验性执行服务器 URL 处理 @pakrym-oai - #15198 发布用于参数注释 lint 的可运行 DotSlash 包 @bolinfest - #15090 添加执行服务器进程和文件系统 RPC @starr-openai - #15201 以不同方式记录自动审查者批准来源 @gabec-openai - #12334 feat(tui):添加 /title 终端标题配置 @yvolovich-cyber - #15206 feat(tracing):用 turn_id 标记应用服务器回合跨度 @owenlin0 - #15216 将终端模块移至 terminal-detection crate @aibrahim-oai - #15207 为 Windows 破坏性命令添加特定工具指导 @iceweasel-oai - #15154 向 TUI 添加完整图像路径 @won-openai - #15217 feat:公开插件/读取的 needs_auth。 @xl-openai - #15190 通过 _meta 贯穿 MCP 回合元数据 @nicholasclark-openai - #15220 feat(app-server):添加 mcpServer/startupStatus/updated 通知 @owenlin0 - #15222 将保存目录更改为 codex_home @won-openai - #15232 重构执行服务器文件系统在本地和远程之间的分割 @pakrym-oai - #15021 V8 Bazel 构建 @cconger - #15150 将认证代码移入登录 crate @aibrahim-oai - #15195 [插件] 在调用 plugin/install 时安装 MCP @mzeng-openai - #15254 core:添加全缓冲区执行捕获策略 @bolinfest - #15263 fix:区分缺失和空的插件产品 @xl-openai - #15253 将功能拆分为 codex-features crate @aibrahim-oai - #15233 将执行进程拆分为本地和远程实现 @starr-openai - #15199 使用已发布的 DotSlash 包进行参数注释 lint @bolinfest - #15215 初始插件 TUI 菜单 - 列表和只读。 tui + tui_app_server @canvrno-oai - #15252 暂时在 Windows 上禁用钩子 @eternal-openai - #15264 feat:添加一次性启动远程插件同步 @xl-openai - #15262 添加守护者后续提醒 @charley-oai - #15223 Feat/恢复图像生成历史 @won-openai - #15275 feat:在精选插件同步中优先使用 git @xl-openai - #14869 添加远程环境 CI 矩阵和集成测试 @pakrym-oai - #15218 为 codex-tui 添加临时应用服务器发起者回退 @etraut-openai - #15328 尝试修复 bazel @jif-oai - #15324 添加远程测试技能 @pakrym-oai - #15313 feat:将多代理更改为使用类似路径的系统而非 UUID @jif-oai - #15244 将 Python SDK 应用服务器 stdio 固定为 Windows 上的 UTF-8 @shaqayeq-oai - #15337 提升 aws-lc-rs @cconger - #15203 添加我们新构建的 v8 的 v8-poc 使用者 @cconger - #15273 [应用] 在 yolo 模式下使用 ARC。 @mzeng-openai - #15128 chore(core) 移除 Feature::PowershellUtf8 @dylan-hurd-oai - #15344 在 v2 中添加实时转录通知 @aibrahim-oai - #15285 在标志后隐藏 TUI /plugins 菜单 @canvrno-oai - #15114 fix:允许受限文件系统配置文件读取辅助可执行文件 @celia-oai - #15231 chore(core) 更新 prefix_rule 指导 @dylan-hurd-oai - #15036 fix(core) 在未沙盒化时禁用 command_might_be_dangerous @dylan-hurd-oai - #15348 向精选插件传递平台参数 @alexsong-oai - #15276 在 v8 上进行代码模式 @cconger - #15372 [插件] 修复插件显式提及上下文管理。 @mzeng-openai - #15366 chore(context) 包含守护者批准上下文 @dylan-hurd-oai - #15390 从 tui_app_server 中移除遗留应用服务器通知处理 @etraut-openai - #15409 为 macosx 添加 JIT 授权 @cconger - #15414 从 tui_app_server 中移除遗留认证和通知处理 @etraut-openai - #15376 [应用] 改进 TUI 的应用工具加载。 @mzeng-openai - #15415 chore(exec_policy) ExecPolicyRequirementScenario 测试 @dylan-hurd-oai - #15464 移除 smart_approvals 别名迁移 @charley-oai - #15443 core:快照 fork 启动上下文注入 @charley-oai - #15480 在 tmux 中使用 Shift+Left 编辑队列消息 @charley-oai - #15317 nit:guard -> registry @jif-oai - #15338 fix:当系统 bwrap 缺少 --argv0 时回退到 vendored bubblewrap @bolinfest - #15520 fix:cargo deny @jif-oai - #15279 将插件标记为插件,并隐藏给定插件的技能/应用 @canvrno-oai - #15259 tui:在手动 /compact 期间排队后续操作 @charley-oai - #15515 feat:结构化多代理输出 @jif-oai - #15357 修复:主动认证刷新以首先重新加载受保护的磁盘状态 @celia-oai - #15342 插件 TUI 安装/卸载 @canvrno-oai - #15540 chore:拆分子代理 v2 实现 @jif-oai - #15516 将守护者响应 API 错误纳入拒绝理由 @charley-oai - #15378 feat:支持按名称禁用技能。 @xl-openai - #15529 在 TUI 中统一实时停止处理 @aibrahim-oai - #15557 fix:主 TUI @jif-oai - #15556 feat:用于子代理通信的新操作类型 @jif-oai - #15211 [钩子] 添加非流式(非 stdin 风格)仅 shell 的 PreToolUse 支持 @eternal-openai - #15560 feat:使用 serde 区分代理间通信 @jif-oai - #15426 chore(core) 将审批审查者添加到 UserTurn @dylan-hurd-oai - #15562 [codex] 添加回滚上下文重复快照 @charley-oai - #15570 feat:多代理 v2 的自定义监视器 @jif-oai - #15575 feat:多代理 v2 的自定义监视器 @jif-oai - #15576 feat:多代理 v2 的自定义监视器 @jif-oai - #15360 fix:使用 OsString 而非 String 构建 PATH 环境变量 @bolinfest - #15239 添加 fork 快照模式 @charley-oai - #15554 添加插件创建者作为系统技能 @alexsong-oai - #15592 将 landlock 助手提取到 codex-sandboxing @pakrym-oai - #15593 将 macOS 沙盒构建器移入 codex-sandboxing @pakrym-oai - #15478 [codex-cli][app-server] 在返回的错误中更新自助业务使用限制副本 @dhruvgupta-oai - #15600 将 imagegen 技能移入系统技能 @dkundel-openai - #15599 将沙盒策略转换移入 codex-sandboxing @pakrym-oai - #15580 从 plugins/list 结果中移除过滤器 @canvrno-oai - #15581 稳定 macOS CI 测试超时 @dylan-hurd-oai - #15613 nit:拆分 v2 等待 @jif-oai - #15614 fix:flaky 测试 @jif-oai - #15621 feat:为子代理 v2 列出代理 @jif-oai - #15623 nit:在列出代理时优化 @jif-oai - #15549 允许全局网络允许列表通配符 @rreichel3-oai - #15424 完成将 codex exec 移至应用服务器 @etraut-openai - #15603 将沙盒管理器和转换提取到 codex-sandboxing @pakrym-oai - #15484 chore(deps):将 pnpm/action-setup 从 4 升级到 5 @dependabot - #14777 将 vedantmgoyal9/winget-releaser 从 19e706d4c9121098010096f9c495a70a7518b30f 升级到 7bd472be23763def6e16bd06cc8b1cdfab0e2fd5 @dependabot - #15558 [Codex TUI] - 按安装状态优先、字母顺序其次对 /plugins TUI 菜单排序 @canvrno-oai - #15598 在插件安装/卸载后刷新提及列表 @canvrno-oai - #15624 feat:禁用 notifier v2 并在代理交互时开始回合 @jif-oai - #15605 [codex] 稳定 compact resume 和 fork snapshot flaky 测试 @charley-oai - #15658 尝试修复 git 故障 @jif-oai - #15657 尝试修复 git 故障 @jif-oai - #15656 尝试修复 git 故障 @jif-oai - #15655 尝试修复 git 故障 @jif-oai - #15654 尝试修复 git 故障 @jif-oai - #15653 尝试修复 git 故障 @jif-oai - #15652 尝试修复 git 故障 @jif-oai - #15651 尝试修复 git 故障 @jif-oai - #15650 尝试修复 git 故障 @jif-oai - #15606 漂亮的插件标签,在 MCP 工具刷新期间保留插件应用来源 @canvrno-oai - #15579 将语音空间保持超时增加到 1 秒 @aibrahim-oai - #15093 core:使 FileWatcher 可重用 @euroelessar - #15547 app-server:向 `command/exec` 添加背压和批处理 @euroelessar - #15647 feat:通信模式 v2 @jif-oai - #15438 feat:在 plugin/list 中包含市场加载错误 @xl-openai - #15545 chore:使用访问令牌过期进行主动认证刷新 @celia-oai - #15530 chore:在永久令牌失败后停止应用服务器认证刷新风暴 @celia-oai - #15577 在回滚期间修剪回合前上下文更新 @charley-oai - #15660 在禁用的 TUI 列表行上隐藏数字前缀 @canvrno-oai - #15644 fix:在移除 shell-tool-mcp 后保留 zsh-fork 发布资产 @bolinfest - #15670 tui_app_server:在未登录时容忍缺失的速率限制 @etraut-openai - #15564 将 git 实用程序移至专用 crate @aibrahim-oai - #15669 清理 TUI /plugins 行对齐 @canvrno-oai - #15671 tui:在提前退出时始终恢复终端 @etraut-openai - #15672 tui_app_server:在本地浏览器中打开 ChatGPT 登录 @etraut-openai - #15673 tui_app_server:在 Ctrl+C 退出前取消活动登录 @etraut-openai - #15676 调整 /plugin 菜单措辞 @canvrno-oai - #15666 抑制插件安装 MCP OAuth URL 控制台垃圾信息 @canvrno-oai - #15573 [插件] 工具建议和应用的额外管控。 @mzeng-openai - #15665 从沙盒执行请求中移除 sandbox_permissions @pakrym-oai - #15572 将字符串截断助手移入 codex-utils-string @aibrahim-oai - #14533 app-server:添加文件系统监视支持 @euroelessar - #15674 在 tui 和 tui_app_server 中使用延迟 shimmer 进行插件加载头 @canvrno-oai - #15689 app-server:在初始化响应中返回 codex home @euroelessar - #15363 fix:将 rmcp-client 环境变量保留为 OsString @bolinfest - #15700 在插件的 $mentions 中移除应用和技能的血统过滤 @canvrno-oai - #15692 在 TUI /plugin 详情中添加法律链接 @canvrno-oai - #15351 在 MDM 工作区写入根中展开 ~ @evawong-oai - #15548 将部署提取到其自己的 crate 中 @aibrahim-oai - #15699 [codex] 将 fork 上下文注入推迟到第一个回合 @charley-oai - #15601 [app-server] 添加覆盖功能标志的方法。 @mzeng-openai - #15708 TUI 插件菜单清理 - 隐藏应用 ID @canvrno-oai - #15677 修复过时的快速入门集成断言 @shaqayeq-oai - #15713 [插件] 翻转标志。 @mzeng-openai - #15719 [插件] 翻转更多标志。 @mzeng-openai - #14172 fix:在 Windows 受限令牌沙盒中支持拆分 carveout @viyatb-oai - #15714 修复 tui_app_server 中的过时回合转向回退 @etraut-openai - #15722 [插件] 为工具搜索添加标志。 @mzeng-openai - #15734 更新插件创建者技能。 @xl-openai - #15766 chore:tty 指标 @jif-oai - #15519 fix(core):mcp 缺失注释的默认审批行为 @fouad-openai - #15775 chore:移除 grep_files 处理程序 @jif-oai - #15710 对 cwd 状态使用 AbsolutePathBuf @pakrym-oai - #15778 feat:渲染库 v1 @jif-oai - #15758 fix(tui):避免重复的实时推理摘要 @fcoury - #15773 chore:移除 read_file 处理程序 @jif-oai - #15776 feat:添加多线程日志查询 @jif-oai - #15744 提取 codex-instructions crate @aibrahim-oai - #15339 添加非交互式恢复过滤器选项 @nornagon-openai - #15746 提取 codex-utils-plugins crate @aibrahim-oai - #15747 提取 codex-plugin crate @aibrahim-oai - #15748 提取 codex-analytics crate @aibrahim-oai - #15707 阐明 MDM 路径解析的 codex_home 基础 @evawong-oai - #15513 fix(tui_app_server):修复远程子代理切换和代理名称 @fcoury - #14856 [应用][tool_suggest] 移除 tool_suggest 对工具搜索的依赖。 @mzeng-openai - #14847 feat:为应用服务器添加 WebSocket 认证 @viyatb-oai - #15759 fix(tui_app_server):在背压下保留转录事件 @fcoury - #15749 提取 codex-core-skills crate @aibrahim-oai - #15798 在 `getAuthStatus` 中避免重复认证刷新 @etraut-openai - #15659 添加 MCP 工具调用跨度 @nicholasclark-openai - #15789 将 ChatGPT `hc` 计划视为企业版 @arnavdugar-openai - #15802 TUI 插件菜单润色 @canvrno-oai - #15785 为执行服务器 URL 添加缓存环境管理器 @pakrym-oai - #15806 向 tui_app_server 添加 ReloadUserConfig @canvrno-oai - #15810 app-server:组织应用服务器以允许更多传输 @euroelessar - #15800 [mcp] 改进自定义 MCP 引出 @mzeng-openai - #15531 [钩子] 添加非流式(非 stdin 风格)仅 shell 的 PostToolUse 支持 @eternal-openai - #15820 [插件] 翻转标志开启。 @mzeng-openai - #15825 修复 tui_app_server 中的引用命令渲染 @etraut-openai - #14853 通过客户端连接远程应用服务器认证 @etraut-openai - #15817 在 Windows 上展开主目录相对路径 @tiffanycitra - #15693 fix:在不回退到 vendored bwrap 的情况下修复旧系统 bubblewrap 兼容性 @viyatb-oai - #15784 feat:用自定义库替换 askama @jif-oai - #15851 feat:丢弃工件工具和功能 @jif-oai - #15861 feat:清理生成 v1 @jif-oai - #15691 feat:执行服务器为统一执行做准备 @jif-oai - #15864 chore:丢弃工件库 @jif-oai - #15812 core:移除对技能脚本的特殊 execve 处理 @bolinfest - #15869 fix:flaky @jif-oai - #15877 chore:要求代理 md 不要玩弄 PID @jif-oai - #15866 feat:在 `exec-server` 中使用 `ProcessId` @jif-oai - #15829 [插件] 更新可建议插件列表。 @mzeng-openai - #15880 fix:最大深度代理仍具有 v2 工具 @jif-oai - #15839 修复应用服务器 TUI 中的重复 /review 消息 @etraut-openai - #15805 添加 MCP 连接器指标 @nicholasclark-openai - #15661 默认启用 `tui_app_server` 功能 @etraut-openai - #15835 fix:为 apply_patch 测试工具程序 futures 装箱 @bolinfest - #15796 [codex] 从安全允许列表中阻止不安全的 git 全局选项 @adrian-openai - #15813 添加中间通配符测试覆盖率 @evawong-oai - #15881 fix:root 作为 std 代理 @jif-oai - #15860 feat(tui):为 tui 应用服务器添加终端标题支持 @fcoury - #15885 [mcp] 修复 legacy_tools @mzeng-openai