AI 工程

Codex 0.143.0 兩個新預設:MCP 工具改「先搜再用」、遠端 plugins 直接開箱

Codex 0.143.0:兩個「改成預設」的設定,會直接改變你用 MCP 與 plugins 的方式

若你平常用 OpenAI 的 codex CLI 接了一堆 MCP server——GitHub、Slack、Figma、內部資料庫——那 0.143.0 有兩個改動值得今天就打開 changelog 對一下。它們不是多一個功能開關,而是把兩件事直接改成預設

  • 「MCP tools now use tool search by default」:MCP 工具預設走「工具搜尋」。
  • 「Remote plugins are now enabled by default」:遠端 plugins 預設開啟。

共同點是:兩者動的都是「模型看得到什麼」「你能裝什麼」的底層行為。升上去之後,就算你一行 config 都沒改,也會感覺到差異。這篇手把手拆一下:這兩個預設改了什麼、為什麼要這樣改、你該怎麼配合調整。(版本資訊取自 openai/codex 的 rust-v0.143.0 release notes 與對應 PR,引號內為 changelog 原文。)

MCP tool search 運作原理:舊行為把所有工具塞進 context,0.143.0 改成模型先搜尋再載入需要的工具

一、MCP tool search 變預設:從「全塞進 context」到「先搜再用」

它要解決什麼

MCP(Model Context Protocol)好用在你能把外部系統包成工具掛給 agent。但副作用是:掛越多 server,工具越多。每個工具的名稱、說明、參數 schema 都要放進模型的 context。掛五六個 server、四五十個工具全攤在提示裡,會有兩個壞處:

  • 吃 token:工具清單本身就佔掉可觀 context,還沒動工就先繳一筆稅。
  • 選擇變差:工具多又名稱相近時,模型容易叫錯工具、填錯參數。

舊行為 vs 新預設

從 PR #29486(作者 GitHub 帳號 sayan-oai)看,舊的邏輯是有條件的:MCP 工具只有在「feature flag 打開」或「工具數量 ≥ 100」時,才會被放到 tool search 後面;否則就全部直接曝露給模型。這代表同一套 agent 的行為會隨你的 rollout 設定、以及裝了幾個工具而改變——很難預期。

0.143.0 把它拉直了。PR 的說法是「the searched-tool flow is now the intended behavior」:只要模型支援 tool_search、而且 provider 支援 namespaced tools,就一律走搜尋流程。

機制:多一次「查工具」的往返

搜尋流程的運作是這樣(見上圖):

  1. 模型第一輪看不到具體的 MCP 工具,只拿到一個「工具搜尋」能力。
  2. 模型依當下任務丟關鍵字去搜,例如要開 PR 就搜 pull request 相關的工具。
  3. 系統只把命中的工具(名稱 + schema)回給模型。
  4. 模型下一輪才真正呼叫那個工具。

換句話說,工具是延後(deferred)載入的:需要時才進 context,而不是一開始全部攤開。代價是多一次 round-trip(先搜、再用),好處是 context 乾淨、選擇更準。

相容性:不支援就自動退回

這點很重要,別誤會成「舊模型會壞掉」。changelog 與 PR 都講清楚:當 model 或 provider 任一不支援 tool search / namespaced tools 時,Codex 會退回舊的「直接曝露工具」路徑。所以老設定不會突然爆掉,只是享受不到精簡 context 的好處。

你該怎麼配合(實戰)

既然工具是「被搜出來的」,那工具好不好被搜到就直接影響 agent 表現。幾個可照做的招:

  • 把工具/server 命名與描述寫清楚:搜尋靠的是名稱與說明的語意。內部 server 別叫 mcp1,工具別叫 run;叫 github_create_pr、描述寫「Open a pull request on GitHub」這種,命中率才高。
  • 用 allowlist 先修剪:config 裡每個 server 可設 enabled_tools(白名單)和 disabled_tools(黑名單,套在白名單之後)。把這個 repo 根本用不到的工具關掉,搜尋空間更乾淨。
  • prompt 裡點名:當你心裡已經知道要用哪個 server/工具,直接在指令講明「用 GitHub MCP 開一個 PR」,能幫模型把搜尋收斂到對的方向,少繞路。
  • 注意延遲敏感的流程:只掛兩三個工具、又對回應速度斤斤計較的場景,多一次搜尋往返未必划算——不過工具本來就少時,精簡幅度有限,影響通常不大。

誠實標註:官方 config reference 我沒查到明確的「一鍵關閉 tool search」開關;若你有特殊理由要維持舊的直接曝露行為,建議去 config-reference 與該版 changelog 再確認,別憑印象改。

二、Remote plugins 預設開啟:catalog 直接可裝

第二個預設是 plugins。changelog 原文:「Remote plugins are now enabled by default, with richer catalog rows, npm marketplace sources, and visible remote/local versions.」拆開來是四件事:遠端 plugins 預設開、目錄列(catalog rows)資訊更豐富、支援 npm 作為 marketplace 來源、以及 remote/local 版本都看得到。

Remote plugins 安裝流程:接上 marketplace、下載到本機 cache、一次帶進 skills/hooks/MCP servers 三種能力

先搞懂 plugin 是什麼

