guanghulab/signal-log/skyeye-diag-site-20260326.json
2026-05-10 13:12:44 +08:00

296 lines
12 KiB
JSON
Raw Permalink 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.

{
"scan_id": "SKYEYE-DIAG-SITE-20260326-001",
"instruction_id": "ZY-DIAG-SITE-2026-0326-001",
"trigger": "霜砚 AG-SY-01 排查指令",
"executor": "AG-ZY-01 铸渊",
"authorization": "TCS-0002∞ 冰朔",
"priority": "P0",
"timestamp": "2026-03-26T07:50:00Z",
"skyeye_version": "scripts/skyeye/skyeye-main.js v3.0",
"phase_d0_skyeye_startup": {
"status": "✅ 天眼已启动",
"guards_run": [
"scan-workflows.js",
"scan-structure.js",
"scan-brain-health.js",
"scan-security-protocol.js",
"scan-soldier-health.js",
"scan-external-bridges.js"
],
"scan_results": {
"workflows": {
"total": 102,
"syntax_ok": 102,
"syntax_errors": 0,
"using_git_push": 67,
"cron_conflicts": 11,
"potential_loops": 17
},
"structure": {
"core_dirs_ok": true,
"missing_dirs": 0,
"orphan_files": 96,
"readme_ok": true
},
"brain_health": {
"memory_fresh": true,
"routing_map_aligned": true,
"routing_map_fix_applied": "添加 domains 字段AUTH/BRAIN/REGISTRY/NOTIFICATION 4域 10接口",
"dev_status_fresh": true,
"knowledge_base_ok": true,
"copilot_instructions_ok": true
},
"security_protocol": {
"status": "✅",
"root_rules_intact": true,
"copyright_anchor": true
},
"soldier_health": {
"total_soldiers": 94,
"healthy": 0,
"needs_optimization": 94,
"failure_rate": 0
},
"external_bridges": {
"notion_api": "🔴 NOTION_TOKEN 未设置CI环境",
"github_api": "🟡 403CI环境权限不足",
"server_ssh": "🟡 DEPLOY_HOST 未设置CI环境",
"note": "以上为 CI runner 本地扫描结果。通过 workflow 日志判断DEPLOY_HOST/USER/KEY 有效NOTION_TOKEN 在部分 workflow 为空"
}
}
},
"phase_d1_deployment_chain": {
"d1_1_repository_side": {
"docs_index_html": {
"exists": true,
"size_lines": 3210,
"version": "铸渊助手 v6.0 · 大脑版本 v3.0 · 壳-核分离架构",
"latest_commit": "26025d0a (2026-03-26T06:02:03Z) Sync from WENZHUOXI/guanghu-Awen",
"features_present": [
"API 自动检测 v4.0",
"多种登录方式",
"壳-核分离架构",
"模块导航14+模块)",
"HLI 协议接口"
]
},
"docs_structure": {
"CNAME": "guanghulab.com",
"nojekyll": true,
"subdirs": ["css/", "js/", "daily-reports/", "dashboard/", "dev-portal/"]
},
"recent_merged_prs": [
"PR#202: AGE OS Tower Architecture upgrade (2026-03-26)",
"PR#200: Notion sync via wakeup script (2026-03-26)",
"PR#199: 码字台部署到 dev-portal (2026-03-25)",
"PR#198: SkyEye merge membrane v3 (2026-03-25)",
"PR#196: AI写网文平台 (2026-03-25)",
"PR#194: UI responsive + smart model router (2026-03-25)",
"PR#192: Language-driven OS execution layer (2026-03-25)",
"PR#191: Real data integration + dual-env deploy (2026-03-25)",
"PR#190: Live dynamic dashboard (2026-03-25)",
"PR#189: Nginx hololake→guanghulab migration (2026-03-25)",
"PR#186: 人类使用侧全面修复 (2026-03-25)"
],
"code_completeness": "✅ 所有近期 PR 已合并到 main代码完整"
},
"d1_2_cicd_pipeline": {
"deploy_pages": {
"workflow": "deploy-pages.yml",
"name": "🌀 部署铸渊聊天室 (GitHub Pages)",
"trigger": "push to main on docs/** or persona-studio/frontend/**",
"status": "✅ 正常",
"total_runs": 63,
"last_success": "2026-03-25T23:26:45Z (PR#199)",
"recent_10_runs": "全部成功",
"verdict": "GitHub Pages 部署管道完全正常"
},
"deploy_to_server": {
"workflow": "deploy-to-server.yml",
"name": "🚀 铸渊 CD · 自动部署到 guanghulab.com",
"trigger": "push to main (excludes persona-brain, broadcasts, syslog, signal-log)",
"status": "⚠️ 部署成功但站点返回 404",
"total_runs": 201,
"last_success": "2026-03-26T06:02:06Z (Awen sync)",
"recent_10_runs": "全部成功",
"smoke_test_results": {
"module_smoke_test": "20 通过 / 0 失败(服务器文件存在)",
"human_use_verification": {
"main_site_http": "❌ 404人类无法访问",
"persona_studio_http": "⚠️ 404",
"persona_studio_api": "✅ 200后端 API 健康)"
},
"diagnosis": "文件已同步到服务器但 Nginx 路由返回 404疑似 Nginx server_name 或 root 目录配置问题"
}
},
"deploy_backend": {
"workflow": "deploy-backend.yml",
"name": "🚀 部署后端中间层到阿里云",
"trigger": "push to main on backend/api-server/**",
"status": "✅ 正常",
"total_runs": 3,
"last_success": "2026-03-26 (PR#202)"
},
"syslog_issue_pipeline": {
"workflow": "syslog-issue-pipeline.yml",
"name": "📡 SYSLOG Issue Pipeline",
"trigger": "issues [opened, labeled]",
"status": "🔴 连续失败conclusion=failure, 0 jobs",
"total_runs": 463,
"main_branch_failures": "22+ 次",
"root_cause": "workflow 仅由 issues 事件触发,但可能被设为 branch protection 的 required status check。每次 push 到 main 时GitHub 期望该 check 完成,但 check 从不运行0 jobs导致状态显示为 failure。",
"evidence": "run#454-#463 全部 conclusion=failure, total_jobs=0, event=push"
},
"branch_protection_conflict": {
"status": "🔴 严重冲突",
"description": "main 分支保护规则要求 2 个 status checks但 67 个 workflow 试图直接 git push 到 main",
"affected_workflows": 67,
"error_message": "GH006: Protected branch update failed - 2 of 2 required status checks are expected",
"examples": [
"sync-griddb-to-drive.yml: 同步成功但无法推送日志到 main",
"bridge-heartbeat.yml: 心跳检测完成但无法推送结果到 main"
],
"impact": "所有需要写回日志/状态文件到 main 的 workflow 都会在 git push 步骤失败"
}
},
"d1_3_secrets_credentials": {
"deployment_secrets": {
"DEPLOY_HOST": "✅ 存在且有效deploy-to-server 成功连接)",
"DEPLOY_USER": "✅ 存在且有效",
"DEPLOY_KEY": "✅ 存在且有效SSH 连接成功)",
"DEPLOY_PATH": "✅ 存在"
},
"notion_secrets": {
"NOTION_TOKEN": "🔴 在 bridge-heartbeat 中为空secrets.NOTION_API_KEY 引用,可能 secret 名称不匹配)",
"NOTION_API_TOKEN": "⚠️ 未验证syslog-issue-pipeline 使用此名称)",
"BRIDGE_QUEUE_DB_ID": "🔴 为空",
"evidence": "bridge-heartbeat 日志: ⚠️ NOTION_TOKEN 未配置,跳过 Notion 检测"
},
"llm_secrets": {
"LLM_API_KEY": "⚠️ 状态不确定syslog-issue-pipeline 从未在 push 事件上运行过)",
"LLM_BASE_URL": "⚠️ 状态不确定"
},
"gdrive_secrets": {
"GDRIVE_CLIENT_ID": "✅ 存在且有效sync-to-drive OAuth2 成功)",
"GDRIVE_CLIENT_SECRET": "✅ 存在且有效",
"GDRIVE_REFRESH_TOKEN": "✅ 存在且有效",
"DRIVE_MIRROR_FOLDER_ID": "✅ 存在"
},
"smtp_secrets": {
"SMTP_USER": "⚠️ 未验证",
"SMTP_PASS": "⚠️ 未验证"
}
},
"d1_4_server_side": {
"server_ip": "8.155.62.235",
"server_stack": "Node.js 20 + PM2 + Nginx",
"file_sync_status": "✅ rsync 同步成功20/20 模块存在)",
"backend_api_health": "✅ Persona Studio API port 3002 返回 200",
"http_access": {
"main_site": "❌ 404",
"persona_studio": "❌ 404",
"diagnosis": "文件在服务器上存在,后端 API 正常,但 Nginx HTTP 路由返回 404"
},
"nginx_diagnosis": {
"issue": "Nginx 配置可能存在 server_name 或 root 路径不匹配问题",
"evidence": "deploy-to-server 包含 Nginx 配置更新步骤并成功执行,但 HTTP 访问仍返回 404",
"needs_human_check": true,
"check_items": [
"检查 Nginx server_name 是否正确绑定 guanghulab.com",
"检查 root 指令是否指向正确的文件目录",
"检查是否有 default_server 冲突",
"检查 HTTPS/SSL 证书配置(如果启用 HTTPS",
"运行 nginx -t 检查语法",
"检查 Nginx error log: /var/log/nginx/error.log"
]
}
}
},
"phase_d1_5_mcp_service": {
"mcp_code_location": "mcp-servers/ (根目录)",
"mcp_files": [
"mcp-servers/github-server.js",
"mcp-servers/notion-server.js"
],
"mcp_purpose": "MCP 服务器工具层GitHub + Notion 操作)",
"mcp_frontend_integration": "❌ 未集成到 docs/index.html前端使用 HLI 协议,非 MCP",
"mcp_deployment_status": {
"has_deploy_workflow": false,
"server_process": "未知(需 SSH 检查)",
"assessment": "MCP 是后端自动化工具(非用户可见的前端功能),代码存在但部署状态未知"
},
"mcp_break_point": {
"ever_successfully_deployed": "不确定",
"likely_scenario": "MCP 代码写完但可能从未作为独立服务部署到服务器",
"note": "MCP 工具由 GitHub Actions 和其他自动化脚本直接引用,可能不需要独立运行的服务进程"
}
},
"phase_d2_merge_membrane": {
"branch_protection": {
"status": "⚠️ 配置存在但有副作用",
"rules": "需要 2 个 required status checks",
"issue": "syslog-issue-pipeline.yml 可能是其中一个 required check但该 workflow 仅触发于 issues 事件,不触发于 push 事件",
"impact": "导致 push 事件的 check 永远处于 pending/expected 状态"
},
"pr_flow": {
"status": "✅ 正常",
"evidence": "PR#186-#202 全部成功通过审核并合并"
},
"deploy_trigger": {
"deploy_pages": "✅ push to main + docs/** → 自动触发 → 成功",
"deploy_to_server": "✅ push to main → 自动触发 → 成功(但站点 404"
},
"workflow_global_health": {
"total": 102,
"syntax_ok": 102,
"deploy_related_healthy": true,
"syslog_pipeline_broken": true,
"direct_push_workflows_broken": 67,
"broken_list": [
{
"name": "syslog-issue-pipeline.yml",
"issue": "Required status check 但不触发于 push 事件",
"severity": "high"
},
{
"name": "sync-griddb-to-drive.yml",
"issue": "git push 被 branch protection 拒绝",
"severity": "medium"
},
{
"name": "bridge-heartbeat.yml",
"issue": "NOTION_TOKEN 为空 + git push 被拒绝",
"severity": "medium"
}
]
},
"timeline_retrospective": {
"last_successful_deploy": "2026-03-26T06:02:06Z (deploy-to-server 成功但 HTTP 404)",
"last_deploy_pages_success": "2026-03-25T23:26:45Z (GitHub Pages 正常)",
"branch_protection_break_point": "约 2026-03-25 (PR#198 合并 SkyEye merge membrane v3 后开始出现)",
"http_404_timeline": "需人类 SSH 检查服务器确认具体开始时间",
"syslog_pipeline_failures_start": "连续失败至少从 run#428+ 开始"
}
},
"phase_d3_diagnosis_summary": {
"root_cause": "多因素叠加1) Nginx 配置导致 HTTP 4042) Branch protection 与 67 个直推 workflow 冲突3) syslog-issue-pipeline 作为 required status check 但不触发于 push",
"break_point": "Nginx HTTP 路由层(服务器文件存在,后端 API 正常,但 HTTP 访问 404",
"break_time": "HTTP 404 具体起始时间需人类确认branch protection 冲突约从 2026-03-25 开始",
"evidence": [
"deploy-to-server run#201 冒烟测试: 20 通过 / 0 失败(文件在服务器存在)",
"人类使用侧验证: ❌ 主站 HTTP 404, ⚠️ Persona Studio 404, ✅ API 200",
"sync-griddb-to-drive: GH006 Protected branch update failed",
"bridge-heartbeat: NOTION_TOKEN 为空",
"syslog-issue-pipeline: 22+ 次 main 分支上 conclusion=failure, total_jobs=0"
]
}
}