KwaiKAT团队发布了KAT-Coder-V2.5,这是一款能够在真实可执行仓库中运行而非仅生成单次代码的编码模型。该模型通过StreamLake提供服务,同时开放权重版本KAT-Coder-V2.5-Dev已在Hugging Face上以Apache-2.0许可发布。
研究将可验证任务定义为三元组:精确的任务描述、可执行的仓库环境以及一组验证测试。一个补丁只有通过所有测试才算正确。任务从真实拉取请求和提交中挖掘,遵循SWE-bench路线。合并的代码变更提供黄金补丁,伴随的测试变更提供测试补丁。原始问题文本被丢弃,转而重新生成描述,包含基于黄金补丁的问题陈述、从测试补丁衍生的需求以及从两者推断的接口约束。清晰度检查会剔除所有模糊、不完整、不明确或内部不一致的内容。
AutoBuilder负责环境构建:一个构建代理分析仓库并编写配置脚本,从干净检出安装依赖并运行测试;一个验证代理在隔离沙箱中执行脚本。接受规则不读取退出码或grep日志模式,而是解析结构化测试框架输出,只有当超过90%的预期测试被收集且通过/失败结果可跨运行复现时才接受环境。失败信息作为结构化反馈用于迭代修复。结合预配置的基础环境、构建系统模板和可检索的构建配方库,构建成功率从16.5%提升至57.2%,生成了超过10万个涵盖12种语言的可验证环境。Git历史、提交元数据等可利用痕迹被剥离,防止代理从仓库中读取参考解决方案。
数据扩展飞轮:通过过程过滤而非最终测试成功来筛选轨迹。接近成功的轨迹接收有针对性的过程级提示,指示要检查或验证的内容而不暴露解决方案,这使之前零通过的任务通过率提升至约20%。通过验证的轨迹在修复补丁后重新生成无提示版本,仅保留通过验证、无提示泄露且与补丁一致的样本。通过运行的轨迹通过规则门去除无效、不稳定或利用性的轨迹,然后评分阶段评估探索、定位、编辑前推理、规范保真度、仓库约定、补丁最小性、验证质量、恢复行为和诚实度。第三种机制针对训练框架过拟合:随机化工具名称、参数约定、输出格式和提示模板,同时保持功能不变。由于验证锚定于测试结果而非框架痕迹,同一任务可在多种框架配置下重新服务。还注入了现实扰动:缺失依赖、瞬态命令失败、截断输出和噪声日志。
基础设施故障在算法限制之前就限制了奖励。在KAT-Coder-V2训练期间,缓慢的奖励曲线起初归咎于强化学习算法,但审计发现约16%的轨迹因沙箱基础设施问题而非模型策略失败,边界错位有时会清空约40步的观测并破坏奖励。随后实施了三项基础设施修复:早期释放镜像驱逐策略将磁盘使用率从95%降至60%,将超时导致的无效回滚从6-7%降至1%以下;纠正远程沙箱初始化时的环境变量,阻止系统覆盖导致6-7%样本奖励翻转,错误率降至1%以下;网关服务器绕过主流聊天端点(在约200步规模下因重复应用apply_chat_template和重新分词导致40%标记漂移),直接调用/generate确保回滚标记对齐。这些更新将沙箱反馈错误率从约16%降至2%以下,并将训练崩溃次数减少了一个数量级。
研究选择带GAE的PPO而非无批评者的轨迹方法,因为生产框架将会话分割成结构不同的样本,使组基线复杂化。使用非对称演员-评论家架构,评论家获得特权训练上下文(奖励、测试、覆盖率、补丁、元数据、未来回合),而演员仅看到回滚状态。推理时丢弃评论家和额外上下文。奖励分三层:核心任务分数要求所有失败转通过和通过转通过测试通过;标准行为约束惩罚重复、错误工具调用和调试残留;失败轨迹激励通过F2评分文件检索并给予部分测试信用。五个专家通过多教师在线策略蒸馏使用逆向KL、离线策略启动和Prune-OPD的漂移感知截断进行融合。
在统一Claude Code框架下,KAT-Coder-V2.5在PinchBench上以94.9领先,击败Opus 4.8的93.5;在SWE-Bench Pro上以65.2排名第二(Opus 4.8为69.2),在内部KAT Code Bench上以53.1排名第二(Opus 4.8为57.3)。但在Terminal-Bench 2.1上落后,以60.7排名最后,落后于GLM-5.1(61.8)和Opus 4.8(84.6)。在SciCode上得分为50.3,与GLM-5.2持平。
开放权重版本KAT-Coder-V2.5-Dev是一个独立的35B总参数量/3B激活参数的MoE模型,基于Qwen3.6-35B-A3B使用12.7万SFT示例后训练,然后进行强化学习。在独立的内部协议上评估,其结果与主旗舰表不可比。