Survey 文章

背景
发展历程
AI Coding 思想
- 利用
Github/StackOverflow/code网站资源,把多年编程经验提炼成指令跟随的工具。
相关工具
- 【辅助插件】
GitHub Copilot:VSCode 插件 - 【IDE】
Cursor:对话式编程 - 【国产】CodeGeeX(智谱):多语言代码
- 【云服务】CodeWhisperer(亚马逊):与AWS服务无缝集成,可调用Claude或Gemini。
- 【命令行】
Claude Code/Gemini CLI:命令行级别,agentic-coding-workflow。- AI 自助分析文件、运行命令、修正代码
两种分歧
- 通用型LLM (广度)
自然语言+编程数据混合预训练,在上下文/意图/领域知识等理解细致。- 代表工作:GPT、Claude、LLaMA等。
- 专用CodeLLM (深度)
编程数据预训练+算法架构优化。- 代表工作:StarCoder, Code LLaMA, DeepSeek-Coder, CodeGemma, QwenCoder等。

尚未探索的领域
1. 数据清洗策略
- 如何
平衡数据质量和数量?- 数据并非越多越好,顶级模型如何
- 如何做
指令跟随?- 让模型听懂人话。
2. 对齐技术
- code需要能跑、
符合人类习惯、是安全的,如何根据人类反馈来做对齐?
3. 高级提示范式
- CoT、FewShot等。
4. 自主智能体
- 自动拆解任务。
5. RAG
- 模型会有幻觉、编写出不存在的函数。
- 做RAG,让模型
先看文档,再写代码,保证准确性。
6. 评估框架
- 现在更多是
2元的(仅看正确性)。 - 但如何评估代码
烂不烂、效率如何、可维护性如何?
通用LLM 发展和不足
发展和涌现
Transformer 和 Scaling Law
Transformer 一统江湖- 通过
预训练和知识迁移,把多种统一到一个支持多种任务和模态的可扩展框架。 - NTP任务
- 通过
Scaling Law 大力出奇迹- 参数、数据、计算越多,模型效果越好,可预测。
- 出现一些涌现能力,涌现也可能是评估指标的问题。
LLM爆发出代码能力
- OpenAI:Codex 能写代码 + HumanEval 测试集。
- DeepMind:AlphaCode 能做竞技编程。
代码结构和人类自然语言在底层逻辑上是相通的。
LLM + 外部工具 变身 决策agent
外部工具:计算器、搜索、代码解释器等等。思考行动观察Loop:思考 -> 行动 -> 观察 -> 思考 -> 行动 -> 观察 ....- 典型技术:ReAct,ToolFormer等。
突破、局限、CodeLLM动机
- 突破:SWE-Agent:修bug、通过所有测试用例。需要规划+多文件操作能力。
通用模型在代码领域有局限性:准确性(复杂代码不会写)、安全性(有bug代码)、可靠性(系统级可靠性差)
- 需要转
专有的代码大模型
代码生成:HumanEval上的效果

修bug:SWE-Bench上的效果

