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 结对编程伙伴协作。