Skip to content

Code Survey From Code Foundation Models to Agents and Applications

📅 发表于 2025/12/06
🔄 更新于 2025/12/06
👁️ -- 次访问
📝 0 字
0 分钟
code
#survey

Survey 文章

背景

发展历程

背景

AI Coding 思想

  • 利用Github/StackOverflow/code网站资源,把多年编程经验提炼成指令跟随的工具

相关工具

  • 【辅助插件】GitHub Copilot:VSCode 插件
  • 【IDE】Cursor:对话式编程
  • 【国产】CodeGeeX(智谱):多语言代码
  • 【云服务】CodeWhisperer(亚马逊):与AWS服务无缝集成,可调用Claude或Gemini。
  • 【命令行】Claude Code/Gemini CLI:命令行级别,agentic-coding-workflow
    • AI 自助分析文件、运行命令、修正代码
Code LLM 两种分歧

两种分歧

  • 通用型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 发展和不足

发展和涌现

Rise of LLMs

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上的效果

模型架构&多模态

Dense Model

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主要工作

OpenCoder

参考链接

关键技术

  • 完全开源:权重、预测、RefineCode数据训练流程
  • 1.5B/8B,LLama-Style (RoPE, SwiGLU)
  • 两阶段指令微调:通用SFTcode SFT

训练数据

数据清洗

关键结果

  • 8B HumanEval/MBPP效果不错,debug新年超过StarCode2-15B和CodeLLama-7B
Qwen1.5&2.5 Coder(2409)

参考链接

CodeQwen1.5 (7B)

  • 关键技术:64k上下文,多种语言训练。GQA提升推理效率。
  • 训练数据:代码数据。
  • 数据清洗
  • 关键结果:较好 bug, SQL, Debug能力。

Qwen2.5-Coder (0.5B-32B)

  • 关键技术
    • 128k上下文(Yarn技术)
    • 指令微调:多语言合成数据 + DPO优化 执行反馈DPO笔记
  • 训练数据:混合代码、数学和文本。
  • 数据清洗
  • 关键结果
    • 在MultiPL-E, RepoEval, CrossCodeEval上效果不错
    • 不依赖特定提示词格式,泛化性不错。
Yi-Coder (24)

参考链接

关键技术

  • 128k 上下文、52种语言。
  • 1.5B、9B。

训练数据

数据清洗

关键结果

  • HumanEval, MBPP, LiveCodeBench 和大尺寸模型相当。
Codestral (2509, Mistral AI)

参考链接

关键技术

  • 多种语言,指令跟随。
  • 32K上下文,仓库级推理,FIM填充能力。
  • 22B模型。

训练数据

数据清洗

关键结果

  • 在RepoBench和Python相关评估上,效果不错。
Granite-Code(2405, IBM)

参考链接

关键技术

  • 两阶段训练:code预训练 + 混合code文本增强训练
  • 目标:FIM (PSM/SPM)

训练数据

数据清洗

关键结果

CodeGemma (2406)

参考链接

关键技术

  • 代码数据 预训练指令微调
  • 训练目标:FIM比例更高,支持2种模式
    • 前缀-后缀-中间(PSM):先给P(prefix),再给S(suffix),猜中间M
    • 后缀-前缀-中间(SPM):先给S,再给P,猜中间M。
  • 2种尺寸:2B IDE场景-更快;7B chat设计、推理逻辑更强。

训练数据

  • 代码数据

数据清洗

  • 去重、去污染(去除测试数据)
  • Multi-file packing:依赖单元测试的多文件打包策略。

关键结果

CodeShell (2403)

参考链接

关键技术

  • GPT2(7B) 扩展:8k上下文、GQA、RoPE。
  • 数据清洗比简单scaling有效。

训练数据

数据清洗

  • 去重、困惑度筛选、结构规则过滤、模型打分。

关键结果

  • 优于同类7B模型,在MultiPL-E和代码补全bench上不错。
