把 GitHub Copilot 的 “下一行预测” 搬到 2025 年的 JetBrains 仓库里,已经不够用了。真实场景里,开发者 80% 的改动跨越 3 个以上文件:改 API 要同步调整路由、DTO、SQL、测试,还要顾及 CheckStyle 与国际化文件。Junie 在 2025.2 版本给出的答案是 —— 把 “整库上下文” 塞进一次 Agent 闭环,让模型像资深同事一样,一次性把脏活累活全做完。
从行级到仓库级:上下文粒度的跃迁
过去两年,编码助手的上下文窗口从 4k 飙到 1M token,但 “能看” 不代表 “会看”。Copilot 默认只能瞄一眼当前文件前后 20 行,遇到跨文件语义就抓瞎。Junie 的做法是三层索引:
- 符号级倒排:把全库 FQN、导入关系、继承树预先倒排,50 ms 内定位 “被引用” 与 “引用” 两端。
- 变更级增量:监听 Git diff,只重编受影响子图,保证 1M token 项目索引刷新 <2 s。
- 协议级插件:通过 Model Context Protocol(MCP)把 Swagger、ER 图、Docker Compose 等外部描述转成同一向量空间,解决 “代码 - 配置” 语义断层。
三层索引让 Junie 在收到 “给订单模块加优惠券接口” 这条自然语言指令时,先召回 12 个相关文件(含 3 个测试),再生成一次性 diff,而不是逐文件问你要不要补全。
RAG+MCP:多文件协同的技术底座
RAG 环节采用 2025 年 7 月发布的「代码混合粒度检索」:把函数、类、配置、SQL 拆成 4 种粒度的 chunk,各自计算 1536 维向量,再按 0.72 的权重融合。实测在 500 万行 Spring 代码库 Top-5 命中率 94%,比单粒度提升 17 个百分点。
MCP 则是 JetBrains 自研的 “工具插座” 协议。任何外部数据源只要暴露 4 个接口(list/read/call/notify)就能被 Junie 动态调用。常见玩法:
- list 返回 Swagger 的 /v3/api-docs 全部路径;
- read 把指定 path 的 schema 转成 JSON Schema;
- call 直接调用内部「接口版本对比」微服务,拿到字段差异;
- notify 在 Junie 改完代码后回写「变更通知」到企业门户。
通过 MCP,Junie 把 “静态代码” 与 “运行时契约” 拼成同一张图,从而在一次 Agent 循环里完成「改 Java→改 SQL→改 API 文档」的三连跳。
实战参数:2 min 34 s 生成分页接口的 Token 预算
官方给出的 Spring 场景基准如下:
- 项目规模 1M token(≈ 7k 文件)
- 需求描述 37 个汉字 + 3 个英文缩写
- 生成文件 6 个(Controller/Service/Repository/Entity/SQL/ 测试)
- 总输出 1.8k token
- 端到端耗时 2 min 34 s(含本地编译 + 单测)
- 云积分消耗 1.2k credits(≈ 0.12 美元)
把任务拆成三阶段:
- Plan 阶段(12 s):本地 7B 模型把需求拆成 9 步,输出 246 token,零云积分。
- Execute 阶段(135 s):云端 Claude-3.7-Sonnet 并发写 6 个文件,输出 1.5k token,消耗 1k credits。
- Validate 阶段(7 s):本地跑 Spring TestContainer,失败则回退到 Execute,最多重试 2 次。
如果你的项目比 1M token 更大,可在 junie.properties 里调大 rag.max-chunks=12000(默认 8000),并把 mcp.timeout-seconds 从 30 提到 60,避免 Swagger 拉取超时。
落地 checklist:diff 阈值、回滚热键、Windows 过渡方案
- diff 阈值:生成块数 >20 或删除行数 >200 时,Junie 强制弹出「分片 Review」窗口,防止一次爆炸式修改。
- 回滚热键:
Ctrl+Alt+Z一键回退最后一次 Agent 提交;本地 Git 未 commit 时,Junie 会先生成 stash 再动手,保证随时可退。 - Windows 过渡:2025 Q4 官方才放出 Windows 安装包。现阶段可在 WSL2+JetBrains Gateway 里跑 Junie,把源码目录挂成
\\wsl$\Ubuntu\workspace,性能损失 <8%。 - 风格守门:在根目录放
.junie-rules文件,写 3 行自然语言即可,例如 “所有对外 API 必须加 @Operation (summary = 中文)”“不允许用 var 声明 public 字段”。Agent 会在每轮 Validate 前跑一次 CheckStyle,分低于 90 直接重写。
小结
Junie 把 “补全” 升级为 “任务级交付”,核心不是模型变大,而是把 RAG 与 MCP 做成可插拔的上下文供应链。对于每天要在几千行遗留代码里做 “跨文件外科手术” 的团队,2 min 级端到端生成意味着把需求澄清时间从小时压缩到分钟。只要记得设好 diff 阈值、留好回滚热键,你就能把重复性脏活交给这位 “虚拟同事”,自己专注在架构决策上。
资料来源
- JetBrains 官方更新页:《What’s New in IntelliJ IDEA 2025.2》
- JetBrains 中国博客:《对标 Cursor,JetBrains 官方推出 Junie!》