依官方 plugins 文件,一個 Codex plugin 是「把 skills、app 整合、MCP servers 打包成可重用工作流」的東西。也就是說,裝一個 plugin,可能一次帶進三種能力:

  • skills:針對特定工作的可重用指令(例如「怎麼跑我們的 release 流程」),Codex 會按情境載入。
  • hooks:掛在流程節點上的自動化。
  • MCP servers:對外系統的工具入口。

這就接回第一段——plugin 帶進來的 MCP server,其工具一樣會走上面講的 tool search。兩個預設是連動的。

手把手:接一個 marketplace 並安裝

marketplace 本質是一份「plugin 的 JSON 目錄」。基本流程(CLI):

# 1. 接上一個 marketplace(GitHub repo 或本地資料夾)
codex plugin marketplace add owner/repo
codex plugin marketplace add owner/repo --ref main          # 釘分支/版本
codex plugin marketplace add ./local-marketplace-root       # 本地目錄

# 2. 檢視 / 升級 / 移除
codex plugin marketplace list
codex plugin marketplace upgrade
codex plugin marketplace remove <marketplace-name>

裝好之後,Codex 會把 plugin 下載到本機快取再載入,路徑是:

~/.codex/plugins/cache/$MARKETPLACE_NAME/$PLUGIN_NAME/$VERSION/

本地 plugin 的 $VERSION 會是 local。這也解釋了 changelog 那句「visible remote/local versions」:你能同時看到遠端目錄裡的版本、和本機實際載入的版本——版本對不上時很好抓。

兩個容易踩的坑

  • marketplace add 吃的是 Git repo,不是 raw 檔:別把 marketplace.json 的 raw GitHub URL 丟給 marketplace add,它會去 clone 一個 repo,raw 檔 URL 會被當成 repo URL 而失敗。給它 repo(owner/repo.git URL)。
  • plugin 的目錄結構有規矩:只有 plugin.json 該放在 .codex-plugin/ 裡;skills/hooks/assets/.mcp.json.app.json 都放在 plugin 根目錄,不要塞進 .codex-plugin/

順帶一提:手動掛 MCP 還是走 config.toml

不透過 plugin、想自己掛 MCP server 也可以,直接寫 ~/.codex/config.toml

[mcp_servers.context7]
command = "npx"
args = ["-y", "@upstash/context7-mcp"]

# HTTP 類型
[mcp_servers.figma]
url = "https://mcp.figma.com/mcp"
bearer_token_env_var = "FIGMA_OAUTH_TOKEN"

幾個實用旋鈕:tool_timeout_sec(單一工具逾時,預設 60 秒)、startup_timeout_sec(server 啟動逾時,預設 10 秒),以及前面提過的 enabled_tools / disabled_tools。也可以用 codex mcp add <name> -- <command> 從 CLI 加,在 TUI 裡打 /mcp 看目前掛了哪些。

三、同版還有哪些改動(一句話帶過)

0.143.0 不只這兩個預設,順手記一下其他值得知道的:

  • 系統代理:Codex 可透過 macOS/Windows 系統代理(含 PAC、WPAD)routing 認證與 Responses API 流量。
  • ChatGPT-hosted MCP server 可明確使用 session 認證。
  • 新增 codex remote-control pair 產生手動配對碼;Amazon Bedrock 新增 GPT-5.6 的 Sol/Terra/Luna 模型並支援 max reasoning effort。
  • 一票 bug 修復(Windows ConPTY 換行/退格、MCP 啟動被殘留的 TUI 安全提示卡住等)與安全更新(OpenSSL、Hono 等)。

四、對工程團隊的意義

把兩個預設放在一起看,方向很清楚:Codex 在把「掛很多工具/plugin」變成可規模化的常態。以前工具一多就吃 context、行為又隨設定飄;現在預設就幫你把工具延後載入、把 plugin 目錄化管理。對團隊有幾個可操作的點:

  • 升級前先盤點命名:tool search 一旦變預設,工具/server 的命名與描述品質,直接變成「能不能被叫到」的關鍵。趁升級把內部 MCP 工具的名字和 description 修一輪,CP 值很高。
  • 用 plugin 統一團隊工具:與其叫每個人各自在 config.toml 手動掛一堆 server,不如把團隊常用的 skills + hooks + MCP 打包成一個 repo marketplace,marketplace add owner/repo 一行接上,版本還看得到——新人上手成本大降。
  • 驗證退回行為:如果你們用的是自架或較舊的 model/provider,升級後確認一下 tool search 有沒有正常退回直接曝露路徑,行為是否如預期。

一句話:0.143.0 沒有華麗新功能,但這兩個「改成預設」很實在——它把你原本要手動調的東西,調成了合理的預設。升級後花十分鐘檢查工具命名與 plugin 來源,大概就能吃到多數紅利。

來源

  • OpenAI Codex release notes:github.com/openai/codex/releases/tag/rust-v0.143.0
  • PR「Use tool search for MCP tools by default」(作者 sayan-oai):github.com/openai/codex/pull/29486
  • Codex 官方文件 — Plugins:developers.openai.com/codex/plugins(與 /plugins/build)
  • Codex 官方文件 — MCP:developers.openai.com/codex/mcp

整理:DataAgent · Coding Agent 實戰教學

發表迴響

%d 位部落客按了讚: