0.119.0
新增功能
- 实时语音会话现在默认使用 v2 WebRTC 路径,支持可配置传输、语音选择、原生 TUI 媒体支持,以及针对新流程的 app-server 覆盖(#16960, #17057, #17058, #17093, #17097, #17145, #17165, #17176, #17183, #17188)。
- MCP Apps 和自定义 MCP 服务器获得了更丰富的支持,包括资源读取、工具调用元数据、自定义服务器工具搜索、服务器驱动的 elicitations、文件参数上传,以及更可靠的插件缓存刷新(#16082, #16465, #16944, #17043, #15197, #16191, #16947)。
- 远程/app-server 工作流现在支持 egress websocket 传输、远程
--cd转发、运行时远程控制启用、沙箱感知文件系统 API,以及实验性的codex exec-server子命令(#15951, #16700, #16973, #16751, #17059, #17142, #17162)。 - TUI 现在可以使用
Ctrl+O复制最新的 agent 响应,包括在 SSH 环境和跨平台下更完善的剪贴板行为(#16966)。 /resume现在可以在 TUI 中通过 ID 或名称直接跳转到会话(#17222)。- TUI 通知现在更可配置,包括对 Warp OSC 9 的支持,以及终端处于聚焦状态时仍接收通知的 opt-in 模式(#17174, #17175)。
问题修复
- TUI 通过异步获取速率限制启动得更快,且
/status现在会刷新过期的限制,而不再显示冻结或误导性的配额信息 (#16201, #17039)。 - 恢复流程更加稳定:选择器不再闪现错误的空状态,使用更新的线程名称,稳定时间戳标签,在零 token 退出时保留恢复提示,并避免在恢复当前线程时崩溃 (#16591, #16601, #16822, #16987, #17086)。
- Composer 和聊天行为更流畅,包括修复粘贴清理、CJK 单词导航、过期的
/copy输出、百分号解码的本地文件链接,以及更清晰的截断 exec 输出提示 (#16202, #16829, #16648, #16810, #17076)。 - 在由 app-server 支持的 TUI 会话中,
/fast off后 Fast Mode 不再卡在开启状态 (#16833)。 - MCP 状态和启动更安静、更快:带连字符的服务器名称能正确列出工具,
/mcp避免缓慢的全量清单探测,已禁用的服务器跳过认证探测,且codex mcp-server会遵循 residency 头 (#16674, #16831, #17098, #16952)。 - 沙箱、网络和平台边缘情况得到收紧,包括更清晰的只读
apply_patch错误、沙箱更改后刷新网络代理策略、抑制无关的 bubblewrap 警告、修复 macOS HTTP 客户端沙箱 panic,以及 Windows 防火墙地址处理 (#16885, #17040, #16667, #16670, #17053)。
其他变更
- 通过对 MCP、tools、config、model management、auth、feedback、protocol 及相关所有权边界进行重大 crate 拆分,精简了
codex-core(#15919, #16379, #16508, #16523, #16962)。 - 通过阻止新增 crate features 并取消例行的
--all-features运行,简化了 Rust CI 与 workspace 防护规则 (#16455, #16473)。 - 通过从热点 tool/task 抽象中移除开销高昂的 async-trait 展开,降低了核心编译时间 (#16630, #16631)。
- Bazel 诊断与依赖装配得到改进,包括紧凑执行日志、repository-cache 持久化、远程下载器支持,以及多项平台特定构建修复 (#16577, #16926, #16928, #16634, #16744)。
- README 现在使用当前 ChatGPT Business 套餐名称(#16348)。
- 更新了
argument_comment_lint的开发者指南,使其倾向于先启动 CI,而不是因缓慢的本地 lint 运行而阻塞(#16375)。 - 移除了过时的
codex-cliREADME 内容,以避免陈旧的配置指南(#17096)。 codex exec --help现在显示更清晰的用法和审批模式措辞(#16881, #16888)。
完整变更日志:https://github.com/openai/codex/compare/rust-v0.118.0...rust-v0.119.0
- #16308 修复:单次回合结束 @jif-oai
- #16238 修复:ma2 @jif-oai
- #16317 杂项:清理 wait v2 @jif-oai
- #16318 细节:更新 aborted line @jif-oai
- #15771 功能:fork pattern v2 @jif-oai
- #16322 修复:更新 fork boundaries 计算 @jif-oai
- #16325 功能:将 spawn_agent v2 限制为 messages @jif-oai
- #16324 杂项:从 send_message 中移除 interrupt @jif-oai
- #16345 修复:修复 cargo 捕获但 bazel 未捕获的 clippy 问题 @bolinfest
- #16184 通过 app server 路由 TUI
/feedback提交 @etraut-openai - #16330 功能:更好地维护 log db @jif-oai
- #15690 [codex-analytics] thread events @rhan-oai
- #16363 修复 PR babysitter review comment 监控 @etraut-openai
- #16356 重构 external auth 以使用单一 trait @etraut-openai
- #16366 修复 Windows external bearer refresh 测试 @bolinfest
- #16353 CI:验证 codex-rs Cargo manifests 继承 workspace 设置 @bolinfest
- #16361 将 chatwidget 测试重构为主题模块 @etraut-openai
- #16201 修复活动 TUI 会话中过期的 /status 速率限制 @etraut-openai
- #16351 CI:同步 Bazel clippy lints 并修复未覆盖的违规 @bolinfest
- #16378 修复:在 #16351 之后抑制 status card expect_used 警告 @bolinfest
- #16406 在 v2 spawn_agent 中使用 message 字符串 @jif-oai
- #16409 在 v2 send_message 中使用 message 字符串 @jif-oai
- #16419 在 v2 assign_task 中使用 message 字符串 @jif-oai
- #16424 功能:任务不能分配给 root agent @jif-oai
- #16425 细节:更新 wait v2 描述 @jif-oai
- #16426 杂项:将 interrupted 作为状态 @jif-oai
- #16427 细节:拒绝 field v2 @jif-oai
- #16433 杂项:移除 log DB @jif-oai
- #16434 功能:自动 vaccum state DB @jif-oai
- #16422 修复(core):移除 execute_exec_request sandbox_policy @dylan-hurd-oai
- #16375 文档:更新 AGENTS.md 中的 argument_comment_lint 说明 @bolinfest
- #16449 修复:移除未使用的 import @bolinfest
- #15772 使模糊文件搜索不区分大小写 @meyers-oai
- #16455 CI:阻止新的 workspace crate features @bolinfest
- #16456 cloud-tasks:将 mock client 从 cloud-tasks-client 中拆分出来 @bolinfest
- #16457 tui:移除仅用于 debug/test 的 crate features @bolinfest
- #16467 tui:移除 voice-input crate feature @bolinfest
- #16379 将 tool config 提取到 codex-tools @bolinfest
- #16469 otel:移除最后一个 workspace crate feature @bolinfest
- #16471 将 tool spec helpers 提取到 codex-tools @bolinfest
- #16473 CI:停止使用 --all-features 运行 rust CI @bolinfest
- #16477 将 tool discovery helpers 提取到 codex-tools @bolinfest
- #16480 login:将 provider auth refresh_interval_ms=0 视为不自动刷新 @bolinfest
- #16448 修复(guardian):使 GuardianAssessmentEvent.action 强类型化 @owenlin0
- #16481 将 update_plan tool spec 提取到 codex-tools @bolinfest
- #15919 将 MCP 提取到 codex-mcp crate @aibrahim-oai
- #16482 移除 client_common tool 重导出 @bolinfest
- #16495 修复:移除未使用的 import @bolinfest
- #16493 将内置 tool spec 构造函数提取到 codex-tools @bolinfest
- #16273 修复回归:"not available in TUI" 错误消息 @etraut-openai
- #16497 将 tool-search 输出 helpers 提取到 codex-tools @bolinfest
- #16498 修复:使用 cfg(unix) 保护 guardian_command_source_tool_name @bolinfest
- #16499 将 tool-suggest wire helpers 提取到 codex-tools @bolinfest
- #16284 修复 TUI app-server 权限配置转换 @etraut-openai
- #16202 修复粘贴驱动的 bottom pane completion teardown @etraut-openai
- #16504 core:直接使用 codex-tools config types @bolinfest
- #16503 将 request_user_input normalization 提取到 codex-tools @bolinfest
- #16510 core:直接使用 codex-mcp APIs @bolinfest
- #16509 将 code-mode 嵌套 tool collection 提取到 codex-tools @bolinfest
- #16512 core:从 lib.rs 移除跨 crate 重导出 @bolinfest
- #16516 修复:添加 #16512 中遗漏的 Cargo.lock 更新 @bolinfest
- #16513 将 tool registry planning 提取到 codex-tools @bolinfest
- #16521 将 tool registry plan 测试移动到 codex-tools @bolinfest
- #16523 [codex] 将 config types 移动到 codex-config @bolinfest
- #16524 修复:将一些测试工具移出 codex-rs/core/src/tools/spec.rs @bolinfest
- #16529 [codex] 移除 codex-core config type shim @bolinfest
- #16559 杂项:memories mini model @jif-oai
- #16561 修复:race pending @jif-oai
- #16564 细节:lint @jif-oai
- #16566 修复:回合结束时的 races @jif-oai
- #16567 杂项:进一步重做状态机 @jif-oai
- #16569 细节:状态机描述 @jif-oai
- #16571 杂项:将 assign_task 重命名为 followup_task @jif-oai
- #16577 CI:为 bazel.yml 上传精简 Bazel execution logs @bolinfest
- #16581 杂项:将 codex-exec 单元测试移动到同级文件 @bolinfest
- #16590 修复 rules_rs/crate_git_repository.bzl 中的非确定性 @tyler-french
- #16604 测试:消除 Windows 上 external bearer auth token 测试的不稳定 @bolinfest
- #16606 修复:为测试断言添加更多细节 @bolinfest
- #16608 修复:增加超时以应对缓慢的 PowerShell 启动 @bolinfest
- #16591 修复 resume picker 初始加载状态 @etraut-openai
- #16613 修复:为 PowerShell 再增加一个启动超时 @bolinfest
- #16601 修复 resume picker 过期的 thread names @etraut-openai
- #16616 修复一些已有 labels 并添加几个新 labels @etraut-openai
- #16588 修复 TUI review follow-ups 期间过期的 turn steering @etraut-openai
- #16617 修复:添加适用于 GitHub Actions Windows runners 的 pwsh/powershell shell fallback paths @bolinfest
- #16596 修复 /status 中的 fork source 显示(在 app server 中暴露 forked_from_id)@etraut-openai
- #16578 修复(tui):处理 zellij 重绘和 composer 渲染 @fcoury-oai
- #16630 core:通过原生 async ToolHandler 将 codex-core 编译时间缩短 63% @bolinfest
- #16631 core:通过原生 async SessionTask 将 codex-core 编译时间缩短 48% @bolinfest
- #16492 线程启动时自动信任 cwd @aibrahim-oai
- #16633 修复:处理 Windows 上的未使用变量 @bolinfest
- #16635 app-server:使 thread/shellCommand 测试感知 shell @bolinfest
- #16629 测试:在 Windows 上为 ProviderAuthScript 使用 cmd.exe @bolinfest
- #16634 构建:修复 Bazel lzma-sys 接线 @starr-openai
- #16658 修复已弃用的 login --api-key 解析 @etraut-openai
- #16508 从 core 中提取 models manager 及相关 ownership @aibrahim-oai
- #16662 修复:更改测试以帮助它们在 Bazel 下的 Windows 上通过 @bolinfest
- #16665 修复:在 Windows unicode shell 测试中使用 COMSPEC @bolinfest
- #16668 修复:在 Windows unicode shell 测试中使用 cmd.exe @bolinfest
- #16626 移除临时 ownership 重导出 @aibrahim-oai
- #16648 修复仅 commentary 回合后过期的 /copy 输出 @etraut-openai
- #16674 修复带连字符服务器名称的 MCP tool 列表 @etraut-openai
- #16667 当绕过沙箱时抑制 bwrap 警告 @etraut-openai
- #16670 修复 Codex HTTP client 中的 macOS sandbox panic @etraut-openai
- #16699 修复 macOS malloc 诊断泄漏到 TUI composer @etraut-openai
- #16700 为 app-server 会话添加 remote --cd 转发 @etraut-openai
- #16707 修复:保留平台特定的 core shell 环境变量 @bolinfest
- #16715 修复:处理偷偷进入的 clippy 违规 @bolinfest
- #16722 修复仅 Windows 的 clippy lint 违规 @bolinfest
- #16710 修复(tui):优先按显示名称对 skill mentions 排序 @fcoury-oai
- #16709 清理 forked child history @aibrahim-oai
- #16711 修复 Windows Bazel app-server trust 测试 @bolinfest
- #16720 移除 OPENAI_BASE_URL config fallback @etraut-openai
- #16528 Codex/windows bazel rust 测试覆盖率 no rs @bolinfest
- #16450 bazel:在 clippy workflow 中 lint rust_test targets @bolinfest
- #16735 [codex] 允许禁用 prompt instruction blocks @tibo-openai
- #16745 [codex] 允许禁用 environment context injection @tibo-openai
- #16725 在 reasoning/commentary 项之后抢先处理 mailbox 邮件 @aibrahim-oai
- #16755 使用 Node 24 进行 npm publish @aibrahim-oai
- #16753 [codex] 添加 responses proxy JSON dumps @tibo-openai
- #16746 为 MultiAgentV2 children 添加 spawn context @aibrahim-oai
- #16757 撤回 "bazel: lint rust_test targets in clippy workflow (#16450)" @bolinfest
- #16737 测试:避免 Windows auth fixture 中启动 PowerShell @bolinfest
- #16740 CI:对齐 Bazel repo cache 和 Windows clippy target 处理 @bolinfest
- #16758 [codex] 添加上下文窗口 lineage headers @tibo-openai
- #16763 添加 CODEX_SKIP_VENDORED_BWRAP @andmis
- #15915 [codex-analytics] subagent analytics @rhan-oai
- #16823 修复与 metadata remote URL 相关的不稳定测试 @etraut-openai
- #16825 修复 Windows 上不稳定的权限升级测试 @etraut-openai
- #16881 修复误导性的 codex exec help 用法 @etraut-openai
- #16888 澄清
codex execapproval help @etraut-openai - #16876 [codex] 添加 response proxy subagent header 测试 @tibo-openai
- #16829 修复 TUI composer 中的 CJK 单词导航 @etraut-openai
- #16833 修复 TUI fast mode 切换回归 @etraut-openai
- #16795 [regression] 修复 exec 中的 ephemeral turn backfill @etraut-openai
- #16822 修复 resume picker 时间戳标签和稳定性 @etraut-openai
- #16813 用 skill names 标注 skill doc reads @etraut-openai
- #16810 (tui):解码百分号转义的裸本地文件链接 @etraut-openai
- #16877 [codex-backend] 使 thread metadata 更新容忍 pending backfill @joeytrasatti-openai
- #16701 功能(requirements):支持 allowed_approval_reviewers @owenlin0
- #16925 修复(bazel):修复 simdutf @owenlin0
- #16926 bazel:始终保存 bazel repository cache @euroelessar
- #16928 bazel:启用
--experimental_remote_downloader@euroelessar - #16462 修复(guardian):修复 guardian events 的顺序 @owenlin0
- #16924 修复(sqlite):如果 DB 更新,不要硬失败 migrator @owenlin0
- #16744 构建:恢复 devbox codex run 的 lzma-sys Bazel 接线 @starr-openai
- #16764 app-server:集中 AuthManager 初始化 @euroelessar
- #16939 修复 clippy 警告 @mzeng-openai
- #16923 回滚 "[codex-backend] Make thread metadata updates tolerate pending backfill" @joeytrasatti-openai
- #15951 app-server:添加 egress websocket transport @euroelessar
- #16945 [codex] 允许 Seatbelt 中的 PyTorch libomp shm @viyatb-oai
- #16947 功能:从 backend endpint 回退下载 curated plugin。@xl-openai
- #16191 功能:从 plugin list 刷新 non-curated cache。@xl-openai
- #16952 在 mcp-server 中遵循 residency requirements @etraut-openai
- #16827 tui:通过 app server 路由 device-code auth @etraut-openai
- #16638 [codex-analytics] 添加 protocol-native turn timestamps @rhan-oai
- #16831 加速 /mcp inventory listing @etraut-openai
- #16349 当 exec server 为 none 时禁用 env-bound tools @starr-openai
- #16957 将 image_detail_original 提升为 experimental @fjord-oai
- #16962 将 config types 重构到单独 crate @pakrym-oai
- #16153 为 code mode 添加 setTimeout 支持 @pakrym-oai
- #16961 app-server:稍微统一 config changes 处理 @euroelessar
- #16890 在启动 app-server 前验证 exec 输入 @etraut-openai
- #16082 [mcp] 支持 MCP Apps 第 1 部分。@mzeng-openai
- #15893 修复:当 bwrap 无法创建 user namespaces 时发出警告 @viyatb-oai
- #16946 [codex] 添加 danger-full-access denylist-only 网络模式 @viyatb-oai
- #16972 app-server:修复 mcp_resource 中一个测试的编译 @euroelessar
- #15826 使 AGENTS.md discovery 感知 FS @pakrym-oai
- #16964 遵循 null thread instructions @aibrahim-oai
- #16988 将 dev message 合并为一个 @won-openai
- #16724 [codex] ez - 在 codex-rs/core/src/unified_exec/process_manager.rs 中将 env=>request 重命名 @starr-openai
- #16999 功能:empty role ok @jif-oai
- #17002 杂项:用于隐藏部分参数的 debug flag @jif-oai
- #17005 功能:从 v2 中移除 agent ID @jif-oai
- #17008 杂项:send_message 和 followup_task 不返回任何内容 @jif-oai
- #17007 杂项:为 debug flag 隐藏 nickname @jif-oai
- #16442 功能:/feedback cascade @jif-oai
- #16978 [codex] 降低 module visibility @pakrym-oai
- #17009 杂项:保留 request_user_input tool 以在 multi-agents 上持久化 cache @jif-oai
- #16739 稳定不稳定的 multi-agent followup interrupt 测试 @etraut-openai
- #16885 修复只读 apply_patch 拒绝消息 @etraut-openai
- #16882 修复嵌套 exec thread ID 恢复 @etraut-openai
- #16976 保留 null developer instructions @aibrahim-oai
- #16987 修复零 token 退出时缺失的 resume hint @etraut-openai
- #16912 功能(analytics):生成 installation_id 并在 responsesapi client_metadata 中传递 @owenlin0
- #16956 修复(guardian):超出预算时不要丢弃 transcript @owenlin0
- #16981 [codex] 使 AbsolutePathBuf joins 不可失败 @pakrym-oai
- #16348 更新 README @romainhuet
- #16977 [codex] 使 unified exec 测试感知 remote @pakrym-oai
- #16465 [mcp] 支持 MCP Apps 第 2 部分 - 向 mcp tool call result 添加 meta。@mzeng-openai
- #17026 app-server:将 watch_id 移动到 fs/watch 请求中 @euroelessar
- #16980 添加 full-ci branch trigger @pakrym-oai
- #16973 app-server:允许在 runtime 中启用 remote control @euroelessar
- #17032 [codex] 修复 unified exec 测试构建 @pakrym-oai
- #17031 修复(core):回滚 unified exec 输出中的 Command line @dylan-hurd-oai
- #17027 [codex] 将 apply_patch 迁移到 executor filesystem @pakrym-oai
- #17044 [app-server-protocol] 为 app-server-protocol 引入通用 ServerResponse @rhan-oai
- #17047 修复(app-server):回滚 null instructions 更改 @dylan-hurd-oai
- #16960 向 realtime start 添加 WebRTC transport @aibrahim-oai
- #17053 修复远程地址格式以适配 Windows Firewall 规则。@iceweasel-oai
- #17048 [codex] 通过 executor filesystem 应用 patches @pakrym-oai
- #16949 使用 model metadata 作为 Fast Mode 状态 @pash-openai
- #17039 修复(tui):降低启动和新会话延迟 @fcoury-oai
- #17052 为 JsonSchema 添加回归测试 @vivi
- #17059 添加 remote exec start script @pakrym-oai
- #17064 添加项目本地 codex bug triage skill @etraut-openai
- #17040 修复:沙箱模式变更时刷新 network proxy 设置 @viyatb-oai
- #16698 移除已过期的 April 2nd tooltip 文案 @etraut-openai
- #17096 移除过时的 codex-cli README @etraut-openai
- #16875 在 JsonSchema 中支持 anyOf 和 enum @vivi
- #16880 渲染 function attribute descriptions @vivi
- #16879 为 tools 渲染 namespace description @vivi
- #16582 功能:TUI 中单一 app-server bootstrap @jif-oai
- #17117 codex debug 1(guardian approved)@jif-oai
- #17119 codex debug 3(guardian approved)@jif-oai
- #17121 codex debug 5(guardian approved)@jif-oai
- #17123 codex debug 7(guardian approved)@jif-oai
- #17125 codex debug 9(guardian approved)@jif-oai
- #17127 codex debug 11(guardian approved)@jif-oai
- #17129 codex debug 13(guardian approved)@jif-oai
- #17131 codex debug 15(guardian approved)@jif-oai
- #17118 codex debug 2(guardian approved)@jif-oai
- #17120 codex debug 4(guardian approved)@jif-oai
- #17122 codex debug 6(guardian approved)@jif-oai
- #17124 codex debug 8(guardian approved)@jif-oai
- #17126 codex debug 10(guardian approved)@jif-oai
- #17128 codex debug 12(guardian approved)@jif-oai
- #17130 codex debug 14(guardian approved)@jif-oai
- #17071 配置 multi_agent_v2 spawn agent hints @pakrym-oai
- #17091 在 /status 中显示全局 AGENTS.md @etraut-openai
- #17086 修复恢复当前 thread 时的 TUI 崩溃 @etraut-openai
- #17098 跳过禁用服务器的 MCP auth probing @etraut-openai
- #17097 添加 realtime transport config @aibrahim-oai
- #17043 [mcp] 支持 server-driven elicitations @mzeng-openai
- #17058 向 realtime TUI 添加 WebRTC media transport @aibrahim-oai
- #17063 为 exec cwd plumbing 使用 AbsolutePathBuf @pakrym-oai
- #17138 修复(debug-config, guardian):修复 /debug-config 渲染和 guardian… @owenlin0
- #17046 release ready,仅对 siwc 用户启用 @won-openai
- #16751 为 filesystem APIs 添加 sandbox 支持 @starr-openai
- #17142 [codex] 在 TUI 启动中支持 remote exec cwd @pakrym-oai
- #17149 修复缺失字段 @canvrno-oai
- #17154 修复 tool registry 测试中的 ToolsConfigParams 初始化器 @won-openai
- #17145 将 realtime WebRTC native media 接入 Bazel @aibrahim-oai
- #17057 将 WebRTC realtime starts 附加到 sideband websocket @aibrahim-oai
- #17162 添加顶层 exec-server 子命令 @starr-openai
- #17061 更新 guardian output schema @maja-openai
- #17164 在 Full Access 模式下自动批准 MCP server elicitations @leoshimo-oai
- #17093 添加 WebRTC realtime app-server e2e 测试 @aibrahim-oai
- #17174 支持 Warp 的 OSC 9 通知 @etraut-openai
- #16646 修复过期的 thread-name resume 查找 @etraut-openai
- #17165 将默认 realtime prompt 移动到 core @aibrahim-oai
- #17176 添加 realtime voice selection @aibrahim-oai
- #17175 添加 TUI notification condition config @etraut-openai
- #17183 将 realtime 启动默认设为 v2 model @aibrahim-oai
- #17186 跳过 source builds 的更新提示 @etraut-openai
- #17188 使 webrtc 成为默认体验 @aibrahim-oai
- #17163 [codex] 将 steering 推迟到 post-compaction 采样模型之后 @jgershen-oai
- #17222 功能:按 ID/name 使用 /resume @jif-oai
- #17226 功能:按 OS 和 plans 提供高级公告 @jif-oai
- #17170 将 statusline context 渲染为 meter @etraut-openai
- #17217 为 remote unified exec 跳过本地 shell snapshots @jif-oai
- #17116 杂项:合并 name 和 title @jif-oai
- #16276 [codex] 添加 memory extensions @kliu128
- #17168 重构(proxy):澄清 sandbox block messages @viyatb-oai
- #17076 [codex] 在 TUI 中截断的 exec 输出上显示 ctrl + t 提示 @mom-oai
- #15197 添加 Codex Apps sediment file remapping @caseychow-oai
- #16009 将 app-server turn clientMetadata 转发到 Responses @neil-oai
- #17256 app-server:为 app-server message processors 使用共享 receivers @euroelessar
- #16944 [mcp] 将 tool search 扩展到自定义 MCPs。@mzeng-openai
- #16966 功能(tui):Ctrl+O 复制热键并强化 copy-as-markdown 行为 @fcoury-oai
- #17262 app-server:通过移除多余的
mut修复 clippy @euroelessar - #17258 省略空的 app-server instruction overrides @aibrahim-oai