test-train-ceo.js
3.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
const path = require('path');
const fs = require('fs');
const { InnovatorService } = require('../services/innovator-service');
const { JobManager } = require('../services/job-manager');
const { RetrainPipeline } = require('../services/retrain-pipeline');
const { MasterSession } = require('../src/core/master-session');
const config = require('../config');
async function testRetrainAgent() {
const innovator = new InnovatorService({
skillsDir: path.resolve(__dirname, '../../data/skills'),
skillsDataDir: path.resolve(__dirname, '../../data/skills'),
trainedSkillsDir: path.resolve(__dirname, '../../data/trained_skills'),
conversationsDir: path.resolve(__dirname, '../../conversations')
});
const agentName = 'ceo';
const agentDir = path.resolve(__dirname, '../../data/agents/ceo');
if (!fs.existsSync(agentDir)) {
console.error(`❌ Agent dir ${agentDir} not found`);
process.exit(1);
}
let skill = innovator.registry.getSkill(agentName);
if (!skill) {
// Register the agent as a "skill" so the pipeline can process it
innovator.registry.registerSkill({
skillName: agentName,
description: 'CEO Agent',
domain: 'management',
scope: 'executive',
directory: agentDir,
status: 'enable'
});
skill = innovator.registry.getSkill(agentName);
}
const retrainJobManager = new JobManager({ storePath: path.resolve(__dirname, '../../.data/jobs-retrain.json') });
const job = retrainJobManager.createJob({
type: 'retrain',
skillName: agentName,
status: 'queued',
progress: '排队中...',
instructions: '请训练一个更好的 CEO Agent,着重加强战略规划、团队管理和技术愿景维度,补充更专业的知识库(knowhow)和基准(benchmark)。'
});
console.log(`🚀 Starting innovator training pipeline for Agent: ${agentName} (Job: ${job.jobId})`);
const pipeline = new RetrainPipeline({
job,
skill,
innovator,
jobManager: retrainJobManager,
instructions: '提升公司的战略视野、产品敏感度、团队管理能力,以及面对危机的决策速度',
userId: 'admin_test'
});
let masterSession = null;
try {
const backends = JSON.parse(fs.readFileSync(path.join(__dirname, '../config/backends.json'), 'utf-8'));
const { loadConfigFromSkills } = require('../src/core/skill-config-loader');
const skillsCodeDir = config.skillsCodeDir;
const sysConfig = loadConfigFromSkills(skillsCodeDir, backends);
// Ensure agent-manager can find tools
masterSession = new MasterSession(sysConfig, skillsCodeDir);
await masterSession.init();
console.log('✅ Master session initialized');
} catch (err) {
console.error('[Retrain] ⚠️ Master session error:', err.message);
}
try {
if (masterSession) {
console.log('🧠 Running with Master Orchestration...');
await pipeline.runWithMaster(masterSession, {
onMasterData: (chunk) => process.stdout.write(chunk),
onSubAgentData: (agent, chunk) => process.stdout.write(chunk)
});
} else {
console.log('⚙️ Running Node.js direct pipeline...');
await pipeline.run();
}
console.log(`\n✅ Innovator training finished successfully!`);
} catch (err) {
console.error(`\n❌ Training failed: ${err.message}`, err.stack);
} finally {
if (masterSession) {
await masterSession.shutdown();
}
process.exit(0);
}
}
testRetrainAgent();