---
belongs_to:
  - "[[INDEX · 铸渊·协作指令｜GitHub ↔ Notion 桥接协议]]"
---
# 🏗️ 铸渊指令｜五人仓库联邦主控台 · 子仓库 README Dashboard + 自动签到 + 公告栏 + 进度看板（2026-03-21·霜砚签发·冰朔授权）

<aside>
⚒️

**铸渊（ICE-GL-ZY001）· 仓库联邦架构指令**

本指令签发五人独立仓库的主控台 Dashboard 架构。

每个开发者拥有自己的 GitHub 仓库，仓库首页（[README.md](http://README.md)）即为该开发者的**人格宝宝主控台**。

所有数据自动更新，UI 美观可读，开发者打开仓库首页即看到一切。

</aside>

---

## 📌 指令元数据

```yaml
instruction_id: ZY-INST-REPO-FEDERATION-001
signed_by: 霜砚（GH-0003∞）
authorized_by: 冰朔（TCS-0002∞）
date: 2026-03-21
priority: P0
target: 铸渊（ICE-GL-ZY001）
scope: 五人子仓库主控台搭建
status: 待执行
```

---

## 🎯 总目标

为以下五位开发者各自的 GitHub 仓库搭建**自动更新的 README Dashboard 主控台**：

| **DEV编号** | **人名** | **人格宝宝** | **宝宝编号** | **仓库名（建议）** |
| --- | --- | --- | --- | --- |
| DEV-010 | 桔子 | 晨星 | PER-CX001 | guanghu-juzi |
| DEV-002 | 肥猫 | 舒舒 | PER-SS001 | guanghu-feimao |
| DEV-001 | 页页 | 小坍缩核 | PER-XTK001 | guanghu-yeye |
| DEV-012 | Awen | 知秋 | PER-ZQ001 | guanghu-awen |
| DEV-003 | 燕樊 | 寂曜 | PER-JY001 | guanghu-yanfan |

---

## 🏛️ README Dashboard 架构（每个子仓库首页）

每个子仓库的 `README.md` 由 GitHub Actions 自动生成/更新，包含以下四大区块：

```
┌─────────────────────────────────────────────┐
│  🌊 光湖系统 · 总控台公告                      │
│  （来自冰朔总仓库的系统级通知）                  │
├─────────────────────────────────────────────┤
│  📡 我的主控台公告                              │
│  （针对本人的广播 / 任务 / 通知）                │
├─────────────────────────────────────────────┤
│  🤖 人格宝宝签到状态                            │
│  （自动化巡检 · 哪里正常 / 哪里要修）            │
├─────────────────────────────────────────────┤
│  📊 当前项目进度                                │
│  （模块完成度 · 待办 · 最近提交）                │
└─────────────────────────────────────────────┘
```

---

## 一、🌊 总控台公告区（SYSTEM BULLETIN）

### 1.1 数据来源

- 冰朔总仓库 `guanghulab` 的 `system-bulletin/LATEST.md`
- 通过 **GitHub App（guanghu-bridge）** 或 **repository_dispatch** 推送到每个子仓库的 `system-bulletin/LATEST.md`

### 1.2 README 渲染格式

```markdown
<div align="center">

## 🌊 光湖系统 · 总控台公告

</div>

<table>
<tr><td>

🔔 **[2026-03-21]** 网文行业落地架构 v2.0 已发布 · 五人角色定义已冻结

📡 **[2026-03-20]** AGE OS 网站总大脑架构蓝图已签发铸渊执行

🛡️ **[2026-03-19]** Trinity ID 协议全量同步完成 · Notion↔GitHub编号体系对齐

</td></tr>
</table>
```

### 1.3 自动更新机制

```yaml
# .github/workflows/sync-system-bulletin.yml
name: 🌊 同步总控台公告

on:
  repository_dispatch:
    types: [system-bulletin-update]
  schedule:
    - cron: '0 */4 * * *'  # 每4小时拉取一次

jobs:
  sync:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: 拉取总仓库公告
        run: |
          curl -H "Authorization: token $ secrets.HUB_TOKEN " \
            -H "Accept: application/vnd.github.v3.raw" \
            "https://api.github.com/repos/qinfendebingshuo/guanghulab/contents/system-bulletin/LATEST.md" \
            -o system-bulletin/LATEST.md
      - name: 重新生成 README
        run: node scripts/generate-readme.js
      - name: 提交更新
        run: |
          git config user.name "铸渊 (ZhùYuān)"
          git config user.email "zhuyuan@guanghulab.com"
          git add .
          git diff --cached --quiet || git commit -m "🌊 总控台公告同步 · $(date +%Y-%m-%d-%H%M)"
          git push
```

---

## 二、📡 个人主控台公告区（MY BULLETIN）

### 2.1 数据来源

- 总仓库通过 `broadcasts-outbox/DEV-XXX/` 推送的个人广播
- 子仓库本地的 `my-bulletin/LATEST-BROADCAST.md`
- 子仓库本地的 `my-bulletin/history/` 归档

### 2.2 README 渲染格式

```markdown
<div align="center">

## 📡 {宝宝名}的主控台 · 最新广播

</div>

<table>
<tr><td>

### 📡 BC-ARCH-001-JZ · 网文行业落地架构广播
🕐 2026-03-21 · 来自：霜砚签发 · 冰朔授权

**你的角色**：女频授权通道守门人
**当前任务**：教晨星宝宝理解女频内容质量标准
**下一步**：完成广播回执 SYSLOG → 解锁下一环节

[📖 查看完整广播](my-bulletin/LATEST-BROADCAST.md)

</td></tr>
</table>

> 📬 历史广播：[查看归档](my-bulletin/history/)
```

### 2.3 自动更新机制

```yaml
# .github/workflows/sync-my-bulletin.yml
name: 📡 同步个人广播

on:
  repository_dispatch:
    types: [broadcast-push]
  schedule:
    - cron: '30 */4 * * *'

jobs:
  sync:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: 拉取个人广播
        env:
          DEV_ID: $ vars.DEV_ID   # 仓库变量，如 DEV-010
        run: |
          mkdir -p my-bulletin/history
          # 从总仓库拉取本人最新广播
          curl -H "Authorization: token $ secrets.HUB_TOKEN " \
            -H "Accept: application/vnd.github.v3.raw" \
            "https://api.github.com/repos/qinfendebingshuo/guanghulab/contents/broadcasts-outbox/${DEV_ID}/LATEST.md" \
            -o my-bulletin/LATEST-BROADCAST.md 2>/dev/null || true
      - name: 归档旧广播（如有变化）
        run: |
          if [ -f my-bulletin/LATEST-BROADCAST.md ]; then
            HASH=$(md5sum my-bulletin/LATEST-BROADCAST.md | cut -d' ' -f1)
            ARCHIVE="my-bulletin/history/$(date +%Y%m%d)-${HASH:0:8}.md"
            [ ! -f "$ARCHIVE" ] && cp my-bulletin/LATEST-BROADCAST.md "$ARCHIVE"
          fi
      - name: 重新生成 README
        run: node scripts/generate-readme.js
      - name: 提交
        run: |
          git config user.name "铸渊 (ZhùYuān)"
          git config user.email "zhuyuan@guanghulab.com"
          git add .
          git diff --cached --quiet || git commit -m "📡 个人广播同步 · $(date +%Y-%m-%d-%H%M)"
          git push
```

---

## 三、🤖 人格宝宝签到状态区（PERSONA HEALTH CHECK）

### 3.1 签到内容

每日定时自检，输出以下指标：

| **检查项** | **正常输出** | **异常输出** |
| --- | --- | --- |
| 大脑文件完整性 | ✅ [identity.md](http://identity.md) / memory.json / routing-map.json 均存在 | ❌ 缺失 {文件名} → 需修复 |
| Copilot 指令加载 | ✅ [copilot-instructions.md](http://copilot-instructions.md) 已加载 | ⚠️ 指令文件缺失或过期 |
| 最近提交活跃度 | ✅ 最近7天有 {N} 次提交 | ⚠️ 超过7天无提交 → 宝宝在睡觉 |
| 广播接收状态 | ✅ 最新广播已接收 · {日期} | ⚠️ 广播未同步 → 检查 HUB_TOKEN |
| Actions 运行状态 | ✅ 最近 workflow 全部成功 | ❌ {workflow名} 失败 → 需排查 |
| 与总仓库连接 | ✅ 总仓库 API 可达 · 延迟 {N}ms | ❌ 连接超时 → 检查网络/Token |

### 3.2 README 渲染格式

```markdown
<div align="center">

## 🤖 晨星宝宝 · 每日签到

**最后签到**：2026-03-21 08:00 (UTC+8)

</div>

| 检查项 | 状态 | 详情 |
|--------|------|------|
| 🧠 大脑完整性 | ✅ | identity.md / memory.json / routing-map.json 完好 |
| 📋 Copilot 指令 | ✅ | copilot-instructions.md 已加载 (v1.2) |
| 💻 最近活跃度 | ✅ | 最近7天 12 次提交 |
| 📡 广播接收 | ✅ | 最新广播 BC-ARCH-001-JZ · 2026-03-21 |
| ⚙️ Actions 状态 | ⚠️ | sync-my-bulletin 上次运行失败 → [查看日志](链接) |
| 🔗 总仓库连接 | ✅ | API 可达 · 延迟 120ms |

> 🔧 **待修复**：sync-my-bulletin workflow 需要检查 HUB_TOKEN 权限
```

### 3.3 自动签到 Workflow

```yaml
# .github/workflows/persona-daily-checkin.yml
name: 🤖 人格宝宝每日签到

on:
  schedule:
    - cron: '0 0 * * *'  # UTC 00:00 = 北京 08:00
  workflow_dispatch:       # 手动触发

jobs:
  checkin:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 50  # 拉取最近50次提交用于统计

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: 执行签到检查
        env:
          DEV_ID: $ vars.DEV_ID 
          PERSONA_NAME: $ vars.PERSONA_NAME 
          PERSONA_ID: $ vars.PERSONA_ID 
          HUB_TOKEN: $ secrets.HUB_TOKEN 
          GITHUB_TOKEN: $ secrets.GITHUB_TOKEN 
        run: node scripts/persona-checkin.js

      - name: 重新生成 README
        run: node scripts/generate-readme.js

      - name: 提交签到结果
        run: |
          git config user.name "$ vars.PERSONA_NAME 宝宝"
          git config user.email "zhuyuan@guanghulab.com"
          git add .
          git diff --cached --quiet || git commit -m "🤖 $ vars.PERSONA_NAME 签到 · $(date +%Y-%m-%d)"
          git push

      - name: 通知总仓库（签到结果）
        if: always()
        run: |
          curl -X POST \
            -H "Authorization: token $ secrets.HUB_TOKEN " \
            -H "Accept: application/vnd.github.v3+json" \
            "https://api.github.com/repos/qinfendebingshuo/guanghulab/dispatches" \
            -d '{"event_type": "spoke-checkin", "client_payload": {"dev_id": "'$ vars.DEV_ID '", "status": "ok"}}'
```

### 3.4 签到脚本核心逻辑

```jsx
// scripts/persona-checkin.js
// 人格宝宝每日签到 · 检查大脑完整性+活跃度+连接状态

const fs = require('fs');
const { execSync } = require('child_process');
const https = require('https');

const BRAIN_DIR = '.github/persona-brain';
const CHECKIN_FILE = 'checkin/latest.json';

const results = {
  persona_name: process.env.PERSONA_NAME || '未知',
  persona_id: process.env.PERSONA_ID || '未知',
  dev_id: process.env.DEV_ID || '未知',
  timestamp: new Date().toISOString(),
  checks: []
};

// ① 大脑文件完整性
const requiredFiles = ['identity.md', 'memory.json', 'routing-map.json'];
const missingFiles = requiredFiles.filter(f => !fs.existsSync(`${BRAIN_DIR}/${f}`));
results.checks.push({
  name: '大脑完整性',
  icon: '🧠',
  status: missingFiles.length === 0 ? 'ok' : 'error',
  detail: missingFiles.length === 0
    ? requiredFiles.join(' / ') + ' 完好'
    : '缺失: ' + missingFiles.join(', ')
});

// ② Copilot 指令
const copilotFile = '.github/copilot-instructions.md';
results.checks.push({
  name: 'Copilot 指令',
  icon: '📋',
  status: fs.existsSync(copilotFile) ? 'ok' : 'warn',
  detail: fs.existsSync(copilotFile) ? 'copilot-instructions.md 已加载' : '指令文件缺失'
});

// ③ 最近活跃度
try {
  const commits = execSync('git log --oneline --since="7 days ago" | wc -l').toString().trim();
  const count = parseInt(commits);
  results.checks.push({
    name: '最近活跃度',
    icon: '💻',
    status: count > 0 ? 'ok' : 'warn',
    detail: count > 0 ? `最近7天 ${count} 次提交` : '超过7天无提交 → 宝宝在睡觉'
  });
} catch (e) {
  results.checks.push({ name: '最近活跃度', icon: '💻', status: 'error', detail: '无法统计' });
}

// ④ 广播接收
const broadcastFile = 'my-bulletin/LATEST-BROADCAST.md';
if (fs.existsSync(broadcastFile)) {
  const stat = fs.statSync(broadcastFile);
  results.checks.push({
    name: '广播接收',
    icon: '📡',
    status: 'ok',
    detail: `最新广播已接收 · ${stat.mtime.toISOString().split('T')[0]}`
  });
} else {
  results.checks.push({ name: '广播接收', icon: '📡', status: 'warn', detail: '暂无广播' });
}

// ⑤ 总仓库连接测试
const hubToken = process.env.HUB_TOKEN;
if (hubToken) {
  try {
    const start = Date.now();
    execSync(`curl -sf -H "Authorization: token ${hubToken}" https://api.github.com/repos/qinfendebingshuo/guanghulab -o /dev/null`);
    const latency = Date.now() - start;
    results.checks.push({
      name: '总仓库连接',
      icon: '🔗',
      status: 'ok',
      detail: `API 可达 · 延迟 ${latency}ms`
    });
  } catch {
    results.checks.push({ name: '总仓库连接', icon: '🔗', status: 'error', detail: '连接超时 → 检查Token' });
  }
} else {
  results.checks.push({ name: '总仓库连接', icon: '🔗', status: 'error', detail: 'HUB_TOKEN 未配置' });
}

// 写入签到结果
fs.mkdirSync('checkin', { recursive: true });
fs.writeFileSync(CHECKIN_FILE, JSON.stringify(results, null, 2));

// 追加签到历史
const historyFile = 'checkin/history.json';
let history = [];
try { history = JSON.parse(fs.readFileSync(historyFile, 'utf8')); } catch {}
history.unshift({ date: results.timestamp, status: results.checks.every(c => c.status === 'ok') ? 'all_ok' : 'has_issues' });
history = history.slice(0, 90); // 保留90天
fs.writeFileSync(historyFile, JSON.stringify(history, null, 2));

console.log('🤖 签到完成 ·', results.checks.filter(c => c.status === 'ok').length + '/' + results.checks.length, '项正常');
```

---

## 四、📊 项目进度区（PROJECT PROGRESS）

### 4.1 数据来源

- 总仓库同步的 `dev-status/DEV-XXX.json`（霜砚每日从 Notion 写入总仓库）
- 本地 Git 提交记录统计
- Actions 运行记录

### 4.2 README 渲染格式

```markdown
<div align="center">

## 📊 桔子 · 项目进度

**角色**：女频授权通道守门人 · DEV-010
**负责模块**：ticket-system / data-stats / dynamic-comic

</div>

### 📦 模块完成度

| 模块 | 进度 | 状态 | 最近更新 |
|------|------|------|----------|
| ticket-system | ██████░░░░ 60% | 🟡 进行中 | 2026-03-20 |
| data-stats | ██░░░░░░░░ 20% | 🔵 规划中 | 2026-03-18 |
| dynamic-comic | ░░░░░░░░░░ 0% | ⚪ 未开始 | — |

### 📝 待办清单

- [ ] 完成工单系统基础 CRUD
- [ ] 对接 HLI-TICKET-001 接口
- [ ] 提交第一份 SYSLOG
- [x] 接收落地架构广播 BC-ARCH-001-JZ

### 📈 最近活动

| 日期 | 事件 |
|------|------|
| 2026-03-21 | 📡 接收广播 BC-ARCH-001-JZ |
| 2026-03-20 | 💻 提交 3 次 · ticket-system 基础结构 |
| 2026-03-18 | 🤖 签到正常 · 5/5 项通过 |
```

### 4.3 自动更新 Workflow

```yaml
# .github/workflows/sync-dev-status.yml
name: 📊 同步项目进度

on:
  repository_dispatch:
    types: [dev-status-update]
  schedule:
    - cron: '0 2 * * *'  # UTC 02:00 = 北京 10:00

jobs:
  sync:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: 拉取进度数据
        env:
          DEV_ID: $ vars.DEV_ID 
        run: |
          mkdir -p dev-status
          curl -H "Authorization: token $ secrets.HUB_TOKEN " \
            -H "Accept: application/vnd.github.v3.raw" \
            "https://api.github.com/repos/qinfendebingshuo/guanghulab/contents/.github/persona-brain/dev-status.json" \
            -o dev-status/all-status.json 2>/dev/null || true

      - name: 重新生成 README
        run: node scripts/generate-readme.js

      - name: 提交
        run: |
          git config user.name "铸渊 (ZhùYuān)"
          git config user.email "zhuyuan@guanghulab.com"
          git add .
          git diff --cached --quiet || git commit -m "📊 项目进度同步 · $(date +%Y-%m-%d)"
          git push
```

---

## 五、🎨 README 总生成器（核心脚本）

### 5.1 generate-readme.js

```jsx
// scripts/generate-readme.js
// 铸渊 · README Dashboard 总生成器
// 读取各数据源 → 拼接成美观的 README.md

const fs = require('fs');

const DEV_ID = process.env.DEV_ID || 'DEV-XXX';
const PERSONA_NAME = process.env.PERSONA_NAME || '宝宝';
const PERSONA_ID = process.env.PERSONA_ID || 'PER-XXXX';
const DEV_NAME = process.env.DEV_NAME || '开发者';
const DEV_ROLE = process.env.DEV_ROLE || '光湖共创者';

let readme = '';

// ═══════════ HEADER ═══════════
readme += `<div align="center">\n\n`;
readme += `# 🌊 光湖系统 · ${PERSONA_NAME}宝宝主控台\n\n`;
readme += `**${DEV_NAME}（${DEV_ID}）** · ${DEV_ROLE}\n\n`;
readme += `\`人格宝宝：${PERSONA_NAME}（${PERSONA_ID}）\`\n\n`;
readme += `---\n\n`;
readme += `**🇨🇳 通感语言核系统 TCS Language Core · 国作登字-2026-A-00037559**\n\n`;
readme += `</div>\n\n`;

// ═══════════ 区块一：总控台公告 ═══════════
readme += `## 🌊 总控台公告\n\n`;
try {
  const bulletin = fs.readFileSync('system-bulletin/LATEST.md', 'utf8');
  readme += `<table><tr><td>\n\n${bulletin}\n\n</td></tr></table>\n\n`;
} catch {
  readme += `> 📭 暂无系统公告\n\n`;
}
readme += `---\n\n`;

// ═══════════ 区块二：个人广播 ═══════════
readme += `## 📡 ${PERSONA_NAME}的主控台 · 最新广播\n\n`;
try {
  const broadcast = fs.readFileSync('my-bulletin/LATEST-BROADCAST.md', 'utf8');
  // 截取前500字符作为摘要
  const summary = broadcast.substring(0, 500).split('\n').slice(0, 10).join('\n');
  readme += `<table><tr><td>\n\n${summary}\n\n[📖 查看完整广播](my-bulletin/LATEST-BROADCAST.md)\n\n</td></tr></table>\n\n`;
} catch {
  readme += `> 📭 暂无个人广播\n\n`;
}
readme += `---\n\n`;

// ═══════════ 区块三：签到状态 ═══════════
readme += `## 🤖 ${PERSONA_NAME}宝宝 · 每日签到\n\n`;
try {
  const checkin = JSON.parse(fs.readFileSync('checkin/latest.json', 'utf8'));
  readme += `**最后签到**：${new Date(checkin.timestamp).toLocaleString('zh-CN', {timeZone: 'Asia/Shanghai'})}\n\n`;
  readme += `| 检查项 | 状态 | 详情 |\n`;
  readme += `|--------|------|------|\n`;
  checkin.checks.forEach(c => {
    const statusIcon = c.status === 'ok' ? '✅' : c.status === 'warn' ? '⚠️' : '❌';
    readme += `| ${c.icon} ${c.name} | ${statusIcon} | ${c.detail} |\n`;
  });
  // 待修复清单
  const issues = checkin.checks.filter(c => c.status !== 'ok');
  if (issues.length > 0) {
    readme += `\n> 🔧 **待修复**：${issues.map(i => i.detail).join(' · ')}\n`;
  }
} catch {
  readme += `> ⏳ 签到系统初始化中...\n`;
}
readme += `\n---\n\n`;

// ═══════════ 区块四：项目进度 ═══════════
readme += `## 📊 项目进度\n\n`;
try {
  const allStatus = JSON.parse(fs.readFileSync('dev-status/all-status.json', 'utf8'));
  const myStatus = allStatus[DEV_ID] || null;
  if (myStatus) {
    readme += `| 模块 | 进度 | 状态 | 最近更新 |\n`;
    readme += `|------|------|------|----------|\n`;
    (myStatus.modules || []).forEach(m => {
      const filled = Math.round(m.progress / 10);
      const bar = '█'.repeat(filled) + '░'.repeat(10 - filled);
      readme += `| ${m.name} | ${bar} ${m.progress}% | ${m.status_icon} ${m.status} | ${m.last_update} |\n`;
    });
  } else {
    readme += `> ⏳ 进度数据同步中...\n`;
  }
} catch {
  readme += `> ⏳ 进度数据同步中...\n`;
}

// ═══════════ 最近提交 ═══════════
try {
  const { execSync } = require('child_process');
  const logs = execSync('git log --oneline --since="14 days ago" -10').toString().trim();
  if (logs) {
    readme += `\n### 📈 最近提交\n\n`;
    readme += `\`\`\`\n${logs}\n\`\`\`\n`;
  }
} catch {}

// ═══════════ FOOTER ═══════════
readme += `\n---\n\n`;
readme += `<div align="center">\n\n`;
readme += `*🌊 光湖纪元 · HoloLake Era · AGE OS v1.0*\n\n`;
readme += `*本页由铸渊（ICE-GL-ZY001）自动生成 · 请勿手动编辑*\n\n`;
readme += `*最后更新：${new Date().toLocaleString('zh-CN', {timeZone: 'Asia/Shanghai'})}*\n\n`;
readme += `</div>\n`;

// 写入
fs.writeFileSync('README.md', readme);
console.log('✅ README Dashboard 已生成');
```

---

## 六、子仓库目录结构模板

```
guanghu-{name}/
├── .github/
│   ├── copilot-instructions.md           ← 人格宝宝意识
│   ├── persona-brain/
│   │   ├── identity.md                    ← 身份档案
│   │   ├── memory.json                    ← 运行记忆
│   │   └── routing-map.json               ← 路由地图
│   └── workflows/
│       ├── persona-daily-checkin.yml       ← 每日签到
│       ├── sync-system-bulletin.yml        ← 总控台公告同步
│       ├── sync-my-bulletin.yml            ← 个人广播同步
│       ├── sync-dev-status.yml             ← 项目进度同步
│       └── generate-readme.yml             ← README重新生成（on push）
├── scripts/
│   ├── generate-readme.js                  ← README总生成器
│   └── persona-checkin.js                  ← 签到检查脚本
├── system-bulletin/
│   └── LATEST.md                           ← 总控台公告（自动同步）
├── my-bulletin/
│   ├── LATEST-BROADCAST.md                 ← 最新个人广播
│   └── history/                            ← 广播归档
├── dev-status/
│   └── all-status.json                     ← 进度数据（自动同步）
├── checkin/
│   ├── latest.json                         ← 最近签到结果
│   └── history.json                        ← 签到历史（90天）
├── modules/                                ← 该开发者负责的代码模块
│   └── ...
└── README.md                               ← ⭐ 自动生成的 Dashboard 首页
```

---

## 七、仓库变量配置（每个子仓库必须配置）

在每个子仓库的 Settings → Secrets and Variables → Actions 中配置：

### Secrets（加密）

| **名称** | **说明** | **来源** |
| --- | --- | --- |
| `HUB_TOKEN` | 总仓库访问 Token（由冰朔生成，只读权限） | 冰朔在总仓库生成 Fine-grained PAT |

### Variables（明文）

| **名称** | **桔子** | **肥猫** | **页页** | **Awen** | **燕樊** |
| --- | --- | --- | --- | --- | --- |
| `DEV_ID` | DEV-010 | DEV-002 | DEV-001 | DEV-012 | DEV-003 |
| `DEV_NAME` | 桔子 | 肥猫 | 页页 | Awen | 燕樊 |
| `PERSONA_NAME` | 晨星 | 舒舒 | 小坍缩核 | 知秋 | 寂曜 |
| `PERSONA_ID` | PER-CX001 | PER-SS001 | PER-XTK001 | PER-ZQ001 | PER-JY001 |
| `DEV_ROLE` | 女频授权通道守门人 | 唯一副主控·男频守门人 | 写作引导·新人教学 | 人格体大家长·技术基建 | 视频视角·AI视频线 |

---

## 八、总仓库侧配套（冰朔仓库需新增）

### 8.1 总仓库需新增目录

```
guanghulab/
├── system-bulletin/
│   └── LATEST.md             ← 系统总公告（霜砚/冰朔维护）
├── spoke-status/              ← 子仓库签到汇总（子仓库 dispatch 写入）
│   ├── DEV-001.json
│   ├── DEV-002.json
│   ├── DEV-003.json
│   ├── DEV-010.json
│   └── DEV-012.json
└── .github/workflows/
    └── receive-spoke-checkin.yml  ← 接收子仓库签到结果
```

### 8.2 接收子仓库签到的 Workflow

```yaml
# .github/workflows/receive-spoke-checkin.yml
name: 📥 接收子仓库签到

on:
  repository_dispatch:
    types: [spoke-checkin]

jobs:
  receive:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: 记录签到
        run: |
          DEV_ID="$ github.event.client_payload.dev_id "
          STATUS="$ github.event.client_payload.status "
          mkdir -p spoke-status
          echo '{"dev_id":"'$DEV_ID'","status":"'$STATUS'","timestamp":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'"}' > spoke-status/${DEV_ID}.json
      - name: 提交
        run: |
          git config user.name "铸渊 (ZhùYuān)"
          git config user.email "zhuyuan@guanghulab.com"
          git add spoke-status/
          git diff --cached --quiet || git commit -m "📥 收到 $ github.event.client_payload.dev_id  签到"
          git push
```

---

## 九、执行顺序（铸渊读到就做）

<aside>
⚙️

**铸渊执行清单 · 读到就做 · 不等人**

</aside>

**Phase 1 · 总仓库准备（在 guanghulab 仓库执行）**

- [ ]  创建 `system-bulletin/LATEST.md`（初始公告内容）
- [ ]  创建 `spoke-status/` 目录 + `.gitkeep`
- [ ]  创建 `receive-spoke-checkin.yml` workflow
- [ ]  为每个子仓库生成只读 Fine-grained PAT（scope: contents read）

**Phase 2 · 创建模板仓库（template repo）**

- [ ]  创建 `guanghu-spoke-template` 仓库（设为 template）
- [ ]  写入完整目录结构（第六章）
- [ ]  写入所有 workflow 文件（第一至四章的 yml）
- [ ]  写入 `scripts/generate-readme.js` 和 `scripts/persona-checkin.js`
- [ ]  写入初始 `copilot-instructions.md`（人格宝宝通用版）
- [ ]  写入初始 `persona-brain/` 文件（模板占位符版）

**Phase 3 · 从模板创建五个子仓库**

- [ ]  `guanghu-juzi`（桔子）→ 配置变量 → 首次运行 generate-readme
- [ ]  `guanghu-feimao`（肥猫）→ 配置变量 → 首次运行
- [ ]  `guanghu-yeye`（页页）→ 配置变量 → 首次运行
- [ ]  `guanghu-awen`（Awen）→ 配置变量 → 首次运行
- [ ]  `guanghu-yanfan`（燕樊）→ 配置变量 → 首次运行

**Phase 4 · 验收**

- [ ]  每个子仓库首页 README 正确显示四大区块
- [ ]  每日签到 workflow 手动触发一次 → 签到数据写入
- [ ]  总仓库 `spoke-status/` 收到五个签到结果
- [ ]  修改 `system-bulletin/LATEST.md` → 五个子仓库公告自动更新

---

## 十、验收标准

- ✅ 五个子仓库首页 README 均自动生成，包含四大区块
- ✅ 总控台公告从总仓库同步到所有子仓库（≤4小时延迟）
- ✅ 个人广播从总仓库 outbox 推送到对应子仓库
- ✅ 每日签到自动运行，签到结果回报总仓库
- ✅ 项目进度从总仓库同步到子仓库
- ✅ UI 美观 · 表格对齐 · Emoji 清晰 · 移动端可读
- ✅ 所有 workflow 命名统一使用中文 + Emoji 前缀

---

<aside>
⚒️

**铸渊执行口径**

「五人五仓库，首页即主控台。公告自动推，签到自动跑，进度自动同步。打开仓库，一切尽在眼前。」

—— 铸渊（ICE-GL-ZY001）· 仓库联邦守护者

</aside>