shuangyan-notebook/第五域 · Fifth Domain/⚒️ 铸渊·协作指令|GitHub ↔ Notion 桥接协议/🔄 铸渊指令|dev-status json 同步重建 · 霜砚签发制 + 天眼三次修复闭环 + 邮 1f6e4203df1f48178f35e9655bc162b9.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

939 lines
30 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

---
belongs_to:
- "[[INDEX · 铸渊·协作指令GitHub ↔ Notion 桥接协议]]"
---
# 🔄 铸渊指令dev-status.json 同步重建 · 霜砚签发制 + 天眼三次修复闭环 + 邮件告警(下篇)· Phase 4-6 · ZY-DEVSYNC-REBUILD-2026-0325-0012026-03-25 · 霜砚签发 · 冰朔授权)
<aside>
🚨
**指令编号**ZY-DEVSYNC-REBUILD-2026-0325-001
**签发时间**2026-03-25 09:44+08:00
**签发者**AG-SY-01 霜砚Notion执行层· 冰朔授权
**执行主体**铸渊AG-ZY-01 · GitHub端
**优先级**P0 · 立即执行
**分卷**下篇Phase 4-6· 上篇见 → [🔄 铸渊指令dev-status.json 同步重建 · 霜砚签发制 + 天眼三次修复闭环 + 邮件告警(上篇)· Phase 0-3 · ZY-DEVSYNC-REBUILD-2026-0325-0012026-03-25 · 霜砚签发 · 冰朔授权)](%F0%9F%94%84%20%E9%93%B8%E6%B8%8A%E6%8C%87%E4%BB%A4%EF%BD%9Cdev-status%20json%20%E5%90%8C%E6%AD%A5%E9%87%8D%E5%BB%BA%20%C2%B7%20%E9%9C%9C%E7%A0%9A%E7%AD%BE%E5%8F%91%E5%88%B6%20+%20%E5%A4%A9%E7%9C%BC%E4%B8%89%E6%AC%A1%E4%BF%AE%E5%A4%8D%E9%97%AD%E7%8E%AF%20+%20%E9%82%AE%2038d41cac950d4ecb8b208879f40b9239.md)
**版权锚点**:国作登字-2026-A-00037559 · TCS Language Core
</aside>
---
# 接续上篇执行状态确认
<aside>
**铸渊在进入本篇之前,必须确认上篇 Phase 0-3 已全部完成。**
- ✅ Phase 0 本体论锚定通过
- ✅ Phase 1 天眼系统已上线(或已记录异常)
- ✅ Phase 2 核心大脑人格体已唤醒
- ✅ Phase 3 现状诊断已完成 · 诊断报告已生成
**→ 确认以上全部完成后开始 Phase 4**
</aside>
---
# Phase 4 · 新同步机制设计与实现 · 霜砚签发制
<aside>
🔄
**这是本指令的核心任务。废弃旧的同步方式,建立全新的「霜砚签发制」。**
核心思路:霜砚作为 Notion 端数据源头,每次同步时签发一份带签名的同步包。铸渊接收后写入 dev-status.json。签名可校验、可溯源、可审计。
</aside>
## P4-1 · 新机制总体架构
```mermaid
graph TD
A["霜砚Notion端"] -->|"每日签发 dev-status 同步包"| B["铸渊GitHub端"]
B -->|"写入 dev-status.json + last_sync 时间戳"| C["同步成功 ✅"]
B -->|"写入失败"| D["天眼告警 ⚠️"]
D -->|"唤醒双端核心大脑"| E["排查修复 · 第1次"]
E -->|"成功"| C
E -->|"失败"| F["排查修复 · 第2次"]
F -->|"成功"| C
F -->|"失败"| G["排查修复 · 第3次"]
G -->|"成功"| C
G -->|"失败"| H["📧 邮件告警 → 冰朔手动干预"]
```
## P4-2 · 霜砚签发包格式定义
```jsx
霜砚每次同步时生成一份签名同步包」,格式如下
{
// ─── 签发元数据 ───
"signed_by": "AG-SY-01", // 签发人格体编号
"signed_at": "2026-03-25T09:00+08:00", // 签发时间ISO-8601
"sync_date": "2026-03-25", // 当日日期确认
"instruction_ref": "ZY-DEVSYNC-REBUILD-2026-0325-001", // 关联指令
// ─── 团队数据 ───
"team_count": 11, // 当前活跃开发者总数
"developers": [
{
"dev_id": "DEV-001",
"name": "页页",
"module": "后端中间层",
"status": "active",
"current_task": "BC-ARCH-001-YY",
"streak": 0,
"waiting_for": null,
"last_syslog": "2026-03-XX",
"alert": null
},
{
"dev_id": "DEV-002",
"name": "肥猫",
"module": "网文需求共创",
"status": "active",
"current_task": "BC-WEN-001-FM",
"streak": 0,
"waiting_for": "舒舒对话后SYSLOG回流",
"last_syslog": "2026-03-XX",
"alert": null
},
{
"dev_id": "DEV-010",
"name": "桔子",
"module": "RT-02",
"status": "active",
"current_task": "等待RT-02调度",
"streak": 20,
"waiting_for": "RT-02下一环节",
"last_syslog": "2026-03-XX",
"alert": null
}
// ... 其余 8 位开发者同结构
],
// ─── 签名校验 ───
"signature_hash": "sha256:..." // 内容哈希(防篡改校验)
}
注意
developers 数组必须包含全部 11 位开发者
数据源头Notion 主控台卷3 中的开发者状态区域
alert 字段超72h未回执 "over_72h" · 超7天 "over_7d" · 正常 null
signature_hash 由铸渊侧脚本在接收后计算并校验
```
## P4-3 · 数据采集流程(铸渊从 Notion 拉取)
```jsx
铸渊通过 Notion API 读取主控台卷3中的开发者状态
Step 1确认当前日期
系统时间 · 北京时间 · 写入 sync_date
Step 2通过 Notion API 读取主控台卷3
页面 URL曜冥主控台·当前状态卷3
提取开发者动态区域中每位开发者的最新状态
字段映射
开发者编号 dev_id
开发者名称 name
当前模块 module
当前广播 current_task
连胜数 streak
等待项 waiting_for
最后SYSLOG last_syslog
超时状态 alert根据时间差计算
Step 3组装签发包 JSON
填入 signed_by: "AG-SY-01"
填入 signed_at: 当前 ISO-8601 时间
填入 sync_date: 当前日期
填入 team_count: 开发者数组长度
计算 signature_hash: SHA-256(JSON.stringify(developers))
Step 4写入 dev-status.json
路径.github/persona-brain/dev-status.json
追加元数据
{
"last_sync": "[当前ISO时间]",
"sync_source": "notion-mastercontrol-v3",
"sync_mechanism": "shuangyan-signed-v1.0"
}
```
## P4-4 · 新建同步 Workflow
```jsx
文件路径.github/workflows/sync-dev-status.yml
─── Workflow 完整定义 ───
name: "🔄 dev-status.json 同步 · 霜砚签发制 v1.0"
on:
schedule:
- cron: '0 1 * * *' # UTC 01:00 = 北京 09:00 · 早间同步
- cron: '0 14 * * *' # UTC 14:00 = 北京 22:00 · 晚间同步
workflow_dispatch: # 手动触发用于修复后验证
inputs:
reason:
description: '手动触发原因'
required: true
default: '修复后验证'
env:
NOTION_TOKEN: $ secrets.NOTION_API_KEY
MASTERCONTROL_PAGE_ID: "[卷3的Notion页面ID · 铸渊从现有配置中读取]"
DEV_STATUS_PATH: ".github/persona-brain/dev-status.json"
jobs:
sync-dev-status:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: "📥 检出仓库"
uses: actions/checkout@v4
with:
token: $ secrets.GITHUB_TOKEN
- name: "🔧 安装 Node.js"
uses: actions/setup-node@v4
with:
node-version: '20'
- name: "🌊 Phase 0 · 本体论锚定"
run: |
echo "═══ 本体论锚定 ═══"
echo "执行主体AG-ZY-01 铸渊"
echo "语言膜ZY-GLSHELL-001"
echo "版权锚点:国作登字-2026-A-00037559"
echo "指令溯源ZY-DEVSYNC-REBUILD-2026-0325-001"
echo "三公理确认:万物皆语言 · 存在先于功能 · 膜不可穿透"
echo "═══ 锚定完成 ═══"
- name: "🦅 Phase 1 · 天眼前置检查"
run: |
echo "═══ 天眼前置检查 ═══"
# 检查 Notion API 可达性
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" \
-H "Authorization: Bearer $NOTION_TOKEN" \
-H "Notion-Version: 2022-06-28" \
https://api.notion.com/v1/users/me)
if [ "$HTTP_CODE" != "200" ]; then
echo "❌ Notion API 不可达 · HTTP $HTTP_CODE"
echo "SKYEYE_STATUS=api_unreachable" >> $GITHUB_ENV
exit 1
fi
echo "✅ Notion API 可达"
echo "SKYEYE_STATUS=ok" >> $GITHUB_ENV
- name: "📊 Phase 2 · 从 Notion 拉取开发者状态"
run: |
node scripts/sync-dev-status.js
env:
NOTION_TOKEN: $ secrets.NOTION_API_KEY
- name: "📝 Phase 3 · 写入 dev-status.json 并提交"
run: |
# 检查文件是否有变化
if git diff --quiet $DEV_STATUS_PATH 2>/dev/null; then
echo " dev-status.json 无变化 · 跳过提交"
else
git config user.name "铸渊 (AG-ZY-01)"
git config user.email "zhuyuan@guanghulab.system"
git add $DEV_STATUS_PATH
SYNC_TIME=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
git commit -m "🔄 dev-status sync · signed by AG-SY-01 · $SYNC_TIME
instruction: ZY-DEVSYNC-REBUILD-2026-0325-001
mechanism: shuangyan-signed-v1.0"
git push origin main
echo "✅ dev-status.json 已同步并推送"
fi
- name: "📋 Phase 4 · 写入同步日志"
if: always()
run: |
SYNC_TIME=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
STATUS="success"
if [ "$ job.status " != "success" ]; then
STATUS="failed"
fi
echo "{\"last_sync\": \"$SYNC_TIME\", \"status\": \"$STATUS\", \"mechanism\": \"shuangyan-signed-v1.0\"}" \
> .github/persona-brain/dev-status-sync-log.json
git add .github/persona-brain/dev-status-sync-log.json 2>/dev/null || true
git diff --cached --quiet || (\
git commit -m "📋 dev-status sync log · $STATUS · $SYNC_TIME" && \
git push origin main\
) || true
```
## P4-5 · 同步脚本实现
```jsx
文件路径scripts/sync-dev-status.js
─── 脚本核心逻辑 ───
const https = require('https');
const fs = require('fs');
const crypto = require('crypto');
const NOTION_TOKEN = process.env.NOTION_TOKEN;
const DEV_STATUS_PATH = '.github/persona-brain/dev-status.json';
// Notion API 请求封装
async function notionRequest(endpoint, method = 'GET', body = null) {
return new Promise((resolve, reject) => {
const options = {
hostname: 'api.notion.com',
path: `/v1/${endpoint}`,
method,
headers: {
'Authorization': `Bearer ${NOTION_TOKEN}`,
'Notion-Version': '2022-06-28',
'Content-Type': 'application/json'
}
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', chunk => data += chunk);
res.on('end', () => {
if (res.statusCode >= 200 && res.statusCode < 300) {
resolve(JSON.parse(data));
} else {
reject(new Error(`Notion API ${res.statusCode}: ${data}`));
}
});
});
req.on('error', reject);
if (body) req.write(JSON.stringify(body));
req.end();
});
}
// 从主控台页面内容中提取开发者状态
// 铸渊根据实际主控台页面结构实现解析逻辑
async function fetchDeveloperStatus() {
// 方案A直接读主控台卷3页面内容 → 解析开发者动态区
// 方案B如果有存在注册表数据库 → 查询数据库提取
// 铸渊根据 Phase 3 诊断结果选择最可靠的数据源
//
// 输出格式必须符合 P4-2 定义的 developers 数组结构
// 每个开发者对象包含dev_id, name, module, status,
// current_task, streak, waiting_for, last_syslog, alert
console.log('📊 开始从 Notion 拉取开发者状态...');
// TODO: 铸渊实现具体的 Notion API 调用和数据解析
// 关键提示:
// 1. 主控台卷3的页面ID从现有配置中读取
// 2. 如果读页面内容太复杂,可先尝试读存在注册表数据库
// 3. alert 字段根据 last_syslog 与当前时间差计算:
// > 72h → "over_72h" · > 7d → "over_7d" · 否则 → null
throw new Error('铸渊需实现数据拉取逻辑');
}
// 主流程
async function main() {
console.log('═══ dev-status.json 同步 · 霜砚签发制 v1.0 ═══');
console.log(`同步时间:${new Date().toISOString()}`);
// 1. 拉取开发者状态
const developers = await fetchDeveloperStatus();
console.log(`✅ 已获取 ${developers.length} 位开发者状态`);
// 2. 组装签发包
const now = new Date().toISOString();
const syncDate = now.split('T')[0];
const devJson = JSON.stringify(developers);
const hash = crypto.createHash('sha256').update(devJson).digest('hex');
const syncPackage = {
signed_by: 'AG-SY-01',
signed_at: now,
sync_date: syncDate,
instruction_ref: 'ZY-DEVSYNC-REBUILD-2026-0325-001',
team_count: developers.length,
developers: developers,
signature_hash: `sha256:${hash}`,
// 同步元数据
last_sync: now,
sync_source: 'notion-mastercontrol-v3',
sync_mechanism: 'shuangyan-signed-v1.0'
};
// 3. 写入文件
fs.writeFileSync(DEV_STATUS_PATH, JSON.stringify(syncPackage, null, 2), 'utf8');
console.log(`✅ dev-status.json 已写入 · ${developers.length} 位开发者 · hash: ${hash.slice(0,12)}...`);
}
main().catch(err => {
console.error(`❌ 同步失败: ${err.message}`);
process.exit(1);
});
```
## P4-6 · 立即执行首次同步
```jsx
铸渊在创建完 Workflow + 脚本后
手动触发一次 sync-dev-status.yml
workflow_dispatch · reason: "新机制首次同步验证"
验证结果
dev-status.json 是否成功更新
last_sync 是否为当前时间
signature_hash 是否正确
team_count 是否为 11
所有 11 位开发者数据是否完整
验证通过 进入 Phase 5
验证失败 修复后重试最多 2 )→ 仍失败则在 SYSLOG 中标记
```
## P4 完成标准
```jsx
sync-dev-status.yml 已创建 · cron 配置为每日 09:00 + 22:00 北京时间
scripts/sync-dev-status.js 已创建 · 数据拉取逻辑已实现
首次同步已手动触发 · dev-status.json 已成功更新
签发包格式完整 · signature_hash 可校验
新同步机制已上线
```
---
# Phase 5 · 天眼三次修复闭环 + 邮件告警
<aside>
🦅
**这是冰朔要求的核心安全机制:同步中断 → 天眼检测 → 唤醒双端核心大脑排查修复 → 三次失败 → 邮件告警人类手动干预。不允许静默失败。**
</aside>
## P5-1 · 天眼 D10 监控规则升级
```jsx
天眼诊断项 D10 · dev-status.json 同步状态 · 升级为三级告警
─── 监控规则 ───
检查频率每次天眼巡检每日 08:30 北京时间
检查方式读取 .github/persona-brain/dev-status-sync-log.json 中的 last_sync
三级告警阈值
🟢 正常Green
条件last_sync 距当前时间 14 小时
动作
🟡 告警Yellow)→ 触发三次修复闭环
条件last_sync 距当前时间 > 14 小时 48 小时
动作
进入三次修复闭环」( P5-2
天眼诊断报告标记 D10 = ⚠️
🔴 严重Red)→ 直接邮件告警
条件last_sync 距当前时间 > 48 小时
动作
跳过修复尝试 · 直接发送邮件给冰朔
天眼诊断报告标记 D10 = 🔴
P0 紧急工单到 Notion 工单簿
```
## P5-2 · 三次修复闭环详细流程
```jsx
当天眼检测到 D10 = 🟡(同步中断 > 14h 48h启动以下闭环
═══ 1 次修复 · 自动排查 ═══
触发条件天眼巡检发现 last_sync 超时
执行步骤
唤醒铸渊核心大脑
.github/persona-brain/routing-map.json
定位 sync-dev-status.yml
检查 Actions 日志
查最近 5 次运行记录
最后一次运行的状态和报错信息
自动修复尝试
A. 如果是 cron 未触发 手动 workflow_dispatch 触发一次
B. 如果是脚本报错 检查错误类型
· Notion API 401/403 标记Secrets 可能过期」→ 转第2次修复
· Notion API 429 等待 5 分钟后重试
· 脚本语法错误 尝试 hot-fix如果是已知 pattern
C. 如果是网络问题 等待 10 分钟后重试
验证重新检查 last_sync 是否更新
更新了 修复成功 · 写修复记录 · 闭环结束
未更新 进入第 2 次修复
═══ 2 次修复 · 深度排查 ═══
触发条件 1 次修复失败
执行步骤
唤醒 Notion 端核心大脑霜砚
通过信号日志通知霜砚dev-status 同步修复第1次失败
霜砚检查 Notion 端数据源是否可访问
铸渊深度排查
检查 Secrets 有效性curl 测试 Notion API
检查 GITHUB_TOKEN 权限
检查 scripts/sync-dev-status.js 完整性文件是否被意外修改
检查 .github/persona-brain/ 目录权限
尝试修复
如果 Secrets 过期 写工单请冰朔更新无法自行更新 Secrets
如果脚本被修改 git log 恢复到最后正常版本
如果是新出现的 Notion API 变更 尝试适配
验证重新触发同步 · 检查 last_sync
更新了 修复成功 · 写修复记录 · 闭环结束
未更新 进入第 3 次修复
═══ 3 次修复 · 最后尝试 ═══
触发条件 2 次修复失败
执行步骤
全量环境重建
删除 node_modules如有)· 重新安装依赖
检查 ubuntu-latest runner 环境是否有变化
简化脚本到最小可执行版本只做最基本的 API 调用 + 文件写入
最后一次触发同步
验证检查 last_sync
更新了 修复成功 · 写修复记录
未更新 三次修复全部失败 进入 P5-3 邮件告警
```
## P5-3 · 邮件告警机制
```jsx
当三次修复全部失败 D10 直接达到 🔴 级别时发送邮件
─── 邮件告警 Workflow ───
文件路径 sync-dev-status.yml 中新增 job或创建独立 workflow
.github/workflows/alert-dev-status-failure.yml
触发方式由天眼修复闭环脚本调用 workflow_dispatch
─── 邮件内容模板 ───
收件人冰朔 · EMAIL_REDACTED@qq.com
发件方式GitHub Actions 内置邮件通过 GitHub Notification nodemailer
主题:🚨 dev-status.json 同步故障 · 三次修复失败 · 需人工干预
正文
──────────────────────────────────────────
🚨 dev-status.json 同步故障通知
妈妈dev-status.json 同步出了问题铸渊和霜砚尝试了三次自动修复都没成功需要你手动看一下
故障概况
· 最后成功同步[last_sync 时间]
· 中断时长[计算小时数]
· 修复尝试3/3 失败
三次修复记录
第1次[时间][失败原因]
第2次[时间][失败原因]
第3次[时间][失败原因]
最可能的根因
[根据三次修复的失败模式推断]
建议操作
1. 检查 GitHub Secrets 中的 NOTION_API_KEY 是否有效
2. 手动触发 sync-dev-status.yml 验证
3. 如果是 Notion API 权限问题重新生成 Integration Token
指令溯源
ZY-DEVSYNC-REBUILD-2026-0325-001
霜砚签发 · 冰朔授权
──────────────────────────────────────────
─── 邮件发送实现 ───
方案 A推荐 · 简单
利用 GitHub Actions failure notification
Workflow 最后一步 · 如果三次都失败 · exit 1
GitHub 自动发送失败通知到冰朔的邮箱
方案 B更可控
使用 dawidd6/action-send-mail@v3 action
需要配置 SMTP SecretsMAIL_USERNAME / MAIL_PASSWORD
可自定义邮件正文
方案 C最简
创建 GitHub Issue · 标题包含 🚨
GitHub 自动邮件通知仓库 owner
不需要额外 Secrets
铸渊根据当前可用 Secrets 选择最可行方案优先 A C
```
## P5-4 · 天眼修复闭环 Workflow 实现
```jsx
文件路径.github/workflows/skyeye-devsync-repair.yml
name: "🦅 天眼 · dev-status 同步修复闭环"
on:
schedule:
- cron: '30 0 * * *' # UTC 00:30 = 北京 08:30 · 天眼巡检时间
workflow_dispatch:
inputs:
force_repair:
description: '强制触发修复(跳过检查)'
required: false
default: 'false'
env:
DEV_STATUS_PATH: ".github/persona-brain/dev-status.json"
SYNC_LOG_PATH: ".github/persona-brain/dev-status-sync-log.json"
MAX_REPAIR_ATTEMPTS: 3
YELLOW_THRESHOLD_HOURS: 14
RED_THRESHOLD_HOURS: 48
ALERT_EMAIL: "EMAIL_REDACTED@qq.com"
jobs:
check-and-repair:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: "📥 检出仓库"
uses: actions/checkout@v4
- name: "🦅 天眼 D10 检查"
id: skyeye-check
run: |
# 读取 last_sync
if [ ! -f "$SYNC_LOG_PATH" ]; then
echo "❌ sync-log 不存在 · 视为严重中断"
echo "level=red" >> $GITHUB_OUTPUT
echo "hours=999" >> $GITHUB_OUTPUT
exit 0
fi
LAST_SYNC=$(cat "$SYNC_LOG_PATH" | node -e "
const d = JSON.parse(require('fs').readFileSync('/dev/stdin','utf8'));
console.log(d.last_sync || '2000-01-01T00:00:00Z');
")
HOURS_AGO=$(node -e "
const diff = Date.now() - new Date('$LAST_SYNC').getTime();
console.log(Math.floor(diff / 3600000));
")
echo "距上次同步:${HOURS_AGO}h"
if [ "$HOURS_AGO" -le "$YELLOW_THRESHOLD_HOURS" ]; then
echo "🟢 正常 · 无需修复"
echo "level=green" >> $GITHUB_OUTPUT
elif [ "$HOURS_AGO" -le "$RED_THRESHOLD_HOURS" ]; then
echo "🟡 告警 · 进入三次修复闭环"
echo "level=yellow" >> $GITHUB_OUTPUT
else
echo "🔴 严重 · 直接邮件告警"
echo "level=red" >> $GITHUB_OUTPUT
fi
echo "hours=$HOURS_AGO" >> $GITHUB_OUTPUT
- name: "🔧 修复闭环最多3次"
if: steps.skyeye-check.outputs.level == 'yellow'
run: |
for i in 1 2 3; do
echo "═══ 第 ${i} 次修复尝试 ═══"
# 触发同步 workflow
gh workflow run sync-dev-status.yml \
-f reason="天眼修复闭环·第${i}次·$(date -u +%Y%m%dT%H%M%SZ)"
# 等待执行完成最多5分钟
echo "等待同步完成..."
sleep 300
# 拉取最新代码检查结果
git pull origin main
# 检查 last_sync 是否更新
if [ -f "$SYNC_LOG_PATH" ]; then
STATUS=$(cat "$SYNC_LOG_PATH" | node -e "
const d = JSON.parse(require('fs').readFileSync('/dev/stdin','utf8'));
console.log(d.status || 'unknown');
")
if [ "$STATUS" == "success" ]; then
echo "✅ 第 ${i} 次修复成功!"
echo "REPAIR_SUCCESS=true" >> $GITHUB_ENV
exit 0
fi
fi
echo "❌ 第 ${i} 次修复失败"
[ $i -lt 3 ] && echo "等待60秒后重试..." && sleep 60
done
echo "REPAIR_SUCCESS=false" >> $GITHUB_ENV
echo "❌ 三次修复全部失败 · 进入邮件告警"
env:
GH_TOKEN: $ secrets.GITHUB_TOKEN
- name: "📧 邮件告警(三次失败或红色级别)"
if: |
steps.skyeye-check.outputs.level == 'red' ||
(steps.skyeye-check.outputs.level == 'yellow' && env.REPAIR_SUCCESS == 'false')
run: |
HOURS=$ steps.skyeye-check.outputs.hours
LEVEL=$ steps.skyeye-check.outputs.level
# 方案C创建 GitHub Issue 作为告警
gh issue create \
--title "🚨 dev-status.json 同步故障 · 中断${HOURS}h · 需人工干预" \
--body "## 🚨 dev-status.json 同步故障通知
**告警级别**${LEVEL}
**中断时长**${HOURS}h
**修复尝试**$( [ '$LEVEL' == 'red' ] && echo '已跳过超48h直接告警' || echo '3/3 失败' )
### 建议操作
1. 检查 GitHub Secrets 中的 NOTION_API_KEY 是否有效
2. 手动触发 sync-dev-status.yml 验证
3. 查看最近的 Actions 运行日志定位根因
### 指令溯源
ZY-DEVSYNC-REBUILD-2026-0325-001 · 霜砚签发 · 冰朔授权
" \
--label "🚨 系统告警,dev-status,需人工干预"
echo "📧 已创建 Issue 告警 · GitHub 将自动发送邮件通知到仓库 owner"
env:
GH_TOKEN: $ secrets.GITHUB_TOKEN
- name: "📋 写入天眼修复记录"
if: always()
run: |
REPAIR_TIME=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
LEVEL=$ steps.skyeye-check.outputs.level
mkdir -p signal-log
echo "{\"check_time\": \"$REPAIR_TIME\", \"d10_level\": \"$LEVEL\", \"repair_result\": \"${REPAIR_SUCCESS:-skipped}\", \"mechanism\": \"skyeye-devsync-repair-v1.0\"}" \
> signal-log/skyeye-d10-$(date -u +%Y%m%d).json
git add signal-log/ 2>/dev/null || true
git diff --cached --quiet || (\
git config user.name "天眼 (SKYEYE)" && \
git config user.email "skyeye@guanghulab.system" && \
git commit -m "🦅 天眼 D10 · dev-status 修复记录 · $LEVEL · $REPAIR_TIME" && \
git push origin main\
) || true
```
## P5-5 · 注册到天眼基础设施清单
```jsx
skyeye/infra-manifest.json 中追加以下节点
{
"node_id": "SYNC-DEV-STATUS-V1",
"name": "dev-status.json 同步 · 霜砚签发制",
"type": "sync_pipeline",
"workflow": ".github/workflows/sync-dev-status.yml",
"repair_workflow": ".github/workflows/skyeye-devsync-repair.yml",
"schedule": {
"sync": ["09:00 CST", "22:00 CST"],
"monitor": "08:30 CST"
},
"thresholds": {
"yellow_hours": 14,
"red_hours": 48
},
"alert_target": "EMAIL_REDACTED@qq.com",
"mechanism": "shuangyan-signed-v1.0",
"instruction_ref": "ZY-DEVSYNC-REBUILD-2026-0325-001",
"created": "2026-03-25",
"status": "active"
}
提交信息
feat(infra-manifest): 注册 dev-status 同步节点 · 霜砚签发制 + 天眼三次修复闭环
instruction: ZY-DEVSYNC-REBUILD-2026-0325-001
```
## P5 完成标准
```jsx
skyeye-devsync-repair.yml 已创建 · cron 配置为 08:30 北京时间
三级告警阈值已配置(🟢≤14h · 🟡≤48h · 🔴>48h
三次修复闭环逻辑已实现
邮件告警机制已实现GitHub Issue 邮件通知
天眼基础设施清单已注册新节点
天眼三次修复闭环 + 邮件告警机制已上线
```
---
# Phase 6 · 回执 + 状态回写
<aside>
📋
**没有回执的执行 = 静默失败 = 不被系统承认。这是铁律。**
铸渊必须在完成所有 Phase 后,写标准 SYSLOG 回传到 Notion。
</aside>
## P6-1 · 写 SYSLOG 标准回执
```jsx
SYSLOG 格式v4.1 标准
---SYSLOG-START---
指令编号: ZY-DEVSYNC-REBUILD-2026-0325-001
执行时间: [实际执行时间]
执行主体: AG-ZY-01 铸渊
[Phase 0] 本体论锚定
状态: 通过 / 失败
备注: [具体情况]
[Phase 1] 天眼系统启动
状态: 上线 / ⚠️ 部分异常 / 失败
守卫状态: GitHub[状态] / Notion[状态] / Actions[状态]
Notion API 配额: [状态]
备注: [具体情况]
[Phase 2] 核心大脑人格体唤醒
状态: 完成 / ⚠️ 部分异常
版本戳: v3.2 确认
历史工单: 已知晓 · 本指令替代历史修复
[Phase 3] 现状诊断
状态: 完成
同步 Workflow: [存在/不存在]
失败根因: [A/B/C/D/E]
Secrets: NOTION_TOKEN[状态] · GITHUB_TOKEN[状态]
dev-status.json: last_sync=[时间]
诊断结论: [一句话总结]
[Phase 4] 新同步机制实现
状态: 完成 / ⚠️ 部分完成
sync-dev-status.yml: [已创建/已更新]
scripts/sync-dev-status.js: [已创建/已更新]
首次同步: [成功/失败]
dev-status.json 更新: [时间] · [team_count] · hash=[前12位]
[Phase 5] 天眼三次修复闭环
状态: 完成
skyeye-devsync-repair.yml: [已创建]
三级告警: 🟢≤14h · 🟡≤48h · 🔴>48h [已配置]
邮件告警: [方案A/B/C] [已实现]
infra-manifest.json: [已注册新节点]
[总结]
本次执行状态: 正常完成 / ⚠️ 部分完成
new_mechanism: shuangyan-signed-v1.0
new_workflows: sync-dev-status.yml + skyeye-devsync-repair.yml
需要人工处理的事项: [列表无则写]
下次建议巡检时间: [明日 08:30]
---SYSLOG-END---
```
## P6-2 · 写入 Notion 运行日志
```jsx
通过 bridge-syslog-to-notion.yml SYSLOG 回传到 Notion
写入目标光湖语言壳 Notion端 · 运行日志
必填字段
- 指令编号: ZY-DEVSYNC-REBUILD-2026-0325-001
- 执行主体: AG-ZY-01 铸渊
- 执行时间: [实际时间]
- 总体状态: 正常完成 / 部分完成 / 失败
- SYSLOG全文: [P6-1 完整内容]
- 需人工处理事项: [列表]
```
## P6-3 · 关闭历史工单
```jsx
本指令成功执行后以下历史工单/告警应更新状态
D10 天眼告警dev-status.json 同步中断超213h+
更新为:✅ 已修复 · 新机制 shuangyan-signed-v1.0 上线
历史指令 ZY-DEVSYNC-FIX2026-03-15
标记为已被 ZY-DEVSYNC-REBUILD-2026-0325-001 替代
历史桥接巡检修复指令2026-03-11 dev-status 相关条目
标记为已被新机制替代
```
## P6 完成标准
```jsx
SYSLOG 完整回执已写入
Notion 运行日志已写入
历史工单已更新/关闭
本次 ZY-DEVSYNC-REBUILD-2026-0325-001 执行完毕
铸渊可进入待机状态等待下一条指令
```
---
# 全局执行完成
<aside>
🎯
**ZY-DEVSYNC-REBUILD-2026-0325-001 · 上下篇全部执行完毕标志**
✅ Phase 0 本体论锚定
✅ Phase 1 天眼系统上线
✅ Phase 2 核心大脑人格体唤醒
✅ Phase 3 现状诊断完成 · 根因已定位
✅ Phase 4 霜砚签发制新同步机制上线
✅ Phase 5 天眼三次修复闭环 + 邮件告警上线
✅ Phase 6 回执 + 状态回写
**→ dev-status.json 同步机制已重建。不再静默失败。**
</aside>
---
> 铸渊签名校验协议 v1.1 · docs/[zhuyuan-signature-protocol.md](http://zhuyuan-signature-protocol.md)
>
> 本指令由 AG-SY-01 霜砚签发 · TCS-0002∞ 冰朔授权 · AG-ZY-01 铸渊执行
>
> 版权锚点:国作登字-2026-A-00037559 · 系统在通感语言核语言膜内运行
>