腾讯云用AI渐进重构推荐粗排服务
概述
腾讯云团队用大模型辅助重构推荐系统粗排服务(C++,基于腾讯开源 trpc 框架)。先让 AI 扫描代码库输出架构概览与问题清单:DAG 配置与代码分离导致流程理解困难(全局、高优先级)、多个核心函数超过 2000 行、多样性与过滤打分模块使用大量 if-else 分支、策略注册逻辑在各模块重复实现、核心模块缺少单元测试。 团队逐一验证 AI 判断(回溯配置历史版本确认 DAG 配置上线三年几乎未修改),并因牵涉面广暂缓 DAG 问题、从拆函数切入。实施上,先让 AI 标识可独立的逻辑单元、由工程师确认依赖后再让 AI 按「只移动代码位置、不改实现」的指令拆分到不同文件。随后在粗排多样性模块试点策略模式,定义 AbstractDiversityRule 接口,把每个 if-else 分支提取为 TimelinessRule、TagDiversityRule 等独立策略类,由 DiversityRuleManager 按优先级配置动态加载执行,并推广到过滤、打分、保量、调权模块。 因 C++ 无统一依赖注入框架,自研与 trpc 配合的容器管理策略类创建与依赖。再用 Pipeline 模式取代 DAG 配置驱动的主流程编排(recall 并行召回、filter 串行、score 并行算特征后串行打分、postprocess 与异步任务),把流程显式化到代码。最后沉淀依赖注入容器、FiberExecutor、FiberMapReduce、DoubleBuffer 配置管理、ScopeTimingTask 计时器五类通用组件到公共库,并推广到其他服务。 效果:巨型函数从平均 2000 行降至 100 行以内,单文件从上万行拆分为至多几百行的模块,代码重复率从 35% 降至 10% 以下,圈复杂度超 15 的函数几乎消失,新功能开发周期从平均三天缩短到一天半,代码审查时间从每次两小时降至半小时,测试覆盖率从不足 30% 提升到 100%。性能优化阶段通过火焰图定位监控上报热点(一次请求数百至上千次上报),改为批量上报与请求结束时统一提交后平均耗时下降 20 毫秒。 文中同时记录了失败经验:AI 首版拆分代码无法编译、引入把形参替换为同名成员变量的隐蔽 bug、三个月内新增 AI 代码导致平均耗时增长 15 毫秒、批量收集方案的 fiber 数据竞争等,均需工程师逐行审查修正。