最有成就感的一次技术问题解决
项目背景
在深圳市觉醒运动科技的“觉醒运动平台-TrywakeAIOS”项目中。为了提升产品的智能化体验,我们需要一个核心功能:根据用户的体能数据(如年龄、体重、病史、心率)和历史运动表现,由AI自动生成个性化的科学跑步计划。这是一个全新的需求,也是我们产品从“单纯记录”向“智能教练”转型的关键一步。
技术问题
当时面临的核心挑战是“技术选型与快速落地”。
技术新:当时Spring AI框架刚刚兴起(属于较新的技术栈),团队内没有人有实战经验,社区资料也相对较少。
集成难:我们需要将大语言模型(LLM)的能力无缝集成到现有的Spring Boot后端架构中,既要保证生成的计划符合运动科学逻辑,又要确保接口响应的稳定性。
Prompt工程:如何让AI输出结构化的数据(如JSON格式的周计划),而不是一段无法解析的自然语言,是一个比较大的难题与工作量。
解决过程
快速学习与验证:我利用业余时间查阅了Spring AI的官方文档和GitHub源码,搭建了一个最小可行性Demo。我测试了它对接不同厂商模型(如Ollama、OpenAI)的能力,并验证了它在Spring生态中的兼容性。
决策:确认Spring AI能符合我们的Java技术栈,决定采用。
架构设计与集成:我将Spring AI引入项目,设计了一个AI Service层。在这个层中,我封装了与大模型交互的逻辑。为了解决“幻觉”问题,我引入了Prompt Engineering(提示词工程)。我编写了详细的System Prompt,明确要求AI扮演“专业跑步教练”的角色,并严格规定了输出格式(使用了Spring AI的Output Parser功能,强制AI返回JSON数据)。
数据闭环:我将用户的MySQL档案数据(体能指标)和MongoDB中的历史运动记录,作为上下文(Context)动态注入到Prompt中,确保生成的计划是基于真实数据的。
结果:
成功上线:我们成功上线了“AI智能体生成科学跑步计划”功能,据我所知,这是行业内较早将Spring AI应用于运动健身场景的实践之一。
用户价值:该功能大幅降低了用户制定计划的门槛,用户使用率显著提升。
最难排查的一次 Bug
结论
在我的开发生涯中,排查难度较高的Bug往往不源于单一的代码错误,而是出现在业务链路长、技术栈复杂、对接了第三方外部系统、且难以稳定复现的场景中。这类问题的排查,考验的不是单纯的编码调试能力,而是一套系统性、分层的工程化排查思维和以及你对整个业务的把控程度,定位过程犹如一场全链路的“侦探游戏”。
举例
Bug现象与背景:
还是拿上面的“觉醒运动平台-TrywakeAIOS”项目来讲,我们上线了“AI智能体生成科学跑步计划”功能后,在线上用户测试的反馈中,发现一个偶发性的问题:在晚间用户活跃高峰时段,有极少数用户的AI计划生成请求会超时失败,返回服务器内部错误。但更棘手的是,与之伴随出现的间接现象是:在AI服务调用失败的时间点前后,部分在正常使用跑步机跑步的用户,其实时运动数据上传会出现短暂的延迟或丢失。这两个问题看似无关,但总在相近时间段“随机”发生,导致用户体验受损。
排查的复杂性与难点:
这个Bug存在难度,其根源在于引入了不可控的外部依赖,并且故障现象具有“传染性”和隐蔽性:
根因的模糊性:问题可能存在于我们的调用方代码、微服务模块、网络链路、第三方AI服务本身,或是我们自身系统的资源竞争中。初期难以定位责任边界。
第三方服务的“黑盒”特性:第三方AI服务,我们只能通过其提供的有限API文档和错误码进行推断。
故障的“涟漪效应”:AI服务调用失败可能导致重试机制触发,进而短时间内增加大量请求,可能挤占网络连接池或线程资源,间接影响到对实时性要求高的蓝牙数据上传服务,形成跨业务模块的连锁反应。
现象的非确定性:失败是间歇性的,且错误类型不一,无法稳定复现,这排除了简单的配置错误或代码逻辑BUG,指向了更深层次的系统性、并发性或资源性问题。
排查
划定边界,建立监控基线;
数据关联分析与假设验证;
解决于改进
服务熔断与降级:引入熔断器(如sentinel),当调用第三方AI服务的失败率超过阈值时,自动熔断,快速失败并返回降级方案(如返回一个预置的、通用的安全跑步计划),避免资源耗尽。
资源隔离:为调用第三方AI服务单独配置一个受限的连接池和线程池,与其他跑步机数据处理等核心实时业务进行资源隔离,防止一方故障拖垮全体。
完善监控与告警:建立针对第三方服务调用的黄金指标(流量、错误率、延迟、饱和度)监控,并设置分级告警。
平时开发是否会使用 AI 工具(如 Cursor / ChatGPT / Copilot)辅助开发?主要用于哪些场景?
日常开发中会高频使用 CodeBuddy、Gemini 等 AI 工具辅助开发,结合我全栈开发、架构设计与多技术栈融合的工作场景,AI 工具已成为提升开发效率的重要辅助。我始终坚持以我为主、AI 为辅的原则,AI 工具主要解决机械开发、陌生技术调研、问题排查思路梳理等问题,而核心的架构设计、业务逻辑开发、跨端协同核心方案、系统稳定性保障等关键工作,均由我自主把控并做严格的代码与方案评审,确保项目质量与技术落地的合理性。