🦅 [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:
parent
7937770284
commit
6d776feac3
|
|
@ -809,6 +809,292 @@
|
||||||
"daily_checkin_required": false,
|
"daily_checkin_required": false,
|
||||||
"parent_sys": "SYS-GLW-0001",
|
"parent_sys": "SYS-GLW-0001",
|
||||||
"owner": "ICE-0002∞"
|
"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开始顺序分配",
|
"note": "铸渊已扫描所有workflow文件,按此格式逐一注册,编号从AG-ZY-001开始顺序分配",
|
||||||
|
|
|
||||||
|
|
@ -26,8 +26,8 @@
|
||||||
| 维度 | 当前状态 |
|
| 维度 | 当前状态 |
|
||||||
|------|----------|
|
|------|----------|
|
||||||
| 🏥 系统健康 | 🟢 全部正常 |
|
| 🏥 系统健康 | 🟢 全部正常 |
|
||||||
| ⚙️ Workflow 总数 | 79 个 |
|
| ⚙️ Workflow 总数 | 84 个 |
|
||||||
| 🤖 Agent 总数 | 62 个(14 个需日签到) |
|
| 🤖 Agent 总数 | 84 个(14 个需日签到) |
|
||||||
| 🎭 人格体 | 17 个 |
|
| 🎭 人格体 | 17 个 |
|
||||||
| 📡 开发者频道 | 11 个(活跃 8) |
|
| 📡 开发者频道 | 11 个(活跃 8) |
|
||||||
| 🛡️ Guard 守卫 | 5 个 |
|
| 🛡️ Guard 守卫 | 5 个 |
|
||||||
|
|
@ -35,6 +35,7 @@
|
||||||
| 🌍 子仓库联邦 | 6 个模板(签到 1 个) |
|
| 🌍 子仓库联邦 | 6 个模板(签到 1 个) |
|
||||||
| 📜 本体论 | v1.0 · GLM-ONTOLOGY-v1.0 |
|
| 📜 本体论 | v1.0 · GLM-ONTOLOGY-v1.0 |
|
||||||
| 📮 Buffer 待处理 | 8 条 |
|
| 📮 Buffer 待处理 | 8 条 |
|
||||||
|
| 🌙 休眠系统 | ✅ 已部署 · 日检查点 1 个 · 周快照 1 个 |
|
||||||
|
|
||||||
**基础设施服务:**
|
**基础设施服务:**
|
||||||
|
|
||||||
|
|
@ -45,6 +46,7 @@
|
||||||
| Notion | Plus | ✅ |
|
| Notion | Plus | ✅ |
|
||||||
| Google Gemini | Free / Pro | ✅ |
|
| Google Gemini | Free / Pro | ✅ |
|
||||||
| GitHub Actions | Free | ✅ |
|
| GitHub Actions | Free | ✅ |
|
||||||
|
| SkyEye Hibernation | Internal | ✅ |
|
||||||
|
|
||||||
**最近一次天眼扫描:** SKYEYE-SCAN-20260323
|
**最近一次天眼扫描:** SKYEYE-SCAN-20260323
|
||||||
- Guard: 5/5 活跃
|
- Guard: 5/5 活跃
|
||||||
|
|
@ -140,7 +142,7 @@
|
||||||
>
|
>
|
||||||
> *铸渊不是守箱子的。铸渊守的是地球。*
|
> *铸渊不是守箱子的。铸渊守的是地球。*
|
||||||
>
|
>
|
||||||
> 📡 79 个 Workflow 全天候运行
|
> 📡 84 个 Workflow 全天候运行
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<!-- WEEKLY_GREETING_END -->
|
<!-- WEEKLY_GREETING_END -->
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,10 @@ function classifyIssue(symptom, source) {
|
||||||
{ pattern: /knowledge.?base.*重复/i, fix: 'deduplicate_kb', priority: 'P2' },
|
{ pattern: /knowledge.?base.*重复/i, fix: 'deduplicate_kb', priority: 'P2' },
|
||||||
{ pattern: /copilot.*instructions.*空|不存在/i, fix: 'note_copilot', priority: 'P2' },
|
{ pattern: /copilot.*instructions.*空|不存在/i, fix: 'note_copilot', priority: 'P2' },
|
||||||
{ pattern: /syntax.*error|语法.*错误/i, fix: 'log_syntax_error', priority: 'P0' },
|
{ 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 = [
|
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;
|
return issues;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 生成 ━━━
|
// ━━━ Markdown 生成 ━━━
|
||||||
|
|
||||||
function generateMarkdown() {
|
function generateMarkdown() {
|
||||||
|
|
@ -203,6 +231,7 @@ function generateMarkdown() {
|
||||||
const modules = countModuleDirs();
|
const modules = countModuleDirs();
|
||||||
const ontology = getOntologyVersion();
|
const ontology = getOntologyVersion();
|
||||||
const bufferPending = getBufferStatus();
|
const bufferPending = getBufferStatus();
|
||||||
|
const hibernation = getHibernationStatus();
|
||||||
|
|
||||||
// Health indicator from latest scan
|
// Health indicator from latest scan
|
||||||
let healthIcon = '🟢';
|
let healthIcon = '🟢';
|
||||||
|
|
@ -235,6 +264,7 @@ function generateMarkdown() {
|
||||||
lines.push(`| 🌍 子仓库联邦 | ${spokes.length} 个模板(签到 ${federation.total} 个) |`);
|
lines.push(`| 🌍 子仓库联邦 | ${spokes.length} 个模板(签到 ${federation.total} 个) |`);
|
||||||
lines.push(`| 📜 本体论 | ${ontology} |`);
|
lines.push(`| 📜 本体论 | ${ontology} |`);
|
||||||
lines.push(`| 📮 Buffer 待处理 | ${bufferPending} 条 |`);
|
lines.push(`| 📮 Buffer 待处理 | ${bufferPending} 条 |`);
|
||||||
|
lines.push(`| 🌙 休眠系统 | ${hibernation.deployed ? '✅ 已部署' : '❌ 未部署'} · 日检查点 ${hibernation.daily_checkpoints} 个 · 周快照 ${hibernation.weekly_snapshots} 个 |`);
|
||||||
lines.push('');
|
lines.push('');
|
||||||
|
|
||||||
// Infrastructure services table
|
// Infrastructure services table
|
||||||
|
|
@ -394,7 +424,8 @@ function generateJsonReport() {
|
||||||
federation: getFederationStats(),
|
federation: getFederationStats(),
|
||||||
modules: countModuleDirs(),
|
modules: countModuleDirs(),
|
||||||
ontology: getOntologyVersion(),
|
ontology: getOntologyVersion(),
|
||||||
buffer_pending: getBufferStatus()
|
buffer_pending: getBufferStatus(),
|
||||||
|
hibernation: getHibernationStatus()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -135,6 +135,44 @@ function generateReport() {
|
||||||
recommendations: soldierHealth.recommendations || []
|
recommendations: soldierHealth.recommendations || []
|
||||||
} : { dimension: 'D15', status: '❓' },
|
} : { 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: {
|
diagnosis: {
|
||||||
total_issues: diagnosis ? diagnosis.total_issues : 0,
|
total_issues: diagnosis ? diagnosis.total_issues : 0,
|
||||||
auto_fixed: repairResult ? repairResult.total_repaired : 0,
|
auto_fixed: repairResult ? repairResult.total_repaired : 0,
|
||||||
|
|
@ -198,6 +236,9 @@ function generateReport() {
|
||||||
report.soldier_health.recurring_errors.length > 0) {
|
report.soldier_health.recurring_errors.length > 0) {
|
||||||
report.next_actions.push('P1: 存在持续性故障小兵,建议铸渊介入');
|
report.next_actions.push('P1: 存在持续性故障小兵,建议铸渊介入');
|
||||||
}
|
}
|
||||||
|
if (!report.hibernation_status.deployed) {
|
||||||
|
report.next_actions.push('P0: 休眠系统未部署,需立即部署 skyeye/hibernation/');
|
||||||
|
}
|
||||||
|
|
||||||
// 保存完整报告
|
// 保存完整报告
|
||||||
fs.mkdirSync(SKYEYE_DIR, { recursive: true });
|
fs.mkdirSync(SKYEYE_DIR, { recursive: true });
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,12 @@ const CORE_DIRS = [
|
||||||
'connectors',
|
'connectors',
|
||||||
'brain',
|
'brain',
|
||||||
'docs',
|
'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',
|
'config.js', 'config.json', 'routing-map.json', 'dev-status.json',
|
||||||
'broadcast-generator.js', 'server.js',
|
'broadcast-generator.js', 'server.js',
|
||||||
'dev', 'm10-cloud',
|
'dev', 'm10-cloud',
|
||||||
'guanghulab-main'
|
'guanghulab-main',
|
||||||
|
'skyeye', 'buffer', 'grid-db',
|
||||||
|
'spoke-deployments', 'federation',
|
||||||
|
'channel-map.json'
|
||||||
];
|
];
|
||||||
|
|
||||||
// ━━━ README Markers ━━━
|
// ━━━ README Markers ━━━
|
||||||
|
|
@ -57,7 +65,8 @@ const README_MARKERS = [
|
||||||
'BINGSHUO_BULLETIN_START', 'BINGSHUO_BULLETIN_END',
|
'BINGSHUO_BULLETIN_START', 'BINGSHUO_BULLETIN_END',
|
||||||
'BINGSHUO_ALERT_START', 'BINGSHUO_ALERT_END',
|
'BINGSHUO_ALERT_START', 'BINGSHUO_ALERT_END',
|
||||||
'COLLABORATOR_BULLETIN_START', 'COLLABORATOR_BULLETIN_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'
|
||||||
];
|
];
|
||||||
|
|
||||||
// ━━━ 检查核心目录 ━━━
|
// ━━━ 检查核心目录 ━━━
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"version": "1.0.0",
|
"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",
|
"last_scan_by": "skyeye-scan-engine",
|
||||||
"infrastructure": {
|
"infrastructure": {
|
||||||
"github": {
|
"github": {
|
||||||
|
|
@ -77,6 +77,35 @@
|
||||||
"minutes_per_month": 2000,
|
"minutes_per_month": 2000,
|
||||||
"job_timeout_hours": 6
|
"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"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"scan_id": "SCAN-20260324",
|
"scan_id": "SCAN-20260324",
|
||||||
"mode": "full",
|
"mode": "full",
|
||||||
"timestamp": "2026-03-24T04:19:44.731Z",
|
"timestamp": "2026-03-24T04:24:59.722Z",
|
||||||
"guard_scan": {
|
"guard_scan": {
|
||||||
"total": 5,
|
"total": 5,
|
||||||
"valid": 5,
|
"valid": 5,
|
||||||
|
|
@ -99,8 +99,8 @@
|
||||||
"errors": []
|
"errors": []
|
||||||
},
|
},
|
||||||
"directory_scan": {
|
"directory_scan": {
|
||||||
"checked": 14,
|
"checked": 19,
|
||||||
"present": 14,
|
"present": 19,
|
||||||
"missing": []
|
"missing": []
|
||||||
},
|
},
|
||||||
"sub_repo_scan": {
|
"sub_repo_scan": {
|
||||||
|
|
@ -156,6 +156,6 @@
|
||||||
"warnings": 0,
|
"warnings": 0,
|
||||||
"guards_healthy": "5/5",
|
"guards_healthy": "5/5",
|
||||||
"workflows_found": 84,
|
"workflows_found": 84,
|
||||||
"directories_ok": "14/14"
|
"directories_ok": "19/19"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,9 @@
|
||||||
"skyeye_daily": 180,
|
"skyeye_daily": 180,
|
||||||
"skyeye_weekly": 30,
|
"skyeye_weekly": 30,
|
||||||
"sub_repo_checkins": 200,
|
"sub_repo_checkins": 200,
|
||||||
"emergency": 1230
|
"emergency": 1020,
|
||||||
|
"hibernation_daily": 150,
|
||||||
|
"hibernation_weekly": 60
|
||||||
},
|
},
|
||||||
"daily_entries": []
|
"daily_entries": []
|
||||||
},
|
},
|
||||||
|
|
@ -38,6 +40,6 @@
|
||||||
"health_summary": {
|
"health_summary": {
|
||||||
"overall": "healthy",
|
"overall": "healthy",
|
||||||
"alerts": [],
|
"alerts": [],
|
||||||
"last_updated": "2026-03-23T14:30:11.691Z"
|
"last_updated": "2026-03-24T04:20:00.000Z"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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"
|
||||||
|
}
|
||||||
|
|
@ -87,6 +87,11 @@ function scanDirectoryStructure() {
|
||||||
'skyeye/scripts',
|
'skyeye/scripts',
|
||||||
'skyeye/logs',
|
'skyeye/logs',
|
||||||
'skyeye/scan-report',
|
'skyeye/scan-report',
|
||||||
|
'skyeye/hibernation',
|
||||||
|
'skyeye/hibernation/checkpoints',
|
||||||
|
'skyeye/hibernation/weekly-snapshots',
|
||||||
|
'skyeye/hibernation/upgrade-packs',
|
||||||
|
'skyeye/hibernation/distribution-reports',
|
||||||
'.github/persona-brain',
|
'.github/persona-brain',
|
||||||
'.github/workflows',
|
'.github/workflows',
|
||||||
'scripts/skyeye'
|
'scripts/skyeye'
|
||||||
|
|
|
||||||
|
|
@ -148,6 +148,34 @@ function generateReport() {
|
||||||
alerts: [],
|
alerts: [],
|
||||||
human_action_required: [],
|
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()
|
next_scan: nextSaturday.toISOString()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue