For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
主要導覽
2026年1月11日 Codex

Skyscanner 如何運用 JetBrains MCP 強化 Codex

Skyscanner 如何將 Codex CLI 與 JetBrains IDE 整合,加快偵錯、測試及開發工作流程。

作者: Jack Waller (Software Engineer, Skyscanner)

Skyscanner 如何運用 JetBrains MCP 強化 Codex

了解 Skyscanner 如何將 OpenAI 的 Codex CLI 與 JetBrains IDE 整合,大幅提升其能力,讓 AI 助理也能使用開發人員所用的偵錯與測試工具。

在 Skyscanner,我們一直在尋找能兼顧品質並加快開發速度的方法。過去幾個月,我嘗試在日常工作流程中,讓 OpenAI 的 Codex 擔任結對程式設計夥伴。

這次有什麼不同?我透過 JetBrains 的 Model Context Protocol(MCP)伺服器,將 Codex CLI 連接到 JetBrains IDE,讓 AI 能看見並使用 IDE 的功能。這項整合帶來了重大改變。本文將分享,讓 Codex 存取 JetBrains 工具如何提升它解決問題的能力,並加快我們的開發速度。

讓 Codex 取得 IDE 的上下文

透過 JetBrains MCP 伺服器與 Codex 協作,AI 就能運用我開發環境中豐富的上下文,而這些資訊通常是它「看不到」的。

有了 JetBrains MCP,Codex 就能向 IDE 取得更多上下文,例如:

  • 找出檔案問題:使用 IntelliJ 的檢查功能分析檔案中的錯誤與警告,並傳回具體問題,包括錯誤訊息與位置。
  • 依執行組態執行:依照預先定義的執行組態,執行單元測試、靜態程式碼檢查工具或格式化工具等,並取得結束代碼與輸出。

實際使用後,這種做法展現了強大的效果。開發人員在撰寫、編譯及測試程式碼時,都仰賴反覆取得回饋來調整程式碼。Codex 也能運用同樣的回饋循環,利用 IDE 的上下文更有效地檢查及驗證自己的輸出,縮短迭代時間。

更快找出錯誤:實際案例

我們的程式碼使用了 Databricks 的 Java SDK。當我為其中的錯誤處理邏輯撰寫單元測試時,我請 Codex 幫忙模擬一個例外情境。它很有把握地產生了一行 Java 程式碼,大致如下:

var stubError = new NotFound("dummy error");

乍看之下,這似乎很合理,因為我們想模擬的是 NotFound 錯誤。但沒過多久,IntelliJ 就在那一行下方畫了一條醒目的紅色底線。

問題在於,Databricks SDK 中的 NotFound 例外類別沒有只接受單一字串引數的建構函式(可在 Databricks SDK 的原始碼 NotFound.java 中確認)。換句話說,Codex 建議的程式碼根本無法通過編譯。

在預設情況下,Codex 並不會知道這個錯誤,可能要等到嘗試執行測試時,才會發現有問題。不過,透過 JetBrains MCP 整合,Codex 立即就察覺了錯誤。背後的運作方式是:Codex 呼叫 IDE 的 get_file_problems 工具來檢查檔案,工具隨即傳回編譯問題,也就是找不到相符的建構函式。

如果沒有 MCP,流程很可能是:

  1. 產生程式碼
  2. 找出執行單元測試的方法
  3. 執行單元測試(可能需要請使用者核准指令執行所需的權限提升)
  4. 讀取並解析失敗訊息
  5. 嘗試修正錯誤

有了 JetBrains MCP,這個循環就精簡許多:

  1. 產生程式碼
  2. 向 JetBrains 查詢檔案問題
  3. 針對 IntelliJ 回報的具體錯誤進行修正

這既節省了時間,也減少了上下文用量。感覺就像在與一位工程師結對程式設計,對方馬上就說:「啊,這個類別沒有那樣的建構函式,它需要的是別的引數。我來快速修正一下。」

預先定義的測試與格式化作業

另一個讓我受益的優點,是 Codex 能直接透過 IDE 使用我們現有的建置與測試工具。對於大多數專案,我已經在 IDE 中定義好本機執行組態,例如執行測試、格式化及靜態程式碼檢查。有了 JetBrains MCP,Codex 就能找到這些組態,並視需要執行。

實際使用時,這減少了 Codex 為了弄清楚如何執行這些功能所需的時間與上下文,讓它能持續專注於原本的問題。做了這項調整後,我觀察到 Codex 在執行測試、格式化或靜態程式碼檢查時,不再遇到阻礙。

因此,我在自訂智慧體指示中,要求 Codex 每次修改後都執行測試、靜態程式碼檢查及格式化。

## Code edit instructions

After you've finished editing

- Use the jetbrains mcp (if available) to find any problems
- Run format command if available
- Run lint command if available

我發現,Codex 現在經常能自行解決問題,不需要我介入。身為開發人員,這對我來說幫助很大:

  • 我不必在 Codex 每次修改後,都手動執行測試、靜態程式碼檢查及格式化。
  • 我不必再將錯誤訊息複製貼回對話中。
  • Codex 能迅速取得精確的回饋,確認修改是否確實有效,減少反覆取得回饋的次數。

這讓我有更多時間專注於手上的任務:交付高品質、能正常運作的軟體。

這如何改變我們的開發方式

將 Codex 與 JetBrains MCP 整合後,我們的 AI 助理在開發流程中的能力與可靠性都有明顯提升。我們觀察到的實際好處包括:

  • 更快的回饋循環:Codex 能立即從 IDE 取得編譯錯誤與測試失敗的回饋。
  • 減少來回提供提示詞:Codex 不必總是等我執行操作後再貼上錯誤訊息,而是能直接查詢 IDE。
  • 更高品質的建議:Codex 能看見 IDE 所看到的資訊,因此它提出的修正更有可能一次就通過編譯與測試。
  • 更契合現有工作流程:Codex 能接入我們現有的工具,而不是自行建立另一套工具。

整體而言,這項整合讓 Codex 從獨立工具,轉變為與我們開發生態系更緊密結合的一環。

總結

對 Skyscanner 的我們而言,關鍵體悟很簡單:上下文就是一切。Codex 本身已經很強大,但能掌握 IDE 資訊的 Codex 更能發揮效用。這些上下文讓 Codex 對問題有更深入的了解,能更快提出準確的修正,也進一步增加了我對其輸出的信任。

我們希望這段經驗能啟發其他人嘗試這些整合。這種體驗真的更不像是在使用工具,而更像是與一位能看見我們所見資訊的 AI 結對程式設計夥伴協作。