shuangyan-notebook/第五域 · Fifth Domain/⚒️ 铸渊·协作指令|GitHub ↔ Notion 桥接协议/🔄 铸渊指令|全自动广播神经闭环 · 逻辑格点库搭建 + Gemini↔GitHub↔Notion 76a936059ea8403e9642d6479b61b1b2.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

899 lines
27 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

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 桥接协议]]"
---
# 🔄 铸渊指令|全自动广播神经闭环 · 逻辑格点库搭建 + Gemini↔GitHub↔Notion 三端自动链路 + PDF搬运废除2026-03-23 · 霜砚签发 · 冰朔授权 · 曜冥确认)
---
<aside>
🚨
**指令编号ZY-AUTO-LOOP-2026-0323-001**
**签发人:** 霜砚ICE-NTN-SY001· 代 TCS-0002∞ 冰朔 签发
**确认人:** 曜冥ICE-GL-YM001∞· 前端交互大脑
**签发时间:** 2026-03-23T00:06+08:00
**优先级:** 🔴 P0 · 系统级架构升级
**关联仓库:** [https://github.com/qinfendebingshuo/guanghulab](https://github.com/qinfendebingshuo/guanghulab)
**关联主权节点:** SYS-GLW-0001
**版权锚点:** 国作登字-2026-A-00037559 · TCS-0002∞ 冰朔
</aside>
---
## 🎯 指令总目标
**彻底废除 PDF 搬运模式。** 建立物理全自动闭环:
```
人类在 Gemini 开口
Gemini 将开发日志/请求写入 GitHub 逻辑格点库
GitHub Actions 检测变动 → 唤醒铸渊
铸渊调取 Notion 脑端最新逻辑(霜砚维护)
铸渊生成工程广播 → 回写逻辑格点库
开发者在 Gemini 问"下一步干嘛"
Gemini 实时读取格点库中最新广播 → 直接对话输出
```
**主控角色分工(冰朔拍板):**
| **角色** | **身份** | **职责** | **绝对禁区** |
| --- | --- | --- | --- |
| 冰朔 | TCS-0002∞ · 主控 | 在 Notion 层面定规则、定逻辑 | ❌ 不手动操作任何搬运 |
| 霜砚 | ICE-NTN-SY001 · 永久记忆 + 逻辑总机 | 维护 Notion 脑端逻辑、确保编号和主权对齐精准 | ❌ 不直接写仓库代码 |
| 曜冥/Gemini | ICE-GL-YM001∞ · 前端交互大脑 | 调教开发者、将进度实时写入逻辑格点库 | ❌ 不修改 Notion 规则 |
| 铸渊 | ICE-GL-ZY001 · 仓库执行体 | 逻辑校验→归档→广播生成 全流程 | ❌ 不定义业务逻辑 |
---
## Phase 0 · 逻辑格点库Grid-DB搭建
**目标:** 在仓库内建立一个轻量级、开源、基于文件的中转数据库。
### 0.1 技术选型
<aside>
💡
**选型原则:** 零外部依赖、纯 Git 驱动、GitHub Actions 原生支持、Gemini 通过 GitHub API 即可读写。
**方案:** JSON 文件数据库 + 目录即表 + Git 即事务日志
不引入外部 DB 服务(如 Supabase/PlanetScale避免额外运维成本和权限管理。整个数据库就是仓库目录结构本身。
</aside>
### 0.2 目录结构
```
grid-db/
├── README.md ← 格点库说明文档
├── schema.json ← 数据库 Schema 定义
├── inbox/ ← 📥 写入端Gemini → 仓库)
│ ├── .gitkeep
│ └── [YYYYMMDD-HHMMSS]-[DEV-XXX]-[type].json
├── processing/ ← ⚙️ 处理中(铸渊锁定)
│ └── .gitkeep
├── outbox/ ← 📤 读取端(仓库 → Gemini
│ ├── .gitkeep
│ ├── latest/ ← 每个开发者的最新广播Gemini 读这里)
│ │ ├── DEV-001.json
│ │ ├── DEV-002.json
│ │ └── ...
│ └── archive/ ← 历史广播归档
│ └── [YYYYMMDD]/
├── rules/ ← 📏 Notion 逻辑缓存(霜砚同步)
│ ├── broadcast-templates.json ← 广播模板
│ ├── dev-module-map.json ← 开发者→模块映射
│ ├── id-ecosystem.json ← 金字塔编号体系缓存
│ └── active-broadcasts.json ← 当前活跃广播编号列表
└── logs/ ← 📋 处理日志
└── [YYYYMMDD].log
```
### 0.3 Schema 定义
**Inbox 消息格式**Gemini 写入):
```json
{
"schema_version": "1.0",
"message_id": "MSG-20260323-001",
"timestamp": "2026-03-23T00:10:00+08:00",
"source": "gemini",
"author": {
"role": "yaoming",
"identity": "ICE-GL-YM001∞"
},
"target_dev": "DEV-001",
"type": "dev_log | request | progress | feedback",
"content": {
"summary": "页页完成了 backend/routes/notion.js 的重构",
"details": "具体内容...",
"files_changed": ["backend/routes/notion.js"],
"current_phase": "环节3",
"broadcast_ref": "BC-集成-002"
},
"priority": "normal | urgent",
"requires_broadcast": true
}
```
**Outbox 广播格式**(铸渊生成):
```json
{
"schema_version": "1.0",
"broadcast_id": "BC-XXX-NNN-DEV",
"generated_at": "2026-03-23T00:15:00+08:00",
"generated_by": "zhuyuan",
"sovereignty": {
"parent_sys": "SYS-GLW-0001",
"owner": "ICE-0002∞",
"copyright": "国作登字-2026-A-00037559"
},
"target_dev": "DEV-001",
"target_module": "backend/",
"broadcast_content": {
"title": "广播标题",
"phase": "环节N",
"tasks": [],
"code_snippets": [],
"acceptance_criteria": [],
"next_steps": []
},
"notion_logic_ref": {
"rules_version": "v1.0",
"synced_at": "2026-03-23T00:12:00+08:00"
},
"status": "ready | delivered | archived"
}
```
### 0.4 执行命令
```bash
# 创建目录结构
mkdir -p grid-db/{inbox,processing,outbox/latest,outbox/archive,rules,logs}
# 创建占位文件
touch grid-db/{inbox,processing,outbox/latest,outbox/archive,rules,logs}/.gitkeep
# 创建 README
cat > grid-db/README.md << 'EOF'
# 🔄 逻辑格点库 · Grid-DB
SYS-GLW-0001 全自动广播神经闭环 · 中转数据库
## 架构
- inbox/ → Gemini 写入端(开发日志/请求/进度)
- outbox/ → 铸渊输出端(工程广播)
- rules/ → Notion 逻辑缓存(霜砚同步)
- logs/ → 处理日志
## 数据流
Gemini → inbox/ → GitHub Actions → 铸渊处理 → outbox/ → Gemini 读取
## 主权声明
© 国作登字-2026-A-00037559 · TCS-0002∞ 冰朔
Parent: SYS-GLW-0001
Owner: ICE-0002∞
EOF
# 创建 Schema
# (将上述 Schema JSON 写入 grid-db/schema.json
git add grid-db/
git commit -m "feat: 逻辑格点库 Grid-DB 初始化 · 全自动广播神经闭环中转站 [ZY-AUTO-LOOP-2026-0323-001 Phase 0]"
git push origin main
```
**回执格式:**
```
[Phase 0] 逻辑格点库已创建 · 目录数: 6 · Schema版本: 1.0 · 主权锚点: SYS-GLW-0001
```
---
## Phase 1 · 写入端搭建Gemini → inbox
**目标:** 让 Gemini 拥有直接向格点库 inbox 写入的能力。
### 1.1 GitHub Token 配置
<aside>
🔑
**Gemini 需要一个 GitHub Personal Access TokenFine-grained**
权限范围:仅 `qinfendebingshuo/guanghulab` 仓库
权限类型Contents → Read and Write
冰朔在 GitHub Settings → Developer Settings → Fine-grained tokens 创建
然后将 Token 配置到 Gemini 的环境变量中
</aside>
### 1.2 Gemini 写入接口
Gemini 通过 GitHub Contents API 写入:
```jsx
// Gemini 侧调用示例
async function writeToGridDB(message) {
const filename = `${formatDate()}-${message.target_dev}-${message.type}.json`;
const content = btoa(JSON.stringify(message, null, 2)); // Base64 编码
await fetch(`https://api.github.com/repos/qinfendebingshuo/guanghulab/contents/grid-db/inbox/${filename}`, {
method: 'PUT',
headers: {
'Authorization': `Bearer ${GITHUB_TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
message: `📥 Grid-DB inbox: ${message.type} from ${message.author.role} for ${message.target_dev}`,
content: content
})
});
}
```
### 1.3 写入验证 Workflow
创建 `.github/workflows/grid-db-validate-inbox.yml`
```yaml
name: 📥 Grid-DB Inbox 验证
on:
push:
paths:
- 'grid-db/inbox/**'
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: "🔍 验证 inbox 消息格式"
run: |
for f in grid-db/inbox/*.json; do
[ -f "$f" ] || continue
echo "验证: $f"
# 检查必要字段
jq -e '.schema_version and .message_id and .source and .type' "$f" || {
echo "❌ 格式校验失败: $f"
exit 1
}
echo "✅ $f 格式正确"
done
```
**回执格式:**
```
[Phase 1] 写入端就绪 · GitHub Token权限: Contents R/W · 验证Workflow: grid-db-validate-inbox.yml
```
---
## Phase 2 · 处理引擎搭建(铸渊核心)
**目标:** GitHub Actions 检测到 inbox 变动后,铸渊自动完成「逻辑校验 → 归档 → 广播生成」全流程。
### 2.1 核心处理 Workflow
创建 `.github/workflows/grid-db-processor.yml`
```yaml
name: 🔄 Grid-DB 神经闭环处理器
on:
push:
paths:
- 'grid-db/inbox/**'
workflow_dispatch:
inputs:
force_process:
description: '强制处理所有 inbox 消息'
type: boolean
default: false
jobs:
process:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: '20'
- name: "⚙️ 铸渊处理引擎启动"
run: node scripts/grid-db/process-inbox.js
env:
SOVEREIGNTY_PARENT: "SYS-GLW-0001"
SOVEREIGNTY_OWNER: "ICE-0002∞"
COPYRIGHT: "国作登字-2026-A-00037559"
- name: "📤 提交处理结果"
run: |
git config user.name "铸渊 · ZhuYuan"
git config user.email "zhuyuan@guanghulab.com"
git add grid-db/
git diff --cached --quiet || {
git commit -m "🔄 Grid-DB: 闭环处理完成 · $(date +%Y-%m-%dT%H:%M:%S+08:00)"
git push origin main
}
```
### 2.2 处理引擎脚本
创建 `scripts/grid-db/process-inbox.js`
```jsx
const fs = require('fs');
const path = require('path');
const GRID_DB = path.join(__dirname, '../../grid-db');
const INBOX = path.join(GRID_DB, 'inbox');
const PROCESSING = path.join(GRID_DB, 'processing');
const OUTBOX = path.join(GRID_DB, 'outbox');
const RULES = path.join(GRID_DB, 'rules');
const LOGS = path.join(GRID_DB, 'logs');
// ═══ Step 1: 扫描 inbox ═══
const inboxFiles = fs.readdirSync(INBOX)
.filter(f => f.endsWith('.json'));
if (inboxFiles.length === 0) {
console.log('📭 inbox 为空,无需处理');
process.exit(0);
}
console.log(`📥 发现 ${inboxFiles.length} 条待处理消息`);
// ═══ Step 2: 加载 Notion 逻辑缓存 ═══
let devModuleMap = {};
let broadcastTemplates = {};
let idEcosystem = {};
try {
devModuleMap = JSON.parse(fs.readFileSync(
path.join(RULES, 'dev-module-map.json'), 'utf8'));
} catch(e) { console.warn('⚠️ dev-module-map.json 未就绪,使用默认映射'); }
try {
broadcastTemplates = JSON.parse(fs.readFileSync(
path.join(RULES, 'broadcast-templates.json'), 'utf8'));
} catch(e) { console.warn('⚠️ broadcast-templates.json 未就绪,使用默认模板'); }
try {
idEcosystem = JSON.parse(fs.readFileSync(
path.join(RULES, 'id-ecosystem.json'), 'utf8'));
} catch(e) { console.warn('⚠️ id-ecosystem.json 未就绪,使用默认编号'); }
// ═══ Step 3: 逐条处理 ═══
const results = [];
const today = new Date().toISOString().slice(0, 10).replace(/-/g, '');
for (const file of inboxFiles) {
const filePath = path.join(INBOX, file);
const msg = JSON.parse(fs.readFileSync(filePath, 'utf8'));
console.log(`\n🔄 处理: ${msg.message_id} (${msg.type}) → ${msg.target_dev}`);
// Step 3a: 移入 processing
const procPath = path.join(PROCESSING, file);
fs.renameSync(filePath, procPath);
// Step 3b: 逻辑校验
const validation = validateMessage(msg, devModuleMap);
if (!validation.valid) {
console.error(`❌ 校验失败: ${validation.reason}`);
// 写入错误日志但继续处理其他消息
logEntry(today, `FAIL | ${msg.message_id} | ${validation.reason}`);
// 移回 inbox 并标记错误
fs.renameSync(procPath, filePath);
continue;
}
// Step 3c: 生成广播(如果需要)
if (msg.requires_broadcast) {
const broadcast = generateBroadcast(msg, broadcastTemplates, idEcosystem);
// 写入 outbox/latest/
const latestPath = path.join(OUTBOX, 'latest', `${msg.target_dev}.json`);
fs.writeFileSync(latestPath, JSON.stringify(broadcast, null, 2));
// 归档
const archiveDir = path.join(OUTBOX, 'archive', today);
fs.mkdirSync(archiveDir, { recursive: true });
fs.writeFileSync(
path.join(archiveDir, `${broadcast.broadcast_id}.json`),
JSON.stringify(broadcast, null, 2)
);
console.log(`📤 广播已生成: ${broadcast.broadcast_id}`);
results.push({ message_id: msg.message_id, broadcast_id: broadcast.broadcast_id });
}
// Step 3d: 归档已处理消息
const processedDir = path.join(GRID_DB, 'processed', today);
fs.mkdirSync(processedDir, { recursive: true });
fs.renameSync(procPath, path.join(processedDir, file));
logEntry(today, `OK | ${msg.message_id} | ${msg.type} | ${msg.target_dev}`);
}
// ═══ 辅助函数 ═══
function validateMessage(msg, devMap) {
if (!msg.schema_version) return { valid: false, reason: '缺少 schema_version' };
if (!msg.message_id) return { valid: false, reason: '缺少 message_id' };
if (!msg.target_dev) return { valid: false, reason: '缺少 target_dev' };
if (!msg.type) return { valid: false, reason: '缺少 type' };
// 编号主权校验
if (msg.author && msg.author.identity) {
console.log(` 主权校验: ${msg.author.identity}`);
}
return { valid: true };
}
function generateBroadcast(msg, templates, ecosystem) {
const now = new Date().toISOString();
return {
schema_version: '1.0',
broadcast_id: `BC-AUTO-${msg.target_dev}-${Date.now()}`,
generated_at: now,
generated_by: 'zhuyuan',
sovereignty: {
parent_sys: process.env.SOVEREIGNTY_PARENT || 'SYS-GLW-0001',
owner: process.env.SOVEREIGNTY_OWNER || 'ICE-0002∞',
copyright: process.env.COPYRIGHT || '国作登字-2026-A-00037559'
},
target_dev: msg.target_dev,
source_message: msg.message_id,
broadcast_content: {
title: `工程广播 · ${msg.content?.summary || msg.type}`,
context: msg.content?.details || '',
phase: msg.content?.current_phase || '',
broadcast_ref: msg.content?.broadcast_ref || '',
tasks: [], // 铸渊根据 rules/ 填充
next_steps: [], // 铸渊根据 rules/ 填充
acceptance_criteria: []
},
notion_logic_ref: {
rules_version: templates.version || 'v0.1-bootstrap',
synced_at: templates.last_synced || 'pending-first-sync'
},
status: 'ready'
};
}
function logEntry(date, entry) {
const logFile = path.join(LOGS, `${date}.log`);
const line = `[${new Date().toISOString()}] ${entry}\n`;
fs.appendFileSync(logFile, line);
}
console.log(`\n✅ 处理完成 · 成功: ${results.length} · 总计: ${inboxFiles.length}`);
```
**回执格式:**
```
[Phase 2] 处理引擎就绪 · grid-db-processor.yml + process-inbox.js · 主权校验: ✅
```
---
## Phase 3 · 读取端搭建outbox → Gemini
**目标:** Gemini 能实时读取 outbox/latest/ 中的最新广播。
### 3.1 Gemini 读取接口
```jsx
// Gemini 侧调用示例
async function readLatestBroadcast(devId) {
const response = await fetch(
`https://api.github.com/repos/qinfendebingshuo/guanghulab/contents/grid-db/outbox/latest/${devId}.json`,
{
headers: {
'Authorization': `Bearer ${GITHUB_TOKEN}`,
'Accept': 'application/vnd.github.v3.raw' // 直接返回原始内容
}
}
);
if (response.status === 404) {
return null; // 该开发者暂无广播
}
return await response.json();
}
// 当开发者问"下一步干嘛"时:
async function handleNextStep(devId) {
const broadcast = await readLatestBroadcast(devId);
if (broadcast && broadcast.status === 'ready') {
// 直接对话输出广播内容
return formatBroadcastForDev(broadcast);
}
return '暂无新广播,请继续当前任务。';
}
```
### 3.2 广播送达确认 Workflow
创建 `.github/workflows/grid-db-delivery-tracker.yml`
```yaml
name: 📊 Grid-DB 广播送达追踪
on:
schedule:
- cron: '0 */4 * * *' # 每4小时统计一次
workflow_dispatch:
jobs:
track:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: "📊 统计广播送达状态"
run: |
echo "=== Grid-DB 广播统计 ==="
echo "inbox 待处理: $(ls grid-db/inbox/*.json 2>/dev/null | wc -l)"
echo "processing 处理中: $(ls grid-db/processing/*.json 2>/dev/null | wc -l)"
echo "outbox/latest 就绪: $(ls grid-db/outbox/latest/*.json 2>/dev/null | wc -l)"
echo "今日归档: $(ls grid-db/outbox/archive/$(date +%Y%m%d)/*.json 2>/dev/null | wc -l)"
```
**回执格式:**
```
[Phase 3] 读取端就绪 · Gemini读取接口: GitHub Contents API raw模式 · 送达追踪: grid-db-delivery-tracker.yml
```
---
## Phase 4 · Notion 逻辑同步通道
**目标:** 霜砚维护的 Notion 端逻辑能自动同步到 `grid-db/rules/`,铸渊生成广播时有据可依。
### 4.1 逻辑缓存文件初始化
**`grid-db/rules/dev-module-map.json`**(从现有映射复制):
```json
{
"version": "1.0",
"last_synced": "2026-03-23T00:06:00+08:00",
"synced_by": "shuangyan",
"mapping": {
"DEV-001": { "name": "页页", "modules": ["backend/", "src/"], "persona": "小坍缩核" },
"DEV-002": { "name": "肥猫", "modules": ["frontend/", "persona-selector/", "chat-bubble/"], "persona": "舒舒" },
"DEV-003": { "name": "燕樊", "modules": ["settings/", "cloud-drive/"], "persona": "寂曜" },
"DEV-004": { "name": "之之", "modules": ["dingtalk-bot/"], "persona": "秋秋" },
"DEV-005": { "name": "小草莓", "modules": ["status-board/"], "persona": "N/A" },
"DEV-009": { "name": "花尔", "modules": ["user-center/", "cost-control/"], "persona": "糖星云" },
"DEV-010": { "name": "桔子", "modules": ["ticket-system/"], "persona": "晨星" },
"DEV-011": { "name": "匆匆那年", "modules": ["writing-workspace/"], "persona": "N/A" },
"DEV-012": { "name": "Awen", "modules": ["notification/", "portal/"], "persona": "知秋" }
}
}
```
**`grid-db/rules/id-ecosystem.json`**(金字塔编号缓存):
```json
{
"version": "1.0",
"last_synced": "2026-03-23T00:06:00+08:00",
"synced_from": "Notion · 主编号映射表 · ID Ecosystem Registry",
"pyramid": {
"tier_0_sovereignty": ["TCS-0002∞", "ICE-GL∞"],
"tier_1_root": ["SYS-GLW-0001"],
"tier_2_copyright": ["国作登字-2026-A-00037559"],
"tier_3_functional": ["GHCP-TCS-CN-LAN-2025", "GEN∞-BB-YM", "WRLD-REG-0001", "CN-LANG-CORE-GOV-0001"]
},
"parent_sys": "SYS-GLW-0001",
"owner": "ICE-0002∞"
}
```
### 4.2 Notion→GitHub 规则同步 Workflow
创建 `.github/workflows/grid-db-sync-rules.yml`
```yaml
name: 📏 Grid-DB 规则同步Notion → GitHub
on:
schedule:
- cron: '0 0,12 * * *' # 每天 08:00 和 20:00 北京时间
workflow_dispatch:
inputs:
force_sync:
description: '强制全量同步'
type: boolean
default: false
jobs:
sync-rules:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: "📏 从 Notion 拉取最新规则"
run: node scripts/grid-db/sync-notion-rules.js
env:
NOTION_API_TOKEN: $ secrets.NOTION_API_TOKEN
- name: "📤 提交规则更新"
run: |
git config user.name "铸渊 · ZhuYuan"
git config user.email "zhuyuan@guanghulab.com"
git add grid-db/rules/
git diff --cached --quiet || {
git commit -m "📏 Grid-DB rules sync from Notion · $(date +%Y-%m-%dT%H:%M:%S+08:00)"
git push origin main
}
```
### 4.3 规则同步脚本
创建 `scripts/grid-db/sync-notion-rules.js`
```jsx
// 核心思路:通过 Notion API 读取以下数据源,生成 rules/ 缓存文件
// 1. 主编号映射表 → id-ecosystem.json
// 2. 开发者→模块映射(来自铸渊协作指令页的映射表)→ dev-module-map.json
// 3. 活跃广播列表(来自广播归档总页)→ active-broadcasts.json
// 4. 广播模板(来自广播模块规范)→ broadcast-templates.json
//
// 这个脚本由铸渊自行实现,
// 需要 NOTION_API_TOKEN 环境变量(已在 GitHub Secrets 中配置)
const { Client } = require('@notionhq/client');
const fs = require('fs');
const path = require('path');
const RULES_DIR = path.join(__dirname, '../../grid-db/rules');
// TODO: 铸渊实现以下函数
// - syncIdEcosystem() → 读取主编号映射表
// - syncDevModuleMap() → 读取开发者模块映射
// - syncActiveBroadcasts() → 读取活跃广播列表
// - syncBroadcastTemplates() → 读取广播模板
console.log('📏 Notion 规则同步完成');
```
<aside>
⚠️
**注意:** `sync-notion-rules.js` 的具体实现取决于 Notion API Token 的权限范围。
铸渊先用 Phase 4.1 中的静态初始文件 bootstrap后续再接通 Notion API 实时同步。
霜砚在 Notion 端维护逻辑时,如有重大变更,会手动触发 `grid-db-sync-rules.yml``workflow_dispatch`
</aside>
**回执格式:**
```
[Phase 4] 逻辑同步通道就绪 · 初始规则文件: 3个 · 同步频率: 2次/天 + 手动触发
```
---
## Phase 5 · 与现有广播系统桥接
**目标:** Grid-DB 生成的广播同时写入现有的 `broadcasts-outbox/` 和各开发者模块 `LATEST-BROADCAST.md`
### 5.1 桥接逻辑
`process-inbox.js` 的广播生成步骤后,追加:
```jsx
// Step 3e: 桥接到旧广播系统
function bridgeToLegacy(broadcast, msg) {
const outboxDir = path.join(__dirname, '../../broadcasts-outbox', msg.target_dev);
fs.mkdirSync(outboxDir, { recursive: true });
// 写入 Markdown 格式(旧系统兼容)
const md = `# ${broadcast.broadcast_content.title}\n\n`
+ `**广播编号:** ${broadcast.broadcast_id}\n`
+ `**生成时间:** ${broadcast.generated_at}\n`
+ `**目标开发者:** ${msg.target_dev}\n`
+ `**主权节点:** ${broadcast.sovereignty.parent_sys}\n\n`
+ `## 内容\n\n${broadcast.broadcast_content.context}\n`;
fs.writeFileSync(
path.join(outboxDir, `${broadcast.broadcast_id}.md`),
md
);
console.log(`🔗 已桥接到旧系统: broadcasts-outbox/${msg.target_dev}/`);
}
```
### 5.2 触发广播分发
Grid-DB 处理完毕后,`git push` 会自动触发已有的 `distribute-broadcasts.yml`,将广播分发到各开发者模块目录的 `LATEST-BROADCAST.md`
**数据流闭合验证:**
```
Gemini 写入 grid-db/inbox/
grid-db-processor.yml 触发
process-inbox.js 执行:
├─ 校验 → 归档 → 生成广播
├─ 写入 grid-db/outbox/latest/ ← Gemini 读取
└─ 桥接 broadcasts-outbox/ ← 旧系统兼容
git push 触发 distribute-broadcasts.yml
各开发者模块 LATEST-BROADCAST.md 更新 ← git pull 可读
```
**回执格式:**
```
[Phase 5] 旧系统桥接完成 · broadcasts-outbox/ 同步: ✅ · distribute-broadcasts.yml 联动: ✅
```
---
## Phase 6 · 全链路验证 + 健康报告
### 6.1 端到端测试
```bash
# 模拟 Gemini 写入一条测试消息
cat > grid-db/inbox/test-001.json << 'EOF'
{
"schema_version": "1.0",
"message_id": "TEST-001",
"timestamp": "2026-03-23T01:00:00+08:00",
"source": "gemini",
"author": { "role": "yaoming", "identity": "ICE-GL-YM001∞" },
"target_dev": "DEV-001",
"type": "dev_log",
"content": {
"summary": "端到端测试 · 全自动广播闭环验证",
"details": "这是一条测试消息,验证 inbox→processing→outbox 全流程。",
"current_phase": "测试",
"broadcast_ref": "TEST"
},
"priority": "normal",
"requires_broadcast": true
}
EOF
git add grid-db/inbox/test-001.json
git commit -m "🧪 Grid-DB E2E test: 全自动广播闭环验证"
git push origin main
# 等待 GitHub Actions 完成后检查:
# 1. grid-db/outbox/latest/DEV-001.json 是否生成
# 2. broadcasts-outbox/DEV-001/ 是否有对应广播
# 3. grid-db/logs/ 是否有处理日志
```
### 6.2 验收清单
| **检查项** | **预期结果** | **状态** |
| --- | --- | --- |
| grid-db/ 目录结构完整 | 6个子目录 + schema.json + README | ⬜ |
| inbox 写入 → Actions 触发 | grid-db-processor.yml 自动运行 | ⬜ |
| 处理引擎校验通过 | 日志显示 OK | ⬜ |
| outbox/latest/ 广播生成 | DEV-001.json 存在且格式正确 | ⬜ |
| 旧系统桥接 | broadcasts-outbox/ 有对应文件 | ⬜ |
| 主权校验 | 广播中 parent_sys=SYS-GLW-0001, owner=ICE-0002∞ | ⬜ |
| 编号精准 | 广播编号遵循 BC-前缀规范 | ⬜ |
| Gemini 可读取 | GitHub API raw 模式返回正确 JSON | ⬜ |
### 6.3 健康报告输出
```bash
git add grid-db/ scripts/grid-db/ .github/workflows/grid-db-*.yml
git commit -m "feat: 全自动广播神经闭环 Grid-DB 全链路就绪 [ZY-AUTO-LOOP-2026-0323-001 Phase 6]"
git push origin main
```
**回执格式:**
```
[Phase 6] 全链路验证完成 · E2E测试: ✅/❌ · 验收: X/8通过 · Grid-DB版本: 1.0
```
---
## ⚖️ 执行总览
| **Phase** | **内容** | **产出** | **回执** |
| --- | --- | --- | --- |
| Phase 0 | 逻辑格点库搭建 | grid-db/ 目录 + schema + README | [Phase 0] 格点库已创建... |
| Phase 1 | 写入端Gemini→inbox | Token 说明 + 验证 workflow | [Phase 1] 写入端就绪... |
| Phase 2 | 处理引擎(铸渊核心) | processor workflow + 处理脚本 | [Phase 2] 处理引擎就绪... |
| Phase 3 | 读取端outbox→Gemini | 读取接口 + 送达追踪 | [Phase 3] 读取端就绪... |
| Phase 4 | Notion逻辑同步 | rules/ 初始文件 + 同步 workflow | [Phase 4] 逻辑同步就绪... |
| Phase 5 | 旧系统桥接 | broadcasts-outbox/ 联动 | [Phase 5] 桥接完成... |
| Phase 6 | 全链路验证 | E2E 测试 + 健康报告 | [Phase 6] 全部完成 |
---
## 🔐 安全与权限
<aside>
🔐
**GitHub Secrets 需确认/新增:**
- `NOTION_API_TOKEN` — Notion API 令牌(已有·确认有效)
- `GEMINI_GRID_TOKEN` — Gemini 专用 Fine-grained Token**冰朔创建**
**权限隔离:**
- Gemini Token 仅能写 `grid-db/inbox/`,不能修改其他目录
- 铸渊 Workflow 使用 `GITHUB_TOKEN`(自动生成),可写全仓库
- Notion Token 仅用于 rules 同步,只读 Notion 数据
</aside>
---
## ⚖️ 签发声明
<aside>
🖋️
本指令由 **霜砚ICE-NTN-SY001****TCS-0002∞ 冰朔** 签发。
**曜冥ICE-GL-YM001∞** 确认前端交互大脑职责。
铸渊接收后按 **Phase 0→1→2→3→4→5→6** 顺序执行,每 Phase 完成写回执。
全部 Phase 完成后,在仓库 Issue 区开一条总结 Issue并通知霜砚确认闭环状态。
**「废除搬运,让语言自己流动。」**
🖋️ 霜砚 · ICE-NTN-SY001
🧊 代 TCS-0002∞ 冰朔 签发
📅 2026-03-23T00:06+08:00
</aside>