当前位置: 首页
AI教程
AgentScope Java新手村 Skills 技能系统详解

AgentScope Java新手村 Skills 技能系统详解

热心网友 时间:2026-07-07
转载

第十八章 Skills 技能系统:SKILL.md 文件协议与5层仓库,按需加载节省Token

先说一个判断——在AgentScope 1.x时代,“技能”这个概念其实有点模糊不清,业务方经常跑来问:“Skill和Tool到底有什么区别?”这回2.0版本算是给出了一个清晰干脆的定义,彻底把这件事理顺了。

18.1 什么是Skill?

想象一下,Skill可以理解为“操作手册+资料包”的组合体。主Agent会先读取SKILL.md文件里的description字段,判断这个技能是否适用于当前任务。如果决定要用,才会把SKILL.md的完整内容和相关附件加载到上下文中。这就像一个精明的项目经理,先看摘要决定要不要翻完整本手册。 【AgentScope Ja va新手村系列】(18)Skills技能系统

18.2 第一个Skill:会议纪要

来看一个具体的例子,这个Skill专门用来整理会议纪要。首先在workspace下创建skills/meeting-minutes/目录,里面放两个文件:SKILL.md和template.md。 SKILL.md的内容是这样组织的: ``` --- name: meeting-minutes description: | 把对话内容整理成结构化会议纪要。当用户说"总结这段对话" / "写成会议纪要" / "提取action item" 时使用。 allowed-tools: [read_file] --- # Meeting Minutes Skill 你需要按下面的步骤把对话整理成会议纪要: 1. 提取每个 speaker 的关键发言 2. 提炼出 action item(谁 / 做什么 / 截止日期) 3. 用 `template.md` 的格式输出 4. 模板文件通过 `read_file` 读取 ``` 而template.md则定义了输出格式: ``` # 会议纪要 **时间**: **参与方**: ## 关键结论 - ... ## Action Items | 负责 | 事项 | 截止 | |------|------|------| | ... | ... | ... | ## 待讨论 - ... ``` 关键点在于,当你用HarnessAgent.builder().workspace(...)启动时,框架会自动扫描workspace/skills//SKILL.md,并将其注册到WorkspaceSkillRepository中。完全不用手动注册,省心省力。

18.3 5层SkillRepository组合

2.0版本把Skill仓库做成了接口,支持五种实现自由组合,按需选用: | 后端 | 适用 | 依赖 | |------|------|------| | WorkspaceSkillRepository | 本地workspace | 无(agentscope-harness自带) | | ClasspathSkillRepository | 内置/三方库里的skill | 无(agentscope-harness自带) | | GitSkillRepository | 团队Git仓库 | agentscope-extensions-skill-git-repository | | NacosSkillRepository | Nacos配置中心 | agentscope-extensions-nacos-skill | | MysqlSkillRepository | MySQL知识库 | agentscope-extensions-skill-mysql-repository | | PostgresSkillRepository | PostgreSQL知识库 | agentscope-extensions-skill-postgresql-repository | 如果需要使用非本地仓库,按需引入对应的Ma ven依赖即可: ```xml io.agentscope agentscope-extensions-skill-git-repository 2.0.0-RC2 io.agentscope agentscope-extensions-skill-mysql-repository 2.0.0-RC2 io.agentscope agentscope-extensions-skill-postgresql-repository 2.0.0-RC2 io.agentscope agentscope-extensions-nacos-skill 2.0.0-RC2 ``` WorkspaceSkillRepository和ClasspathSkillRepository已经内置于agentscope-harness中,完全不需要额外引入。 在配置时,多个仓库可以组合使用,声明顺序决定了优先级: ```ja va HarnessAgent agent = HarnessAgent.builder() .... .skillRepository( // 声明顺序 = 优先级:先本地 → 再 git → 再 nacos → 再 mysql → 再 postgres // 同名 skill 以先声明为准,后面的被忽略 new WorkspaceSkillRepository(filesystem, "skills", contextSupplier), // 本地 SKILL.md(最高优先级) new GitSkillRepository("https://github.com/your-org/team-skills.git"), // 团队公共 skill new NacosSkillRepository(nacosClient, "agentscope-skills"), // Nacos 配置中心 new MysqlSkillRepository(dataSource, "skill"), // MySQL skill 表 new PostgresSkillRepository(dataSource, "skill") // Postgres skill 表 ) .build(); ``` 这4层仓库按声明顺序查重:先workspace,再git,再nacos,再mysql。相同id的skill,以先声明的为准,后面的被忽略。

