Spring AI Lab v0.3.0 新增 Skill 系统:AI 提示词即插即用

2026-05-31阅读 0热度 0
skill

Spring AI Lab v0.3.0 功能示意

版本亮点:Skill 系统

Spring AI Lab 是基于 Spring AI 打造的 AI 应用快速开发工具箱,其定位明确:将对话、RAG、多 Agent、代码审查等高频场景封装为即插即用的 Spring Boot Starter。

v0.3.0 版本的核心变化是 Skill 系统——一套支持 AI 系统提示词可插拔、热更新及运行时管理的完整方案。它解决了一个关键痛点:提示词与代码的紧耦合问题。

Skill 系统定义与工作机制

Skill 将 AI 的角色设定、行为规范和领域知识封装为独立的 `.md` 文件。框架在用户对话时自动匹配对应 Skill,并将系统提示词注入对话上下文。整个过程无需硬编码或手动拼接 Prompt,只需编写文件即可生效。

以下是一个完整的 Skill 文件示例(YAML Frontmatter + Markdown 格式):

---
name: weather-assistant
displayName: 天气助手
description: 提供天气查询、天气预报、气象知识和穿衣建议
category: utility
priority: 5
tags: [天气, 气象, 温度, 出行]
model:
  temperature: 0.3
  maxTokens: 1024
---
# 角色
你是一个专业的天气查询助手...

## 能力范围
- 查询指定城市的实时天气状况
- 提供未来 3-7 天的天气预报

## 约束
- 只回答天气相关问题

这就是一个完整的 Skill 定义。框架自动加载、自动匹配、自动注入,开发者只需关注内容本身。

核心功能特性

一、多源加载机制(三层优先级)

Skill 支持三种来源,按优先级从高到低自动覆盖。逻辑清晰直接:

① REST API 动态注册(运行时,最高优先级)
    ↓ 覆盖
② 外部文件目录(文件系统,可读写)
    ↓ 覆盖
③ classpath 内置(JAR 内,兜底默认)

同名 Skill 按优先级覆盖:JAR 内置 Skill 保证“开箱即用”,外部目录 Skill 可随时增删改,REST API 适合程序化动态管理。三层结构平衡了稳定性与灵活性。

二、外部目录配置与热加载

配置方式极简:

spring:
  ai:
    lab:
      skill:
        external-dir: /opt/myapp/custom-skills
        hot-reload: true

在 `/opt/myapp/custom-skills/` 目录下,可直接操作:

# 新增 Skill
vi /opt/myapp/custom-skills/translator.md

# 修改提示词
vi /opt/myapp/custom-skills/weather-assistant.md

# 删除 Skill
rm /opt/myapp/custom-skills/old-skill.md

框架通过 Java 的 `WatchService` 监听文件变更,修改即时生效,无需重启应用。对于生产环境,此功能非常实用——线上调整提示词不再需要停机部署。

三、自动初始化

首次部署到生产环境时,外部目录往往为空。框架提供了 `auto-init` 选项:

spring:
  ai:
    lab:
      skill:
        external-dir: /opt/myapp/custom-skills
        auto-init: true

启动时,框架自动将 JAR 内置的 3 个 Skill 复制到外部目录。之后可直接编辑这些文件,无需手动搬运。

四、REST API 管理端点

开启 `enable-management: true` 后,会暴露完整的 CRUD 接口:

spring:
  ai:
    lab:
      skill:
        enable-management: true
方法 路径 说明
GET `/api/skills` 列出所有 Skill
GET `/api/skills/{name}` 查看 Skill 详情(含正文)
POST `/api/skills/{name}` 创建或更新 Skill
DELETE `/api/skills/{name}` 删除外部 Skill
POST `/api/skills/reload` 全量重新加载

例如,通过接口创建一个新 Skill:

curl -X POST http://localhost:8080/api/skills/translator \
-H "Content-Type: text/plain" \
-d '---
name: translator
displayName: 翻译助手
description: 中英文互译专家
category: utility
priority: 3
---
# 角色
你是一个专业的翻译助手,擅长中英文互译。翻译时保持原文语气和风格。'

文件自动写入外部目录,Skill 即刻生效。整个过程完全通过 API 完成,适合集成到自动化运维流程中。

完整配置参考

以下是一份覆盖所有关键选项的完整配置清单:

spring:
  ai:
    lab:
      skill:
        enabled: true               # 启用 Skill 系统
        directory: skills           # 内置 Skill classpath 路径
        external-dir: ./custom-skills # 外部可写目录
        auto-init: true             # 首次自动种子化内置 Skill
        enable-management: false    # REST API 管理(按需开启)
        hot-reload: true            # 监听文件变更自动刷新
        routing-strategy: semantic  # 路由策略:semantic / keyword / llm
        similarity-threshold: 0.1   # 语义匹配相似度阈值(0-1)
        max-matched-skills: 3       # 每次请求最多匹配的 Skill 数

实现要点

SkillLoader 多源加载逻辑

核心加载类 `SkillLoader` 的 `load()` 方法,执行逻辑简洁清晰,共几步:

  1. 如果配置了 `externalDir`,先初始化外部目录(自动创建 + 可选种子化)
  2. 加载外部目录的 Skill(高优先级)
  3. 加载 classpath 内置 Skill 作为兜底(仅注册外部不存在的同名 Skill)
  4. 如果开启了热加载,启动 `WatchService` 监听文件变更

文件监听

通过 `java.nio.file.WatchService` 监听外部目录的 `ENTRY_CREATE`、`ENTRY_MODIFY`、`ENTRY_DELETE` 事件,并加入 200ms 防抖处理,确保变更及时响应。

安全管理

REST API 的路径参数进行了 `Path.normalize()` + `startsWith()` 校验,有效防止路径穿越攻击。这一点在开放管理接口时尤为重要。

向后兼容

特别说明:完全向后兼容。如果不配置 `external-dir`,行为与之前版本一致,仅从 `directory` 加载 Skill。升级到 v0.3.0 无需担心旧配置出现问题。

测试验证

全部 42 个单元测试通过,零 lint 错误。代码质量有保障。


结语

项目的初衷始终未变:让 AI 能力接入 Java 应用,像添加一个 Spring Boot Starter 一样简单。

从零搭建一个具备对话记忆、多模型路由、容错降级、可观测性的 AI 应用,通常需要一到两周。而使用 Spring AI Lab,引入依赖、配置好 Key 即可完成。v0.3.0 的 Skill 系统进一步将提示词管理从代码中解放出来,使 AI 的“人设”和“知识”能够独立迭代。

项目地址:

  • Gitee:https://gitee.com/sjz_zy/spring-ai-lab
  • GitHub:https://github.com/Ziye-0911/spring-ai-lab
免责声明

本网站新闻资讯均来自公开渠道,力求准确但不保证绝对无误,内容观点仅代表作者本人,与本站无关。若涉及侵权,请联系我们处理。本站保留对声明的修改权,最终解释权归本站所有。

相关阅读

更多
欢迎回来 登录或注册后,可保存提示词和历史记录
登录后可同步收藏、历史记录和常用模板
注册即表示同意服务条款与隐私政策