AI智能总结
与开发者同频——百度构建人机协同新范式的实践 牛万鹏百度Comate架构师 演讲嘉宾 牛万鹏 百度Comate架构师 百度资深研发工程师,毕业于吉林大学,毕业后入职百度长期负责DevOps工具的孵化和落地,涵盖项目管理、代码管理、流水线、制品库、应用部署、运维管理等平台建设和商业化现负责百度研发智能化,通过构造全新智能编码工具,搭建全新的产品形态,推动百度万人研发范式的变革。 目录CONTENTS1.在AI前夜——百度研发现状2.在AI时代——智能研发助手3.在AI未来——人机协同新范式 在AI前夜——百度研发现状PART 01 百度研效工具的发展轨迹 面向流程的研发提效窘境 n技术迭代的太快,流程的更新赶不上技术的更新,持续滞后阻碍研发效率提升 ü流程是是实践后的经验、教训等总结,一定是『滞后的』ü如,针对Prompt、数据集等在工程团队如何管理,目前没有明确的范式 核心原因在于整个提效的设计不是站在开发者个人,而是站在组织上 n多数开发者对敏捷、效能、DevOps等不感冒,也不理解其实际意义 ü面对花样繁多的项目管理流程,多数开发者更想聚焦于研发ü过度在团队内推广研发流程,反而引起开发者的抗拒心理,大幅降低开发者的幸福感 开发者的『iPhone』时刻 GithubCopilot+ChatGPT的诞生,吹响了『开发者个人提效』的号角,几乎一夜之间所有组织都开始关注 大模型催生了开发者个人提效的『银弹』 智能研发助手=代码自动补全(Completions)+理解私域知识(RAG)+独立分析需求(Agent) 在AI时代——智能研发助手PART 02 Baidu Comate的从无到有 智能研发助手发展路径 整体建设思路 能力层 IDE端(目录区、编辑区、Console区等) 知识层代码类(代码片段、代码依赖等)+文本类(技术文档、需求文档等) 框架层Agent+RAG+P-RAG 模型层推理调度+代码生成+代码续写+Embedding+意图识别 能力层——编辑区 -基于网络检索,查询最新的技术方案-基于当前代码库,检索代码库内的相关代码-基于知识集,查询团队内的技术方案 能力层——Console区 在VSCode通过选中错误内容后,右键打开Comate快速修复。 在JetBrains自动捕捉错误,开发者可一键点击修复。 知识层——为什么需要知识增强 •通用模型存在瓶颈:GitHub采纳率停留在46%,长期没有显著增长。主要在于依靠模型内部压缩的知识(以及少量的Neighborsource)没有办法再给出更符合『当前代码库』、更符合『当前业务逻辑』的代码,达到模型瓶颈。 •人类程序员在开发时也需要掌握额外的知识:编程现场会存在大量『私域知识』,如本地代码库、业务接口文档等。这些私域知识组成了每个『业务/项目/服务』的全链路开发指南,当我们对这些知识掌握的越完整、越熟练,在开发新的代码时速度越快,编写的代码质量越高。 •知识增强是Comate进化成智能体的必要前提:对『编程现场』的理解是所有编码助手的下一步方向,是能够突破现有瓶颈,大幅提高开发者效率,构造真正的人机协同的必经之路。 知识层——与开发者同频 依靠对开发者编程现场的理解,保持和开发者同频,帮助开发者解决繁琐、重复的问题。对『编程现场』的理解: •是所有编码助手的下一步方向•是从『简单续写』到『复杂生成』的必经之路•是能够大幅提高开发者效率,构造真正的人机协同的必经之路 知识层——如何完全理解文本 文字描述丰富 文档中尽可能增加详实的文字描述而不仅仅是图片,将会显著提高学习质量。 AI阅读文档的逻辑和人一样,文档结构越清晰,AI学习的越好。 文档逻辑清晰 文档内容有层次、语言描述言简意赅无歧义、每个段落有标题等结构,会显著提高检索质量。 目录结构清晰 如果有大量的文档分散在不同的目录中,建议每个层级目录的命名言简意赅,能够充分表达这一层级目录的文档类别。 知识层——人类如何完全理解代码 脑海中『直接』沉淀出如下总结显性代码知识 这是一个用来xxxxx的项目,它的使用了xxxx、xxxx等框架,分为xxxx、xxxx等模块。主要逻辑包括xxxx、xxxx、xxxx。对外暴露了xxxx、xxxx等关键API。它使用xxxx方式进行部署,启动入口在xxxx。 脑海中『间接』沉淀出如下总结 这个项目中,新增xxx相关的开发任务需要在yyy、zzz等目录下,命名格式是xxxx,如果新增一个xxxx,需要配套生成一个xxxx。如果要调用外部API,可以使用已经封装好的xxxx工具。 知识层——AI如何完全理解代码 知识层——AI如何完全理解代码 什么是代码开发规则 每个代码库独有的开发规则,和开发语言、应用框架强相关,和代码库建库之初定义的规则强相关。 代码开发规则有什么用 每位开发者接手代码库时首先尝试掌握的就是代码开发范式,这决定了新增一个目录、文件、函数等需要放在哪里、如何命名、结构如何定义。 Comate如何利用 当开发范式可提取、可量化,编码助手在用户新建文件、新增函数时可以预测更大范围的代码,如新建一个Entity文件,同步将Dao、Service、Controller创建。 知识层——AI如何完全理解代码 知识层——AI如何完全理解代码 框架层——Agent 框架层——Agent 模型层 在AI未来——人机协同新范式PART 03 如何实现和开发者同频——典型场景 代码续写 当我在某文件编写一段代码时,Comate怎么才能基于对代码库的理解,预测出当前文件不存在且需要导入的文件、类、函数? 代码解释 当我要求Comate分别解释代码块、函数、文件、目录、代码库时,它怎么才能从业务角度给出解释?如基于调用链分析给出流程图、ER图、出架构图等? 代码检索 当我新接手一个代码库,需要了解代码架构、具体的业务逻辑,如何才能给出像Mentor一样的讲解? 代码生成 当我希望将整个代码库的Hibernate组件替换成Mybaties组件,期间涉及到实体定义、SQL语句、事务等方方面面的分析,Comate怎么做才能把这件事做好 如何实现和开发者同频——代码续写 当我在某文件编写一段代码时,Comate怎么才能基于对代码库的理解,预测出当前文件不存在且需要导入的文件、类、函数? 如何实现和开发者同频——代码解释 当我要求Comate分别解释代码块、函数、文件、目录、代码库时,它怎么才能从业务角度给出解释?如基于调用链分析给出流程图、ER图、架构图等? 直接获取已经初始化好的项目描述,结构如下: •API类函数解释: 这是一个用来xxxxx的项目,它的使用了xxxx、xxxx等框架,分为xxxx、xxxx等模块。主要逻辑包括xxxx、xxxx、xxxx。对外暴露了xxxx、xxxx等关键API。该项目有如下重点业务关键词: •基于调用链找到向下找到此函数的调用关系,以及对应的Auth、Interceptor、Filter等 •持久化类函数解释: •基于调用链向上找到此函数的调用关系,以及对应的SQL语句、实体定义等 •通用函数解释:•同时向上、向下获取N层调用关系 •xxxxxx•xxxxxx 如何实现和开发者同频——代码检索 意图识别 如何实现和开发者同频——代码生成 当我希望将整个代码库的Hibernate组件替换成Mybaties组件,期间涉及到实体定义、SQL语句、事务等方方面面的分析,Comate怎么做才能把这件事做好? 但这远远不够,只靠⼀次知识增强没有办法获取全部知识,对于复杂问题的解决没有办法做到⽴竿⻅影。需要获取哪些知识⼤部分是在在解决问题的过程逐步中分析、明确出来的——Agent。 人机协同新范式——效能提升银弹 AI对效能的提升是替代Task而不是Job!AI对效能的提升绝不仅限于编码领域!AI可以赋能整个软件工程! 人机协同新范式——人机协同宣言 用好AI将是工程师的基本功 掌握并善用AI将成为工程师的必备能力,率先用好的组织和个人将建立竞争优势。 You are in control AI能极大的提升研发效率,但需要人确保方向的正确性,最终为业务结果负责。 人机协同,共同进化 繁琐、重复的事情AI来做,创造性的事情人来主导,多使用、勤反馈,实现人机共同成长。 THANKS