refactor: 精简标准 Skill 包模型

- 统一使用 SKILL.md 与通用资源表达

- 删除仓储、专用资源类型和低价值兼容接口

- 保留安全 ZIP 编解码、校验和内容存储能力
This commit is contained in:
2026-08-14 18:51:43 +08:00
parent b313523aba
commit a34ca9271e
28 changed files with 366 additions and 2295 deletions

View File

@@ -2,8 +2,6 @@ package com.easyagents.skill.factory;
import com.easyagents.skill.model.*;
import com.easyagents.skill.util.SkillFrontmatter;
import com.easyagents.skill.util.SkillResources;
import com.easyagents.skill.validation.defaults.DefaultSkillValidator;
import java.util.List;
import java.util.Map;
@@ -19,92 +17,37 @@ public final class SkillFactory {
/**
* 基于 SKILL.md 内容创建 Skill。
*
* @param id Skill ID
* @param skillContent SKILL.md 原始内容
* @return Skill 聚合
*/
public static Skill create(String id, String skillContent) {
return create(id, skillContent, null, null, null);
}
/**
* 基于 SKILL.md 内容创建并严格校验正式标准 Skill。
*
* @param id Skill ID
* @param skillContent SKILL.md 原始内容
* @return 通过正式标准校验的 Skill 聚合
*/
public static Skill createStrict(String id, String skillContent) {
Skill skill = create(id, skillContent);
new DefaultSkillValidator().validate(skill);
public static Skill create(String skillContent) {
SkillDocument document = SkillFrontmatter.parseDocument(skillContent);
Map<String, Object> values = document.getFrontmatter().getValues();
requiredScalar(values, "name");
requiredScalar(values, "description");
Skill skill = new Skill();
skill.setDocument(document);
return skill;
}
/**
* 基于 SKILL.md 内容和通用资源创建 Skill。
*
* @param id 仓储 ID可为空
* @param skillContent SKILL.md 原始内容
* @param resources 通用资源列表
* @return Skill 聚合
*/
public static Skill createWithResources(String id, String skillContent, List<SkillResource> resources) {
Skill skill = create(id, skillContent);
public static Skill createWithResources(String skillContent, List<SkillResource> resources) {
Skill skill = create(skillContent);
skill.setResources(resources);
SkillResources.refreshLegacyViews(skill);
return skill;
}
/**
* 基于 SKILL.md 和通用资源创建并严格校验正式标准 Skill。
*
* @param id 仓储 ID可为空
* @param skillContent SKILL.md 原始内容
* @param resources 通用资源列表
* @return 通过正式标准校验的 Skill 聚合
*/
public static Skill createWithResourcesStrict(String id, String skillContent,
List<SkillResource> resources) {
Skill skill = createWithResources(id, skillContent, resources);
new DefaultSkillValidator().validate(skill);
return skill;
}
/**
* 基于 SKILL.md 内容和资源列表创建 Skill。
*
* @param id Skill ID
* @param skillContent SKILL.md 原始内容
* @param references reference 文档列表
* @param scripts script 脚本列表
* @param assets asset 资产列表
* @return Skill 聚合
*/
public static Skill create(String id, String skillContent, List<SkillReference> references,
List<SkillScript> scripts, List<SkillAsset> assets) {
SkillDocument document = SkillFrontmatter.parseDocument(skillContent);
Map<String, Object> values = document.getFrontmatter().getValues();
String name = requiredScalar(values, "name");
String description = requiredScalar(values, "description");
Skill skill = new Skill();
skill.setId(id);
skill.setName(name);
skill.setDescription(description);
skill.setMetadata(new SkillMetadata(values));
skill.setDocument(document);
skill.setReferences(references);
skill.setScripts(scripts);
skill.setAssets(assets);
skill.setResources(SkillResources.canonicalResources(skill));
return skill;
}
private static String requiredScalar(Map<String, Object> values, String key) {
private static void requiredScalar(Map<String, Object> values, String key) {
Object value = values.get(key);
if (!(value instanceof String text) || text.isBlank()) {
throw new com.easyagents.skill.exception.SkillValidationException(
"SKILL.md frontmatter " + key + " must be a non-blank string.");
}
return text;
}
}