代码AI Agent在变更影响分析领域的探索与实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
相关话题: #AI Agent
1. 代码AI Agent在变更影响分析领域 的探索与实践 ——陈军 美团技术专家 美团质效技术部 1
2. 目录 03 01 AI时代下代码变 更的风险重构与 质量突围 04 02 代码知识图谱 的构建 03 智能体的构建 2 04 演进方向
3. AI时代下代码变更的风险重 构与质量突围 3
4. 线上问题分布概述 变更影响范围未评估到导致缺陷逃逸,总体占比约为 71% 场景未覆盖 性能问题 上线流程问题 100% 需求问题 4.34% 2.63% 2.63% 服务上下游协同问题 5.2% 设计遗漏 技术设计 100% 配置遗漏 95.66% 5.2% 7.89% 60.52% 15.79% 16.66% 代码逻辑问题 新迭代不兼容老逻辑30.43% 业务边界问题21.73% 新老系统切换问题13.04 系统健壮性问题13.04% 代码逻辑问题4.34% 数据一致性问题4.34% 缓存问题8.69% 配置问题 83.34% 4 数据源于2024线上事故归汇总分析
5. AI时代下测试范围评估的演化图谱 传统测试范围评估的挑战: 高度依赖人工经验 • 经验依赖与知识断层 • 人工判断效率低下 • 专家资源瓶颈 复杂依赖难以全面识别 • 服务内变更方法上下游影响 • 跨服务变更接口上下游应用 • 配置等隐式依赖识别困难 01 新的复杂性和潜在风险: AI工具加持下可 以更高效完成开 发任务 AI生成代码的不可预知性 • 目前AI生成代码普遍业务逻辑偏差 • 缺乏传统人工编码的注释和设计文档 • 代码可能包含大量隐式依赖 AI修改代码的回归测试危机 02 • • 引入新的逻辑分支,但现有测试用例集缺 乏对应场景覆盖 03 多次AI迭代可能产生残留未检测的副作用 代码 • 测试覆盖率不足 • 测试用例设计不完善 研发评估准确度降低 • 多环境配置差异 • 过程资产难以沉淀 02 围超出预期 • 测试覆盖盲区 可能对非目标模块进行修改,导致测试范 01 AI代码风格多变、实现灵活、数量庞大, 研发团队难以通过经验和规范快速理解和 04 把控代码变动 • 传统评估方式依赖于对代码历史、开发者 • 影响分析结论未形成数字资产 • 缺乏影响分析库和可复用性 意图和设计文档的理解,测试团队在缺少 • 知识传承困难 可靠参考信息的情况下,影响测试范围评 5 估的全面性和有效性 03
6. 测试范围评估的破局之道 利用通用大语言模型对流程机制做出适应性改造 AI增强的代码知识图谱构建 • 函数级:识别API兼容性变化 • 模块级:检测架构模式偏移 • 系统级:追踪数据流完整性 测试资产的智能化演进 • 识别变更核心逻辑 • 枚举可能执行路径 • 推导异常传播链路 • 评估测试覆盖盲区 组织能力重构 6 • 培养AI数字员工,专门负责影响分析 • 实时解答的风险评估疑问 • 生成可执行的测试建议
7. 代码知识图谱的构建 7
8. 通用大语言模型的局限性 泛化能力强但领域知识有限 • 通用模型无法完成对包含业务属性代码的准确评估 • 预训练、微调成本过高 • 知识更新速度慢 需要一套代码关系数据解决方案: rag增强检索效果一般 • 海量数据召回效果差 • 做知识细分、chunk切分、向量去噪成本较高 • 知识更新速度较慢 • 代码携带调用关系属性,不适合原始文本的检索 graph rag增强检索成本高 • 三元组提取消耗token大,更新成本高 • 代码不适用通用的提取脚本 • 海量数据查询,特别是复杂、长链路的代码调用查询效率低 8
9. 代码知识图谱目标与挑战 实施挑战 代码知识图谱的方案架构 核心目标一:构建相对准确的代码知识图谱 核心目标二:具备稳定、高效的查询能力 技术挑战 应用挑战 特征打标 应用层数据挖掘与构建 图数据库建模与优化 业务数据加工 解决海量代码实体关系的高效存储、更新 知识抽取 通过特征工程挖掘配置、接口、消息等业 务属性方法 通过经验总结、知识库挖掘缺陷、风险代 码 代码解析与关系挖掘 从源码中提取实体、关系及属性,构建多 维度代码知识网络 通过知识图谱挖掘变更方法、变更链路 挖掘业务特征,对原始方法进行打标,让 其拥有对应业务属性 图谱存储 特征工程 9 架构优化
10. 业务知识挖掘——业务特征 AI辅助数据清洗 数据预处理 利用AI技术自动处理缺失值、异常值 和数据标准化,提升特征质量 AI特征校验 通过AI对历史工程判断结果进行二次 校验 AI特征选择 AI特征工程流程 基于模型反馈筛选关键特征,降低纯 工程编码 通过AI技术实现从原始 数据到编码特征的转换 AI特征总结 工程代码往往通过true、false给方法 打标,对应特征属性是或否,通过AI 可以做进一步的总结,丰富属性 人工确认 指标监控 人工确认特征值 建立特征准确率、召回率指标,by 周 持续review指标波动 AI辅助特征数据生成 10
11. 业务知识挖掘——业务代码知识库 数据查询 01 知识库定义 知识库建模 数据查询 知识采集 定义需求和目标 通过代码知识图谱查询相关方法属性、 调用关系属性等原始数据 通过通用大语言模型对代码片 段总结 数据优化 04 持久化 知识库设计 02 知识库生成 03 应用验证 数据查询 业务知识库 多模型对比等方式进 行人工效果验证 持续维护知识库,知识动态更新 完成基于业务代码的知识库挖掘,例 如:接口级描述、服务级描述 初步验证 05 迭代更新 06 11 知识库落地 构建
12. 构建含有业务属性关系的代码知识图谱 新增 变更 无变更 可能受影响链路 存量方法 f 变更方法 c 变更代码行 方法上下游 …. 存量接口 A 存量代码行 存量方法上下游 …. 新增链路 接口业务含义 接口上下游信息 接口参数、响应实体 接口源码 … 新增方法 b 存量方法 d 新增代码行 方法上下游 …. 12 通过精准的代码关系和业 务属性,拓充模型上下文
13. 智能体的构建 13
14. 数据流与交互逻辑 使用AI+传统工程编码结合方式构建智能体 源码知识 业务知识 意图识别 用户输入 提出问题 代码智能体识别 用户意图,规划 任务 输入阶段 必要参数, 历史摘要 动态编排 变更内容 影响范围 测试建议 实时信息 结果渲染 技能tools 变更风险 变更可视化 数据查询 执行阶段 知识图谱 通过图数据库存 储海量关系数据 根据用户意图,动态 调整分析策略,保持 工具时效性与可信度 评估机制 深度追踪 依据分析结果数据, 优化算法,提升分析 精准度 精准分析 初始化阶段 业务属性 流程规划 记忆中枢 图数据库 代码解析 收集源代码数据 ,为影响分析打 下基础 • 发挥通用模型的泛化能力 • 发挥工程编码相对准确可靠能力 记忆模块 目标分解 输入解析 链路信息 持久化阶段 14 持续改进 准确率 召回率
15. 系统架构分层 应用层 变更内容 影响范围 测试建议 变更风险 意图识别 记忆模块 智能体 流程规划 mysql关系数据 数据层 es源码数据 技能tools 变更可视化 结果渲染 内存特征数据 graph图数据 基础设施层 diff算法 链路算法 ast语法树 asm字节码 15 特征库
16. Chat交互模式智能体的目标与挑战 目标完成对不同维度的分析与评估: 交付维度 • 对服务内变更内容做总结 • 接口变更链路解析 • 接口跨服务上下游调用关系的总结 • 服务内变更风险总览 服务维度 • 解析交付内服务之间关系 • 交付整体变更内容总览 • 交付整体风险总览 方法维度 • 针对具体方法的详细分析 • 针对不同业务特征做专项建议 • 表变更、配置推荐、异常测试等 解决智能体存在的通用问题: 意图识别 任务执行 多轮对话 • 语义理解的准确性 • 上下文理解 • 复杂任务分解与规划 迭代/交付/需求等不同业务语义 先提问变更接口,再提问第x个具体变更内容 agent需要调用多个tool完成整体任务 • 隐含意图与模糊表达 • 模型幻觉 • 实时性与资源效率平衡 xx服务改动的接口(包含http、thrift、pigeon) 编造一些不存在的方法和链路 过度重试反思会加慢吞吐影响效率 • 多意图混合 • 指令遵循 • 处理任务中的不确定性与异常 这个服务改动的接口和db方法 过度自信,回答一些无关内容和描述 前序任务执行异常或查询不到数据 16
17. 智能体的意图识别 02 01 意图模糊消解 意图识别 prompt分层管理 规则引擎 工具执行 意图决策 结果回答 • 避免超长system prompt增加模型理解成本 • 分层方便管理和维护 • 更专注解决对应问题 语义多样性覆盖 • 扩展业务语义描述,增加问题示例 • 正则/关键字等硬编码初筛,例如特定url或关键词指令 • 上下文中这个、那个、第x个等代词消除 • function tools描述集成进prompt,方便模型理解划分能 力边界 system prompt 1 system prompt 2 + funtion desc 基础查询 复杂查询 原始对话 无关问题 用户输入 模糊语义消除 规则引擎识别意图 17
18. 智能体的多轮对话 短期记忆 • 长上下文遗忘 模糊语义消除时,同时做摘要总结,即压缩token又保 留一定意图,避免窗口滑动后历史内容完全丢失 上下文修改 sysem prompt指令遵循在场对话会出现效果差现象,直 意图漂移与话题切换 长对话状态衰减 接修改原始content,追加指令 长期记忆 • 将核心实体(如订迭代id、服务名称)持久化至数据 库,而非仅存于会话缓存 18
19. 智能体的任务执行 工具2 动态工具编排 工具1 工具1 工具2 工具2 工具3 工具3 工具4 工具4 工具… 工具… 串行tools列表 工具执行结果 查询数据集 文本结果 工具3 工具3 工具2 数据标准化与 上下文管理 工具3 工具4 工具1 工具2 工具3 工具3 工具2 工具4 工具2 工具… 根据工具执行关系建立有向无环图 工具1 工具3 工具2 工具执行状态 成功 执行中 执行过程日志 失败 工具执行参数 迭代 服务 方法名 配置 19 step1 step2 step3 遍历工具列表 遍历工具1关联 遍历工具2关联 工具列表 工具列表 对话content 原始问题 工具1 工具2 工具3 工具4 最终结果 prompt system tools sum 记忆 上下文摘要 上下文摘要 +参数 结果产物 思考过程 最终响应
20. 智能体交互流程图 用户提问 01 意图识别 agent执行 02 任务规划规划 function call token压缩、参数提取 调用内置工具完成复杂流程 短期记忆 参数传递 04 结果输出 03 展示优化 查询工具 分析工具 从知识图谱中 检索数据 原始数据加工 结果数据聚合 长期记忆 数据查询 信息聚合 工具执行数据 再次进行token压缩,将所有执行 结果通过大模型润色总结返回 执行过程流式响应实时返回 执行结果格式化拼接工具执行历史 20
21. 智能体效果展示 全量变更报告 21
22. 智能体效果展示 根据变更信息追问 22
23. 阶段成果总结 已拦截缺陷问题的分布: 分页风险2% 方法变更影响范围1% 风险特征类问题3% 代码逻辑问题6% 接口变更影响范围12% 配置42% 预埋代码12% 兼容性22% 23
24. 演进方向 24
25. 演进方向 01 知识处理增强 • 02 对话系统优化 开发更多粒度上下文理解(历史缺陷/历史修改/历 史分析) • 反馈机制 进一步优化智能体在多轮对话中上下文保持能力, 引入高级对话策略,引导用户进行有效交流 • 目前仅支持java服务的解析,后续支持更多编程 语言 • 引入置信度和采纳率,通过数据不断提升分析效果 05 04 多语言支持 03 代码分析增强 • 06 协同生态扩展 需求、用例追踪矩阵(关联需求文档、测试用例与 代码实现片段的关系) 25 • 通过MCP服务方式对外提供,无缝嵌入其他AI流 程
26. Q&A 26
27. 招聘:测试开发岗位 邮箱:caimanling@meituan.com 微信号:13821200873 更多技术干货 欢迎关注“美团技术团队” 27

首页 - Wiki
Copyright © 2011-2025 iteam. Current version is 2.144.1. UTC+08:00, 2025-07-15 02:18
浙ICP备14020137号-1 $访客地图$