模型架构&多模态
1. Dense Model
2. MoE
3. Recurrent Models
4. Diffusion Models
5. Hybrid Architechures
- 主要依赖
视觉能力,需要查看图表、截图、UI元素等内容。
不足
核心缺点
有广度、无深度- 什么都会一点,能写简单代码、能看图等。
具体表现
专业和准确性不足- 生成表面看起来没问题的代码,但实际不能满足一些领域约束。
看起来对的代码,实际可能一跑就崩
- 生成表面看起来没问题的代码,但实际不能满足一些领域约束。
安全和可靠性不足- 尽管功能正确能运行,但仍然不够安全、
有bug
- 尽管功能正确能运行,但仍然不够安全、
仓库级理解不足- 模型可读长上下文,但经常
lost-in-middle。- 关键信息藏在几万行代码中间,模型往往会忽略。
跨文件的变量引用、依赖关系,模型经常搞不清楚,导致无法理解整个项目。
- 模型可读长上下文,但经常
多模态障碍/看不懂界面细节- 能看懂是个网页,但无法看懂具体元素细节、按钮具体交互含义等
- 导致 AI 无法像人类一样精准地操作 GUI 界面进行编程或测试。
不会用工具(Agentic限制)通用模型容易出现工具幻觉:假装调用了工具,或者编造了工具的输出。- 任务步骤变多(
长程推理),模型很容易这就“晕”了,忘记之前的步骤或偏离目标。
用模型写代码不够,需要
数据清洗:去掉不安全的代码。预训练/微调:让模型理解代码结构和跨文件依赖强化学习:教模型如何正确使用工具和进行长期规划
代码基础大模型(开源LLM)
闭源LLM
发展阶段
阶段1:Encoder 模型
- 聚焦在代码
理解任务,把代码变成向量,做检索任务。 - 主要工作:CodeBert,ERNIE-Code等。
阶段2:生成式 模型
- 从读到写,聚焦在
理解和生成代码。 - 主要工作:CodeT5, CodeGPT等。
阶段3:代码 LLM
大模型,能
写复杂代码、多轮对话式编程、具有指令遵循能力等。代表:StarCoder, CodeLlama, DeepSeek-Coder, CodeQwen等。
阶段4:Agentic 模型
- 通过
MoE来扩展参数+ 提升agentic能力(工具使用、多步推理等)。 - 代表:DeepSeek-Coder-V2、DeepCoder、DeepSWE等。

