代码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