guanghulab/signal-log/skyeye-diag-site-20260326.json

296 lines
12 KiB
JSON
Raw Permalink Normal View History

{
"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"
]
}
}