1、豆包豆包 MarsCodeMarsCode 在在 AI AI Coding Coding 上的实践与探索上的实践与探索演讲人:王城波目 录01AI Coding的发展史02AI Coding的落地实践03AI Coding带给IDE的变革04AI Coding未来展望01AI Coding的发展史Code Copilot的过去已经接近 20 年的历史基于静态分析和规则,通过分析代码的语法和结构来进行预测使用机器学习提取特征进行缺陷分析,预测潜在问题使用深度学习模型进行预测,例如 LSTM和Seq2Seq使用预训练大模型进行预测,诞生了CodeCopilot,2022年火爆全球早期使用规则机器学
2、习时期深度学习时期大模型时期LLM 时代下的 AI CodingCursor+Claude 3.5 Sonnet,8岁小女孩45分钟打造聊天机器人AI 已经可以合作驱动一些简单项目的开发,人类开发软件的方式正在发生变革IDE 与 AI 良好的人机交互体验成为开发者选择 AI IDE 的重要因素在 AI Coding 的辅助下,程序员的“门槛”会大大降低,开发效率将得到较大提升AI Coding 的机遇与挑战LLM 在 AI Coding 领域的潜力和可能性毋庸置疑AI 正在给 IDE 带来新的交互革命AI Coding 的落地仍需要脚踏实地,从效果出发如何从工程和算法侧去优化已有的 AI Co
3、ding 能力?在 AI Coding 时代背景下,如何去设计一款 AI IDE?未来 AI Agent 能力的思考与探索02AI Coding落地实践开发者对 AI Coding 能力的诉求代码生成代码理解问题修复知识问答代码补全代码补全NL2Code单测生成注释生成代码问答代码问答代码评审代码搜索代码总结代码问题检测Auto FixAuto FixLint问题修复配置错误修复通用知识联网搜索三方库问答代码补全-原理如何定义一个好的测评体系来指导链路优化?代码补全-测评体系1.构建合理的模型 离线评测集HumanEval不是一个好的测评集,不匹配真实项目代码场景,刷分严重影响实际效果。自研评
4、级集的重要性自研评级集的重要性:引入真实项目中的跨文件上下文,针对性挖孔 进行评测,评估模型合理利用项目上下文的能力,文本+执行结果验证。引入公司内部代码数据作为评测题目,开源代码和内部代码的的差异往往很大。代码补全-测评体系2.使用更合理的业务效果指标-CPO(Character Per Opportunity)不能只看采纳率=采纳次数/推荐次数,容易被误导,无法指导后续优化CPO=(尝试率)x(反馈率)x(采纳率)x(每次采纳平均token数量)x(token平均字符长度)CPO越高,代表Al贡献越大,但也不能一味追求采纳率表现用户对Al推荐的感知价值在采纳率不降低的情况下去持续优化CPO
5、3.建设完整的 A/B 测试能力用于参数和策略验证如何去优化CPO?代码补全-训练优化1.高质量数据清洗(LLM Filter)2.Repo-Level 文件拼接3.挖孔策略优化原理:相比单文件形式的代码数据,具有更 完整的语义信息,从中学习到 前后依赖关系,更有利于提升大模型逻辑推理能力。问题:如何筛选 开源项目 和 内部项目 中 高质量的代码 进行训练?常见策略:随机字符、Token、AST 节点等 通用模型(如 GPT-4)构造 Prompt 对开源项目 代码质量打分代码质量打分 (结合可靠性、圈复杂度、可读性等)根据标注数据训练自研打分模型,筛选高质量代码 用于训练补全模型。MarsC
6、ode 的做法:先用随机字符挖孔训练补全,再挖掉完整的 AST 节点进行训练补全 效果:模型更容易补全完整的代码片段代码补全-性能优化1.推测解码2.多Token 预测补全性能是影响代码补全非常重要的指标:好的性能指标:模型推理 300ms,端到端 500ms3.量化代码补全-性能优化4.工程侧 流式早停/截断:达到完整 AST 节点即可截断无需等模型完整输出补全内容越“少”,用户接受度越高代码补全-上下文感知优化在有限的 Context Length 放入更高质量的 Context:1.Context Search2.Ranking Strategy仓库内上下文仓库外检索增强构造用于检索/排