StableCode (23)

链接

关键技术

  • 3B,代码生成和理解,代码补全和text2code。
  • 长上下文:16k;多文件推理

训练数据

  • Github corpora

数据清洗

关键结果

  • HumanEval/MBPP 效果不错

DeepSeek-Coder (2401) 见下文

MFTCoder (2024)

关键技术

  • 多任务微调:代码补全、text2code、代码注释、代码翻译、单元测试生成等。
  • 多任务平衡方法:数据平衡、token-weighted loss、focal-style强调。
  • 效率优化技术:动态padding、packed SFT、PEFT等。

训练数据

数据清洗

关键结果

  • 相比于单SFT和简单混合SFT,MFTCoder效果更好,具有泛化能力。
Code LLaMA (2308)

关键技术

  • 基于LLaMA2开发,强调长上下文中间填充代码指令跟随等。
    • 上下文:RoPE base由104放大至106

训练数据

  • 初始化:由LLaMA2权重继续预训练。
  • 语料库:Code-heavy代码语料库
  • 特定数据:Python和Instruct版本使用特定数据集做微调, 强调特定语言对齐能力

数据清洗

关键结果

  • 长上下文repo-level任务有好处。
  • 特定语言数据(python)做微调对语言任务有好处
  • 经过安全微调的指令模型降低了毒性。
CodeGen2 (2305)

关键技术

  • 完整的训练配方:架构选择、采样模式、数据混合等。
    • 架构:Casual Decoder就好了。
  • 混合训练目标:NTP(写下文,50% );Span Corruption(补全中间,Infil Train, 填空题, 50%)
  • 多轮预训练

训练数据

  • NL + PL (文本+代码)。

数据清洗

关键结果

  • Infil 填空训练,会导致代码生成能力下降(从头写到尾的能力)。
StarCoder 1-2 (2023)

StarCoder1

  • 关键技术长上下文 + 中间填充(FIM)训练
  • 训练数据
    • StarCoderBase:TheStack (宽松许可代码)
    • StarCoder:Python数据定向微调
  • 数据清洗
    • 近似去重、benchmark数据去除、个人隐私去除等。
  • 关键结果
    • benchmark效果好,IDE demo + OpenRAIL_M 许可证。

StarCoder2

  • 关键技术
    • 2阶段训练:先训4k 学基础语法;再训16k,处理长代码,仓库级上下文
    • FIM 中间填充策略。
  • 训练数据
    • TheStack V2:多种语言 issue/PR、docs、数学和逻辑数据。
  • 数据清洗
  • 关键结果
    • 3B/7B/15B模型。
    • 3B超过其他同尺寸模型,15B超过更大模型。
CodeGeeX (2023)

关键技术

  • 专注于代码生成翻译
  • INT8量化+FastTransformer:显存大幅降低。
  • 上线VSCode插件。

训练数据

数据清洗

关键结果

  • 推出HUmanEval-X,评估跨语言翻译能力,包括C++,Java,JavaScript,Go等。
OctoCoder (2024)

关键技术

  • 指令跟随模型,基于StarCoder-16B-Base做微调而来。

训练数据

  • 使用了代码提交记录,即包含自然语言代码
  • 避免了code-only偏差

数据清洗

关键结果

  • 释放HumanEvalPack:把HumanEval扩展至代码修复/解释/生成,以及6种语言。
  • pass@1效果好,commit-style数据对bug-fix有好处
SantaCoder (2023, BigCode)

关键技术

  • MQA:提高推理速度
  • 两阶段训练方法:先验证设计,再做大规模实验

训练数据

  • Python,Java,Javascritp等代码数据。

数据清洗

  • 去掉个人信息近似去重文档质量过滤等。

关键结果

  • 多语言code bench(Multi-PL-E)上,优于一些参数更大的模型。

阶段4-CodeLLM主要工作

DeepSeek-Coder-V2 (2406)

参考链接

