🦅 [skyeye] 全盘扫描修复 · 休眠系统完整融入天眼基础设施 + 22个未注册workflow补注册 [skip ci]

Co-authored-by: qinfendebingshuo <207279273+qinfendebingshuo@users.noreply.github.com>
Agent-Logs-Url: https://github.com/qinfendebingshuo/guanghulab/sessions/aef94b53-40cd-436c-b21d-1b0bba20e218
This commit is contained in:
copilot-swe-agent[bot] 2026-03-24 04:25:40 +00:00
parent 7937770284
commit 6d776feac3
13 changed files with 623 additions and 15 deletions

View File

@ -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开始顺序分配",

View File

@ -26,8 +26,8 @@
| 维度 | 当前状态 |
|------|----------|
| 🏥 系统健康 | 🟢 全部正常 |
| ⚙️ Workflow 总数 | 79 个 |
| 🤖 Agent 总数 | 6214 个需日签到) |
| ⚙️ Workflow 总数 | 84 个 |
| 🤖 Agent 总数 | 8414 个需日签到) |
| 🎭 人格体 | 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 全天候运行
</div>
<!-- WEEKLY_GREETING_END -->

View File

@ -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;
}

View File

@ -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()
};
}

View File

@ -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 });

View File

@ -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'
];
// ━━━ 检查核心目录 ━━━

View File

@ -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"
}
}
}
}

View File

@ -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"
}
}

View File

@ -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"
}
}

View File

@ -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"
}
}

View File

@ -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"
}

View File

@ -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'

View File

@ -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()
};