test-deserializer.js 1.47 KB
/**
 * 验证反序列化器 — 往返测试
 * 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✅ 往返测试完成');