test-scaffold.js 2.01 KB
#!/usr/bin/env node

/**
 * 测试 AgentScaffold — 创建一个完整的 Agent 目录模板
 *
 * 用法: node packages/agent-core/test-scaffold.js
 */

import { AgentScaffold } from './AgentScaffold.js';
import { Agent } from './Agent.js';
import { rm } from 'node:fs/promises';
import { join } from 'node:path';

const TEST_DIR = join(import.meta.dirname, '../../data/agents');

async function main() {
  const scaffold = new AgentScaffold(TEST_DIR);

  console.log('═══════════════════════════════════════');
  console.log('  LemonBoss Agent Scaffold 测试');
  console.log('═══════════════════════════════════════\n');

  // 创建一个 CXO (CEO) Agent
  const agentDir = await scaffold.create({
    id: 'cxo-ceo-test',
    type: 'cxo',
    name: 'Lemon CEO',
    parentId: 'master-001',
    goalId: 'goal-q1-growth',
  });

  console.log(`✅ Agent 目录已创建: ${agentDir}\n`);

  // 加载并验证
  const agent = new Agent(agentDir);
  await agent.load();

  const summary = agent.getSummary();
  console.log('📋 Agent 摘要:');
  console.log(`   ID:           ${summary.id}`);
  console.log(`   类型:         ${summary.type}`);
  console.log(`   上级:         ${summary.parentId}`);
  console.log(`   状态:         ${summary.status}`);
  console.log(`   技能数:       ${summary.skillCount}`);
  console.log(`   有心跳:       ${summary.hasHeartbeat}`);
  console.log(`   Bootstrap:    ${summary.bootstrapFiles.join(', ')}`);

  console.log('\n📝 System Prompt 预览 (前 300 字):');
  const prompt = agent.buildSystemPrompt();
  console.log('   ' + prompt.slice(0, 300).replace(/\n/g, '\n   ') + '...');

  console.log(`\n   System Prompt 总长度: ${prompt.length} 字符`);

  // 清理测试目录
  await rm(agentDir, { recursive: true });
  console.log('\n🗑️  测试目录已清理');
  console.log('\n✅ 测试通过!');
}

main().catch(console.error);