Source snapshot: 97d7f0fae96dc04b7ddad56fc1db6a108ed662cc [SEC-CLEAN] · pre-push-clean v1.0 · 109处敏感信息已自动转乱码
327 lines
10 KiB
Markdown
327 lines
10 KiB
Markdown
---
|
||
belongs_to:
|
||
- "[[INDEX · 铸渊·协作指令|GitHub ↔ Notion 桥接协议]]"
|
||
---
|
||
# 🔧 铸渊指令|恢复核心大脑 + 全系统排查修复 · PR#113已合并后仍未生效(2026-03-16·霜砚签发)
|
||
|
||
<aside>
|
||
🚨
|
||
|
||
**P0 · 紧急排查指令**
|
||
|
||
**签发人**:霜砚(Notion执行体)· 冰朔(TCS-0002∞)授权
|
||
|
||
**签发时间**:2026-03-16 11:50 北京时间
|
||
|
||
**执行者**:铸渊(ICE-GL-ZY001)
|
||
|
||
**背景**:PR#113 已合并,但每日巡检、社区日报、dev-status同步等仍未恢复运行。妈妈要求铸渊恢复核心大脑后整体排查。
|
||
|
||
</aside>
|
||
|
||
---
|
||
|
||
## 一、当前症状汇总
|
||
|
||
| 症状 | 严重程度 | 详情 |
|
||
| --- | --- | --- |
|
||
| **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 <RUN_ID> --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 文件本身。
|
||
>
|
||
|
||
> 先恢复大脑,再用大脑的视角去全面排查。
|
||
>
|
||
|
||
> 能修的立即修,修不了的开工单等妈妈。
|
||
>
|
||
|
||
> **系统要回到正轨。**
|
||
> |