/** * 验证反序列化器 — 往返测试 * SKILL.md → serialize → deserialize → SKILL.md */ const path = require('path'); const { serializeSkillToGenome } = require('./serializer'); const { deserializeGenomeToSkill } = require('./deserializer'); const SKILLS_DIR = path.join(require('os').homedir(), '.gemini/antigravity/skills'); const target = path.join(SKILLS_DIR, 'codebase-explorer/SKILL.md'); console.log('═══════════════════════════════════════'); console.log(' 反序列化器往返测试'); console.log('═══════════════════════════════════════\n'); console.log(`📄 原始文件: ${target}\n`); // Step 1: 序列化 const genome = serializeSkillToGenome(target); // Step 2: 反序列化 const output = deserializeGenomeToSkill(genome, genome.meta); console.log('── 生成的 SKILL.md 内容 (前 100 行) ──\n'); const lines = output.split('\n'); for (let i = 0; i < Math.min(100, lines.length); i++) { console.log(`${String(i + 1).padStart(3)}: ${lines[i]}`); } console.log(`\n── 共 ${lines.length} 行 ──\n`); // 统计各区块 const sections = output.match(/^#{1,3}\s+.+/gm) || []; console.log('── 区块结构 ──\n'); for (const sec of sections) { const level = sec.match(/^(#+)/)[1].length; console.log(`${' '.repeat(level - 1)}${sec}`); } console.log('\n✅ 往返测试完成');