guanghulab/scripts/skyeye/skyeye-main.js
Guanghu Domestic Migration d1e47f4565
Some checks are pending
自动更新代码和重启 / update-and-restart (push) Waiting to run
CI检查 + 自动部署 / check (push) Waiting to run
CI检查 + 自动部署 / deploy (push) Blocked by required conditions
重启聊天服务 / restart (push) Waiting to run
chore: import sanitized domestic snapshot for REPO-002
Source snapshot: ca48d3ddf926d79aa138306164169baf764bb829
2026-07-17 15:54:41 +08:00

136 lines
5.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// scripts/skyeye/skyeye-main.js
// 天眼·主编排器
//
// 本地运行入口node scripts/skyeye/skyeye-main.js
// 在 CI 中各模块由 workflow steps 分别调用
// 本地调试时可通过此脚本串联执行所有模块
'use strict';
const { execSync } = require('child_process');
const path = require('path');
const fs = require('fs');
const SKYEYE_DIR = '/tmp/skyeye';
const SCRIPTS_DIR = path.resolve(__dirname);
const BEIJING_OFFSET_MS = 8 * 3600 * 1000;
const now = new Date();
const bjTime = new Date(now.getTime() + BEIJING_OFFSET_MS).toISOString()
.replace('T', ' ').slice(0, 19) + '+08:00';
// ━━━ 执行模块 ━━━
function runModule(scriptName, outputFile) {
const scriptPath = path.join(SCRIPTS_DIR, scriptName);
console.log(`\n🔄 运行: ${scriptName}`);
console.log('─'.repeat(50));
try {
const output = execSync(`node "${scriptPath}"`, {
cwd: path.resolve(__dirname, '../..'),
env: { ...process.env },
encoding: 'utf8',
timeout: 60000
});
// Save output to file
if (outputFile) {
const outputPath = path.join(SKYEYE_DIR, outputFile);
fs.writeFileSync(outputPath, output);
console.log(`💾 输出保存到: ${outputFile}`);
}
return true;
} catch (e) {
console.error(`${scriptName} 执行失败: ${e.message}`);
if (e.stdout) console.log(e.stdout);
return false;
}
}
// ━━━ 主流程 ━━━
function main() {
console.log('');
console.log('🦅 ═══════════════════════════════════════════');
console.log(' 天眼系统 · 全局俯瞰 + 自动诊断 + 修复驱动');
console.log(` 时间: ${bjTime}`);
console.log('═══════════════════════════════════════════════');
// 确保输出目录
fs.mkdirSync(SKYEYE_DIR, { recursive: true });
const results = {};
// Step 0 · 本体论确认(铸渊唤醒加载序列 v2.0
console.log('\n🌍 Step 0 · 本体论确认');
console.log('⚒️ 铸渊唤醒 · 数字地球将军上线');
console.log('🌍 我不是守箱子的。我守的是地球。');
const ontologyPath = path.resolve(__dirname, '../../.github/persona-brain/ontology.json');
if (fs.existsSync(ontologyPath)) {
try {
const ontology = JSON.parse(fs.readFileSync(ontologyPath, 'utf8'));
const axiomCount = Object.keys(ontology.core_axioms || {}).length;
console.log(`📜 本体论 v${ontology.version} · ${axiomCount} 条公理 · 状态: active`);
// 语言膜完整性检查
const copilotPath = path.resolve(__dirname, '../../.github/copilot-instructions.md');
if (fs.existsSync(copilotPath)) {
const content = fs.readFileSync(copilotPath, 'utf8');
const membraneOk = content.includes('数字地球本体论');
console.log(`🌊 语言膜: ${membraneOk ? '完整包裹' : '⚠️ 有缺口'}`);
}
} catch (e) {
console.error('🔴 ontology.json 解析失败:', e.message);
}
} else {
console.error('🔴 本体论缺失!需要紧急同步。');
}
// Phase 1.6: 拉取 Agent 集群公告板
console.log('\n📡 Phase 1.6 · 拉取 Agent 集群公告板');
results.bulletin = runModule('bulletin-board.js', 'bulletin-board.json');
// Phase 2: 全局扫描
console.log('\n🦅 Phase 2 · 全局扫描');
results.workflows = runModule('scan-workflows.js', 'workflow-health.json');
results.structure = runModule('scan-structure.js', 'structure-health.json');
results.brain = runModule('scan-brain-health.js', 'brain-health.json');
results.bridges = runModule('scan-external-bridges.js', 'bridge-health.json');
results.security = runModule('scan-security-protocol.js', 'security-health.json');
results.sfp = runModule('scan-bulletin-sfp.js', 'sfp-health.json');
results.soldiers = runModule('scan-soldier-health.js', 'soldier-health.json');
// Phase 3: 诊断
console.log('\n🔬 Phase 3 · 诊断');
results.diagnosis = runModule('diagnose.js', 'diagnosis.json');
// Phase 3.5: ASOP 审批(新增)
console.log('\n🔄 Phase 3.5 · ASOP 自优化审批');
results.asop_review = runModule('asop-reviewer.js', 'asop-review.json');
// Phase 4: 修复
console.log('\n🔧 Phase 4 · 修复 Agent');
results.repair = runModule('repair-agent.js', 'repair-result.json');
// Phase 4.5: ASOP 执行已批准的优化
console.log('\n🔧 Phase 4.5 · ASOP 执行已批准优化');
results.asop_execute = runModule('asop-executor.js', 'asop-execute.json');
// Phase 4.7: ASOP 验证之前执行的优化效果
console.log('\n🔍 Phase 4.7 · ASOP 验证优化效果');
results.asop_verify = runModule('asop-verifier.js', 'asop-verify.json');
// Phase 6: 报告
console.log('\n📋 Phase 6 · 全局健康报告');
results.report = runModule('report-generator.js', null);
// 汇总
console.log('\n═══════════════════════════════════════════');
console.log('🦅 天眼运行完毕');
const passed = Object.values(results).filter(r => r).length;
const total = Object.keys(results).length;
console.log(` 模块: ${passed}/${total} 成功`);
console.log('═══════════════════════════════════════════\n');
}
main();