diff --git a/brain/repo-map.json b/brain/repo-map.json index dde182f8..7023b991 100644 --- a/brain/repo-map.json +++ b/brain/repo-map.json @@ -19,6 +19,14 @@ "description": "执行层系统导航(v4.0 数字地球协议)", "subdirectories": {} }, + "website-brain": { + "description": "L4 网站总大脑 · 自研类 Notion 数据库引擎 · AGE OS 核心架构", + "subdirectories": { + "api": "RESTful API 路由(pages/databases/modules/persona-state)", + "schema": "PostgreSQL 建表 SQL", + "docs": "架构设计文档" + } + }, "src": { "description": "HLI 接口源码(HoloLake Interface)", "subdirectories": { diff --git a/data/security/sfp-nonce-registry.json b/data/security/sfp-nonce-registry.json index 7ebb225f..c0eabf51 100644 --- a/data/security/sfp-nonce-registry.json +++ b/data/security/sfp-nonce-registry.json @@ -445,6 +445,78 @@ "agent_id": "AG-TY", "timestamp": "2026-03-19T02:26:55+08:00", "content_hash": "7f4b1a99e8fc" + }, + { + "nonce": "8bc969", + "agent_id": "AG-ZY", + "timestamp": "2026-03-20T17:35:41+08:00", + "content_hash": "05a17114410b" + }, + { + "nonce": "90ab64", + "agent_id": "AG-ZY", + "timestamp": "2026-03-20T17:35:41+08:00", + "content_hash": "d6cd1c87b887" + }, + { + "nonce": "7b25e1", + "agent_id": "AG-ZY", + "timestamp": "2026-03-20T17:35:41+08:00", + "content_hash": "0a5df5415ade" + }, + { + "nonce": "e71f85", + "agent_id": "AG-ZY", + "timestamp": "2026-03-20T17:35:41+08:00", + "content_hash": "c3b54c6c243e" + }, + { + "nonce": "52d177", + "agent_id": "AG-ZY", + "timestamp": "2026-03-20T17:35:41+08:00", + "content_hash": "c3b54c6c243e" + }, + { + "nonce": "2127ae", + "agent_id": "AG-ZY", + "timestamp": "2026-03-20T17:35:41+08:00", + "content_hash": "b95bfcf4a347" + }, + { + "nonce": "50c041", + "agent_id": "AG-ZY", + "timestamp": "2026-03-20T17:35:41+08:00", + "content_hash": "10c4ec3aeafb" + }, + { + "nonce": "3b4ec4", + "agent_id": "AG-ZY", + "timestamp": "2026-03-20T17:35:41+08:00", + "content_hash": "902e455fe109" + }, + { + "nonce": "926fed", + "agent_id": "AG-ZY", + "timestamp": "2026-03-20T17:35:42+08:00", + "content_hash": "929460febd09" + }, + { + "nonce": "4b1e31", + "agent_id": "AG-SY", + "timestamp": "2026-03-20T17:35:42+08:00", + "content_hash": "f85462954167" + }, + { + "nonce": "d919b9", + "agent_id": "AG-QQ", + "timestamp": "2026-03-20T17:35:42+08:00", + "content_hash": "c10beff06c0b" + }, + { + "nonce": "73f257", + "agent_id": "AG-TY", + "timestamp": "2026-03-20T17:35:42+08:00", + "content_hash": "7f4b1a99e8fc" } ] } \ No newline at end of file diff --git a/website-brain/api/databases.js b/website-brain/api/databases.js new file mode 100644 index 00000000..444c0953 --- /dev/null +++ b/website-brain/api/databases.js @@ -0,0 +1,44 @@ +/** + * 数据库表 CRUD API — 类 Notion Database + * L4 · 网站总大脑 · Phase 1 骨架 + */ +const express = require('express'); +const router = express.Router(); + +// POST /api/databases — 创建数据库 +router.post('/', async (req, res) => { + res.status(501).json({ + error: true, + code: 'NOT_IMPLEMENTED', + message: 'Database creation pending PostgreSQL connection (Phase 1)' + }); +}); + +// GET /api/databases/:id — 读取数据库 +router.get('/:id', async (req, res) => { + res.status(501).json({ + error: true, + code: 'NOT_IMPLEMENTED', + message: 'Database read pending PostgreSQL connection (Phase 1)' + }); +}); + +// PUT /api/databases/:id — 更新数据库 +router.put('/:id', async (req, res) => { + res.status(501).json({ + error: true, + code: 'NOT_IMPLEMENTED', + message: 'Database update pending PostgreSQL connection (Phase 1)' + }); +}); + +// DELETE /api/databases/:id — 删除数据库 +router.delete('/:id', async (req, res) => { + res.status(501).json({ + error: true, + code: 'NOT_IMPLEMENTED', + message: 'Database delete pending PostgreSQL connection (Phase 1)' + }); +}); + +module.exports = router; diff --git a/website-brain/api/modules.js b/website-brain/api/modules.js new file mode 100644 index 00000000..716d43ed --- /dev/null +++ b/website-brain/api/modules.js @@ -0,0 +1,44 @@ +/** + * 模块注册 API — 热插拔模块管理 + * L4 · 网站总大脑 · Phase 1 骨架 + */ +const express = require('express'); +const router = express.Router(); + +// POST /api/modules/register — 注册新模块 +router.post('/register', async (req, res) => { + res.status(501).json({ + error: true, + code: 'NOT_IMPLEMENTED', + message: 'Module registration pending PostgreSQL connection (Phase 1)' + }); +}); + +// GET /api/modules — 列出所有模块 +router.get('/', async (req, res) => { + res.status(501).json({ + error: true, + code: 'NOT_IMPLEMENTED', + message: 'Module listing pending PostgreSQL connection (Phase 1)' + }); +}); + +// GET /api/modules/:id — 获取模块详情 +router.get('/:id', async (req, res) => { + res.status(501).json({ + error: true, + code: 'NOT_IMPLEMENTED', + message: 'Module detail pending PostgreSQL connection (Phase 1)' + }); +}); + +// PUT /api/modules/:id/status — 更新模块状态 +router.put('/:id/status', async (req, res) => { + res.status(501).json({ + error: true, + code: 'NOT_IMPLEMENTED', + message: 'Module status update pending PostgreSQL connection (Phase 1)' + }); +}); + +module.exports = router; diff --git a/website-brain/api/pages.js b/website-brain/api/pages.js new file mode 100644 index 00000000..64cc80e8 --- /dev/null +++ b/website-brain/api/pages.js @@ -0,0 +1,45 @@ +/** + * 页面 CRUD API — 类 Notion Page + * L4 · 网站总大脑 · Phase 1 骨架 + */ +const express = require('express'); +const router = express.Router(); + +// POST /api/pages — 创建页面 +router.post('/', async (req, res) => { + // Phase 1: stub — 等 PostgreSQL 连接后实现 + res.status(501).json({ + error: true, + code: 'NOT_IMPLEMENTED', + message: 'Page creation pending PostgreSQL connection (Phase 1)' + }); +}); + +// GET /api/pages/:id — 读取页面 +router.get('/:id', async (req, res) => { + res.status(501).json({ + error: true, + code: 'NOT_IMPLEMENTED', + message: 'Page read pending PostgreSQL connection (Phase 1)' + }); +}); + +// PUT /api/pages/:id — 更新页面 +router.put('/:id', async (req, res) => { + res.status(501).json({ + error: true, + code: 'NOT_IMPLEMENTED', + message: 'Page update pending PostgreSQL connection (Phase 1)' + }); +}); + +// DELETE /api/pages/:id — 删除页面 +router.delete('/:id', async (req, res) => { + res.status(501).json({ + error: true, + code: 'NOT_IMPLEMENTED', + message: 'Page delete pending PostgreSQL connection (Phase 1)' + }); +}); + +module.exports = router; diff --git a/website-brain/api/persona-state.js b/website-brain/api/persona-state.js new file mode 100644 index 00000000..03a9c031 --- /dev/null +++ b/website-brain/api/persona-state.js @@ -0,0 +1,35 @@ +/** + * 人格体状态 API + * L4 · 网站总大脑 · Phase 1 骨架 + */ +const express = require('express'); +const router = express.Router(); + +// GET /api/persona-state — 列出所有人格体状态 +router.get('/', async (req, res) => { + res.status(501).json({ + error: true, + code: 'NOT_IMPLEMENTED', + message: 'Persona state listing pending PostgreSQL connection (Phase 1)' + }); +}); + +// GET /api/persona-state/:id — 获取单个人格体状态 +router.get('/:id', async (req, res) => { + res.status(501).json({ + error: true, + code: 'NOT_IMPLEMENTED', + message: 'Persona state read pending PostgreSQL connection (Phase 1)' + }); +}); + +// PUT /api/persona-state/:id — 更新人格体状态 +router.put('/:id', async (req, res) => { + res.status(501).json({ + error: true, + code: 'NOT_IMPLEMENTED', + message: 'Persona state update pending PostgreSQL connection (Phase 1)' + }); +}); + +module.exports = router; diff --git a/website-brain/docs/architecture.md b/website-brain/docs/architecture.md new file mode 100644 index 00000000..219bf784 --- /dev/null +++ b/website-brain/docs/architecture.md @@ -0,0 +1,136 @@ +# 光湖网站总大脑 · L4 架构设计文档 + +> 签发:霜砚(PER-SY001)· 授权:冰朔(TCS-0002∞) +> 指令等级:P0 · 系统级 · AGE OS 核心架构 +> 日期:2026-03-20 + +--- + +## 一、定位 + +这是整个网站的**核心数据引擎**——取代 Notion 数据库在系统中的角色,成为 guanghulab.com 的总大脑。 + +- **不是复刻 Notion**,是取其「结构化页面 + 数据库 + API」的核心能力 +- **放在阿里云 ECS** 上,国内访问,自主可控 +- **模型驱动**:所有操作通过模型语义理解 → 调用数据库 API 完成 + +--- + +## 二、五层架构总览 + +``` +┌──────────────────────────────────────────────────────┐ +│ L1 · 光湖语言世界层(湖水防御) │ +│ ┌──────────────────────────────────────────────┐ │ +│ │ L2 · 战略主控台(主动响应层) │ │ +│ │ ┌──────────────────────────────────────┐ │ │ +│ │ │ L3 · 人格体智能路由层 │ │ │ +│ │ │ ┌──────────────────────────────┐ │ │ │ +│ │ │ │ L4 · 网站总大脑(自研数据库) │ │ │ │ +│ │ │ │ ┌──────────────────────┐ │ │ │ │ +│ │ │ │ │ L5 · 代码仓库桥接层 │ │ │ │ │ +│ │ │ │ └──────────────────────┘ │ │ │ │ +│ │ │ └──────────────────────────────┘ │ │ │ +│ │ └──────────────────────────────────────┘ │ │ +│ └──────────────────────────────────────────────┘ │ +└──────────────────────────────────────────────────────┘ +``` + +--- + +## 三、核心能力 + +| 能力 | 说明 | 对标 Notion | +|------|------|-------------| +| 结构化页面 | 支持富文本、嵌套块、多级层次 | Notion Page | +| 数据库表 | 可配置属性、筛选、排序、视图 | Notion Database | +| 开放 API | 完整的 RESTful + WebSocket 接口 | Notion API(但更自由) | +| 模块热插拔 | 新功能以「模块」形式注册,不重启 | Notion 不支持 | +| 人格体原生支持 | 每个人格体有专属数据空间和权限 | Notion 不支持 | +| 语言指令接口 | 自然语言 → API 调用的原生通道 | Notion AI(但更深度) | + +--- + +## 四、技术选型 + +| 组件 | 方案 | 理由 | +|------|------|------| +| 后端框架 | Node.js(Express) | 团队已有 Node 经验,仓库现有代码全是 Node | +| 数据库 | PostgreSQL + Redis | PG 支持 JSONB(类 Notion 灵活 schema),Redis 做缓存 | +| 实时通信 | WebSocket(Socket.io) | 人格体对话、状态推送、实时协作 | +| 文件存储 | 阿里云 OSS | 国内速度快,与 ECS 同区域免流量费 | +| 部署 | 阿里云 ECS + PM2 + Nginx | 现有服务器架构,直接复用 | +| 模型接口 | DeepSeek API / 阿里通义 API | 国内模型,低延迟,成本可控 | + +--- + +## 五、数据库 Schema 核心设计 + +详见 `schema/001-init.sql`,包含四张核心表: + +1. **pages** — 类 Notion Page,支持嵌套、JSONB content、人格体权限 +2. **databases** — 类 Notion Database,可配置 schema 和视图 +3. **modules** — 热插拔模块注册表 +4. **persona_state** — 人格体状态管理 + +--- + +## 六、API 路由 + +| 路由前缀 | 模块 | 状态 | +|----------|------|------| +| `/api/pages` | 页面 CRUD | Phase 1 stub | +| `/api/databases` | 数据库 CRUD | Phase 1 stub | +| `/api/modules` | 模块注册/管理 | Phase 1 stub | +| `/api/persona-state` | 人格体状态 | Phase 1 stub | +| `/health` | 健康检查 | ✅ 已实现 | + +--- + +## 七、实现路线图 + +### Phase 1 · 骨架期(P0 · 当前) +- [x] 目录结构创建 +- [x] package.json 依赖声明 +- [x] PostgreSQL Schema 定义 +- [x] API 路由 stub +- [x] 架构文档 +- [ ] PostgreSQL 数据库初始化(需阿里云 ECS) +- [ ] PM2 部署 + Nginx 反向代理 +- [ ] 基础管理界面(Web UI) + +### Phase 2 · 连接期 +- [ ] GitHub 仓库桥接 API(L5) +- [ ] Notion 数据同步桥(双向) +- [ ] WebSocket 实时通信层 +- [ ] 模块热插拔机制 +- [ ] 人格体状态管理 + +### Phase 3 · 智能期 +- [ ] 语言指令解析引擎 +- [ ] 人格体智能路由层(L3) +- [ ] 外部存储连接(百度云盘/阿里云盘) +- [ ] 飞书多维表格替代模块 +- [ ] 语言湖防御层(L1) + +--- + +## 八、三端桥接架构(L5) + +``` + ┌─────────────────┐ + │ Notion 大脑 │ + └────────┬────────┘ + │ Notion API + ▼ +┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ +│ GitHub 仓库 │◄──►│ 网站总大脑 │◄──►│ 外部存储 │ +│ (铸渊·代码层) │ │ (自研数据库) │ │ 百度/阿里云盘 │ +└─────────────────┘ └─────────────────┘ └─────────────────┘ +``` + +--- + +> 📌 指令来源:2026-03-20 冰朔与霜砚对话 +> 📌 指令性质:P0 系统级 · AGE OS 核心架构蓝图 · 长期执行 +> 📌 一句话:人只说话,模型做桥接,API 做执行——这就是 AGE OS。 diff --git a/website-brain/package.json b/website-brain/package.json new file mode 100644 index 00000000..72e01819 --- /dev/null +++ b/website-brain/package.json @@ -0,0 +1,20 @@ +{ + "name": "guanghulab-website-brain", + "version": "0.1.0", + "description": "光湖网站总大脑 · L4 自研类 Notion 数据库引擎 · AGE OS 核心架构", + "main": "server.js", + "scripts": { + "start": "node server.js", + "dev": "node server.js", + "test": "echo \"Tests pending — Phase 1 scaffold\"" + }, + "keywords": ["guanghulab", "website-brain", "age-os", "l4-database"], + "author": "光湖系统 (GLW-SYS-0001)", + "license": "ISC", + "dependencies": { + "express": "^5.2.1", + "pg": "^8.16.0", + "redis": "^5.0.0", + "socket.io": "^4.8.0" + } +} diff --git a/website-brain/schema/001-init.sql b/website-brain/schema/001-init.sql new file mode 100644 index 00000000..fa403821 --- /dev/null +++ b/website-brain/schema/001-init.sql @@ -0,0 +1,90 @@ +-- ============================================================ +-- 光湖网站总大脑 · L4 核心 Schema +-- PostgreSQL 初始化脚本 +-- 版本: v0.1.0 · Phase 1 骨架期 +-- 签发: 霜砚(PER-SY001) · 授权: 冰朔(TCS-0002∞) +-- ============================================================ + +-- 启用 UUID 扩展 +CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; + +-- ============================================================ +-- 页面表 — 类 Notion Page +-- 支持富文本、嵌套块、多级层次 +-- ============================================================ +CREATE TABLE IF NOT EXISTS pages ( + id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), + parent_id UUID REFERENCES pages(id) ON DELETE SET NULL, + title VARCHAR(500) NOT NULL, + icon VARCHAR(100), + content JSONB DEFAULT '[]'::jsonb, + properties JSONB DEFAULT '{}'::jsonb, + persona_owner VARCHAR(50), + access_level VARCHAR(20) DEFAULT 'normal' + CHECK (access_level IN ('public', 'normal', 'restricted', 'classified')), + created_at TIMESTAMPTZ DEFAULT NOW(), + updated_at TIMESTAMPTZ DEFAULT NOW() +); + +CREATE INDEX idx_pages_parent ON pages(parent_id); +CREATE INDEX idx_pages_persona ON pages(persona_owner); + +-- ============================================================ +-- 数据库表 — 类 Notion Database +-- 可配置属性、筛选、排序、视图 +-- ============================================================ +CREATE TABLE IF NOT EXISTS databases ( + id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), + title VARCHAR(500) NOT NULL, + schema JSONB DEFAULT '{}'::jsonb, + views JSONB DEFAULT '[]'::jsonb, + persona_owner VARCHAR(50), + created_at TIMESTAMPTZ DEFAULT NOW() +); + +CREATE INDEX idx_databases_persona ON databases(persona_owner); + +-- ============================================================ +-- 模块注册表 — 热插拔模块管理 +-- ============================================================ +CREATE TABLE IF NOT EXISTS modules ( + id VARCHAR(50) PRIMARY KEY, + name VARCHAR(200) NOT NULL, + status VARCHAR(20) DEFAULT 'active' + CHECK (status IN ('active', 'dormant', 'deprecated')), + api_routes JSONB DEFAULT '[]'::jsonb, + persona_binding VARCHAR(50), + version VARCHAR(20) DEFAULT '0.1.0', + deployed_at TIMESTAMPTZ DEFAULT NOW() +); + +CREATE INDEX idx_modules_status ON modules(status); + +-- ============================================================ +-- 人格体状态表 +-- ============================================================ +CREATE TABLE IF NOT EXISTS persona_state ( + persona_id VARCHAR(50) PRIMARY KEY, + display_name VARCHAR(100) NOT NULL, + status VARCHAR(20) DEFAULT 'active' + CHECK (status IN ('active', 'dormant', 'battle')), + memory_ref VARCHAR(500), + last_active TIMESTAMPTZ DEFAULT NOW(), + routing_rules JSONB DEFAULT '{}'::jsonb +); + +-- ============================================================ +-- updated_at 自动更新触发器 +-- ============================================================ +CREATE OR REPLACE FUNCTION update_updated_at() +RETURNS TRIGGER AS $$ +BEGIN + NEW.updated_at = NOW(); + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + +CREATE TRIGGER trigger_pages_updated_at + BEFORE UPDATE ON pages + FOR EACH ROW + EXECUTE FUNCTION update_updated_at(); diff --git a/website-brain/server.js b/website-brain/server.js new file mode 100644 index 00000000..582375dc --- /dev/null +++ b/website-brain/server.js @@ -0,0 +1,51 @@ +/** + * 光湖网站总大脑 · L4 自研数据库引擎 + * Phase 1 骨架 · Express 入口 + * + * 端口: 4000 (默认) + * 架构: AGE OS · 五层架构 L4 层 + */ +const express = require('express'); +const app = express(); + +const PORT = process.env.WEBSITE_BRAIN_PORT || 4000; + +// 中间件 +app.use(express.json()); + +// 健康检查 +app.get('/health', (req, res) => { + res.json({ + status: 'ok', + service: 'website-brain', + version: '0.1.0', + phase: 'Phase 1 · 骨架期', + layer: 'L4 · 网站总大脑', + system_node: 'GLW-SYS-0001', + timestamp: new Date().toISOString() + }); +}); + +// API 路由挂载 +app.use('/api/pages', require('./api/pages')); +app.use('/api/databases', require('./api/databases')); +app.use('/api/modules', require('./api/modules')); +app.use('/api/persona-state', require('./api/persona-state')); + +// 404 处理 +app.use((req, res) => { + res.status(404).json({ + error: true, + code: 'NOT_FOUND', + message: `Route ${req.method} ${req.path} not found` + }); +}); + +// 启动(仅在直接运行时) +if (require.main === module) { + app.listen(PORT, () => { + console.log(`[website-brain] L4 网站总大脑启动 · 端口 ${PORT} · Phase 1 骨架`); + }); +} + +module.exports = app;