阶段3-CodeLLM主要工作
参考链接
关键技术
- 完全开源:权重、预测、
RefineCode数据、训练流程 - 1.5B/8B,LLama-Style (RoPE, SwiGLU)
- 两阶段指令微调:
通用SFT、code SFT
训练数据
数据清洗
关键结果
- 8B HumanEval/MBPP效果不错,debug新年超过StarCode2-15B和CodeLLama-7B
参考链接
CodeQwen1.5 (7B)
- 关键技术:64k上下文,多种语言训练。GQA提升推理效率。
- 训练数据:代码数据。
- 数据清洗
- 关键结果:较好 bug, SQL, Debug能力。
Qwen2.5-Coder (0.5B-32B)
参考链接
关键技术
- 128k 上下文、52种语言。
- 1.5B、9B。
训练数据
数据清洗
关键结果
- HumanEval, MBPP, LiveCodeBench 和大尺寸模型相当。
参考链接
关键技术
- 多种语言,指令跟随。
- 32K上下文,仓库级推理,FIM填充能力。
- 22B模型。
训练数据
数据清洗
关键结果
- 在RepoBench和Python相关评估上,效果不错。
参考链接
关键技术
- 两阶段训练:
code预训练+混合code文本增强训练。 - 目标:FIM (PSM/SPM)
训练数据
数据清洗
关键结果
参考链接
- CodeGemma 2B, 7B
关键技术
代码数据预训练和指令微调。- 训练目标:
FIM且比例更高,支持2种模式- 前缀-后缀-中间(PSM):先给P(prefix),再给S(suffix),猜中间M
- 后缀-前缀-中间(SPM):先给S,再给P,猜中间M。
- 2种尺寸:2B IDE场景-更快;7B chat设计、推理逻辑更强。
训练数据
- 代码数据
数据清洗
- 去重、去污染(去除测试数据)
Multi-file packing:依赖图和单元测试的多文件打包策略。
关键结果
参考链接
关键技术
- GPT2(7B) 扩展:8k上下文、GQA、RoPE。
- 数据清洗比简单scaling有效。
训练数据
数据清洗
- 去重、困惑度筛选、结构规则过滤、模型打分。
关键结果
- 优于同类7B模型,在MultiPL-E和代码补全bench上不错。
链接
关键技术
- 3B,代码生成和理解,代码补全和text2code。
- 长上下文:16k;
多文件推理。
训练数据
- Github corpora
数据清洗
关键结果
- HumanEval/MBPP 效果不错
DeepSeek-Coder (2401) 见下文
关键技术
- 多任务微调:代码补全、text2code、代码注释、代码翻译、单元测试生成等。
- 多任务平衡方法:数据平衡、token-weighted loss、focal-style强调。
- 效率优化技术:动态padding、packed SFT、PEFT等。
训练数据
数据清洗
关键结果
- 相比于单SFT和简单混合SFT,MFTCoder效果更好,具有泛化能力。
关键技术
- 基于LLaMA2开发,强调
长上下文、中间填充、代码指令跟随等。- 上下文:RoPE base由
放大至
- 上下文:RoPE base由
训练数据
- 初始化:由LLaMA2权重继续预训练。
- 语料库:
Code-heavy代码语料库 - 特定数据:Python和Instruct版本使用
特定数据集做微调, 强调特定语言和对齐能力。
数据清洗
关键结果
长上下文对repo-level任务有好处。特定语言数据(python)做微调对语言任务有好处。- 经过
安全微调的指令模型降低了毒性。
关键技术
- 完整的训练配方:架构选择、采样模式、数据混合等。
- 架构:Casual Decoder就好了。
- 混合训练目标:
NTP(写下文,50% );Span Corruption(补全中间,Infil Train, 填空题, 50%) - 多轮预训练
训练数据
- NL + PL (文本+代码)。
数据清洗
关键结果
- Infil 填空训练,会导致代码生成能力下降(从头写到尾的能力)。
StarCoder1
- 关键技术:
长上下文+ 中间填充(FIM)训练 - 训练数据
- StarCoderBase:
TheStack(宽松许可代码) - StarCoder:
Python数据定向微调
- StarCoderBase:
- 数据清洗
- 近似去重、benchmark数据去除、个人隐私去除等。
- 关键结果
- benchmark效果好,IDE demo + OpenRAIL_M 许可证。
StarCoder2
- 关键技术
- 2阶段训练:
先训4k学基础语法;再训16k,处理长代码,仓库级上下文。 - FIM 中间填充策略。
- 2阶段训练:
- 训练数据
- TheStack V2:
多种语言issue/PR、docs、数学和逻辑数据。
- TheStack V2:
- 数据清洗
- 关键结果
- 3B/7B/15B模型。
- 3B超过其他同尺寸模型,15B超过更大模型。
关键技术
- 专注于代码
生成和翻译。 - INT8量化+FastTransformer:显存大幅降低。
- 上线VSCode插件。
训练数据
数据清洗
关键结果
- 推出HUmanEval-X,评估
跨语言翻译能力,包括C++,Java,JavaScript,Go等。
关键技术
指令跟随模型,基于StarCoder-16B-Base做微调而来。
训练数据
- 使用了
代码提交记录,即包含自然语言和代码。 避免了code-only偏差。
数据清洗
关键结果
- 释放
HumanEvalPack:把HumanEval扩展至代码修复/解释/生成,以及6种语言。 - pass@1效果好,
commit-style数据对bug-fix有好处。
关键技术
- MQA:提高推理速度
- 两阶段训练方法:先验证设计,再做大规模实验
训练数据
Python,Java,Javascritp等代码数据。
数据清洗
去掉个人信息、近似去重、文档质量过滤等。
关键结果
- 在
多语言code bench(Multi-PL-E)上,优于一些参数更大的模型。
阶段4-CodeLLM主要工作
参考链接
关键技术
- 从DeepSeek-V2继续预训练,对代码和数学继续强化。
- MoE 架构,两个版本:236A21B,16A2.5B。
- YARN:上下文从16k扩展至128K。
训练数据
- 混合数据:代码、数学、文本。数学对编程逻辑重要。6T token。
数据清洗
关键结果
- 效果和高效。
关键技术
从0开始预训练,产出1.3-33B 模型仓库级预训练:- 模拟跨文件的依赖关系,提升对
repo-level的理解和跨文件补全能力。
- 模拟跨文件的依赖关系,提升对
中间填充目标(Fill in the Midddle) +长上下文(16k):- 增强
代码补全和长距离代码推理能力。
- 增强
训练数据
多种编程语言语料库,无私有数据。
数据清洗
关键结果
- 在HumanEval和MBPP上超过 GPT-3.5
- 指令微调版本:
多轮问题解决能力更好
参考链接
关键技术
- 整体上:agent能力,混合思考模式,671B激活37B,128k上下文。
- DeepSeek-V3
- MLA+多token预测头,14.8T 预训练,无辅助loss做MoE 负载均衡
- SFT + RL 微调
- DeepSeek-V3.1
- PostTrain:840B语料,上下文由32K扩展至128k,整合DeepThink思维了模式。
- 增强多步工具+code-agent能力,超过v3和r1
- DeepSeek-V3.2
- 基于V3.1-Terminus,使用DSA稀疏注意力,推理成本降低50%,质量和v3.1相当
训练数据
数据清洗
关键结果
参考链接
关键技术
- 基于Qwen3底座。
- 训练pipeline
- Mid-Training:针对工具使用+指令遵循
- SFT:
- RL:代码任务
- 大规模AgentRL:
训练数据
数据清洗
关键结果
- 32B SWE-verified 62.4%
参考链接
关键技术
- 超稀疏MoE:总参数1T,激活32B
- 预训练:MuonClip:解决梯度爆炸不收敛的问题。
- SFT:Agent数据合成技术
- RL:可评估和不可评估任务。
训练数据
数据清洗
关键结果
- 原生工具调用、128k上下文。权重开源。

