Agent Skill 踩坑记录 | SpringBoot 打包后 Skill 加载失败问题排查与解决

简介: 本文记录 Spring AI Alibaba Agent Skill 在 SpringBoot 打包后出现 Skill not found、ClasspathSkillRegistry 无法加载的问题,通过切换 FileSystemSkillRegistry 实现临时解决,分享完整踩坑排查与代码方案。

在之前的开发中,我使用 ClasspathSkillRegistry 作为 Agent Skill 的查找策略,本地开发环境下调试、运行都一切正常,没有出现任何异常。

感兴趣的小伙伴可以回顾上一篇相关内容:https://www.lucaju.cn/index.php/archives/168/

一、问题出现:上线后频繁报「Skill not found」

本以为本地测试无误后,上线就能顺利运行,结果程序部署到服务器后,日志中频繁出现 Skill not found: 错误,导致相关功能完全无法使用。

二、问题排查:排除常见误区

遇到问题后,首先排查了最容易出现问题的两个点,均排除异常:

  1. 确认 Skill 已成功打包:检查部署的 jar 包,解压后确认 skill 相关文件已正常包含在内,不存在打包遗漏的情况;
  2. 确认 Skill Name 无误:核对代码中调用 Skill 的名称与配置文件中的名称,完全一致,排除拼写错误、大小写错误等问题。

三、问题根源:找到官方 Issue

排除上述常见问题后,推测可能是框架本身的兼容性问题,于是去 GitHub 上搜索相关问题,果然发现已有其他开发者遇到过相同情况,并且提交了 Issue:https://github.com/alibaba/spring-ai-alibaba/issues/4426

skill-issue.png

从 Issue 中得知,问题根源在于 SpringBoot 项目打包成 jar 包后,路径机制发生变化,导致 ClasspathSkillRegistry 无法正常加载 resources 下的 Skill 目录,这是目前 spring-ai-alibaba 框架的一个已知 bug。

四、临时解决方案:改用 FileSystemSkillRegistry

由于官方尚未修复该 bug,为了不影响线上功能正常使用,我采用了临时解决方案:将 Skill 目录存放在服务器的文件系统中,通过指定真实路径获取 Skill,对应的查找策略改用 FileSystemSkillRegistry

修改后的核心代码如下:

/**
 * 获取技能智能体钩子。
 */
private static SkillsAgentHook getSkillsAgentHook() {
   

    // 注释掉原有的ClasspathSkillRegistry方式(本地可用,打包后失效)
    // SkillRegistry registry = ClasspathSkillRegistry.builder()
    //         .classpathPath("skills")
    //         .build();

    /*
      临时解决方案说明:
      spring ai alibaba 目前使用 ClasspathSkillRegistry 打包后,无法获取 Resource 下的目录
      因此修改为使用 FileSystemSkillRegistry,从文件系统真实路径获取 Skill
      相关 Issue:https://github.com/alibaba/spring-ai-alibaba/issues/4426
     */
    String skillPath = SpringUtils.getProperty("doc.skills-path");
    log.info("skillPath: {}",skillPath);

    FileSystemSkillRegistry registry = FileSystemSkillRegistry.builder()
            .projectSkillsDirectory(skillPath)
            .build();
    return SkillsAgentHook.builder()
            .skillRegistry(registry)
            .build();
}

五、后续

需要说明的是,这只是一个临时解决方案——使用该方案后,需要手动将 Skill 配置文件同步到服务器的指定路径(即配置项 doc.skills-path 对应的路径),增加了少量部署成本。

后续会持续关注官方 Issue 的修复进度,待 bug 修复后,再切换回 ClasspathSkillRegistry 方式,减少部署环节的手动操作。

也希望遇到相同问题的小伙伴,能通过这篇踩坑记录少走弯路~

目录
相关文章
|
20天前
|
存储 人工智能 Java
吃透 Spring AI Alibaba 多智能体|四大协同模式+完整代码
本文详细讲解 Spring AI Alibaba Multi-Agent 多智能体架构,包含顺序执行、并行执行、LLM 路由、监督者四大协同模式,搭配可运行代码示例与真实业务场景,从零带你上手多智能体开发。
704 3
|
22天前
|
人工智能 IDE 数据可视化
【RuoYi-SpringBoot3-Pro】:将 AI 编程融入传统 java 开发
【RuoYi-SpringBoot3-Pro】将AI编程深度融入Java开发:基于Claude Code + Antigravity主力组合,集成openskills技能管理、OpenSpec需求规范工作流,支持智能创建/更新项目专属Skill,并实现IDEA与Antigravity一键切换,兼顾传统工程规范与AI提效。(239字)
308 2
【RuoYi-SpringBoot3-Pro】:将 AI 编程融入传统 java 开发
|
12天前
|
人工智能 JSON Java
Spring AI Alibaba + MCP:调用MCP市场公开服务实操
本文详细讲解Spring Ai Alibaba调用MCP市场公开服务的全流程,以高德地图MCP服务为例,包含API-Key申请、客户端配置、代码实操,助力开发者快速掌握Spring Ai Alibaba与MCP服务对接技巧。
267 6
Spring AI Alibaba + MCP:调用MCP市场公开服务实操
|
6月前
|
人工智能 监控 Java
构建定时 Agent,基于 Spring AI Alibaba 实现自主运行的人机协同智能 Agent
借助 Spring AI Alibaba 框架,开发者可快速实现定制化自动定时运行的 Agent,构建数据采集、智能分析到人工参与决策的全流程AI业务应用。
2158 87
|
20天前
|
存储 人工智能 前端开发
使用Spring AI Alibaba构建智能体Agent
本文详解使用Spring AI Alibaba框架,结合DashScope和React Agent,通过两个实战案例(基础测试+生产级应用),教你快速构建Java AI智能体
798 7
|
9天前
|
存储 人工智能 安全
Hermes Agent爆火,聊聊与OpenClaw 到底区别在哪
本文对比近期爆火的Hermes Agent与OpenClaw两大AI Agent框架,从设计理念、记忆系统、技能生成、安全机制等维度解析差异,分析适用场景与互补用法,帮你快速判断哪款更适合自己的自动化需求。
1368 10
|
9天前
|
IDE Java 编译器
【全网最详细】JDK21下载安装保姆级教程:Java21开发环境配置全攻略(附官网安装包)
JDK 21是Java最新长期支持(LTS)版本,提供虚拟线程、分代ZGC、模式匹配等革命性特性,显著提升高并发性能与开发效率,稳定可靠,适合企业级生产环境。
1026 13
|
15天前
|
人工智能 编解码 安全
【Seedance 2.0 技术解析】:字节跳动电影级多模态视频生成模型全景剖析
字节跳动于2026年2月发布Seedance 2.0,登顶AI视频生成Elo榜(1269分)。其首创双分支扩散Transformer(DB-DiT),实现原生音画同步、60秒2K视频、8+语言唇形对齐及物理合规建模,多模态参考支持9图+3视频+3音频,可用率达90%,标志AI视频迈入工业级应用新阶段。(239字)

热门文章

最新文章

下一篇
开通oss服务