2026-08-26
8589
在经过一段时间的筹备后,JetBrains 宣布发布 Junie Local 的首个版本,使用户能够在 MacBook M5 上实现完全本地的编码代理运行,并基于 Qwen3.6-27B 构建底层模型。团队在相关博文中详细阐释了选用 Qwen3.6-27B 而非 Qwen3.8-27B 的原因,同时分享了从代理系统到推理引擎的全链条优化经验。
本地推理的难点在于预填充速度成为了性能瓶颈。与云端模型相比,本地模型在预填充(prefill)过程中速度较慢,读取文件内容时会耗费大量时间。在 Junie 的主执行流程中,用户在指定任务后,代理会将任务提交给大语言模型(LLM),随后模型返回一系列调用指令(如 Bash 命令、文件读写等),而代理则执行这些指令并将结果反馈给用户。在这一环节中,LLM 持续接收上下文扩展的请求,并复用此前请求的预填充数据,称为 KV-cache。在云端环境下,即使模型需重新读取文件,仍然能够迅速处理。但是,基于本地模型的限制,团队因此调整了推理逻辑:将每个新请求直接追加到滚动上下文中。这样一来,模型已读取的文件会被保留在上下文窗口内,无需再次读取,从而显著减少了重复预填充所需的时间。
另外一个重要的优化方面是关于 Junie 启动新编码会话时发送的系统提示与初始上下文。实际上,首次 LLM 请求的数据不仅包括具体任务,还涵盖一系列会在每次新会话中发送与处理的信息。为缓存这些信息,团队重新安排了数据发送顺序,并为推理引擎引入了特定的逻辑:将用户请求之前的所有前缀进行缓存,以支持后续同一项目任务的直接复用,而项目上下文之后的内容则主动排除在缓存之外。这样的改变意味着,在一个项目内,不同任务之间能够共享已处理的上下文,避免重复计算,从而大幅降低每次请求的延迟,提高整体响应速度。
至于为什么选择 Qwen3.6-27B 而非 Qwen3.8-27B,团队在博文中简要解释了该决定背后的原因,但具体细节并没有完全披露。从优化策略来看,Qwen3.6-27B 在本地推理环境下,与 Junie 的滚动上下文和前缀缓存机制更为协同,能够在 MacBook M5 的硬件条件下达到满意的性能。而 Qwen3.8-27B 可能在某些方面存在兼容性或效率上的问题,因此团队最终决定采用前者作为首个发布版本的基础模型。
目前,Junie Local 已经可以安装,用户能够在自己的本地环境中体验完整的编码代理功能。团队表示,此版本只是未来长期项目的开端,接下来会持续优化本地推理体验,并扩展对更多硬件平台的支持。