参考链接
关键技术
- 架构:A32B,混合推理模式,GQA+QK-Norm+MoE 多token预测头
- Mid-Training
关键数据上采样:仓库级代码+Agent轨迹数据 - 上下文扩展:4k -> 32k -> 128k -> 200k(GLM4.6)
- 后训练:监督学习 + 自蒸馏。
- RL技巧:难度课程、长输出RL、代码加权loss (给代码更高权重)
训练数据
数据清洗
关键结果
- 在TAU-Bench、AIME、SWE-verified、BrowseComp等有较好效果。
- GLM4.6 进一步提升代码、工具使用、agent能力等。
参考链接
关键技术
- MoE,
480A35B,上下文256k -> 1M, YaRN。 预训练+所有代码可执行的Code RL训练。
训练数据
- 预训练
- 通用、数学 + 代码, 7.5T tokens (70%)
- 合成数据:利用Qwen2.5-Coder对低质数据做清洗和重写,提升质量。
- RL
- 不仅是竞赛代码,对所有代码做执行驱动的RL。
数据清洗
关键结果
- Agentic Coding、Agentic Browser-Use 和 Agentic Tool-Use 开源SOTA,可与Claude Sonnet4 媲美
参考链接
关键技术
- 目标
repo-scale SWE,多文件推理、长上下文编辑、可验证。 - Devstral-Small (24B, 128k上下文),Devstral-Medium (API)
训练数据
数据清洗
关键结果
- 完全开源。
参考链接
关键技术
- 基模:Qwen3-32B + 思考模式
纯RL训练,目标repo-level,可执行和不执行两种验证器。- R2E-Gym环境,rLLM 训练框架
训练数据
- R2E-Gym的子集,4.5k。
数据清洗
- 过滤了和bench相关的数据
关键结果
- SWE-verified:59%
参考链接
关键技术
- 基于DS-R1-14B,继续做RLVR训练,目标repo-level代码编辑。
- 训练32k,测试64k。
训练数据
- TACO-verified、LiveCodeBench(23-24)
数据清洗
关键结果
- 完全开源
参考链接
关键技术
可执行的数据清洗pipeline- 收集
[PR, Isssue]数据,每个issue配一个docker容器 - 让agent去修bug,
仅保留能通过测试用例的轨迹数据。
- 收集
- 高质量可执行SWE 数据 Scale > 模型尺寸 scale
- 效果和数量,呈log对数增长
- 在openhands框架,使用轨迹数据,做微调。
训练数据
数据清洗
关键结果
- SWE-verifed 有较好结果
参考链接
关键技术
- MoE,top6 路由,改进的NormHead。
共享/常驻专家:shared+routed expertes,DeepSeekV2首创设计。- 训练策略:继续预训练、指令优化(
SFT+DPO)
训练数据
- 指令优化数据:高质量、
可执行、仓库结构数据。
数据清洗
关键结果
- HumanEval, MBPP, LiveCodeBench, BigCodeBench等
其他架构
Gemini Diffusion / Mercur Coder
- 闭源模型。质量不错,时间大幅降低。
DiffuCoder
- 开源模型,130B训练,与AR模型效果差不多。
- Coupled-GRPO:
- 专门适配扩散模型的RL算法,利用非自回归特性, 引入互补噪声,减少似然估计方差,更好利用探索空间
- 21k RL样本,在EvalPlus上带来4.4%的提升。
模型训练阶段(预训练+后训练)
数据收集和处理
- 爬取海量数据:web 网页、书籍、学术文献、专有材料等。
- 数据处理:去重、过滤、tokenize、格式标准化、统一编码、增加特殊标记等。
- 清洗过滤:去掉低质量、敏感数据等。具体可看主要工作怎么清洗的。
预训练
- 随机初始化参数进行训练,消耗最大的部分。
- 目标:NTP/MTP/FIM等任务,自监督学习,预测mask的部分。
CPT
在预训练模型基础上,喂大量代码数据做继续预训练,做领域适配等等。
退火策略
- 在训练后期,动态调整参数,重点是学习率。
- 训练初期学习率较大,加速收敛,后期需要逐渐降低学习率,帮助收敛至最优解。
SFT
- 给定输入-输出,教模型回答,
- 如Repo SFT,角膜型理解多文件直接的依赖关系。
RL
- 通过人类反馈、奖励机制,进一步提升模型性能。