关键技术

  • 从DeepSeek-V2继续预训练,对代码和数学继续强化。
  • MoE 架构,两个版本:236A21B,16A2.5B。
  • YARN:上下文从16k扩展至128K。

训练数据

  • 混合数据:代码、数学、文本。数学对编程逻辑重要。6T token。

数据清洗

关键结果

  • 效果和高效。
DeepSeek-Coder (2401)

关键技术

  • 从0开始预训练,产出1.3-33B 模型

  • 仓库级预训练

    • 模拟跨文件的依赖关系,提升对repo-level的理解和跨文件补全能力。
  • 中间填充目标(Fill in the Midddle) + 长上下文(16k):

    • 增强代码补全长距离代码推理能力。

训练数据

  • 多种编程语言语料库,无私有数据

数据清洗

关键结果

  • 在HumanEval和MBPP上超过 GPT-3.5
  • 指令微调版本:多轮问题解决能力更好
MiniMax M1/M2 (2506,2510)

参考链接

关键技术

  • M1:线性注意力,
  • M2:softmax注意力。参数230B,激活10B

训练数据

数据清洗

关键结果

DeepSeek V3 (24,25)

参考链接

关键技术

  • 整体上: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相当

训练数据

数据清洗

关键结果

KAT-Dev (2510, 快手)

参考链接

关键技术

  • 基于Qwen3底座。
  • 训练pipeline
    • Mid-Training:针对工具使用+指令遵循
    • SFT:
    • RL:代码任务
    • 大规模AgentRL:

训练数据

数据清洗

关键结果

  • 32B SWE-verified 62.4%
Kimi-K2-Instruct

参考链接

关键技术

  • 超稀疏MoE:总参数1T,激活32B
  • 预训练:MuonClip:解决梯度爆炸不收敛的问题。
  • SFT:Agent数据合成技术
  • RL:可评估和不可评估任务。

训练数据

数据清洗

关键结果

  • 原生工具调用、128k上下文。权重开源。
GLM4.5/4.6 (2508)

参考链接

关键技术

  • 架构: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能力等。
Qwen3-Coder (2507)

参考链接

关键技术

  • 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 媲美
devstral (mistral)

参考链接

关键技术

  • 目标repo-scale SWE,多文件推理、长上下文编辑、可验证。
  • Devstral-Small (24B, 128k上下文),Devstral-Medium (API)

训练数据

数据清洗

关键结果

  • 完全开源。
DeepSWE (2508)

参考链接

关键技术

  • 基模:Qwen3-32B + 思考模式
  • 纯RL训练,目标repo-level,可执行不执行两种验证器。
  • R2E-Gym环境,rLLM 训练框架

训练数据

  • R2E-Gym的子集,4.5k。

数据清洗

  • 过滤了和bench相关的数据

关键结果

  • SWE-verified:59%
DeepCoder (2503?)

参考链接

关键技术

  • 基于DS-R1-14B,继续做RLVR训练,目标repo-level代码编辑。
  • 训练32k,测试64k。

训练数据

  • TACO-verified、LiveCodeBench(23-24)

数据清洗

关键结果

  • 完全开源
Skywork-SWE (2506)

参考链接

关键技术

  • 可执行的数据清洗pipeline
    • 收集[PR, Isssue]数据,每个issue配一个docker容器
    • 让agent去修bug,仅保留能通过测试用例的轨迹数据。
  • 高质量可执行SWE 数据 Scale > 模型尺寸 scale
    • 效果和数量,呈log对数增长
  • 在openhands框架,使用轨迹数据,做微调。

训练数据

数据清洗

关键结果

  • SWE-verifed 有较好结果
Ling-Coder-Lite (2503)

参考链接

关键技术

  • 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

  • 猜下一词
  • 最大化条件概率 P(xt+1|x1,...,xt)

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大势所趋
总访客数:   ·   总访问量:
PLM's Blog @ 2016 - 2025