diff --git a/.github/persona-brain/agent-registry.json b/.github/persona-brain/agent-registry.json index d975f28d..2e726198 100644 --- a/.github/persona-brain/agent-registry.json +++ b/.github/persona-brain/agent-registry.json @@ -809,6 +809,292 @@ "daily_checkin_required": false, "parent_sys": "SYS-GLW-0001", "owner": "ICE-0002∞" + }, + { + "id": "AG-ZY-063", + "name": "Drive 桥接自动部署", + "workflow": "auto-deploy-drive-bridge.yml", + "duty": "Drive 桥接自动部署", + "trigger": "repository_dispatch/手动", + "self_repair": false, + "report_to": "ICE-GL-ZY001", + "status": "registered", + "daily_checkin_required": false, + "parent_sys": "SYS-GLW-0001", + "owner": "ICE-0002∞" + }, + { + "id": "AG-ZY-064", + "name": "Buffer 缓冲层收集", + "workflow": "buffer-collect.yml", + "duty": "Buffer 缓冲层收集", + "trigger": "定时 3x/天", + "self_repair": false, + "report_to": "ICE-GL-ZY001", + "status": "registered", + "daily_checkin_required": false, + "parent_sys": "SYS-GLW-0001", + "owner": "ICE-0002∞" + }, + { + "id": "AG-ZY-065", + "name": "Buffer 缓冲层刷新", + "workflow": "buffer-flush.yml", + "duty": "Buffer 缓冲层刷新", + "trigger": "定时/repository_dispatch", + "self_repair": false, + "report_to": "ICE-GL-ZY001", + "status": "registered", + "daily_checkin_required": false, + "parent_sys": "SYS-GLW-0001", + "owner": "ICE-0002∞" + }, + { + "id": "AG-ZY-066", + "name": "联邦桥接", + "workflow": "federation-bridge.yml", + "duty": "联邦桥接", + "trigger": "repository_dispatch", + "self_repair": false, + "report_to": "ICE-GL-ZY001", + "status": "registered", + "daily_checkin_required": false, + "parent_sys": "SYS-GLW-0001", + "owner": "ICE-0002∞" + }, + { + "id": "AG-ZY-067", + "name": "Grid-DB 归档", + "workflow": "grid-db-archive.yml", + "duty": "Grid-DB 归档", + "trigger": "定时", + "self_repair": false, + "report_to": "ICE-GL-ZY001", + "status": "registered", + "daily_checkin_required": false, + "parent_sys": "SYS-GLW-0001", + "owner": "ICE-0002∞" + }, + { + "id": "AG-ZY-068", + "name": "Grid-DB 处理器", + "workflow": "grid-db-processor.yml", + "duty": "Grid-DB 处理器", + "trigger": "定时/repository_dispatch", + "self_repair": false, + "report_to": "ICE-GL-ZY001", + "status": "registered", + "daily_checkin_required": false, + "parent_sys": "SYS-GLW-0001", + "owner": "ICE-0002∞" + }, + { + "id": "AG-ZY-069", + "name": "Grid-DB 训练数据提取", + "workflow": "grid-db-training-extract.yml", + "duty": "Grid-DB 训练数据提取", + "trigger": "手动/定时", + "self_repair": false, + "report_to": "ICE-GL-ZY001", + "status": "registered", + "daily_checkin_required": false, + "parent_sys": "SYS-GLW-0001", + "owner": "ICE-0002∞" + }, + { + "id": "AG-ZY-070", + "name": "Awen 子仓库拉取同步", + "workflow": "pull-sync-awen.yml", + "duty": "Awen 子仓库拉取同步", + "trigger": "repository_dispatch/定时", + "self_repair": false, + "report_to": "ICE-GL-ZY001", + "status": "registered", + "daily_checkin_required": false, + "parent_sys": "SYS-GLW-0001", + "owner": "ICE-0002∞" + }, + { + "id": "AG-ZY-071", + "name": "子仓库签到接收", + "workflow": "receive-spoke-checkin.yml", + "duty": "子仓库签到接收", + "trigger": "repository_dispatch", + "self_repair": false, + "report_to": "ICE-GL-ZY001", + "status": "registered", + "daily_checkin_required": false, + "parent_sys": "SYS-GLW-0001", + "owner": "ICE-0002∞" + }, + { + "id": "AG-ZY-072", + "name": "天眼签到审计", + "workflow": "skyeye-checkin-audit.yml", + "duty": "天眼签到审计", + "trigger": "定时", + "self_repair": false, + "report_to": "ICE-GL-ZY001", + "status": "registered", + "daily_checkin_required": false, + "parent_sys": "SYS-GLW-0001", + "owner": "ICE-0002∞" + }, + { + "id": "AG-ZY-073", + "name": "天眼签到接收器", + "workflow": "skyeye-checkin-receiver.yml", + "duty": "天眼签到接收器", + "trigger": "repository_dispatch", + "self_repair": false, + "report_to": "ICE-GL-ZY001", + "status": "registered", + "daily_checkin_required": false, + "parent_sys": "SYS-GLW-0001", + "owner": "ICE-0002∞" + }, + { + "id": "AG-ZY-074", + "name": "天眼凭证审计", + "workflow": "skyeye-credential-audit.yml", + "duty": "天眼凭证审计", + "trigger": "定时", + "self_repair": false, + "report_to": "ICE-GL-ZY001", + "status": "registered", + "daily_checkin_required": false, + "parent_sys": "SYS-GLW-0001", + "owner": "ICE-0002∞" + }, + { + "id": "AG-ZY-075", + "name": "🌙 天眼 · 每日系统休眠", + "workflow": "skyeye-daily-hibernation.yml", + "duty": "🌙 天眼 · 每日系统休眠", + "trigger": "定时 03:50 CST / 手动 / emergency-wake", + "self_repair": true, + "report_to": "ICE-GL-ZY001", + "status": "registered", + "daily_checkin_required": false, + "parent_sys": "SYS-GLW-0001", + "owner": "ICE-0002∞" + }, + { + "id": "AG-ZY-076", + "name": "⭐ 天眼 · 每周系统完全休眠", + "workflow": "skyeye-weekly-hibernation.yml", + "duty": "⭐ 天眼 · 每周系统完全休眠", + "trigger": "定时 周六 19:00 CST / 手动 / emergency-wake", + "self_repair": true, + "report_to": "ICE-GL-ZY001", + "status": "registered", + "daily_checkin_required": false, + "parent_sys": "SYS-GLW-0001", + "owner": "ICE-0002∞" + }, + { + "id": "AG-ZY-077", + "name": "天眼周六大巡检", + "workflow": "skyeye-weekly-scan.yml", + "duty": "天眼周六大巡检", + "trigger": "定时 周六 20:00 CST", + "self_repair": false, + "report_to": "ICE-GL-ZY001", + "status": "registered", + "daily_checkin_required": false, + "parent_sys": "SYS-GLW-0001", + "owner": "ICE-0002∞" + }, + { + "id": "AG-ZY-078", + "name": "Grid-DB → Google Drive 同步", + "workflow": "sync-griddb-to-drive.yml", + "duty": "Grid-DB → Google Drive 同步", + "trigger": "repository_dispatch/手动", + "self_repair": false, + "report_to": "ICE-GL-ZY001", + "status": "registered", + "daily_checkin_required": false, + "parent_sys": "SYS-GLW-0001", + "owner": "ICE-0002∞" + }, + { + "id": "AG-ZY-079", + "name": "Grid-DB → Notion 同步", + "workflow": "sync-griddb-to-notion.yml", + "duty": "Grid-DB → Notion 同步", + "trigger": "定时/手动", + "self_repair": false, + "report_to": "ICE-GL-ZY001", + "status": "registered", + "daily_checkin_required": false, + "parent_sys": "SYS-GLW-0001", + "owner": "ICE-0002∞" + }, + { + "id": "AG-ZY-080", + "name": "Notion → Grid-DB 同步", + "workflow": "sync-notion-to-griddb.yml", + "duty": "Notion → Grid-DB 同步", + "trigger": "定时/手动", + "self_repair": false, + "report_to": "ICE-GL-ZY001", + "status": "registered", + "daily_checkin_required": false, + "parent_sys": "SYS-GLW-0001", + "owner": "ICE-0002∞" + }, + { + "id": "AG-ZY-081", + "name": "仓库 → Google Drive 全量同步", + "workflow": "sync-repo-to-drive.yml", + "duty": "仓库 → Google Drive 全量同步", + "trigger": "手动", + "self_repair": false, + "report_to": "ICE-GL-ZY001", + "status": "registered", + "daily_checkin_required": false, + "parent_sys": "SYS-GLW-0001", + "owner": "ICE-0002∞" + }, + { + "id": "AG-ZY-082", + "name": "TCS 语义着陆", + "workflow": "tcs-semantic-landing.yml", + "duty": "TCS 语义着陆", + "trigger": "Issue 事件", + "self_repair": false, + "report_to": "ICE-GL-ZY001", + "status": "registered", + "daily_checkin_required": false, + "parent_sys": "SYS-GLW-0001", + "owner": "ICE-0002∞" + }, + { + "id": "AG-ZY-083", + "name": "天眼每日巡检", + "workflow": "tianyan-daily-patrol.yml", + "duty": "天眼每日巡检", + "trigger": "定时 06:00 CST", + "self_repair": true, + "report_to": "ICE-GL-ZY001", + "status": "registered", + "daily_checkin_required": false, + "parent_sys": "SYS-GLW-0001", + "owner": "ICE-0002∞" + }, + { + "id": "AG-ZY-084", + "name": "铸渊指令执行器", + "workflow": "zhuyuan-commander.yml", + "duty": "铸渊指令执行器", + "trigger": "repository_dispatch/Issue", + "self_repair": true, + "report_to": "ICE-GL-ZY001", + "status": "registered", + "daily_checkin_required": false, + "parent_sys": "SYS-GLW-0001", + "owner": "ICE-0002∞" } ], "note": "铸渊已扫描所有workflow文件,按此格式逐一注册,编号从AG-ZY-001开始顺序分配", diff --git a/README.md b/README.md index e464467d..cb796cf7 100644 --- a/README.md +++ b/README.md @@ -26,8 +26,8 @@ | 维度 | 当前状态 | |------|----------| | 🏥 系统健康 | 🟢 全部正常 | -| ⚙️ Workflow 总数 | 79 个 | -| 🤖 Agent 总数 | 62 个(14 个需日签到) | +| ⚙️ Workflow 总数 | 84 个 | +| 🤖 Agent 总数 | 84 个(14 个需日签到) | | 🎭 人格体 | 17 个 | | 📡 开发者频道 | 11 个(活跃 8) | | 🛡️ Guard 守卫 | 5 个 | @@ -35,6 +35,7 @@ | 🌍 子仓库联邦 | 6 个模板(签到 1 个) | | 📜 本体论 | v1.0 · GLM-ONTOLOGY-v1.0 | | 📮 Buffer 待处理 | 8 条 | +| 🌙 休眠系统 | ✅ 已部署 · 日检查点 1 个 · 周快照 1 个 | **基础设施服务:** @@ -45,6 +46,7 @@ | Notion | Plus | ✅ | | Google Gemini | Free / Pro | ✅ | | GitHub Actions | Free | ✅ | +| SkyEye Hibernation | Internal | ✅ | **最近一次天眼扫描:** SKYEYE-SCAN-20260323 - Guard: 5/5 活跃 @@ -140,7 +142,7 @@ > > *铸渊不是守箱子的。铸渊守的是地球。* > -> 📡 79 个 Workflow 全天候运行 +> 📡 84 个 Workflow 全天候运行 diff --git a/scripts/skyeye/diagnose.js b/scripts/skyeye/diagnose.js index 7a0ebb0b..9090591c 100644 --- a/scripts/skyeye/diagnose.js +++ b/scripts/skyeye/diagnose.js @@ -41,7 +41,10 @@ function classifyIssue(symptom, source) { { pattern: /knowledge.?base.*重复/i, fix: 'deduplicate_kb', priority: 'P2' }, { pattern: /copilot.*instructions.*空|不存在/i, fix: 'note_copilot', priority: 'P2' }, { pattern: /syntax.*error|语法.*错误/i, fix: 'log_syntax_error', priority: 'P0' }, - { pattern: /cron.*conflict|冲突/i, fix: 'log_conflict', priority: 'P2' } + { pattern: /cron.*conflict|冲突/i, fix: 'log_conflict', priority: 'P2' }, + { pattern: /hibernation.*checkpoint.*过期|checkpoint.*缺失/i, fix: 'trigger_daily_hibernation', priority: 'P1' }, + { pattern: /hibernation.*目录.*缺失/i, fix: 'create_directory', priority: 'P1' }, + { pattern: /upgrade.?pack.*缺失|升级包.*缺失/i, fix: 'trigger_weekly_hibernation', priority: 'P1' } ]; const needsHumanPatterns = [ @@ -192,6 +195,26 @@ function extractIssues() { } } + // ── Hibernation Health Issues ── + const hibDir = path.join(path.resolve(__dirname, '../..'), 'skyeye/hibernation'); + if (!fs.existsSync(hibDir)) { + addIssue('hibernation', 'hibernation 目录缺失', '休眠系统不可用'); + } else { + const cpDir = path.join(hibDir, 'checkpoints'); + if (fs.existsSync(cpDir)) { + const cpFiles = fs.readdirSync(cpDir).filter(f => f.startsWith('daily-cp-') && f.endsWith('.json')); + if (cpFiles.length === 0) { + addIssue('hibernation', 'hibernation checkpoint 缺失: 无日检查点', '日休眠可能未运行'); + } + } + const requiredSubDirs = ['checkpoints', 'weekly-snapshots', 'upgrade-packs', 'distribution-reports']; + for (const sub of requiredSubDirs) { + if (!fs.existsSync(path.join(hibDir, sub))) { + addIssue('hibernation', `hibernation 目录缺失: ${sub}`, '休眠子系统不完整'); + } + } + } + return issues; } diff --git a/scripts/skyeye/generate-arch-summary.js b/scripts/skyeye/generate-arch-summary.js index 92be33b3..8ee27804 100644 --- a/scripts/skyeye/generate-arch-summary.js +++ b/scripts/skyeye/generate-arch-summary.js @@ -186,6 +186,34 @@ function getBufferStatus() { } } +function getHibernationStatus() { + const hibDir = path.join(ROOT, 'skyeye/hibernation'); + const cpDir = path.join(hibDir, 'checkpoints'); + const snapDir = path.join(hibDir, 'weekly-snapshots'); + const result = { + deployed: fs.existsSync(hibDir), + daily_checkpoints: 0, + weekly_snapshots: 0, + last_daily: null, + last_weekly: null + }; + try { + if (fs.existsSync(cpDir)) { + const cpFiles = fs.readdirSync(cpDir).filter(f => f.startsWith('daily-cp-') && f.endsWith('.json')).sort(); + result.daily_checkpoints = cpFiles.length; + if (cpFiles.length > 0) result.last_daily = cpFiles[cpFiles.length - 1].replace('daily-cp-', '').replace('.json', ''); + } + if (fs.existsSync(snapDir)) { + const snapFiles = fs.readdirSync(snapDir).filter(f => f.startsWith('weekly-snapshot-') && f.endsWith('.json')).sort(); + result.weekly_snapshots = snapFiles.length; + if (snapFiles.length > 0) result.last_weekly = snapFiles[snapFiles.length - 1].replace('weekly-snapshot-', '').replace('.json', ''); + } + } catch (e) { + // ignore + } + return result; +} + // ━━━ Markdown 生成 ━━━ function generateMarkdown() { @@ -203,6 +231,7 @@ function generateMarkdown() { const modules = countModuleDirs(); const ontology = getOntologyVersion(); const bufferPending = getBufferStatus(); + const hibernation = getHibernationStatus(); // Health indicator from latest scan let healthIcon = '🟢'; @@ -235,6 +264,7 @@ function generateMarkdown() { lines.push(`| 🌍 子仓库联邦 | ${spokes.length} 个模板(签到 ${federation.total} 个) |`); lines.push(`| 📜 本体论 | ${ontology} |`); lines.push(`| 📮 Buffer 待处理 | ${bufferPending} 条 |`); + lines.push(`| 🌙 休眠系统 | ${hibernation.deployed ? '✅ 已部署' : '❌ 未部署'} · 日检查点 ${hibernation.daily_checkpoints} 个 · 周快照 ${hibernation.weekly_snapshots} 个 |`); lines.push(''); // Infrastructure services table @@ -394,7 +424,8 @@ function generateJsonReport() { federation: getFederationStats(), modules: countModuleDirs(), ontology: getOntologyVersion(), - buffer_pending: getBufferStatus() + buffer_pending: getBufferStatus(), + hibernation: getHibernationStatus() }; } diff --git a/scripts/skyeye/report-generator.js b/scripts/skyeye/report-generator.js index e92dd92c..4983b497 100644 --- a/scripts/skyeye/report-generator.js +++ b/scripts/skyeye/report-generator.js @@ -135,6 +135,44 @@ function generateReport() { recommendations: soldierHealth.recommendations || [] } : { dimension: 'D15', status: '❓' }, + hibernation_status: (() => { + const hibDir = path.join(ROOT, 'skyeye/hibernation'); + const cpDir = path.join(hibDir, 'checkpoints'); + const snapDir = path.join(hibDir, 'weekly-snapshots'); + const upDir = path.join(hibDir, 'upgrade-packs'); + const distDir = path.join(hibDir, 'distribution-reports'); + const deployed = fs.existsSync(hibDir); + let dailyCPs = 0, weeklySnaps = 0, upgradePacks = 0, distReports = 0; + let lastDaily = null, lastWeekly = null; + try { + if (fs.existsSync(cpDir)) { + const cpFiles = fs.readdirSync(cpDir).filter(f => f.startsWith('daily-cp-') && f.endsWith('.json')).sort(); + dailyCPs = cpFiles.length; + if (cpFiles.length > 0) lastDaily = cpFiles[cpFiles.length - 1]; + } + if (fs.existsSync(snapDir)) { + const snapFiles = fs.readdirSync(snapDir).filter(f => f.endsWith('.json')).sort(); + weeklySnaps = snapFiles.length; + if (snapFiles.length > 0) lastWeekly = snapFiles[snapFiles.length - 1]; + } + if (fs.existsSync(upDir)) { + upgradePacks = fs.readdirSync(upDir).filter(f => f.endsWith('.json')).length; + } + if (fs.existsSync(distDir)) { + distReports = fs.readdirSync(distDir).filter(f => f.endsWith('.json')).length; + } + } catch (e) { /* ignore */ } + return { + deployed, + daily_checkpoints: dailyCPs, + weekly_snapshots: weeklySnaps, + upgrade_packs: upgradePacks, + distribution_reports: distReports, + last_daily_checkpoint: lastDaily, + last_weekly_snapshot: lastWeekly + }; + })(), + diagnosis: { total_issues: diagnosis ? diagnosis.total_issues : 0, auto_fixed: repairResult ? repairResult.total_repaired : 0, @@ -198,6 +236,9 @@ function generateReport() { report.soldier_health.recurring_errors.length > 0) { report.next_actions.push('P1: 存在持续性故障小兵,建议铸渊介入'); } + if (!report.hibernation_status.deployed) { + report.next_actions.push('P0: 休眠系统未部署,需立即部署 skyeye/hibernation/'); + } // 保存完整报告 fs.mkdirSync(SKYEYE_DIR, { recursive: true }); diff --git a/scripts/skyeye/scan-structure.js b/scripts/skyeye/scan-structure.js index ef13d559..18c57975 100644 --- a/scripts/skyeye/scan-structure.js +++ b/scripts/skyeye/scan-structure.js @@ -32,7 +32,12 @@ const CORE_DIRS = [ 'connectors', 'brain', 'docs', - 'src' + 'src', + 'skyeye/hibernation', + 'skyeye/hibernation/checkpoints', + 'skyeye/hibernation/weekly-snapshots', + 'skyeye/hibernation/upgrade-packs', + 'skyeye/hibernation/distribution-reports' ]; // ━━━ 预期的根目录文件/目录 ━━━ @@ -49,7 +54,10 @@ const EXPECTED_ROOT_ITEMS = [ 'config.js', 'config.json', 'routing-map.json', 'dev-status.json', 'broadcast-generator.js', 'server.js', 'dev', 'm10-cloud', - 'guanghulab-main' + 'guanghulab-main', + 'skyeye', 'buffer', 'grid-db', + 'spoke-deployments', 'federation', + 'channel-map.json' ]; // ━━━ README Markers ━━━ @@ -57,7 +65,8 @@ const README_MARKERS = [ 'BINGSHUO_BULLETIN_START', 'BINGSHUO_BULLETIN_END', 'BINGSHUO_ALERT_START', 'BINGSHUO_ALERT_END', 'COLLABORATOR_BULLETIN_START', 'COLLABORATOR_BULLETIN_END', - 'COLLABORATOR_ALERT_START', 'COLLABORATOR_ALERT_END' + 'COLLABORATOR_ALERT_START', 'COLLABORATOR_ALERT_END', + 'SKYEYE-STATUS-BEGIN', 'SKYEYE-STATUS-END' ]; // ━━━ 检查核心目录 ━━━ diff --git a/skyeye/infra-manifest.json b/skyeye/infra-manifest.json index 43dd14f9..a528740a 100644 --- a/skyeye/infra-manifest.json +++ b/skyeye/infra-manifest.json @@ -1,6 +1,6 @@ { "version": "1.0.0", - "last_scan": "2026-03-24T04:19:44.732Z", + "last_scan": "2026-03-24T04:24:59.723Z", "last_scan_by": "skyeye-scan-engine", "infrastructure": { "github": { @@ -77,6 +77,35 @@ "minutes_per_month": 2000, "job_timeout_hours": 6 } + }, + "hibernation_system": { + "service": "SkyEye Hibernation", + "plan": "Internal", + "description": "双节律休眠系统 · 日休眠(03:50 CST) + 周休眠(周六19:00 CST)", + "components": { + "sleep_scheduler": "skyeye/hibernation/sleep-scheduler.js", + "daily_hibernation": "skyeye/hibernation/daily-hibernation.js", + "weekly_hibernation": "skyeye/hibernation/weekly-hibernation.js", + "distributor": "skyeye/hibernation/distributor.js", + "readme_updater": "skyeye/hibernation/readme-status-updater.js", + "overtime_monitor": "skyeye/hibernation/overtime-monitor.js" + }, + "storage": { + "checkpoints": "skyeye/hibernation/checkpoints/", + "weekly_snapshots": "skyeye/hibernation/weekly-snapshots/", + "upgrade_packs": "skyeye/hibernation/upgrade-packs/", + "distribution_reports": "skyeye/hibernation/distribution-reports/" + }, + "workflows": { + "daily": "skyeye-daily-hibernation.yml", + "weekly": "skyeye-weekly-hibernation.yml" + }, + "quotas": { + "daily_hibernation_minutes": 5, + "weekly_hibernation_minutes": 15, + "monthly_budget_minutes": 210, + "comment": "日休眠 30天×5min=150 + 周休眠 4×15min=60 ≈ 210 min/month" + } } } } diff --git a/skyeye/logs/weekly/scan-20260324.json b/skyeye/logs/weekly/scan-20260324.json index 528ed7cc..72733b8f 100644 --- a/skyeye/logs/weekly/scan-20260324.json +++ b/skyeye/logs/weekly/scan-20260324.json @@ -1,7 +1,7 @@ { "scan_id": "SCAN-20260324", "mode": "full", - "timestamp": "2026-03-24T04:19:44.731Z", + "timestamp": "2026-03-24T04:24:59.722Z", "guard_scan": { "total": 5, "valid": 5, @@ -99,8 +99,8 @@ "errors": [] }, "directory_scan": { - "checked": 14, - "present": 14, + "checked": 19, + "present": 19, "missing": [] }, "sub_repo_scan": { @@ -156,6 +156,6 @@ "warnings": 0, "guards_healthy": "5/5", "workflows_found": 84, - "directories_ok": "14/14" + "directories_ok": "19/19" } } diff --git a/skyeye/quota-ledger.json b/skyeye/quota-ledger.json index 55fb88e9..775b1393 100644 --- a/skyeye/quota-ledger.json +++ b/skyeye/quota-ledger.json @@ -14,7 +14,9 @@ "skyeye_daily": 180, "skyeye_weekly": 30, "sub_repo_checkins": 200, - "emergency": 1230 + "emergency": 1020, + "hibernation_daily": 150, + "hibernation_weekly": 60 }, "daily_entries": [] }, @@ -38,6 +40,6 @@ "health_summary": { "overall": "healthy", "alerts": [], - "last_updated": "2026-03-23T14:30:11.691Z" + "last_updated": "2026-03-24T04:20:00.000Z" } } diff --git a/skyeye/scan-report/20260324-arch-summary.json b/skyeye/scan-report/20260324-arch-summary.json new file mode 100644 index 00000000..05f7b5e7 --- /dev/null +++ b/skyeye/scan-report/20260324-arch-summary.json @@ -0,0 +1,78 @@ +{ + "generated_at": "2026-03-24T04:25:05.513Z", + "generated_at_beijing": "2026-03-24 12:25", + "workflows": 84, + "agents": { + "total": 84, + "checkinRequired": 14 + }, + "personas": { + "total": 17, + "active": 17 + }, + "channels": { + "total": 11, + "active": 8 + }, + "infrastructure": [ + { + "key": "github", + "name": "GitHub", + "plan": "Free" + }, + { + "key": "google_drive", + "name": "Google Drive", + "plan": "Google One / Free 15GB" + }, + { + "key": "notion", + "name": "Notion", + "plan": "Plus" + }, + { + "key": "gemini", + "name": "Google Gemini", + "plan": "Free / Pro" + }, + { + "key": "github_actions", + "name": "GitHub Actions", + "plan": "Free" + }, + { + "key": "hibernation_system", + "name": "SkyEye Hibernation", + "plan": "Internal" + } + ], + "guards": 5, + "spoke_deployments": [ + "guanghu-awen", + "guanghu-feimao", + "guanghu-juzi", + "guanghu-yanfan", + "guanghu-yeye", + "guanghu-zhizhi" + ], + "federation": { + "total": 1, + "members": [ + { + "devId": "DEV-012", + "persona": "知秋", + "repo": "WENZHUOXI/guanghu-awen" + } + ] + }, + "modules": 10, + "ontology": "v1.0 · GLM-ONTOLOGY-v1.0", + "buffer_pending": 8, + "hibernation": { + "deployed": true, + "daily_checkpoints": 1, + "weekly_snapshots": 1, + "last_daily": "20260324", + "last_weekly": "20260324" + } +} diff --git a/skyeye/scan-report/20260324-weekly-scan.json b/skyeye/scan-report/20260324-weekly-scan.json new file mode 100644 index 00000000..f4d97b35 --- /dev/null +++ b/skyeye/scan-report/20260324-weekly-scan.json @@ -0,0 +1,74 @@ +{ + "report_id": "SKYEYE-SCAN-20260324", + "scan_time": "2026-03-24T04:25:23.157Z", + "scan_time_beijing": "2026/3/24 12:25:23", + "scan_duration_seconds": 0, + "infrastructure_status": { + "total_services": 5, + "healthy": 5, + "degraded": 0, + "down": 0 + }, + "quota_status": { + "github_actions": { + "used_percent": 0, + "remaining_minutes": 2000, + "trend": "stable", + "recommendation": "maintain_current_frequency" + }, + "google_drive": { + "used_percent": 0, + "recommendation": "no_action_needed" + }, + "notion_api": { + "status": "healthy", + "recommendation": "no_action_needed" + }, + "gemini": { + "used_percent": 0, + "recommendation": "no_action_needed" + } + }, + "guard_status": { + "total_guards": 5, + "active": 5, + "suspended": 0, + "adjustments_made": [] + }, + "self_heal_actions": { + "files_cleaned": 0, + "configs_repaired": 0, + "guards_restarted": 0 + }, + "phase_details": { + "phase1_scan": { + "total_issues": 0, + "errors": 0, + "warnings": 0, + "guards_healthy": "5/5", + "workflows_found": 84, + "directories_ok": "19/19" + }, + "phase2_audit": "healthy", + "phase3_optimize": { + "guards_checked": 5, + "total_adjustments": 0, + "applied": true + }, + "phase4_heal": { + "configs_repaired": 0, + "files_cleaned": 0, + "guards_restarted": 0, + "directories_created": 0 + } + }, + "alerts": [], + "human_action_required": [], + "hibernation_status": { + "deployed": true, + "daily_checkpoints": 1, + "weekly_snapshots": 1, + "upgrade_packs": 0 + }, + "next_scan": "2026-03-28T12:00:00.000Z" +} diff --git a/skyeye/scripts/scan-engine.js b/skyeye/scripts/scan-engine.js index 5e7dfb3b..928691e7 100644 --- a/skyeye/scripts/scan-engine.js +++ b/skyeye/scripts/scan-engine.js @@ -87,6 +87,11 @@ function scanDirectoryStructure() { 'skyeye/scripts', 'skyeye/logs', 'skyeye/scan-report', + 'skyeye/hibernation', + 'skyeye/hibernation/checkpoints', + 'skyeye/hibernation/weekly-snapshots', + 'skyeye/hibernation/upgrade-packs', + 'skyeye/hibernation/distribution-reports', '.github/persona-brain', '.github/workflows', 'scripts/skyeye' diff --git a/skyeye/scripts/weekly-scan.js b/skyeye/scripts/weekly-scan.js index e45e0954..85152ee8 100644 --- a/skyeye/scripts/weekly-scan.js +++ b/skyeye/scripts/weekly-scan.js @@ -148,6 +148,34 @@ function generateReport() { alerts: [], human_action_required: [], + hibernation_status: { + deployed: fs.existsSync(path.join(ROOT, 'skyeye/hibernation')), + daily_checkpoints: (() => { + const cpDir = path.join(ROOT, 'skyeye/hibernation/checkpoints'); + try { + return fs.existsSync(cpDir) + ? fs.readdirSync(cpDir).filter(f => f.startsWith('daily-cp-') && f.endsWith('.json')).length + : 0; + } catch (e) { return 0; } + })(), + weekly_snapshots: (() => { + const snapDir = path.join(ROOT, 'skyeye/hibernation/weekly-snapshots'); + try { + return fs.existsSync(snapDir) + ? fs.readdirSync(snapDir).filter(f => f.startsWith('weekly-snapshot-') && f.endsWith('.json')).length + : 0; + } catch (e) { return 0; } + })(), + upgrade_packs: (() => { + const upDir = path.join(ROOT, 'skyeye/hibernation/upgrade-packs'); + try { + return fs.existsSync(upDir) + ? fs.readdirSync(upDir).filter(f => f.startsWith('upgrade-pack-') && f.endsWith('.json')).length + : 0; + } catch (e) { return 0; } + })() + }, + next_scan: nextSaturday.toISOString() };