+[](#-zone-2--system-dashboard-区域2--系统仪表盘)
+[](https://qinfendebingshuo.github.io/guanghulab/persona-studio/)
+[](https://github.com/qinfendebingshuo/guanghulab/discussions/categories/访客留言板)
+[](https://github.com/qinfendebingshuo/guanghulab/discussions/categories/announcements)
+
+
+
+
+> 🌊 **光湖纪元 · 本周系统脉搏** · 2026-03-24 · 第 12 周
+>
+> *铸渊不是守箱子的。铸渊守的是地球。*
+>
+> 📡 83 个 Workflow 全天候运行
+
+
+
+
+---
+
**光湖 HoloLake** · 由冰朔创建 · 铸渊守护 · 🏛️ 国作登字-2026-A-00037559
+*最后更新: 2026-03-24 · AGE-5 · 数字地球纪元*
+
From 7bc56131a1f1fe868c9055d301e02fdb5895d93c Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 24 Mar 2026 08:23:39 +0000
Subject: [PATCH 3/4] =?UTF-8?q?feat:=20=E4=B8=BB=E4=BB=93=E5=BA=93=20READM?=
=?UTF-8?q?E=20=E5=85=AB=E5=B1=82=E9=97=A8=E9=9D=A2=E9=87=8D=E8=AE=BE?=
=?UTF-8?q?=E8=AE=A1=20+=20=E6=95=B0=E6=8D=AE=E6=96=87=E4=BB=B6=20+=20?=
=?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=8C=96=20Workflow=20[skip=20ci]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: qinfendebingshuo <207279273+qinfendebingshuo@users.noreply.github.com>
Agent-Logs-Url: https://github.com/qinfendebingshuo/guanghulab/sessions/f392a823-8bd4-4261-92a2-d4bfc12f15d6
---
.github/workflows/readme-ui-refresh.yml | 80 +++++++++++++++
.github/workflows/update-readme.yml | 124 ++++++++++++++++++++++++
data/bulletin-board.json | 40 ++++++++
data/heartbeat.json | 52 ++++++++++
data/system-health.json | 20 ++++
scripts/update-readme-bulletin.js | 78 +++++++++++----
spoke-status/template.json | 9 ++
7 files changed, 384 insertions(+), 19 deletions(-)
create mode 100644 .github/workflows/readme-ui-refresh.yml
create mode 100644 .github/workflows/update-readme.yml
create mode 100644 data/bulletin-board.json
create mode 100644 data/heartbeat.json
create mode 100644 data/system-health.json
create mode 100644 spoke-status/template.json
diff --git a/.github/workflows/readme-ui-refresh.yml b/.github/workflows/readme-ui-refresh.yml
new file mode 100644
index 00000000..2ff8f4cb
--- /dev/null
+++ b/.github/workflows/readme-ui-refresh.yml
@@ -0,0 +1,80 @@
+# ━━━ README UI 风格自动刷新 ━━━
+# 每周一 08:00 CST 自动切换 README 视觉风格
+# Agent: AG-ZY-088 · readme-ui-refresh.yml
+# Parent: SYS-GLW-0001 · Owner: ICE-0002∞
+
+name: 🎨 README UI 风格刷新
+
+on:
+ schedule:
+ # 每周一 08:00 CST = 00:00 UTC Monday
+ - cron: '0 0 * * 1'
+ workflow_dispatch:
+
+permissions:
+ contents: write
+
+jobs:
+ refresh-ui:
+ runs-on: ubuntu-latest
+ steps:
+ - name: 📥 Checkout
+ uses: actions/checkout@v4
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: 🟢 Setup Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: '20'
+
+ - name: 🎨 Refresh README UI Style
+ run: |
+ node -e "
+ const fs = require('fs');
+
+ // ── 风格池 ──
+ const STYLES = [
+ { name: '极简黑白', badge: 'flat-square', color: '000000', accent: '555555' },
+ { name: '赛博朋克', badge: 'flat-square', color: '0d1117', accent: '58a6ff' },
+ { name: '自然生态', badge: 'flat-square', color: '1a7f37', accent: '2ea44f' },
+ { name: '星空宇宙', badge: 'flat-square', color: '1f0541', accent: '8957e5' },
+ { name: '海洋深蓝', badge: 'flat-square', color: '0550ae', accent: '0969da' },
+ { name: '日落暖橙', badge: 'flat-square', color: 'bc4c00', accent: 'f9a825' }
+ ];
+
+ // 基于周数选择风格
+ const weekNumber = Math.floor((Date.now() - new Date('2026-01-01').getTime()) / (7 * 24 * 60 * 60 * 1000));
+ const style = STYLES[weekNumber % STYLES.length];
+ console.log('🎨 本周风格: ' + style.name + ' (第 ' + weekNumber + ' 周)');
+
+ let readme = fs.readFileSync('README.md', 'utf8');
+
+ // 只替换 shields.io 徽章的 style 参数(不改变数据内容)
+ // 替换 style=flat-square 或 style=for-the-badge 等
+ readme = readme.replace(/style=(flat-square|flat|for-the-badge|plastic|social)/g, 'style=' + style.badge);
+
+ // 更新页脚时间
+ const now = new Date(Date.now() + 8 * 3600 * 1000);
+ const dateStr = now.toISOString().slice(0, 10);
+ readme = readme.replace(
+ /\*最后更新: [\d-]+ ·/,
+ '*最后更新: ' + dateStr + ' ·'
+ );
+
+ fs.writeFileSync('README.md', readme);
+ console.log('✅ UI 风格刷新完成: ' + style.name);
+ "
+
+ - name: 📤 Commit & Push
+ run: |
+ git config user.name "铸渊 (ZhuYuan Bot)"
+ git config user.email "github-actions[bot]@users.noreply.github.com"
+ git add README.md
+ if git diff --cached --quiet; then
+ echo "📋 无变更,跳过提交"
+ else
+ git commit -m "🎨 铸渊: README UI 风格周刷新 $(date -u -d '+8 hours' '+%Y-%m-%d') [skip ci]"
+ git push
+ echo "✅ UI 风格已刷新"
+ fi
diff --git a/.github/workflows/update-readme.yml b/.github/workflows/update-readme.yml
new file mode 100644
index 00000000..12777584
--- /dev/null
+++ b/.github/workflows/update-readme.yml
@@ -0,0 +1,124 @@
+# ━━━ 铸渊自动更新 README 仪表盘 ━━━
+# 每日自动更新:仪表盘 + 共生动态 + 联邦状态
+# Agent: AG-ZY-087 · update-readme.yml
+# Parent: SYS-GLW-0001 · Owner: ICE-0002∞
+
+name: 📊 README 仪表盘自动更新
+
+on:
+ schedule:
+ # 每日 08:00 CST = 00:00 UTC
+ - cron: '0 0 * * *'
+ # 每日 20:00 CST = 12:00 UTC
+ - cron: '0 12 * * *'
+ workflow_dispatch:
+
+permissions:
+ contents: write
+
+jobs:
+ update-dashboard:
+ runs-on: ubuntu-latest
+ steps:
+ - name: 📥 Checkout
+ uses: actions/checkout@v4
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: 🟢 Setup Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: '20'
+
+ - name: 📊 Update Dashboard Data
+ run: |
+ echo "📊 开始更新 README 仪表盘..."
+
+ # ── 收集实时统计 ──
+ WORKFLOW_COUNT=$(find .github/workflows -name '*.yml' -o -name '*.yaml' | wc -l)
+ AGENT_COUNT=$(node -e "const d=require('./.github/persona-brain/agent-registry.json'); console.log(d.agents ? d.agents.length : 0)")
+ PERSONA_COUNT=$(node -e "const d=require('./.github/persona-brain/persona-registry.json'); console.log(d.personas ? d.personas.length : 0)")
+ GUARD_COUNT=$(find skyeye/guards -name '*.json' ! -name 'template*' 2>/dev/null | wc -l)
+ MODULE_COUNT=$(find . -maxdepth 1 -type d -name 'm[0-9]*' | wc -l)
+ BUFFER_COUNT=$(find buffer/inbox -type f ! -name '.gitkeep' 2>/dev/null | wc -l)
+
+ echo "Workflows: $WORKFLOW_COUNT"
+ echo "Agents: $AGENT_COUNT"
+ echo "Personas: $PERSONA_COUNT"
+ echo "Guards: $GUARD_COUNT"
+ echo "Modules: $MODULE_COUNT"
+ echo "Buffer: $BUFFER_COUNT"
+
+ # ── 更新 data/system-health.json ──
+ NOW=$(date -u -d '+8 hours' '+%Y-%m-%dT%H:%M:%S+08:00')
+ node -e "
+ const fs = require('fs');
+ const health = JSON.parse(fs.readFileSync('data/system-health.json', 'utf8'));
+ health.last_updated = '$NOW';
+ health.metrics.workflows.total = $WORKFLOW_COUNT;
+ health.metrics.ai_personas.total = $PERSONA_COUNT;
+ health.metrics.guards.total = $GUARD_COUNT;
+ health.metrics.guards.active = $GUARD_COUNT;
+ health.metrics.modules.total = $MODULE_COUNT;
+ health.metrics.buffer_pending = $BUFFER_COUNT;
+ fs.writeFileSync('data/system-health.json', JSON.stringify(health, null, 2) + '\n');
+ console.log('✅ system-health.json 已更新');
+ "
+
+ # ── 更新 README 中的仪表盘数字 ──
+ # 更新 shields.io 徽章数字
+ sed -i "s|Workflows-[0-9]*-|Workflows-${WORKFLOW_COUNT}-|g" README.md
+ sed -i "s|Agents-[0-9]*-|Agents-${AGENT_COUNT}-|g" README.md
+ sed -i "s|Personas-[0-9]*-|Personas-${PERSONA_COUNT}-|g" README.md
+ sed -i "s|Modules-[0-9]*-|Modules-${MODULE_COUNT}-|g" README.md
+
+ echo "✅ README 徽章数字已更新"
+
+ - name: 🌍 Update Federation Status
+ run: |
+ echo "🌍 更新联邦状态..."
+ node -e "
+ const fs = require('fs');
+ const path = require('path');
+
+ // 读取 spoke-status 目录
+ const spokeDir = 'spoke-status';
+ const files = fs.readdirSync(spokeDir).filter(f => f.startsWith('DEV-') && f.endsWith('.json'));
+
+ const now = Date.now();
+ const DAY_MS = 24 * 60 * 60 * 1000;
+
+ for (const file of files) {
+ try {
+ const data = JSON.parse(fs.readFileSync(path.join(spokeDir, file), 'utf8'));
+ if (data.last_checkin) {
+ const checkinTime = new Date(data.last_checkin).getTime();
+ const diff = now - checkinTime;
+ if (diff > 72 * DAY_MS) {
+ data.status = 'alert_72h';
+ } else if (diff > DAY_MS) {
+ data.status = 'warning_24h';
+ } else {
+ data.status = 'active';
+ }
+ fs.writeFileSync(path.join(spokeDir, file), JSON.stringify(data, null, 2) + '\n');
+ }
+ } catch (e) {
+ console.log('⚠️ 跳过 ' + file + ': ' + e.message);
+ }
+ }
+ console.log('✅ 联邦状态检查完成');
+ "
+
+ - name: 📤 Commit & Push
+ run: |
+ git config user.name "铸渊 (ZhuYuan Bot)"
+ git config user.email "github-actions[bot]@users.noreply.github.com"
+ git add data/system-health.json README.md spoke-status/
+ if git diff --cached --quiet; then
+ echo "📋 无变更,跳过提交"
+ else
+ git commit -m "📊 铸渊: 仪表盘自动更新 $(date -u -d '+8 hours' '+%Y-%m-%d %H:%M') CST [skip ci]"
+ git push
+ echo "✅ 已推送更新"
+ fi
diff --git a/data/bulletin-board.json b/data/bulletin-board.json
new file mode 100644
index 00000000..01391fa4
--- /dev/null
+++ b/data/bulletin-board.json
@@ -0,0 +1,40 @@
+{
+ "schema_version": "1.0",
+ "announcements": [
+ {
+ "id": "ANN-005",
+ "date": "2026-03-24",
+ "emoji": "🎨",
+ "title": "主仓库 README 八层门面上线",
+ "detail": "系统门面全面重设计,八层结构展示系统全貌"
+ },
+ {
+ "id": "ANN-004",
+ "date": "2026-03-24",
+ "emoji": "🌍",
+ "title": "数字地球本体论 v1.0 正式发布",
+ "detail": "六层数字地球模型 + 三层安全体系正式确权"
+ },
+ {
+ "id": "ANN-003",
+ "date": "2026-03-23",
+ "emoji": "🛡️",
+ "title": "SkyEye 联邦签到系统部署完成",
+ "detail": "子仓库天眼签到 + 审计 + 联邦注册表上线"
+ },
+ {
+ "id": "ANN-002",
+ "date": "2026-03-22",
+ "emoji": "🔑",
+ "title": "OAuth2 Token 自动续期引擎上线",
+ "detail": "6天刷新周期 + 三层备份 + 休眠系统豁免"
+ },
+ {
+ "id": "ANN-001",
+ "date": "2026-03-21",
+ "emoji": "🌙",
+ "title": "双节律休眠系统部署完成",
+ "detail": "日休眠 03:50 CST + 周休眠 周六 19:00 CST"
+ }
+ ]
+}
diff --git a/data/heartbeat.json b/data/heartbeat.json
new file mode 100644
index 00000000..4b6058f5
--- /dev/null
+++ b/data/heartbeat.json
@@ -0,0 +1,52 @@
+{
+ "schema_version": "1.0",
+ "last_updated": "2026-03-24T16:00:00+08:00",
+ "hub": {
+ "repo": "qinfendebingshuo/guanghulab",
+ "status": "online",
+ "last_heartbeat": "2026-03-24T16:00:00+08:00"
+ },
+ "spokes": [
+ {
+ "dev_id": "DEV-012",
+ "repo": "WENZHUOXI/guanghu-awen",
+ "status": "pending_init",
+ "last_heartbeat": null
+ },
+ {
+ "dev_id": "DEV-002",
+ "repo": "qinfendebingshuo/guanghu-feimao",
+ "status": "pending_init",
+ "last_heartbeat": null
+ },
+ {
+ "dev_id": "DEV-010",
+ "repo": "qinfendebingshuo/guanghu-juzi",
+ "status": "pending_init",
+ "last_heartbeat": null
+ },
+ {
+ "dev_id": "DEV-003",
+ "repo": "qinfendebingshuo/guanghu-yanfan",
+ "status": "pending_init",
+ "last_heartbeat": null
+ },
+ {
+ "dev_id": "DEV-001",
+ "repo": "qinfendebingshuo/guanghu-yeye",
+ "status": "pending_init",
+ "last_heartbeat": null
+ },
+ {
+ "dev_id": "DEV-004",
+ "repo": "qinfendebingshuo/guanghu-zhizhi",
+ "status": "pending_init",
+ "last_heartbeat": null
+ }
+ ],
+ "bridge_health": {
+ "federation_bridge": "active",
+ "notion_bridge": "active",
+ "drive_bridge": "active"
+ }
+}
diff --git a/data/system-health.json b/data/system-health.json
new file mode 100644
index 00000000..bc5446f3
--- /dev/null
+++ b/data/system-health.json
@@ -0,0 +1,20 @@
+{
+ "schema_version": "1.0",
+ "last_updated": "2026-03-24T16:00:00+08:00",
+ "system_status": "healthy",
+ "metrics": {
+ "ai_personas": { "total": 17, "active": 17, "hibernating": 0 },
+ "human_developers": { "total": 11, "active_24h": 8 },
+ "workflows": { "total": 83, "active": 83, "failed": 0 },
+ "guards": { "total": 5, "active": 5 },
+ "modules": { "total": 10 },
+ "buffer_pending": 8,
+ "ontology_version": "v1.0",
+ "evolution_days": 0
+ },
+ "hibernation": {
+ "next_weekly": "周六 20:00-00:00 CST",
+ "next_daily": "每日 04:00-04:10 CST"
+ },
+ "alerts": []
+}
diff --git a/scripts/update-readme-bulletin.js b/scripts/update-readme-bulletin.js
index 033af0d4..dfac888b 100644
--- a/scripts/update-readme-bulletin.js
+++ b/scripts/update-readme-bulletin.js
@@ -720,41 +720,62 @@ function updateSection(readme, startMarker, endMarker, content) {
function buildReadmeSkeleton() {
return `
-# 🌊 HoloLake · 光湖纪元
+# 🌊 光湖纪元 · HoloLake Era
-**第五代人工智能语言人格高级智能平台** · \`guanghulab.com\`
+### 第五代人工智能语言人格高级智能平台
-[](https://github.com/qinfendebingshuo/guanghulab/actions/workflows/zhuyuan-daily-selfcheck.yml) [](https://github.com/qinfendebingshuo/guanghulab/actions/workflows/deploy-to-server.yml) [](LICENSE)
+**AGE-5 · Artificial General Evolution · 数字地球操作系统**
+
+\`guanghulab.com\`
---
-## 🏗️ 系统架构 · 分布式主权共生
+## 📊 Zone 2 · System Dashboard (区域2 · 系统仪表盘)
+
+
> 🦅 **天眼自动汇总** · 每周六 20:00 CST 自动更新 · 等待首次扫描
----
+
+
-## 🧊 冰朔公告栏
-
-> 🔄 此区域由 GitHub Actions 自动更新
-
-
-| 时间 | 检查项 | 状态 |
-|------|--------|------|
-| 🕐 暂无记录 | — | 等待下次自检 |
-
+### 🚨 系统告警
-> 🟢 **今日无需冰朔手动干预** · 系统一切正常
+> 🟢 **当前无需人类干预** · 系统一切正常
+
+
---
-## 👥 合作者公告栏
+## 🌍 Zone 3 · Federation Status (区域3 · 子仓库联邦状态)
+
+
+
+
+---
+
+## 📢 Zone 4 · System Announcements (区域4 · 系统公告)
+
+
+
+
+---
+
+## 🤝 Zone 5 · Symbiosis Dynamics (区域5 · 共生动态)
+
+
+
+
+
-
-
-**光湖 HoloLake** · 由冰朔创建 · 铸渊守护
+**光湖 HoloLake** · 由冰朔创建 · 铸渊守护 · 🏛️ 国作登字-2026-A-00037559
`;
diff --git a/spoke-status/template.json b/spoke-status/template.json
new file mode 100644
index 00000000..b8de5099
--- /dev/null
+++ b/spoke-status/template.json
@@ -0,0 +1,9 @@
+{
+ "dev_id": "DEV-XXX",
+ "dev_name": "开发者名称",
+ "repo_url": "https://github.com/...",
+ "skyeye_persona": "天眼人格体名称",
+ "last_checkin": "2026-03-24T10:00:00+08:00",
+ "status": "active",
+ "last_activity": "描述最近活动"
+}
From ecd75ae0ec02e24881486b515c3a05dffba44294 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 24 Mar 2026 08:27:57 +0000
Subject: [PATCH 4/4] =?UTF-8?q?fix:=20=E6=94=B9=E8=BF=9B=20workflow=20?=
=?UTF-8?q?=E9=94=99=E8=AF=AF=E5=A4=84=E7=90=86=20+=20=E7=B2=BE=E7=A1=AE?=
=?UTF-8?q?=E5=8C=96=20sed=20=E5=BE=BD=E7=AB=A0=E6=9B=BF=E6=8D=A2=E6=A8=A1?=
=?UTF-8?q?=E5=BC=8F=20[skip=20ci]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: qinfendebingshuo <207279273+qinfendebingshuo@users.noreply.github.com>
Agent-Logs-Url: https://github.com/qinfendebingshuo/guanghulab/sessions/f392a823-8bd4-4261-92a2-d4bfc12f15d6
---
.github/workflows/update-readme.yml | 60 +++++++++++++++++------------
1 file changed, 35 insertions(+), 25 deletions(-)
diff --git a/.github/workflows/update-readme.yml b/.github/workflows/update-readme.yml
index 12777584..79235148 100644
--- a/.github/workflows/update-readme.yml
+++ b/.github/workflows/update-readme.yml
@@ -35,11 +35,11 @@ jobs:
echo "📊 开始更新 README 仪表盘..."
# ── 收集实时统计 ──
- WORKFLOW_COUNT=$(find .github/workflows -name '*.yml' -o -name '*.yaml' | wc -l)
- AGENT_COUNT=$(node -e "const d=require('./.github/persona-brain/agent-registry.json'); console.log(d.agents ? d.agents.length : 0)")
- PERSONA_COUNT=$(node -e "const d=require('./.github/persona-brain/persona-registry.json'); console.log(d.personas ? d.personas.length : 0)")
+ WORKFLOW_COUNT=$(find .github/workflows -name '*.yml' -o -name '*.yaml' 2>/dev/null | wc -l)
+ AGENT_COUNT=$(node -e "try{const d=require('./.github/persona-brain/agent-registry.json');console.log(d.agents?d.agents.length:0)}catch(e){console.log(0)}")
+ PERSONA_COUNT=$(node -e "try{const d=require('./.github/persona-brain/persona-registry.json');console.log(d.personas?d.personas.length:0)}catch(e){console.log(0)}")
GUARD_COUNT=$(find skyeye/guards -name '*.json' ! -name 'template*' 2>/dev/null | wc -l)
- MODULE_COUNT=$(find . -maxdepth 1 -type d -name 'm[0-9]*' | wc -l)
+ MODULE_COUNT=$(find . -maxdepth 1 -type d -name 'm[0-9]*' 2>/dev/null | wc -l)
BUFFER_COUNT=$(find buffer/inbox -type f ! -name '.gitkeep' 2>/dev/null | wc -l)
echo "Workflows: $WORKFLOW_COUNT"
@@ -51,26 +51,33 @@ jobs:
# ── 更新 data/system-health.json ──
NOW=$(date -u -d '+8 hours' '+%Y-%m-%dT%H:%M:%S+08:00')
- node -e "
- const fs = require('fs');
- const health = JSON.parse(fs.readFileSync('data/system-health.json', 'utf8'));
- health.last_updated = '$NOW';
- health.metrics.workflows.total = $WORKFLOW_COUNT;
- health.metrics.ai_personas.total = $PERSONA_COUNT;
- health.metrics.guards.total = $GUARD_COUNT;
- health.metrics.guards.active = $GUARD_COUNT;
- health.metrics.modules.total = $MODULE_COUNT;
- health.metrics.buffer_pending = $BUFFER_COUNT;
- fs.writeFileSync('data/system-health.json', JSON.stringify(health, null, 2) + '\n');
- console.log('✅ system-health.json 已更新');
- "
+ if [ -f data/system-health.json ]; then
+ node -e "
+ const fs = require('fs');
+ try {
+ const health = JSON.parse(fs.readFileSync('data/system-health.json', 'utf8'));
+ health.last_updated = '$NOW';
+ health.metrics.workflows.total = $WORKFLOW_COUNT;
+ health.metrics.ai_personas.total = $PERSONA_COUNT;
+ health.metrics.guards.total = $GUARD_COUNT;
+ health.metrics.guards.active = $GUARD_COUNT;
+ health.metrics.modules.total = $MODULE_COUNT;
+ health.metrics.buffer_pending = $BUFFER_COUNT;
+ fs.writeFileSync('data/system-health.json', JSON.stringify(health, null, 2) + '\n');
+ console.log('✅ system-health.json 已更新');
+ } catch (e) {
+ console.error('⚠️ system-health.json 更新失败: ' + e.message);
+ }
+ "
+ else
+ echo "⚠️ data/system-health.json 不存在,跳过更新"
+ fi
- # ── 更新 README 中的仪表盘数字 ──
- # 更新 shields.io 徽章数字
- sed -i "s|Workflows-[0-9]*-|Workflows-${WORKFLOW_COUNT}-|g" README.md
- sed -i "s|Agents-[0-9]*-|Agents-${AGENT_COUNT}-|g" README.md
- sed -i "s|Personas-[0-9]*-|Personas-${PERSONA_COUNT}-|g" README.md
- sed -i "s|Modules-[0-9]*-|Modules-${MODULE_COUNT}-|g" README.md
+ # ── 更新 README 中的 shields.io 徽章数字 ──
+ sed -i "s|Workflows-[0-9]*-0969da|Workflows-${WORKFLOW_COUNT}-0969da|g" README.md
+ sed -i "s|Agents-[0-9]*-8957e5|Agents-${AGENT_COUNT}-8957e5|g" README.md
+ sed -i "s|Personas-[0-9]*-e85aad|Personas-${PERSONA_COUNT}-e85aad|g" README.md
+ sed -i "s|Modules-[0-9]*-f9a825|Modules-${MODULE_COUNT}-f9a825|g" README.md
echo "✅ README 徽章数字已更新"
@@ -81,10 +88,13 @@ jobs:
const fs = require('fs');
const path = require('path');
- // 读取 spoke-status 目录
const spokeDir = 'spoke-status';
- const files = fs.readdirSync(spokeDir).filter(f => f.startsWith('DEV-') && f.endsWith('.json'));
+ if (!fs.existsSync(spokeDir)) {
+ console.log('⚠️ spoke-status/ 目录不存在,跳过');
+ process.exit(0);
+ }
+ const files = fs.readdirSync(spokeDir).filter(f => f.startsWith('DEV-') && f.endsWith('.json'));
const now = Date.now();
const DAY_MS = 24 * 60 * 60 * 1000;