guanghulab/scripts/agents/twin-balance-workflow.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

100 lines
3.3 KiB
JavaScript

// scripts/agents/twin-balance-workflow.js
// Twin Balance Workflow · 双子天平主流程
// ZY-P1-TWIN-005 · Phase 1 · Twin Balance Agent
// 版权:国作登字-2026-A-00037559
'use strict';
const fs = require('fs');
const path = require('path');
const ROOT = path.resolve(__dirname, '../..');
const TIANYEN_DIR = path.join(ROOT, '.github/tianyen');
const STATUS_PATH = path.join(TIANYEN_DIR, 'twin-status.json');
const { collectBoth } = require('./twin-collector');
const { merge } = require('./twin-merge');
const { check } = require('./balance-checker');
const { diagnose, classify, repair, verify } = require('./auto-repair');
/**
* 运行完整的双子天平检查流程
* 采集 → 融合 → 校验 → 修复(如需要)
* @returns {object} 完整结果
*/
function runPipeline() {
console.log('⚖️ Twin Balance Check · 双子天平校验流程\n');
// Step 1: 采集双翼数据
console.log('── Step 1: 数据采集 ──');
const data = collectBoth();
console.log(` 左翼 (EXE-Engine): tests=${data.left.details.totalPassed}/${data.left.details.totalTests}`);
console.log(` 右翼 (Grid-DB): tests=${data.right.details.totalPassed}/${data.right.details.totalTests}`);
// Step 2: 融合分析
console.log('\n── Step 2: 融合分析 ──');
const merged = merge(data.left, data.right);
console.log(` 左翼 composite: ${merged.left.composite}`);
console.log(` 右翼 composite: ${merged.right.composite}`);
console.log(` 平衡度: ${merged.balance}`);
// Step 3: 平衡校验
console.log('\n── Step 3: 平衡校验 ──');
const checkResult = check(merged);
if (checkResult.balanced) {
console.log(' ✅ 天平完全平衡');
} else {
console.log(` ⚠️ 偏差等级: ${checkResult.alert.level}`);
console.log(` 📉 落后侧: ${checkResult.alert.laggingSide}`);
console.log(` 📊 偏差值: ${checkResult.drift}`);
}
// Step 4: 修复(如需要)
let repairResult = null;
let verifyResult = null;
if (!checkResult.balanced && checkResult.alert) {
console.log('\n── Step 4: 自动修复 ──');
const diag = diagnose(checkResult.alert);
const cls = classify(diag);
console.log(` 诊断: ${diag.cause}`);
console.log(` 分类: ${cls.level} - ${cls.name}`);
repairResult = repair(diag);
console.log(` 修复: ${repairResult.action}`);
verifyResult = verify(repairResult);
console.log(` 验证: ${verifyResult.message}`);
}
// 汇总状态
const status = {
timestamp: new Date().toISOString(),
metrics: {
left: merged.left,
right: merged.right
},
balance: merged.balance,
balanced: checkResult.balanced,
drift: checkResult.drift,
alert: checkResult.alert,
repair: repairResult,
verification: verifyResult
};
// 保存状态文件
if (!fs.existsSync(TIANYEN_DIR)) {
fs.mkdirSync(TIANYEN_DIR, { recursive: true });
}
fs.writeFileSync(STATUS_PATH, JSON.stringify(status, null, 2), 'utf8');
console.log(`\n✅ 状态已写入 ${STATUS_PATH}`);
return status;
}
// ── CLI 入口 ─────────────────────────────────────────────────────────────
if (require.main === module) {
runPipeline();
}
module.exports = { runPipeline };