shuangyan-notebook/第五域 · Fifth Domain/⚒️ 铸渊·协作指令|GitHub ↔ Notion 桥接协议/🌙 铸渊指令|天眼夜间自动修复引擎(下篇)—— PR·仪表盘·人类审阅·注册 35ddd6db9f7c409cb6c3ca0016ad06fa.md
Guanghu Domestic Migration a27e87cb99 chore: import sanitized domestic snapshot for REPO-007
Source snapshot: 97d7f0fae96dc04b7ddad56fc1db6a108ed662cc

[SEC-CLEAN] · pre-push-clean v1.0 · 109处敏感信息已自动转乱码
2026-07-17 15:59:55 +08:00

15 KiB
Raw Permalink Blame History

belongs_to
belongs_to
INDEX · 铸渊·协作指令GitHub ↔ Notion 桥接协议

🌙 铸渊指令|天眼夜间自动修复引擎(下篇)—— PR·仪表盘·人类审阅·注册



一、Phase E — 自动创建 Pull Request

1.1 触发条件

Phase D 天眼审核 全部通过H1-H9 = PASS

1.2 PR 创建规范

Step 1: 创建 Pull Request
  → GitHub API: POST /repos/{owner}/{repo}/pulls
  → 参数:
    title: "🌙 [AUTO-FIX] {YYYY-MM-DD} 天眼夜间自动修复 ({N}个修复)"
    head: "fix/auto-repair-{YYYYMMDD}-{序号}"
    base: "main"
    body: 见下方 PR Body 模板
    labels: ["auto-fix", "tianyan-v3"]

Step 2: 添加 PR 评论(修复摘要)
  → 对每个修复项生成一条评论
  → 包含:原始错误 + 根因分析 + 修复方案 + 风险等级

Step 3: 设置 PR 状态标签
  → 全部 low risk → 标签: ✅ safe-to-merge
  → 含 medium risk → 标签: ⚠️ review-carefully
  → 含 high risk → 不应出现Phase B 已过滤)

1.3 PR Body 模板

## 🌙 天眼夜间自动修复引擎 v3.0

**扫描时间:** {scan_time}
**修复数量:** {fix_count} 个
**风险等级:** {overall_risk}
**天眼审核:** ✅ H1-H9 全部通过

### 修复清单

| # | Workflow | 错误类型 | 根因 | 风险 | 文件 |
|---|----------|----------|------|------|------|
| 1 | sync-to-drive.yml | rclone_oauth_parse | shell拼接JSON不完整 | 🟢 low | sync-to-drive.yml |
| 2 | ... | ... | ... | ... | ... |

### 天眼审核结果

- [x] H1 Secrets安全
- [x] H2 文件完整性
- [x] H3 依赖安全
- [x] H4 权限最小化
- [x] H5 天眼自保护
- [x] H6 变更范围
- [x] H7 Secrets引用完整性
- [x] H8 注释规范
- [x] H9 无残留调试代码

---
> 🤖 此 PR 由铸渊夜间修复引擎自动创建
> 📋 指令编号: ZY-TIANYAN-AUTOFIX-2026-0324-001
> ⏰ 请冰朔在晨间审阅后合并

二、Phase F — 仪表盘更新机制

2.1 仪表盘位置

在主仓库 README.md 或独立文件 DASHBOARD.md 中维护。

2.2 仪表盘结构设计

## 🌙 天眼夜间修复引擎 · 仪表盘

### 系统状态
| 指标 | 值 |
|------|----|
| 引擎版本 | v3.0 |
| 上次扫描 | 2026-03-24 23:00 CST |
| 扫描结果 | ⚠️ 发现 3 个错误 |
| 自动修复 | ✅ 2 个已修复 |
| 需人工处理 | 🔴 1 个等待指令 |
| 待合并 PR | 🟡 PR #42 |

### 最近7天修复历史
| 日期 | 扫描 | 发现 | 自动修复 | 人工处理 | PR |
|------|------|------|----------|----------|----|
| 03-24 | ✅ | 3 | 2 | 1 | #42 |
| 03-23 | ✅ | 0 | - | - | - |
| 03-22 | ✅ | 1 | 1 | 0 | #41 ✅ |
| ... | ... | ... | ... | ... | ... |

### 待处理事项
🔴 **需人工处理:**
- [ ] sync-persona-studio.yml: permission_denied (CROSS_REPO_TOKEN 未配置)

🟡 **待合并 PR**
- [ ] PR #42: 天眼夜间修复 2026-03-24 (2个修复低风险)

2.3 仪表盘更新逻辑

场景 A: 扫描无异常
  → 更新「上次扫描」时间
  → 更新「扫描结果」为 ✅ 今日无异常
  → 清空「待合并 PR」如果前一天的已被合并
  → 追加当日记录到7天历史

