AgentScope Java新手村 Skills 技能系统详解
第十八章 Skills 技能系统:SKILL.md 文件协议与5层仓库,按需加载节省Token
先说一个判断——在AgentScope 1.x时代,“技能”这个概念其实有点模糊不清,业务方经常跑来问:“Skill和Tool到底有什么区别?”这回2.0版本算是给出了一个清晰干脆的定义,彻底把这件事理顺了。18.1 什么是Skill?
想象一下,Skill可以理解为“操作手册+资料包”的组合体。主Agent会先读取SKILL.md文件里的description字段,判断这个技能是否适用于当前任务。如果决定要用,才会把SKILL.md的完整内容和相关附件加载到上下文中。这就像一个精明的项目经理,先看摘要决定要不要翻完整本手册。
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则定义了输出格式: ``` # 会议纪要 **时间**: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依赖即可: ```xml18.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/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是流程编排。两者各司其职,共同构建起一个清晰、可扩展的技能系统。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
CapCut AI Linux服务器部署教程:从环境配置到后台运行全程
CapCutAI在Linux服务器上更适合做“自动化辅助剪辑”部署,需先确认官方能力边界,再配置系统、浏览器运行环境、素材目录、任务脚本与systemd后台服务,重点关注账号安全、资源占用、版权合规和故障排查。
时间:2026-07-08 06:43
CapCut AI Mac安装教程:Apple Silicon和Intel配置步骤
CapCutAI在macOS上适合短视频剪辑、字幕生成、智能抠像和素材包装。安装前需确认芯片类型、系统版本、存储空间与权限设置,AppleSilicon和Intel机型在下载、授权、性能优化上略有差异。
时间:2026-07-08 06:43
Veo插件安装全流程:浏览器编辑器扩展市场配置
Veo相关插件安装应先确认官方来源与适配环境,再按浏览器、编辑器或扩展市场流程完成安装、授权和测试,重点关注权限、素材合规、版本兼容与账号安全。
时间:2026-07-08 06:43
Veo API Key 获取与配置教程:账号注册及国内网络设置
围绕VeoAPIKey配置流程,梳理账号注册、项目创建、密钥获取、环境变量设置、国内网络连通性检查、常见报错处理与安全管理建议,适合首次接入AI视频能力的开发者和团队参考。
时间:2026-07-08 06:43
Veo macOS安装教程:苹果芯片与英特尔配置步骤整理
Veo在macOS上通常通过网页端或API环境使用,并非传统本地安装软件。AppleSilicon与Intel机型需先确认系统、浏览器、运行环境与权限配置,再按需接入开发工具。
时间:2026-07-08 06:43
- 日榜
- 周榜
- 月榜
相关攻略
2026-07-08 06:43
2026-07-08 06:43
2026-07-08 06:43
2026-07-08 06:43
2026-07-08 06:43
2026-07-08 06:42
2026-07-08 06:42
2026-07-08 06:42
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程
神威三国礼包激活码领取攻略大全
发布于 2026-07-08
无尽冒险好玩吗核心玩法与新手入门指南
发布于 2026-07-08
保卫加加村好玩吗真实玩家体验深度测评
发布于 2026-07-08
方舟生存进化手游多人联机详细教程
发布于 2026-07-08
复仇女神号封锁好玩吗 玩法简介
发布于 2026-07-08
《欢迎来到九龙》2026年7月10日登陆PS5与Xbox
发布于 2026-07-08
王者荣耀九周年返场皮肤有哪些
发布于 2026-07-08
剑星虚拟摄影赛开启 展现莉莉别样魅力
发布于 2026-07-08
麒麟操作系统如何查看共享内存段信息
发布于 2026-07-08
麒麟操作系统运行Python脚本的完整指南
发布于 2026-07-08
麒麟OS怎么设置鼠标右键点击即选择
发布于 2026-07-08
银河麒麟系统用户头像资料无法修改的解决办法
发布于 2026-07-08
手机电子秤功能真的能称重吗
发布于 2026-07-08
万左右新能源SUV怎么选五款高适配车型推荐
发布于 2026-07-08
万纯电SUV怎么选 奔驰纯电GLC值得考虑
发布于 2026-07-08
家用豪华SUV推荐:5款舒适型车型盘点
发布于 2026-07-08
热门话题

