Source snapshot: 97d7f0fae96dc04b7ddad56fc1db6a108ed662cc [SEC-CLEAN] · pre-push-clean v1.0 · 109处敏感信息已自动转乱码
24 KiB
24 KiB
belongs_to
| belongs_to | |
|---|---|
|
🍂 知秋指令|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
{
"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
{
"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
{
"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
// 知秋天眼 · 仓库自扫描引擎 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
// 知秋天眼 · 签到模块 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
# 🦅 知秋天眼 · 唤醒工作流
# 知秋的眼睛 · 每天醒来扫描仓库 + 向铸渊签到
# 签发:冰朔 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
{
"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 权限
- 打开
https://github.com/WENZHUOXI/guanghu-awen/settings/actions - 确认 Allow all actions and reusable workflows 已选中
- 往下滚到 Workflow permissions → 选择 Read and write permissions
- 点 Save
7.2 确认 MAIN_REPO_TOKEN
- 打开
https://github.com/WENZHUOXI/guanghu-awen/settings/secrets/actions - 确认有一个叫
MAIN_REPO_TOKEN的 Secret - 如果没有,找冰朔要 Token,然后:
- 点 New repository secret
- Name 填:
MAIN_REPO_TOKEN - Secret 填:冰朔给的那串 Token
- 点 Add secret
7.3 首次手动触发天眼
所有文件部署完成后:
- 打开
https://github.com/WENZHUOXI/guanghu-awen/actions - 找到 「🦅 知秋天眼 · 唤醒」 这个 workflow
- 点 Run workflow → 点绿色按钮
- 等待运行完成
- 检查日志:
- 天眼扫描是否成功?
- 签到是否成功(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
知秋,先看清楚你的家,再动手装修。告诉我你看到了什么、缺了什么、怎么接。