预训练相关
预训练任务
NTP
- 猜下一词
- 最大化条件概率
MTP
- 一次猜多个词,预判了你的预判。
Fill-in-the-Middle (FIM)
- 背景:在文件中间插入代码, 需要看
前面的代码prefix,也要看后面的代码suffix。 代码模型的特有能力之一,增强代码补全能力。
Diffusion Coder Training Task
- 加噪:把一段
好代码随机替换成乱码/噪声。 - 去噪:让模型
把乱码逐步还原成清晰的代码。
| 任务名称 | 核心逻辑 | 典型应用场景 | 优势 |
|---|---|---|---|
| NTP (Next Token Prediction) | 猜下一个词 | 所有的 GPT 类模型 | 基础能力,学会语法和逻辑 |
| MTP (Multi-Token Prediction) | 猜下面 N 个词 | 高级模型训练 | 提高推理速度,增强逻辑连贯性 |
| FIM (Fill-in-the-Middle) | 完形填空 | IDE 里的光标补全 | 能同时看上下文,补全更准 |
| Diffusion (扩散任务) | 降噪去模糊 | 探索性架构 | 生成多样性高,可并行生成 |

预训练数据
整体趋势
- 从追求庞大数量 -> 追求数据质量/许可等。即粗放收集 -> 精细化清洗 -> 合规与大规模。
Github 数据
- The Stack v1
- 358种编程语言,3.1TB数据,宽松许可源代码。
- 两阶段去重策略:精准匹配hash和近似去重hash。
- The Stack v2(当前行业标准)
- 数据扩大四倍,900B token,600种语言,32TB
- 来源引入
Software Heritage,加入PR&Issues,包含人类如何讨论和修改代码的逻辑过程。
- Open Coder
- 3.3TB,13种语言
StarCoder 数据
- 从The Stack里精选出来的一部分数据,783GB,86种语言。
- 策略:去掉bench数据更干净,增加github issue和commit。
其他数据
- The Pile:825GB,有代码、论文、网页等混合数据,早期数据。
- RedPajama:1T,包括59B的代码数据,宽松许可证。最初用来复现LLaMA模型的。
- CodeParrot:专注于python的高质量数据集,去重过滤了70%的原始数据。

未来趋势
从通才到专才
- 现状:GPT5-Codex、CLaude-4代码变体,都说明了
特定领域优化有效果。 - 未来:通用AI和编程助手
继续分化- 在repo-level 任务、复杂调试、多步软件工程等场景取得突破
Agentic训练&复杂场景攻克
- 从
被动代码生成向主动软件工程转变,在复杂、多步编程场景自主操作。 - 需要RL从执行反馈中学习,渐进式课程学习处理仓库级任务,集成外部工具和环境。
- 需要理解整个项目、浏览代码库、执行迭代调试,和人类协作。
Scaling Law
科学Scaling策略:是把钱花在模型参数、还是清洗更高质量数据。- MoE架构优化:保持计算效率、实现更优性能。
MoE大势所趋。