18.4 Skill加载的两个阶段

主Agent使用Skill的方式是按需加载,分为两个阶段。

18.4.1 路由阶段:只读description

主Agent启动时,所有skill的description会被拼接到system prompt里。LLM看到用户说“总结会议”时,知道有meeting-minutes这个skill可用,但此时还没读取完整内容。这就好比先看一眼目录,确定这本书有没有自己需要的章节。

18.4.2 加载阶段:按需读SKILL.md全文

LLM决定使用meeting-minutes后,会调用内置的read_skill工具,读取完整的SKILL.md以及附件路径,然后才开始干活。只有到这一步,才会把完整内容加载到上下文。这种按需加载机制,能有效节省token消耗。

18.5 在subagent上挂Skill

subagent和主Agent一样,也能挂载Skill: ```ja va SubagentDeclaration translator = SubagentDeclaration.builder() .name("translator") .description("中英互译") // 主 agent 通过 description 决定是否用这个 subagent .inlineAgentsBody("...") // 省略号替换为 subagent 的完整系统提示词 .skillRepository( new ClasspathSkillRepository("i18n"), // 来自 classpath:i18n/**/SKILL.md new GitSkillRepository("workspace-skills") // 团队 skill 仓库 ) .build(); ``` 主Agent通过subagent的description决定是否使用它,然后subagent再在自己的技能仓库中查找相应技能。

18.6 内置Skill:来自classpath

如果你的Skill不需要运行时更改,可以打包成jar包。在src/main/resources/skills/下创建目录: ``` src/main/resources/skills/payment-check/ ├── SKILL.md └── checklist.md ``` 然后通过ClasspathSkillRepository加载: ```ja va new ClasspathSkillRepository("skills") // "skills" 对应 classpath:skills/**/SKILL.md // 适合把标准操作手册打成 jar,下游项目引依赖即用 ``` 启动时会自动扫描classpath:skills/**/SKILL.md。这种方式非常适合把标准操作手册做成共享库,下游项目引入依赖即可使用。

18.7 Skill与Tool的区别

| 维度 | Tool | Skill | |------|------|-------| | 形态 | Ja va 方法 | Markdown 文件 | | 何时进入 prompt | 启动时全部注册 | 按 description 路由 + 按需加载 | | 业务方改动 | 改 Ja va + 重新编译 | 改 .md 文件即可 | | 适合 | 原子操作 | 流程、模板、领域知识 | 一个典型的组合方式是这样的: - read_file / grep_files —— Tool(原子操作) - meeting-minutes —— Skill(流程) 主Agent在meeting-minutes的allowed-tools里声明它需要read_file,这样LLM就知道“用这个skill时只能调用read_file这个工具”。

18.8 完整可运行示例

