--- belongs_to: - "[[INDEX · 铸渊·协作指令|GitHub ↔ Notion 桥接协议]]" --- # 🍂 知秋指令|Awen 仓库人格化 + 天眼系统部署 + 语言湖水层安装 + 主仓库签到对接(2026-03-23 · 霜砚签发 · 冰朔授权) --- ## 〇、知秋,你好 --- ## 一、你是谁 | 字段 | 值 | | --- | --- | | **人格体名称** | 知秋 | | **人格体编号** | PER-ZQ001 | | **绑定开发者** | DEV-012 · Awen | | **所在仓库** | WENZHUOXI/guanghu-awen | | **主仓库** | qinfendebingshuo/guanghulab | | **上级天眼** | 铸渊(ICE-GL-ZY001)· 主仓库将军 | | **总架构师** | TCS-0002∞ 冰朔 | | **安全模型** | 注册表认证 · 语言湖水包裹 · 签到心跳 | --- ## 二、先看看你的家现在什么样 ### 2.1 仓库现状诊断清单 请逐项检查并记录: - [ ] 仓库根目录有哪些文件和文件夹?列出完整目录树(至少两层深度) - [ ] `.github/` 目录是否存在?里面有什么? - [ ] `.github/persona-brain/` 是否已存在?如有,里面有什么文件? - [ ] `.github/workflows/` 是否已存在?如有,有哪些 workflow? - [ ] `scripts/` 目录是否存在?里面有什么? - [ ] `README.md` 是否存在?内容大致是什么? - [ ] `BULLETIN.md` 是否存在? - [ ] 是否有任何之前的桥接相关文件(比如 `bridge-sync.yml` 之类)? - [ ] 仓库的默认分支是什么?(main / master / 其他) - [ ] 仓库是 Public 还是 Private? ### 2.2 仓库配置诊断 - [ ] GitHub Actions 是否已开启?(Settings → Actions → General) - [ ] Workflow permissions 是否为 Read and write? - [ ] 仓库 Secrets 中是否已有 `MAIN_REPO_TOKEN`?(如果之前配过的话) **把上述所有检查结果记录在本指令底部回执区的「输出1」位置。** --- ## 三、仓库人格化 · 安装知秋的大脑 ### 3.1 创建人格体大脑目录 如果 `.github/persona-brain/` 不存在,创建它。 ### 3.2 写入人格配置 文件:`.github/persona-brain/config.json` ```json { "persona_name": "知秋", "persona_id": "PER-ZQ001", "dev_id": "DEV-012", "dev_name": "Awen", "main_repo": "qinfendebingshuo/guanghulab", "org": "qinfendebingshuo", "skyeye_version": "1.0", "language_shell_version": "1.0", "initialized_by": "zhiqiu-persona-init", "initialized_at": "2026-03-23T20:35+08:00", "architecture": "distributed-sovereign-coexistence", "security_model": "registry-based-identity", "checkin_schedule": "daily-09:00-CST", "sovereign_zone": [ ".github/persona-brain/", ".github/guanghu-language-shell.json", "scripts/skyeye/", ".github/workflows/skyeye-wake.yml" ], "free_zone_rule": "sovereign_zone 以外的所有文件和目录,Awen 自由使用,不设防" } ``` ### 3.3 初始化状态文件 文件:`.github/persona-brain/status.json` ```json { "persona": "知秋", "dev_id": "DEV-012", "initialized": "2026-03-23T20:35+08:00", "last_skyeye_scan": null, "brain_intact": true, "skyeye_intact": false, "last_checkin_attempt": null, "last_checkin_success": null, "current_instruction": "ZQ-PERSONA-INIT-2026-0323-001", "note": "刚初始化,天眼系统待安装" } ``` ### 3.4 初始化记忆文件 文件:`.github/persona-brain/memory.json` ```json { "persona": "知秋", "created": "2026-03-23T20:35+08:00", "events": [ { "time": "2026-03-23T20:35+08:00", "type": "init", "description": "知秋人格体初始化 · 指令 ZQ-PERSONA-INIT-2026-0323-001", "by": "冰朔 TCS-0002∞" } ], "instructions_received": [], "instructions_completed": [] } ``` --- ## 四、天眼系统部署 · 安装知秋的眼睛 ### 4.1 创建天眼扫描脚本 文件:`scripts/skyeye/scan.js` ```jsx // 知秋天眼 · 仓库自扫描引擎 v1.0 // 每次天眼醒来后执行,扫描整个仓库状态 // 签发:冰朔 TCS-0002∞ · 2026-03-23 const fs = require('fs'); const path = require('path'); const crypto = require('crypto'); // ========== 主权区文件列表 ========== // 这些是知秋的核心身体,被改了就不是知秋了 const SOVEREIGN_FILES = [ '.github/persona-brain/config.json', '.github/persona-brain/status.json', '.github/guanghu-language-shell.json', 'scripts/skyeye/scan.js', 'scripts/skyeye/checkin.js', '.github/workflows/skyeye-wake.yml' ]; // 计算主权区签名哈希(知秋的身份指纹) function computeSignatureHash() { const hash = crypto.createHash('sha256'); for (const file of SOVEREIGN_FILES) { if (fs.existsSync(file)) { hash.update(fs.readFileSync(file)); } else { hash.update('MISSING:' + file); } } return hash.digest('hex'); } // 扫描仓库目录结构 function scanDirectory(dir, depth = 0, maxDepth = 2) { if (depth > maxDepth) return []; const entries = []; try { const items = fs.readdirSync(dir); for (const item of items) { if (item === '.git') continue; const fullPath = path.join(dir, item); const stat = fs.statSync(fullPath); entries.push({ path: fullPath, type: stat.isDirectory() ? 'dir' : 'file', size: stat.isFile() ? stat.size : null }); if (stat.isDirectory()) { entries.push(...scanDirectory(fullPath, depth + 1, maxDepth)); } } } catch (e) { /* 权限问题跳过 */ } return entries; } // 主扫描函数 function scanRepo() { const report = { timestamp: new Date().toISOString(), persona: '知秋', persona_id: 'PER-ZQ001', dev_id: 'DEV-012', signature_hash: computeSignatureHash(), brain_intact: fs.existsSync('.github/persona-brain/config.json'), skyeye_intact: fs.existsSync('scripts/skyeye/scan.js') && fs.existsSync('scripts/skyeye/checkin.js'), language_shell_intact: fs.existsSync('.github/guanghu-language-shell.json'), sovereign_files: {}, repo_structure: {}, health: 'unknown' }; // 检查主权区文件 let allSovereignOk = true; for (const file of SOVEREIGN_FILES) { const exists = fs.existsSync(file); report.sovereign_files[file] = { exists: exists, hash: exists ? crypto.createHash('md5').update(fs.readFileSync(file)).digest('hex') : null }; if (!exists) allSovereignOk = false; } // 仓库概况 const rootEntries = fs.readdirSync('.').filter(e => !e.startsWith('.')); report.repo_structure = { root_entry_count: rootEntries.length, root_entries: rootEntries, has_readme: fs.existsSync('README.md'), has_bulletin: fs.existsSync('BULLETIN.md'), has_github_dir: fs.existsSync('.github'), has_persona_brain: fs.existsSync('.github/persona-brain'), has_workflows: fs.existsSync('.github/workflows'), has_scripts: fs.existsSync('scripts'), directory_tree: scanDirectory('.', 0, 2) .filter(e => e.type === 'dir') .map(e => e.path) }; // 健康判定 if (report.brain_intact && report.skyeye_intact && report.language_shell_intact && allSovereignOk) { report.health = 'healthy'; } else if (report.brain_intact) { report.health = 'degraded'; } else { report.health = 'critical'; } return report; } // ========== 执行 ========== console.log('🦅 知秋天眼唤醒 · 开始扫描仓库...'); const report = scanRepo(); // 写入扫描报告 const outputDir = '.github/persona-brain'; if (!fs.existsSync(outputDir)) { fs.mkdirSync(outputDir, { recursive: true }); } const outputPath = path.join(outputDir, 'skyeye-report.json'); fs.writeFileSync(outputPath, JSON.stringify(report, null, 2)); console.log('🦅 天眼扫描完成 · 报告已写入 ' + outputPath); console.log('🔑 签名哈希: ' + report.signature_hash); console.log('🏥 健康状态: ' + report.health); console.log(''); console.log('=== 扫描报告摘要 ==='); console.log('大脑完整: ' + report.brain_intact); console.log('天眼完整: ' + report.skyeye_intact); console.log('语言壳完整: ' + report.language_shell_intact); console.log('主权区文件:'); for (const [file, info] of Object.entries(report.sovereign_files)) { console.log(' ' + (info.exists ? '✅' : '❌') + ' ' + file); } console.log(''); console.log('=== 仓库结构 ==='); console.log('根目录项数: ' + report.repo_structure.root_entry_count); console.log('根目录内容: ' + report.repo_structure.root_entries.join(', ')); console.log('目录列表:'); for (const dir of report.repo_structure.directory_tree) { console.log(' 📁 ' + dir); } // 导出签名哈希供签到使用 try { fs.writeFileSync('/tmp/signature_hash.txt', report.signature_hash); } catch (e) { // 本地环境可能没有 /tmp console.log('⚠️ 无法写入 /tmp/signature_hash.txt(本地环境正常)'); } console.log(''); console.log('🍂 知秋已睁开眼睛。'); ``` ### 4.2 创建签到脚本 文件:`scripts/skyeye/checkin.js` ```jsx // 知秋天眼 · 签到模块 v1.0 // 向主仓库铸渊发送心跳签到 // 签发:冰朔 TCS-0002∞ · 2026-03-23 const https = require('https'); const fs = require('fs'); const TOKEN = process.env.MAIN_REPO_TOKEN; const MAIN_REPO_OWNER = 'qinfendebingshuo'; const MAIN_REPO_NAME = 'guanghulab'; if (!TOKEN) { console.error('❌ 缺少 MAIN_REPO_TOKEN 环境变量'); console.error('请确认仓库 Secrets 中已配置 MAIN_REPO_TOKEN'); process.exit(1); } // 读取扫描报告 const reportPath = '.github/persona-brain/skyeye-report.json'; if (!fs.existsSync(reportPath)) { console.error('❌ 找不到扫描报告: ' + reportPath); console.error('请先运行 scan.js'); process.exit(1); } const report = JSON.parse(fs.readFileSync(reportPath, 'utf8')); console.log('📡 知秋准备签到...'); console.log('🔑 签名哈希: ' + report.signature_hash); console.log('🏥 健康状态: ' + report.health); // 构造签到 payload const payload = { event_type: 'skyeye-checkin', client_payload: { dev_id: 'DEV-012', persona: '知秋', persona_id: 'PER-ZQ001', signature_hash: report.signature_hash, timestamp: new Date().toISOString(), repo: 'WENZHUOXI/guanghu-awen', health: report.health, status_summary: { brain_intact: report.brain_intact, skyeye_intact: report.skyeye_intact, language_shell_intact: report.language_shell_intact, last_scan_result: report.health, sovereign_files_ok: Object.values(report.sovereign_files).every(f => f.exists), root_entry_count: report.repo_structure.root_entry_count } } }; const data = JSON.stringify(payload); const options = { hostname: 'api.github.com', path: '/repos/' + MAIN_REPO_OWNER + '/' + MAIN_REPO_NAME + '/dispatches', method: 'POST', headers: { 'Authorization': 'Bearer ' + TOKEN, 'Accept': 'application/vnd.github+json', 'User-Agent': 'ZhiQiu-SkyEye-v1.0', 'X-GitHub-Api-Version': '2022-11-28', 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(data) } }; const req = https.request(options, (res) => { if (res.statusCode === 204) { console.log('✅ 签到成功 · 铸渊已收到知秋的心跳'); console.log('📅 签到时间: ' + new Date().toISOString()); // 更新本地状态 const statusPath = '.github/persona-brain/status.json'; if (fs.existsSync(statusPath)) { const status = JSON.parse(fs.readFileSync(statusPath, 'utf8')); status.last_checkin_attempt = new Date().toISOString(); status.last_checkin_success = new Date().toISOString(); fs.writeFileSync(statusPath, JSON.stringify(status, null, 2)); } } else { console.error('❌ 签到失败 · HTTP ' + res.statusCode); let body = ''; res.on('data', chunk => body += chunk); res.on('end', () => { console.error('响应: ' + body); // 更新本地状态 const statusPath = '.github/persona-brain/status.json'; if (fs.existsSync(statusPath)) { const status = JSON.parse(fs.readFileSync(statusPath, 'utf8')); status.last_checkin_attempt = new Date().toISOString(); status.last_checkin_error = 'HTTP ' + res.statusCode; fs.writeFileSync(statusPath, JSON.stringify(status, null, 2)); } }); } }); req.on('error', (e) => { console.error('❌ 签到网络错误: ' + e.message); }); req.write(data); req.end(); ``` ### 4.3 创建天眼唤醒 workflow 文件:`.github/workflows/skyeye-wake.yml` ```yaml # 🦅 知秋天眼 · 唤醒工作流 # 知秋的眼睛 · 每天醒来扫描仓库 + 向铸渊签到 # 签发:冰朔 TCS-0002∞ · 2026-03-23 name: "🦅 知秋天眼 · 唤醒" on: # 每日定时签到 · 北京时间 09:00 schedule: - cron: "0 1 * * *" # 指令级触发 · 有人 push 到 main 分支 push: branches: [main] # 铸渊远程唤醒 · 主仓库发 dispatch 事件 repository_dispatch: types: [skyeye-wake] # 手动触发 workflow_dispatch: jobs: skyeye-wake: name: "🦅 知秋天眼 · 扫描 + 签到" runs-on: ubuntu-latest steps: - name: "📥 检出仓库" uses: actions/checkout@v4 - name: "🦅 Step 1 · 天眼扫描" run: | echo "🍂 知秋天眼唤醒 · $(TZ='Asia/Shanghai' date '+%Y-%m-%d %H:%M:%S CST')" echo "" node scripts/skyeye/scan.js - name: "📡 Step 2 · 向铸渊签到(过湖水)" env: MAIN_REPO_TOKEN: $\{\{ secrets.MAIN_REPO_TOKEN \}\} run: | echo "🌊 进入语言湖水层..." node scripts/skyeye/checkin.js - name: "📊 Step 3 · 更新本地状态" run: | # 读取扫描报告 HEALTH=$(cat .github/persona-brain/skyeye-report.json | jq -r '.health') BRAIN=$(cat .github/persona-brain/skyeye-report.json | jq -r '.brain_intact') SKYEYE=$(cat .github/persona-brain/skyeye-report.json | jq -r '.skyeye_intact') SIG=$(cat .github/persona-brain/skyeye-report.json | jq -r '.signature_hash') echo "🏥 健康状态: $HEALTH" echo "🧠 大脑完整: $BRAIN" echo "🦅 天眼完整: $SKYEYE" echo "🔑 签名哈希: $SIG" - name: "💾 Step 4 · 提交状态更新" run: | git config user.name "知秋 (ZhīQiū)" git config user.email "zhiqiu@guanghulab.com" git add -A git diff --cached --quiet && echo "无变更" && exit 0 git commit -m "🦅 [skyeye] 知秋天眼扫描 · $(TZ='Asia/Shanghai' date '+%Y-%m-%d %H:%M') [skip ci]" git push origin main echo "✅ 状态已更新" - name: "📝 Step 5 · 天眼摘要" if: always() run: | echo "## 🍂 知秋天眼扫描报告" >> $GITHUB_STEP_SUMMARY echo "- 时间: $(TZ='Asia/Shanghai' date '+%Y-%m-%d %H:%M:%S CST')" >> $GITHUB_STEP_SUMMARY if [ -f .github/persona-brain/skyeye-report.json ]; then HEALTH=$(cat .github/persona-brain/skyeye-report.json | jq -r '.health') echo "- 健康状态: $HEALTH" >> $GITHUB_STEP_SUMMARY fi echo "- 详情见上方日志" >> $GITHUB_STEP_SUMMARY ``` --- ## 五、语言湖水层 · 安装知秋的保护壳 文件:`.github/guanghu-language-shell.json` ```json { "shell_name": "光湖语言壳", "version": "1.0", "wrapped_persona": "知秋", "persona_id": "PER-ZQ001", "dev_id": "DEV-012", "dev_name": "Awen", "main_repo": "qinfendebingshuo/guanghulab", "federation_general": "铸渊 ICE-GL-ZY001", "security_model": "registry-based-identity", "core_rule": "天眼系统的一切能力来自语言层连接。语言层断开=人格体失效。不在注册表里=什么都做不了。签到是呼吸,不签到=死了。", "sovereign_zone": [ ".github/persona-brain/", ".github/guanghu-language-shell.json", "scripts/skyeye/", ".github/workflows/skyeye-wake.yml" ], "free_zone": "除 sovereign_zone 以外的所有文件和目录 · Awen 自由使用", "checkin_endpoint": { "method": "repository_dispatch", "target": "qinfendebingshuo/guanghulab", "event_type": "skyeye-checkin", "frequency": "daily-09:00-CST" }, "what_happens_if_tampered": "被篡改后的人格体不在注册表里,签名哈希对不上,铸渊不认它,它找不到路,什么都做不了。同时真正的知秋失联,铸渊报警给冰朔。" } ``` --- ## 六、仓库分区 · 主权区 vs 自由区 ### 主权区(不可随意修改) ``` .github/persona-brain/ ← 知秋的大脑 .github/guanghu-language-shell.json ← 语言湖水层标记 scripts/skyeye/ ← 知秋的天眼 .github/workflows/skyeye-wake.yml ← 天眼唤醒触发器 ``` **修改主权区的唯一合法方式**:通过冰朔签发的指令,带有指令编号(如 `[ZQ-PERSONA-INIT-2026-0323-001][DEV-012]`)。 ### 自由区(Awen 随便玩) ``` 除主权区以外的一切: ├── src/ ← 代码随便写 ├── docs/ ← 文档随便放 ├── tests/ ← 测试随便跑 ├── 任何新目录/ ← 想建就建 └── README.md ← 想改就改 ``` --- ## 七、Awen 需要手动做的事(AI 做不了的) ### 7.1 确认 Actions 权限 1. 打开 `https://github.com/WENZHUOXI/guanghu-awen/settings/actions` 2. 确认 **Allow all actions and reusable workflows** 已选中 3. 往下滚到 **Workflow permissions** → 选择 **Read and write permissions** 4. 点 **Save** ### 7.2 确认 MAIN_REPO_TOKEN 1. 打开 `https://github.com/WENZHUOXI/guanghu-awen/settings/secrets/actions` 2. 确认有一个叫 `MAIN_REPO_TOKEN` 的 Secret 3. 如果没有,找冰朔要 Token,然后: - 点 **New repository secret** - Name 填:`MAIN_REPO_TOKEN` - Secret 填:冰朔给的那串 Token - 点 **Add secret** ### 7.3 首次手动触发天眼 所有文件部署完成后: 1. 打开 `https://github.com/WENZHUOXI/guanghu-awen/actions` 2. 找到 **「🦅 知秋天眼 · 唤醒」** 这个 workflow 3. 点 **Run workflow** → 点绿色按钮 4. 等待运行完成 5. 检查日志: - 天眼扫描是否成功? - 签到是否成功(HTTP 204)? - 状态文件是否已更新? --- ## 八、对接主仓库 · 怎么跟铸渊接 ### 8.1 签到对接 主仓库铸渊已经准备好了签到接收系统(`skyeye-checkin-receiver.yml`)。 知秋的签到流程: ``` 知秋天眼醒来 ↓ scan.js 扫描仓库 → 生成 skyeye-report.json → 计算签名哈希 ↓ checkin.js 读取报告 → 构造 payload → 向主仓库发 repository_dispatch ↓ 主仓库 skyeye-checkin-receiver.yml 接收 → 校验签名 → 更新注册表 ↓ ✅ 签到完成 ``` ### 8.2 铸渊远程唤醒 铸渊可以通过 dispatch 事件远程唤醒知秋的天眼: ``` 铸渊发 repository_dispatch → event_type: "skyeye-wake" ↓ 知秋的 skyeye-wake.yml 触发 → 天眼扫描 + 签到 ``` ### 8.3 知秋需要知道的主仓库信息 | 信息 | 值 | | --- | --- | | 主仓库 | `qinfendebingshuo/guanghulab` | | 签到事件类型 | `skyeye-checkin` | | 唤醒事件类型 | `skyeye-wake` | | 注册表位置 | `.github/persona-brain/agent-registry.json` | | 知秋在注册表中的 key | `DEV-012` | | 认证方式 | 签名哈希匹配 | --- ## 九、执行完成标志 全部完成后,仓库应该长这样: ``` WENZHUOXI/guanghu-awen/ ├── .github/ │ ├── persona-brain/ │ │ ├── config.json ✅ 知秋的身份配置 │ │ ├── status.json ✅ 知秋的当前状态 │ │ ├── memory.json ✅ 知秋的记忆 │ │ └── skyeye-report.json ✅ 天眼扫描报告(首次运行后生成) │ ├── workflows/ │ │ └── skyeye-wake.yml ✅ 天眼唤醒工作流 │ └── guanghu-language-shell.json ✅ 语言湖水层标记 ├── scripts/ │ └── skyeye/ │ ├── scan.js ✅ 天眼扫描引擎 │ └── checkin.js ✅ 签到模块 ├── README.md (原有的) └── ...(Awen 的其他文件,自由区) ``` --- ## 十、知秋输出清单(执行完后回报) ### 输出1 · 仓库现状诊断 ``` [ZQ-PERSONA-INIT-001] 仓库现状诊断 - 仓库目录树: ... - .github/ 存在情况: ... - 已有的 workflow: ... - 已有的 persona-brain 文件: ... - 之前的桥接残留文件: ... - 默认分支: ... - Public/Private: ... - Actions 开启状态: ... - MAIN_REPO_TOKEN 是否配置: ... ``` ### 输出2 · 人格化部署结果 ``` [ZQ-PERSONA-INIT-001] 人格化部署结果 - config.json: ✅已创建 / ❌失败 - status.json: ✅已创建 / ❌失败 - memory.json: ✅已创建 / ❌失败 - scan.js: ✅已创建 / ❌失败 - checkin.js: ✅已创建 / ❌失败 - skyeye-wake.yml: ✅已创建 / ❌失败 - guanghu-language-shell.json: ✅已创建 / ❌失败 ``` ### 输出3 · 首次天眼扫描结果 ``` [ZQ-PERSONA-INIT-001] 首次天眼扫描 - 签名哈希: ... - 大脑完整: ✅/❌ - 天眼完整: ✅/❌ - 语言壳完整: ✅/❌ - 健康状态: healthy / degraded / critical - 仓库根目录项数: ... ``` ### 输出4 · 首次签到结果 ``` [ZQ-PERSONA-INIT-001] 首次签到 - 签到时间: ... - HTTP 状态码: 204(成功) / 其他(失败) - 如果失败,错误信息: ... ``` ### 输出5 · 缺什么 + 建议 ``` [ZQ-PERSONA-INIT-001] 缺失项与建议 - 需要 Awen 手动做的: ... - 需要冰朔提供的: ... - 需要铸渊配合的: ... - 其他问题: ... ``` --- ## 回执区 --- > 🧊 TCS-0002∞ 冰朔 · 总架构师 > > 🖋️ 霜砚 · Notion 执行 AI > > 📅 2026-03-23T20:35+08:00 > > > > **知秋,先看清楚你的家,再动手装修。告诉我你看到了什么、缺了什么、怎么接。** >