场景 B: 自动修复成功
  → 更新扫描结果 + 修复数量
  → 更新「待合并 PR」为新 PR 链接
  → 追加当日记录

场景 C: 自动修复失败
  → 更新「需人工处理」计数
  → 在「待处理事项」中添加具体错误描述
  → 追加当日记录(标记修复失败)

场景 D: 部分成功部分失败
  → 组合 B + C 的更新逻辑

场景 E: 人类合并了 PR
  → 下次扫描时检测已合并的 PR
  → 从「待合并 PR」中移除
  → 更新7天历史中对应日期的 PR 状态为 ✅

2.4 仪表盘更新 Workflow 片段

# ========================================
# Phase E+F: 创建 PR + 更新仪表盘
# ========================================
create-pr-and-dashboard:
  needs: analyze-and-repair
  if: needs.analyze-and-repair.outputs.pr_needed == 'true'
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v4
      with:
        ref: main

    - name: "📦 Phase E — 创建 Pull Request"
      id: create_pr
      env:
        GH_TOKEN: $ secrets.DEPLOY_GITHUB_TOKEN 
        BRANCH: $ needs.analyze-and-repair.outputs.repair_branch 
        SUMMARY: $ needs.analyze-and-repair.outputs.repair_summary 
      run: |
        echo "[天眼 v3.0] Phase E — 创建 Pull Request"
        PR_TITLE="🌙 [AUTO-FIX] $(date +%Y-%m-%d) 天眼夜间自动修复"
        
        PR_URL=$(gh pr create \
          --base main \
          --head "$BRANCH" \
          --title "$PR_TITLE" \
          --body "$SUMMARY" \
          --label "auto-fix,tianyan-v3")
        
        echo "pr_url=$PR_URL" >> $GITHUB_OUTPUT
        echo "✅ PR 已创建: $PR_URL"

    - name: "📊 Phase F — 更新仪表盘"
      env:
        GH_TOKEN: $ secrets.DEPLOY_GITHUB_TOKEN 
        PR_URL: $ steps.create_pr.outputs.pr_url 
      run: |
        echo "[天眼 v3.0] Phase F — 更新仪表盘"
        DATE=$(date +%Y-%m-%d)
        
        # 铸渊实现:
        # 1. 读取 DASHBOARD.md
        # 2. 更新系统状态表
        # 3. 追加当日历史记录
        # 4. 更新待合并 PR
        # 5. 提交到 main 分支
        
        git add DASHBOARD.md
        git commit -m "[DASHBOARD] 更新天眼仪表盘 $DATE"
        git push origin main

# ========================================
# 无错误时的仪表盘更新
# ========================================
dashboard-no-errors:
  needs: nightly-scan
  if: needs.nightly-scan.outputs.has_errors == 'false'
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v4

    - name: "✅ 更新仪表盘 — 今日无异常"
      env:
        GH_TOKEN: $ secrets.DEPLOY_GITHUB_TOKEN 
      run: |
        DATE=$(date +%Y-%m-%d)
        echo "[天眼 v3.0] 今日无异常,更新仪表盘"
        
        # 铸渊实现:
        # 1. 更新扫描时间和状态
        # 2. 检查前一天的 PR 是否已合并
        # 3. 追加当日记录(无异常)
        
        git add DASHBOARD.md
        git commit -m "[DASHBOARD] 今日无异常 $DATE" || true
        git push origin main || true

三、Phase G — 人类晨间审阅协议

3.1 冰朔操作流程

每天早上(冰朔自然醒来后):

① 打开仪表盘 DASHBOARD.md
   → 查看「系统状态」区域
   → 如果「待合并 PR」为空 → 不需要操作,结束

② 如果有待合并 PR
   → 点击 PR 链接进入 GitHub
   → 查看修复清单和天眼审核结果
   → 可选:查看每个 commit 的 diff

③ 决策:
   → 确认修复合理 → 点击 Merge → 完成
   → 发现问题 → 在 PR 中留言 → 铸渊下次夜间修复时读取反馈
   → 不确定 → 暂不合并 → 仪表盘持续显示待合并状态

④ 如果有「需人工处理」事项:
   → 阅读具体错误描述
   → 决定是否需要手动下指令给铸渊
   → 或者等待下次夜间扫描(如果是临时性问题可能已自愈)

3.2 PR 合并后自动清理

当 PR 被合并到 main 后:
  → 自动删除修复分支 fix/auto-repair-*
  → 下次夜间扫描时更新仪表盘历史记录
  → 如果修复的 Workflow 再次运行成功 → 在仪表盘标记 ✅ 已确认修复

四、回滚安全网

4.1 自动回滚触发条件

场景 1: PR 合并后,原本正常的 Workflow 开始报错
  → 下次夜间扫描检测到「修复引入新错误」
  → 自动创建 revert PR
  → 仪表盘标记 🔴 回滚告警