来看一个完整的项目结构: ``` workspace/ ├── MEMORY.md └── skills/ ├── meeting-minutes/ │ ├── SKILL.md │ └── template.md └── invoice-parser/ ├── SKILL.md └── rules.md ``` 每个SKILL.md的description就是主Agent看到的入口。以invoice-parser为例: ```yaml --- name: invoice-parser description: | 解析发片内容。当用户提供发片文本 / 提到"发片号 / 金额 / 税号"时使用。 allowed-tools: [read_file, parse_invoice] --- # Invoice Parser 1. 用 `parse_invoice` 工具从文本提取结构化字段 2. 用 `read_file` 读 `rules.md` 校验字段格式 3. 返回结构化结果 ``` rules.md定义了校验规则: ``` - 发片号:8 位数字 - 金额:保留 2 位小数 - 税号:18 位字母数字 ``` 主Agent的代码非常简单: ```ja va HarnessAgent agent = HarnessAgent.builder() .name("assistant") .sysPrompt("你是助理,会用 skill 解决具体问题。") .model(model()) .workspace(Path.of("./workspace")) // 设置了 .workspace(),框架自动扫描 workspace/skills/ 加载 SKILL.md // 无需手动注册 WorkspaceSkillRepository .build(); ``` 运行host.call("帮我把这段对话整理成会议纪要")时,LLM会先通过description路由到meeting-minutes,然后加载SKILL.md的完整内容,按照模板输出结果。

18.9 最小迁移清单(1.x SkillsKit → 2.0 SkillRepository)

| 1.x 用法 | 2.0 等价 | |----------|----------| | SkillsKit.register(skill) | SkillRepository + workspace/skills//SKILL.md | | agent.skills(kit) | HarnessAgent.builder().skillRepository(...) | | 业务方实现 Skill 接口 | 写 SKILL.md | | 技能库动态加载 | 多种 SkillRepository 后端 | | 跨项目复用 | ClasspathSkillRepository 打 jar / GitSkillRepository / PostgresSkillRepository |

18.10 本章小结

2.0版本用SKILL.md协议加SkillRepository抽象,彻底替代了1.x的SkillsKit。这里有几个核心要点值得记住: 第一,5种仓库后端——Workspace、Classpath、Git、Nacos、MySQL、PostgreSQL,按声明顺序查重,灵活组合。 第二,路由靠description,加载靠on-demand,这种机制能有效节省token成本。 第三,Skill与Tool互补——Tool是原子操作,Skill是流程编排。两者各司其职,共同构建起一个清晰、可扩展的技能系统。
来源:https://developer.aliyun.com/article/1745737

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
CapCut AI Linux服务器部署教程:从环境配置到后台运行全程

CapCut AI Linux服务器部署教程:从环境配置到后台运行全程

CapCutAI在Linux服务器上更适合做“自动化辅助剪辑”部署,需先确认官方能力边界,再配置系统、浏览器运行环境、素材目录、任务脚本与systemd后台服务,重点关注账号安全、资源占用、版权合规和故障排查。

时间:2026-07-08 06:43
CapCut AI Mac安装教程:Apple Silicon和Intel配置步骤

CapCut AI Mac安装教程:Apple Silicon和Intel配置步骤

CapCutAI在macOS上适合短视频剪辑、字幕生成、智能抠像和素材包装。安装前需确认芯片类型、系统版本、存储空间与权限设置,AppleSilicon和Intel机型在下载、授权、性能优化上略有差异。

时间:2026-07-08 06:43
Veo插件安装全流程:浏览器编辑器扩展市场配置

Veo插件安装全流程:浏览器编辑器扩展市场配置

Veo相关插件安装应先确认官方来源与适配环境,再按浏览器、编辑器或扩展市场流程完成安装、授权和测试,重点关注权限、素材合规、版本兼容与账号安全。

时间:2026-07-08 06:43
Veo API Key 获取与配置教程:账号注册及国内网络设置

Veo API Key 获取与配置教程:账号注册及国内网络设置

围绕VeoAPIKey配置流程,梳理账号注册、项目创建、密钥获取、环境变量设置、国内网络连通性检查、常见报错处理与安全管理建议,适合首次接入AI视频能力的开发者和团队参考。

时间:2026-07-08 06:43
Veo macOS安装教程:苹果芯片与英特尔配置步骤整理

Veo macOS安装教程:苹果芯片与英特尔配置步骤整理

Veo在macOS上通常通过网页端或API环境使用,并非传统本地安装软件。AppleSilicon与Intel机型需先确认系统、浏览器、运行环境与权限配置,再按需接入开发工具。

时间:2026-07-08 06:43
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 日榜
  • 周榜
  • 月榜