refactor: 精简标准 Skill 包模型
- 统一使用 SKILL.md 与通用资源表达 - 删除仓储、专用资源类型和低价值兼容接口 - 保留安全 ZIP 编解码、校验和内容存储能力
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user