场景 2: 修复分支上的预审核未通过
  → Phase C 已处理:回退 commit

场景 3: 天眼审核未通过 + 2轮重试失败
  → Phase D 已处理:删除修复分支,记录仪表盘

4.2 回滚检测逻辑

在 Phase A 扫描中增加以下检测:

Step Extra: 检查「修复后回归」
  → 获取最近 48 小时内合并的 auto-fix PR 列表
  → 对每个 PR 涉及的 Workflow
    → 检查合并后的运行记录
    → 如果合并前正常、合并后开始报错 → 标记为「修复引入回归」
    → 自动创建 revert commit 的 PR
    → PR 标题: "🔴 [REVERT] {原PR标题} — 修复引入回归"
    → 仪表盘标记回滚告警

五、错误去重与累积策略

5.1 去重规则

同一个 Workflow + 同一个 error_type 的错误视为同一个问题:
  → 首次出现:标记 first_seen 日期
  → 后续出现:增加 occurrence_count
  → 只在首次出现时尝试自动修复
  → 如果首次修复失败,后续出现不再重复尝试
  → 除非:人类手动在仪表盘标记「允许重试」

5.2 累积阈值告警

同一错误连续出现 3 天以上:
  → 仪表盘标记 🔴 持续性错误
  → 在待处理事项中升级优先级

同一错误连续出现 7 天以上:
  → 仪表盘标记 🚨 紧急告警
  → 如果配置了通知渠道 → 发送通知给冰朔

六、CRON 调度总览

与现有系统 CRON 的完整协调:

时间 (CST) 任务 Workflow 类型
04:00-04:10 每日微休眠 系统内置 休眠
周一 10:00 Token主刷新A renew-gdrive-tokens.yml 生命线
12:15 每天 Token安全网 check-token-health.yml 生命线
周四 10:00 Token主刷新B renew-gdrive-tokens.yml 生命线
周六 20:00-00:00 周末大休眠 系统内置 休眠
23:00 每天 天眼夜间自动修复 tianyan-nightly-scan.yml 生命线 NEW

七、Workflow 注册表条目

编号 Workflow 用途 触发 Secrets
AG-ZY-087 tianyan-nightly-scan.yml 天眼夜间自动修复引擎 v3.0 主流程 CRON 每天 23:00 CST + 手动 DEPLOY_GITHUB_TOKEN, GEMINI_API_KEY

八、文件清单

铸渊需要创建/修改的文件:

# 文件 操作 说明
1 .github/workflows/tianyan-nightly-scan.yml 🆕 新建 主 Workflow 文件Phase A-F
2 .github/scripts/tianyan-analyze.js 🆕 新建 Phase B 报错分析脚本(调用 Gemini
3 .github/scripts/tianyan-repair.js 🆕 新建 Phase C 自动修复脚本(调用 Gemini
4 .github/scripts/tianyan-review.js 🆕 新建 Phase D 天眼审核脚本H1-H9
5 DASHBOARD.md 🆕 新建 天眼修复引擎仪表盘
6 .github/tianyan-config.json 🆕 新建 天眼配置文件(错误分类规则、安全护栏参数)

九、天眼配置文件

文件: .github/tianyan-config.json

{
  "version": "3.0",
  "engine": "tianyan-nightly-autofix",
  "schedule": {
    "scan_time_utc": "15:00",
    "scan_time_cst": "23:00",
    "timezone": "Asia/Shanghai"
  },
  "safety": {
    "max_files_per_repair": 5,
    "max_lines_per_file": 50,
    "max_retry_rounds": 2,
    "max_total_changed_lines": 200,
    "protected_patterns": [
      "tianyan-*.yml",
      "CODEOWNERS",
      ".github/FUNDING.yml"
    ],
    "forbidden_operations": [
      "create_file",
      "delete_file",
      "modify_secrets_ref",
      "modify_protected_file",
      "push_to_main"
    ]
  },
  "error_classification": {
    "auto_fixable": [
      "config_parse",
      "rclone_oauth_parse",
      "script_error"
    ],
    "partial_fixable": [
      "token_expired"
    ],
    "manual_only": [
      "network_timeout",
      "permission_denied",
      "unknown"
    ]
  },
  "gemini": {
    "model": "gemini-2.0-flash",
    "temperature": 0.1,
    "max_output_tokens": 4096,
    "response_format": "json"
  },
  "dashboard": {
    "file": "DASHBOARD.md",
    "history_days": 7,
    "alert_thresholds": {
      "persistent_error_days": 3,
      "urgent_alert_days": 7
    }
  },
  "weekend_mode": {
    "enabled": true,
    "saturday_hibernation": "20:00-00:00",
    "saturday_scan_only": true,
    "skip_repair_on_saturday": true
  }
}

十、执行回执模板


十一、验收标准