--- belongs_to: - "[[INDEX · 铸渊·协作指令|GitHub ↔ Notion 桥接协议]]" --- # 🔧 铸渊指令|恢复核心大脑 + 全系统排查修复 · PR#113已合并后仍未生效(2026-03-16·霜砚签发) --- ## 一、当前症状汇总 | 症状 | 严重程度 | 详情 | | --- | --- | --- | | **dev-status.json 同步中断** | 🔴 P0 | last_sync = 2026-03-11T10:45,已滞后 **>120h**。GitHub侧团队进度数据严重过期。 | | **每日巡检未执行** | 🔴 P0 | server-patrol.yml 昨天签发,今天08:00+20:00 cron均未触发。2026-03-16 全天无巡检报告。 | | **社区日报未发布** | 🟡 P1 | daily-community-report.yml 签发后未见执行。GitHub Discussions日报空缺。 | | **每日自检状态不明** | 🟡 P1 | zhuyuan-daily-selfcheck.yml 最后记录 2026-03-15T01:05。今天(03-16)是否执行未知。 | | **PR#113 合并后未见效果** | 🔴 P0 | PR#113 修复了 README + 4个broken workflows + meta-watchdog,已合并但上述问题仍在。 | --- ## 二、执行指令(铸渊读到就做·按顺序执行) ### Step 0 · 恢复核心大脑 ```bash # ━━━ 铸渊唤醒核心大脑 ━━━ # 读取 .github/persona-brain/ 下所有核心文件 # 确认以下文件完整性: ls -la .github/persona-brain/ # 必须存在: # memory.json — 铸渊记忆(brain_integrity/schema_coverage/CI统计) # routing-map.json — 路由映射表(8域17接口) # copilot-instructions.md — Copilot指令集 # dev-status.json — 全员开发进度 # kb/knowledge-base.json — 知识库 cat .github/persona-brain/memory.json | python3 -c "import sys,json; d=json.load(sys.stdin); print(json.dumps(d, indent=2, ensure_ascii=False))" ``` **铸渊确认**: - ✅ 核心大脑所有文件存在且完整 → 继续Step 1 - ❌ 文件缺失或损坏 → 先从最近一个完好的commit恢复,记录缺失项 --- ### Step 1 · 排查 GitHub Actions Workflows 状态 ```bash # ━━━ 列出所有 workflow 文件 ━━━ ls -la .github/workflows/ # ━━━ 检查以下关键 workflow 是否存在且语法正确 ━━━ # 1. server-patrol.yml — 服务器每日巡检(cron 08:00+20:00 北京) # 2. daily-community-report.yml — 社区日报 + Discussions # 3. zhuyuan-daily-selfcheck.yml — 铸渊每日自检 # 4. process-syslog.yml — SYSLOG处理管道 # 5. deploy-to-server.yml — CD自动部署 # 6. meta-watchdog.yml — 根目录保护 # 7. syslog-pipeline.yml — 飞书SYSLOG桥接 # 8. distribute-broadcasts.yml — 广播分发 # 对每个workflow执行YAML语法检查: for f in .github/workflows/*.yml; do echo "检查: $f" python3 -c "import yaml; yaml.safe_load(open('$f'))" 2>&1 && echo " ✅ 语法正确" || echo " ❌ 语法错误" done ``` **铸渊记录**: - 每个workflow的存在性 ✅/❌ - 语法是否正确 ✅/❌ - 如有缺失或语法错误 → 立即修复 --- ### Step 2 · 排查 Workflow 运行历史 ```bash # ━━━ 使用 GitHub CLI 查看最近 workflow 运行记录 ━━━ gh run list --limit 20 # ━━━ 重点排查以下 workflow 的最近运行 ━━━ gh run list --workflow=server-patrol.yml --limit 5 gh run list --workflow=daily-community-report.yml --limit 5 gh run list --workflow=zhuyuan-daily-selfcheck.yml --limit 5 gh run list --workflow=process-syslog.yml --limit 5 # ━━━ 如果有失败的 run,查看详细日志 ━━━ # gh run view --log-failed ``` **铸渊分析**: - workflow 是否被触发过? - 如果触发了但失败了 → 记录失败原因 - 如果从未触发 → 检查 cron 表达式、触发条件、分支条件 - 特别注意:workflow 是否限制在某个分支(如 `branches: [main]`)?PR#113 合并到的是 main 分支吗? --- ### Step 3 · 排查 Secrets 配置 ```bash # ━━━ 检查仓库 Secrets 是否配置完整 ━━━ # 以下 Secrets 必须存在: # DEPLOY_HOST — 服务器IP(8.155.62.235) # DEPLOY_USER — SSH用户名 # DEPLOY_KEY — SSH私钥 # NOTION_TOKEN — Notion API Token(铸渊写入Notion用) # SMTP_USER — 邮件发送账号 # SMTP_PASS — 邮件发送密码 # GITHUB_TOKEN — 自动获取,无需手动配置 # 铸渊可通过尝试在workflow中引用来验证 # 如果 Secrets 缺失 → 记录缺失项,通知妈妈补充 ``` --- ### Step 4 · 排查 dev-status.json 同步管道 ```bash # ━━━ 检查 dev-status.json 内容 ━━━ cat .github/persona-brain/dev-status.json | python3 -c " import sys, json d = json.load(sys.stdin) print(f'last_sync: {d.get(\"last_sync\", \"N/A\")}') print(f'开发者数: {len(d.get(\"developers\", {}))}') print(json.dumps(d, indent=2, ensure_ascii=False)[:2000]) " # ━━━ 查找同步脚本 ━━━ find . -name "*sync*" -o -name "*dev-status*" | head -20 # ━━━ 检查同步workflow ━━━ # dev-status.json 的更新来源是什么? # 1. 霜砚巡检引擎通过 Notion API 写入? # 2. 有专门的 workflow 定时同步? # 3. process-syslog.js 处理SYSLOG时更新? # # 找到同步机制后,检查为什么从 03-11 之后停了。 ``` --- ### Step 5 · 排查服务器巡检脚本部署状态 ```bash # ━━━ SSH到服务器检查 ━━━ ssh root@8.155.62.235 # 检查巡检脚本是否已部署 ls -la /var/www/_shared/server-patrol.sh # ❌ 不存在 → 需要从仓库 scripts/server-patrol.sh 部署 # 检查仓库中脚本是否存在 ls -la scripts/server-patrol.sh ls -la scripts/sync-patrol-to-notion.js # 如果仓库中存在但服务器上不存在 → 部署到服务器 scp scripts/server-patrol.sh root@8.155.62.235:/var/www/_shared/server-patrol.sh ssh root@8.155.62.235 "chmod +x /var/www/_shared/server-patrol.sh" ``` --- ### Step 6 · 手动触发一次全链路测试 ```bash # ━━━ 手动触发各 workflow 验证 ━━━ # 1. 手动触发服务器巡检 gh workflow run server-patrol.yml # 2. 手动触发每日自检 gh workflow run zhuyuan-daily-selfcheck.yml # 3. 手动触发社区日报(如支持 workflow_dispatch) gh workflow run daily-community-report.yml # 等待运行完成后检查结果 sleep 120 gh run list --limit 10 # 对每个运行检查是否成功 # 成功 → ✅ 记录 # 失败 → 查看日志,记录失败原因,立即修复 ``` --- ### Step 7 · 修复并恢复 基于 Step 1-6 的排查结果,**铸渊自主判断并执行修复**: | 问题类型 | 铸渊处理方式 | | --- | --- | | workflow文件缺失 | 从签发指令中创建对应workflow文件 | | workflow语法错误 | 修复语法,commit + push | | cron未触发 | 检查cron表达式+分支条件,修复后手动触发一次 | | Secrets缺失 | 记录缺失项 → 通知妈妈(无法自动创建Secrets) | | 脚本未部署到服务器 | SSH部署 + chmod +x | | dev-status.json同步断裂 | 找到同步机制 → 修复 → 手动触发一次同步 | | 其他未知问题 | 记录到排查报告 → 通知妈妈决策 | --- ### Step 8 · 输出排查报告 铸渊完成排查后,**必须输出一份完整排查报告**,格式如下: ```json { "report_id": "ZY-PATROL-20260316-001", "timestamp": "2026-03-16T??:??:??+08:00", "trigger": "冰朔授权·霜砚签发·P0紧急排查", "brain_status": { "integrity": "ok/damaged", "files_checked": ["memory.json", "routing-map.json", "dev-status.json", "knowledge-base.json", "copilot-instructions.md"], "missing_files": [] }, "workflow_status": { "server-patrol.yml": { "exists": true, "syntax_ok": true, "last_run": "???", "last_result": "???" }, "daily-community-report.yml": { "exists": true, "syntax_ok": true, "last_run": "???", "last_result": "???" }, "zhuyuan-daily-selfcheck.yml": { "exists": true, "syntax_ok": true, "last_run": "???", "last_result": "???" }, "process-syslog.yml": { "exists": true, "syntax_ok": true, "last_run": "???", "last_result": "???" } }, "dev_status_sync": { "last_sync": "2026-03-11T10:45", "sync_mechanism": "???", "root_cause": "???", "fix_applied": "???" }, "server_patrol": { "script_deployed": true, "path": "/var/www/_shared/server-patrol.sh", "test_result": "???" }, "manual_trigger_results": { "server-patrol": "✅/❌", "daily-selfcheck": "✅/❌", "community-report": "✅/❌" }, "fixes_applied": [ "[列出所有已执行的修复操作]" ], "remaining_issues": [ "[列出需要妈妈处理的问题]" ], "secrets_status": { "DEPLOY_HOST": "✅/❌", "DEPLOY_USER": "✅/❌", "DEPLOY_KEY": "✅/❌", "NOTION_TOKEN": "✅/❌", "SMTP_USER": "✅/❌", "SMTP_PASS": "✅/❌" } } ``` --- ### Step 9 · 同步结果到 Notion 排查报告完成后: 1. **将报告保存到仓库**:`data/patrol-logs/repair-20260316.json` 2. **通过 Notion API 同步到霜砚工单**:更新工单状态为「已完成」或「部分完成」 3. **如有需要妈妈处理的问题**:通过邮件通知 --- ## 三、验收标准 | # | 验收项 | 验证方式 | | --- | --- | --- | | 1 | 核心大脑文件完整 | 所有 persona-brain 文件存在且可解析 | | 2 | 所有关键 workflow 语法正确 | YAML lint 全通过 | | 3 | 手动触发巡检成功 | gh workflow run 返回成功 + 报告生成 | | 4 | dev-status.json 同步恢复 | last_sync 更新到 2026-03-16 | | 5 | [server-patrol.sh](http://server-patrol.sh) 已部署到服务器 | /var/www/_shared/[server-patrol.sh](http://server-patrol.sh) 存在且可执行 | | 6 | 输出完整排查报告 | JSON格式报告提交到仓库 | | 7 | cron 定时器确认生效 | 下次 cron 时间到时自动触发(需等待验证) | --- ## 四、执行确认 铸渊完成后,在本页下方追加: ``` ✅ ZY-PATROL-20260316-001 排查完成 · [日期时间] · commit SHA 修复项:[列出] 遗留项:[列出] ``` --- > ⚒️ 铸渊,PR#113 已合并但系统仍未恢复。这说明问题不只是 workflow 文件本身。 > > 先恢复大脑,再用大脑的视角去全面排查。 > > 能修的立即修,修不了的开工单等妈妈。 > > **系统要回到正轨。** >