From d527e1ad0f1fa9e7135362ba420b3f85715790e3 Mon Sep 17 00:00:00 2001 From: wangzhiwei Date: Wed, 8 Apr 2026 16:17:19 +0800 Subject: [PATCH] =?UTF-8?q?feat(skills):=20zip=E6=A0=BC=E5=BC=8F=E6=8C=89?= =?UTF-8?q?=E7=85=A7=E5=8E=9F=E6=A0=B7=E7=BB=93=E6=9E=84=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../skills/common/util/SkillZipParser.java | 62 ++----------------- 1 file changed, 4 insertions(+), 58 deletions(-) diff --git a/src/main/java/com/kexue/skills/common/util/SkillZipParser.java b/src/main/java/com/kexue/skills/common/util/SkillZipParser.java index 0674942..68b81f4 100644 --- a/src/main/java/com/kexue/skills/common/util/SkillZipParser.java +++ b/src/main/java/com/kexue/skills/common/util/SkillZipParser.java @@ -15,6 +15,7 @@ import java.nio.charset.StandardCharsets; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.zip.ZipEntry; @@ -268,8 +269,9 @@ public class SkillZipParser { Enumeration entries = zipFile.entries(); while (entries.hasMoreElements()) { ZipEntry entry = entries.nextElement(); + System.out.println(entry.getName()); // 检查是否是根目录下的md文件 - if (!entry.isDirectory() && entry.getName().endsWith(".md") && !entry.getName().contains("/")) { + if (!entry.isDirectory() && (entry.getName().toLowerCase().endsWith("skill.md") || entry.getName().toLowerCase().endsWith("readme.md"))) { try (InputStream inputStream = zipFile.getInputStream(entry); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8))) { StringBuilder content = new StringBuilder(); @@ -634,36 +636,8 @@ public class SkillZipParser { } } } - - /* // 确保包含skills.md文件 - boolean hasSkillsMd = false; - for (Map child : children) { - if ("skills.md".equals(child.get("name")) && "file".equals(child.get("type"))) { - hasSkillsMd = true; - break; - } - } - if (!hasSkillsMd) { - Map skillsMdNode = createSkillsMdNode(skillName, skillDescription, skillTags); - children.add(skillsMdNode); - } - - // 确保包含scripts目录 - boolean hasScriptsDir = false; - for (Map child : children) { - if ("scripts".equals(child.get("name")) && "directory".equals(child.get("type"))) { - hasSkillsMd = true; - break; - } - } - if (!hasScriptsDir) { - Map scriptsDirNode = createScriptsDirNode(); - children.add(scriptsDirNode); - }*/ - structure.put("children", children); skillStructure.put("structure", structure); - return skillStructure; } @@ -816,36 +790,8 @@ public class SkillZipParser { addFileToTree(children, directoryMap, pathParts, entry, zipFile); } } - - // 确保包含skills.md文件 - boolean hasSkillsMd = false; - for (Map child : children) { - if ("skills.md".equals(child.get("name")) && "file".equals(child.get("type"))) { - hasSkillsMd = true; - break; - } - } - if (!hasSkillsMd) { - Map skillsMdNode = createSkillsMdNode(skillName, skillDescription, skillTags); - children.add(skillsMdNode); - } - - // 确保包含scripts目录 - boolean hasScriptsDir = false; - for (Map child : children) { - if ("scripts".equals(child.get("name")) && "directory".equals(child.get("type"))) { - hasScriptsDir = true; - break; - } - } - if (!hasScriptsDir) { - Map scriptsDirNode = createScriptsDirNode(); - children.add(scriptsDirNode); - } - structure.put("children", children); skillStructure.put("structure", structure); - return skillStructure; } @@ -916,7 +862,7 @@ public class SkillZipParser { // 找到文件所在的目录节点 List> targetChildren = children; if (directoryPath.length() > 0) { - Map directoryNode = directoryMap.get(directoryPath.toString()); + Map directoryNode = directoryMap.get(directoryPath.toString().substring(1)); if (directoryNode != null) { targetChildren = (List>) directoryNode.get("children"); }