KAT-Coder-V2.5-Dev代码模型部署与调用指南

一款35B总参数量、仅3B激活参数的MoE架构编程智能体已正式开源,采用Apache-2.0开源协议。该模型面向真实软件工程场景下的自主编程任务,在七项智能体编程基准测试中拿下同规模最优结果,同时通过强化学习分层奖励设计,将异常工具调用率从9.34%大幅降至0.28%,实现了高性能与高稳定性兼具的工程级可用表现。
根据技术团队的内部复现测试,在同等参数规模的模型中,该模型在智能体编程领域取得了全面领先的成绩:SWE-bench Verified达到69.40、SWE-bench Multilingual为63.00、SWE-bench Pro为45.96,七项编码智能体基准全部位列同规模第一。
除了核心评测分数外,团队还通过强化学习阶段的针对性奖励设计,显著抑制了模型的异常行为:异常工具标签占比从9.34%降至0.28%,单轮持续重复生成的比例从0.34%降至0%。对于需要长程多轮工具调用的智能体场景来说,这类行为稳定性往往比单点分数更能决定实际落地的可用性。
目前模型权重与配置文件已全面开源,相关下载链接如下:
- ModelScope:https://modelscope.cn/models/Kwaipilot/KAT-Coder-V2.5-Dev
- 技术报告:https://modelscope.cn/papers/2607.05471
核心评测细节
本次评测的所有指标均为内部复现结果:团队下载公开的模型checkpoint,通过vLLM或SGLang部署,并在统一标准化的流程下进行测试,未直接采用任何模型的官方报告结果。每个模型在每个评测集上仅测试一次,仅当发现明显错误时才进行重测。
其中Terminal-Bench 2.1的41.02为两套智能体harness的平均值,单独得分为Terminus-2 32.60 / Claude Code 49.44。本次测试的几个值得关注的亮点包括:
- SWE-bench系列全面领先:在SWE-bench Verified上,该模型以3B激活参数超过Qwen3.5-27B(68.60)这类稠密模型;在Multilingual与Pro评测集上的领先幅度更大,分别领先5.33与3.83个百分点,说明优势不仅局限于英文主流代码仓库场景。
- Scicode评测表现突出:得分达到44.20,领先第二名近7个百分点。该评测主要考察科学计算代码生成,对模型的领域知识与长程推理能力都有较高要求。
- Terminal-Bench 2.1表现均衡:在两套harness上的测试结果波动很小,而部分对比模型在更换评测框架后表现波动极大,这种稳定性恰恰是智能体落地的关键因素。
评测配置详情
- SWE-bench Verified / Multilingual / Pro,KAT-Code-Bench:agent=claude_code@2.1.195,pass@k=1,temperature=1.0,top_p=0.95,256k上下文
- Terminal-Bench 2.1:agent=terminus-2 / claude_code,pass@k=1,temperature=0.7,top_p=1.0,256k上下文
- PinchBench:agent=openclaw@2026.3.13,pass@k=1,temperature=0.7,top_p=1.0,256k上下文
- Scicode:pass@k=1,temperature=0.6,top_p=1.0,256k上下文
评测异常情况说明
为保持评测透明,团队如实说明了三处与官方结果或预期不符的情况:
- Qwen3.6-35BA3B:在SWE-bench Verified / Multilingual / Pro上,本次复现结果与官方结果有约10个百分点的差距。团队认为这主要由harness版本以及Qwen团队对测试集的优化导致,并非模型本身的能力问题。
- Qwen3.5-35BA3B:评测中观察到频繁的幻觉问题,包括尝试调用当前智能体环境下不可用的MultiEdit工具,对最终评测指标产生了负面影响。
- Gemma4-26B-A4B-it:两个因素拉低了表现——上下文溢出(超过256k限制),以及对不支持的MultiEdit工具的幻觉调用。
上述偏差主要源于模型的工具偏好与评测harness所允许的工具集之间不匹配,而非模型本身的能力局限。
核心技术实现
1. 整体训练思路
为了让技术方案更具可复现性,技术团队没有从零训练基座模型,而是选择了被广泛认可的Qwen3.6-35B-A3B作为后训练的起点,在此基础上构建目标模型。这种实验设计的优势在于,当基座模型公开可查且经过社区充分评测时,后训练带来的性能增益可以清晰归因、便于复现。
该模型基本沿用了KAT-V2.5的后训练方案,整体流程包含两个阶段:首先在127K条样本的数据集上进行监督微调(SFT),再基于得到的SFT模型开展强化学习(RL)训练。对照核心指标可以看到,同一基座模型的SWE-bench Verified原始得分为64.40,经过SFT+RL训练后达到69.40,七项基准测试成绩均实现全面提升。
2. 可验证环境与高价值训练数据
目标模型的训练数据基于两条经过验证的流水线构建:
第一条是面向软件工程的AutoBuilder:通过智能体驱动的方式,从真实代码仓库自动重建可复现、可执行、可验证的沙箱环境,并用fail-to-pass / pass-to-pass测试校验每个任务。借助基础环境、语言与构建系统模板以及可复用配置库,环境构建成功率从16.5%提升到57.2%,最终产出覆盖12种语言、超过10万个可验证的训练环境。
第二条是数据飞轮机制:对「近失败」的训练轨迹注入过程级提示进行二次挖掘,可以将原本零通过率的任务的通过率提升到约20%;再通过过程打分过滤掉依赖硬编码、绕过机制、测试作弊等低质量轨迹,让训练信号既稠密又干净。
3. RL训练基础设施的关键设计
智能体编程场景下的RL训练难点不在于算法本身,而在于训练信号的可信度。一次执行超时、一个验证器误判、一次tokenizer行为差异,都可能被模型当作真实反馈进行学习。团队保留了在KAT-V2.5中已验证的四个核心组件:
- Token-in-Token-out(TITO)一致性:确保rollout阶段与训练阶段的token序列严格一致,避免因chat模板、序列化或tokenizer行为差异导致的训练偏差。这类偏差在多轮工具调用场景下会被逐轮放大,是最容易被忽视的「静默bug」。
- 截断重要性采样(TIS):为缓解异步rollout引入的策略陈旧与off-policy问题,团队应用TIS截断重要性采样权重,降低由过大权重带来的方差与训练不稳定性。
- 可靠的沙箱与验证器:团队系统性检查并验证了沙箱与验证器的稳定性与正确性,避免将基础设施故障(如执行超时、环境错误或验证器误判)错误地当作模型失败,从而污染奖励信号。
- 基于harness执行反馈的分层奖励:基于评测框架提供的细粒度执行反馈构建分层奖励,让模型在朝最终任务目标优化的同时,也能因未成功轨迹中的有意义进展获得奖励,从而提升失败尝试的训练价值,并提供更稠密的奖励信号。
4. 换基座的适配:并行工具调用崩溃与奖励调整
在更换基座模型的过程中,团队遇到了并行工具调用崩溃的问题。Qwen3.6表现出与KAT-V2.5不同的轨迹模式,需要针对其行为进行额外的奖励适配。在初步实验中,简单的0–1二值奖励会导致模型早在第二个epoch就发生训练崩溃。
通过对训练轨迹的分析,团队发现随着训练推进,模型越来越倾向于在单轮内发起大量并行工具调用——有时甚至超过70次。这一行为导致上下文长度快速增长,产生大量无效轨迹与执行错误,最终破坏了RL训练的稳定性。从二值奖励的视角来看,这种行为并不「错」——模型只是在用尽可能多的并行探索去尝试获得正确结果,但真正的问题在于奖励函数没有对「探索成本」和「轨迹合法性」作出约束。
为解决该问题,团队在原有分层奖励的基础上,增加了若干针对Qwen3.6的惩罚项,包括:
- 单轮内过多的并行工具调用;
- 失败的工具调用;
- 空的工具调用块;
- 大量重复内容。
这些针对性的奖励调整有效抑制了病态的工具使用与重复生成行为,使得RL训练能够稳定进行10个epoch。从训练轨迹的统计结果来看,在某一训练步的240条成功轨迹、共6489个含工具调用的回合中,单回合并行工具调用数的分布为:
| 单回合并行工具调用数 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 回合数 | 1666 | 2932 | 1756 | 124 | 8 | 2 | 1 |
该分布的均值为2.06,中位数为2,最大值为7,超过8次并行调用的回合占比为0。对比训练崩溃期「单轮有时超过70次并行调用」的情况,可以看到惩罚项并非整体压低了调用次数,而是为其设置了明确的上限:模型仍然会进行并行工具调用(超过七成回合发起2–3个并行调用,保留了并行探索的能力),但不再使用「一次撒70个网」的方式撞答案。这也解释了前文提到的行为指标改善:异常工具标签占比从9.34%降至0.28%,单轮持续重复生成比例从0.34%降至0%。
在智能体场景中,奖励设计需要同时对齐「任务目标」和「行为规范」,缺少后者的话,前者也难以稳定达成。整体训练流程与针对Qwen3.6的奖励设计的有效性与可行性,已在实验中得到充分验证。
部署与调用指南
KAT-Coder-V2.5-Dev采用Hugging Face Transformers格式,兼容Transformers、vLLM、SGLang、KTransformers等主流推理框架。需要注意的是,本次开放的权重仅包含语言模型权重,使用vLLM部署时必须添加--language-model-only参数,该参数会让vLLM跳过视觉编码器与多模态profiling,否则vLLM会尝试初始化checkpoint中不存在的视觉塔权重导致启动失败。
使用vLLM部署
推荐使用vllm>=0.19.0版本,在全新环境中安装依赖:
uv pip install vllm --torch-backend=auto
启动API服务(8卡张量并行,支持262,144 tokens上下文),服务端点为http://localhost:8000/v1:
vllm serve Kwaipilot/KAT-Coder-V2.5-Dev \
--port 8000 \
--tensor-parallel-size 8 \
--max-model-len 262144 \
--reasoning-parser qwen3 \
--language-model-only
如果需要支持工具调用(智能体场景建议开启),可以添加以下参数:
vllm serve Kwaipilot/KAT-Coder-V2.5-Dev \
--port 8000 \
--tensor-parallel-size 8 \
--max-model-len 262144 \
--reasoning-parser qwen3 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_coder \
--language-model-only
使用SGLang部署
推荐使用sglang>=0.5.10版本,在全新环境中安装依赖:
uv pip install sglang[all]
启动支持工具调用的服务:
python -m sglang.launch_server \
--model-path Kwaipilot/KAT-Coder-V2.5-Dev \
--port 8000 \
--tp-size 8 \
--mem-fraction-static 0.8 \
--context-length 262144 \
--reasoning-parser qwen3 \
--tool-call-parser qwen3_coder
注意:如果使用的SGLang版本在加载时尝试构建多模态/视觉组件,可能会因缺少视觉权重而启动失败,此时请使用该版本的纯语言模型选项(可参考python -m sglang.launch_server --help)。
代码调用示例
服务启动后,可以通过OpenAI SDK进行调用:
pip install -U openai
export OPENAI_BASE_URL="http://localhost:8000/v1"
export OPENAI_API_KEY="EMPTY"
from openai import OpenAI
client = OpenAI()
chat_response = client.chat.completions.create(
model="Kwaipilot/KAT-Coder-V2.5-Dev",
messages=[
{"role": "user", "content": "写一个返回第 n 个斐波那契数的 Python 函数。"},
],
max_tokens=32768,
temperature=0.7,
top_p=0.8,
presence_penalty=1.5,
extra_body={"top_k": 20},
)
print(chat_response.choices[0].message.content)
模型默认会先进行思考再输出结果。如果需要直接输出(非思考模式),可以在extra_body中加入"chat_template_kwargs": {"enable_thinking": False}即可。
此外,KAT-Coder-V2.5-Dev经过额外训练以保留并利用历史消息中的思考轨迹,通过添加"chat_template_kwargs": {"preserve_thinking": True}即可开启。这一能力对智能体场景尤为有益:维持完整推理上下文可以增强决策一致性,在很多情况下还能通过减少冗余推理来降低整体token消耗,同时改善KV cache利用率。
更完整的部署说明(含超长文本YaRN配置、KTransformers与Transformers方式)请参考模型仓库的README文件。


