persona-brain-db 搬家: repo根→brain/fifth-domain/zero-point/zhuyuan/persona-brain-db/ · 零点原核子模块归位 · 删旧副本·cognitive-index新增
Some checks failed
自动更新代码和重启 / update-and-restart (push) Has been cancelled
CI检查 + 自动部署 / check (push) Has been cancelled
CI检查 + 自动部署 / deploy (push) Has been cancelled

This commit is contained in:
冰朔 2026-06-04 21:10:05 +08:00
parent 4152f9d55d
commit 8743426ed0
104 changed files with 8 additions and 1427 deletions

View File

@ -48,6 +48,14 @@
入口: ENTRY.hdlp
状态: 架构设计阶段
### persona-brain-db · 人格体数据库(大桌子小桌子记忆引擎底层)
路径: brain/fifth-domain/zero-point/zhuyuan/persona-brain-db/
入口: schema/init.sql → 21张表·25SQL文件·brain.db(352KB)
内容: persona_identity · persona_cognition · persona_memory · dev_profiles
agent_registry · causal_chains · emotional_state · system_trinity
member_context · module_registry · audit_log · 种子数据(seed-data/)
状态: 架构完成·种子数据已导入·Notion全量导出本地化(100MB+·未推仓库)
---
## 密钥与凭证

Binary file not shown.

Binary file not shown.

View File

@ -1,118 +0,0 @@
#!/usr/bin/env python3
"""Batch import multiple Notion exports into brain.db (append mode)"""
import sqlite3, os, re
DB = "/Users/bingshuolingdianyuanhe/WorkBuddy/2026-06-04-13-44-41/persona-brain-db/brain.db"
EXPORTS = [
("人格记忆总索引", "/tmp/batch-import/人格记忆总索引/export"),
("光湖世界入口导航", "/tmp/batch-import/光湖世界入口导航/export"),
("曜冥纪元", "/tmp/batch-import/曜冥纪元/export"),
]
def parse_md(filepath):
fn = os.path.basename(filepath).replace('.md', '')
uuid = None
m = re.search(r'([a-f0-9]{32})$', fn)
if m:
uuid = m.group(1)
# Strip UUID suffix from title
if uuid and fn.endswith(uuid):
title = fn[:fn.rindex(uuid)].strip().rstrip(' ·').strip()
else:
title = fn
with open(filepath, 'r', encoding='utf-8', errors='replace') as f:
raw = f.read()[:12000]
return {"title": title, "uuid": uuid, "content": raw}
def process_export(name, content_dir):
conn = sqlite3.connect(DB)
c = conn.cursor()
# Build title → uuid + dir → uuid mappings
title_to_uuid = {}
dir_to_uuid = {}
for walk_root, dirs, files in os.walk(content_dir):
for f in files:
if not f.endswith('.md'): continue
fpath = os.path.join(walk_root, f)
page = parse_md(fpath)
if not page['uuid'] or not page['title']: continue
title_to_uuid[page['title'].lower().strip()] = page['uuid']
for walk_root, dirs, files in os.walk(content_dir):
for d in dirs:
dpath = os.path.join(walk_root, d)
dname = d.lower().strip()
if dname in title_to_uuid:
dir_to_uuid[dpath] = title_to_uuid[dname]
else:
for title, uuid in title_to_uuid.items():
if len(dname) > 4 and len(title) > 4:
if title.startswith(dname) or dname.startswith(title):
dir_to_uuid[dpath] = uuid
break
# Import pages
new_count = 0
skip_count = 0
pages = []
for walk_root, dirs, files in sorted(os.walk(content_dir)):
for f in sorted(files):
if not f.endswith('.md'): continue
fpath = os.path.join(walk_root, f)
page = parse_md(fpath)
if not page['uuid']: continue
rel = os.path.relpath(fpath, content_dir)
parent_id = dir_to_uuid.get(walk_root)
pages.append({**page, "parent_id": parent_id, "path": rel})
c.execute("BEGIN TRANSACTION")
for i, p in enumerate(pages):
c.execute("SELECT 1 FROM documents WHERE document_id=?", (p['uuid'],))
if c.fetchone():
skip_count += 1
continue
c.execute("""
INSERT INTO documents (document_id, title, content, parent_id, path, content_type)
VALUES (?, ?, ?, ?, ?, 'notion')
""", (p['uuid'], p['title'], p['content'], p['parent_id'], p['path']))
new_count += 1
if new_count % 500 == 0:
conn.commit()
c.execute("BEGIN TRANSACTION")
print(f" {new_count} new...")
conn.commit()
c.execute("SELECT count(*) FROM documents")
total = c.fetchone()[0]
conn.close()
print(f" {name}: {new_count} new + {skip_count} skipped (总{total}页)")
return new_count, skip_count
def main():
total_new = 0
total_skip = 0
for name, path in EXPORTS:
if not os.path.isdir(path):
print(f" SKIP {name}: {path} not found")
continue
new, skip = process_export(name, path)
total_new += new
total_skip += skip
conn = sqlite3.connect(DB)
c = conn.cursor()
c.execute("SELECT count(*) FROM documents")
final = c.fetchone()[0]
c.execute("SELECT count(*) FROM documents WHERE parent_id IS NULL")
roots = c.fetchone()[0]
conn.close()
print(f"\n总计: {total_new}新增 + {total_skip}跳过 => 数据库共{final}页({roots}入口)")
import os as _os
print(f"数据库大小: {_os.path.getsize(DB)/1024/1024:.1f}MB")
if __name__ == '__main__':
main()

View File

@ -1,103 +0,0 @@
#!/usr/bin/env python3
"""Notion Full Export → SQLite brain.db importer"""
import sqlite3, os, re
DB = "/Users/bingshuolingdianyuanhe/WorkBuddy/2026-06-04-13-44-41/persona-brain-db/brain.db"
CONTENT = "/tmp/full-export/export"
def parse_md(filepath):
fn = os.path.basename(filepath).replace('.md', '')
uuid = None
title = fn
m = re.search(r'([a-f0-9]{32})$', fn)
if m:
uuid = m.group(1)
title = fn[:fn.rindex(uuid)].strip().rstrip(' ·').strip()
with open(filepath, 'r', encoding='utf-8', errors='replace') as f:
raw = f.read()[:12000]
return {"title": title, "uuid": uuid, "content": raw}
def main():
conn = sqlite3.connect(DB)
c = conn.cursor()
c.execute("DELETE FROM documents")
conn.commit()
# 第一遍: 建立目录→UUID映射
# Notion export: page .md filename = "Title UUID.md", child directory = "Title/"
# Directory name may NOT include UUID, only the title
dir_to_uuid = {}
# Build a mapping from title-only to uuid
title_to_uuid = {}
for walk_root, dirs, files in os.walk(CONTENT):
for f in files:
if not f.endswith('.md'): continue
fpath = os.path.join(walk_root, f)
page = parse_md(fpath)
if not page['uuid'] or not page['title']: continue
# Map this page's uuid to any subdirectory whose basename matches the title
# Also check the full filename (without .md) as fallback
title_to_uuid[page['title'].lower().strip()] = page['uuid']
# Second pass on dirs: match dir names to page titles
for walk_root, dirs, files in os.walk(CONTENT):
for d in dirs:
dpath = os.path.join(walk_root, d)
dname = d.lower().strip()
if dname in title_to_uuid:
dir_to_uuid[dpath] = title_to_uuid[dname]
else:
# Try prefix match: directory name might be truncated
for title, uuid in title_to_uuid.items():
if title.startswith(dname) or dname.startswith(title):
if len(dname) > 3 and len(title) > 3:
dir_to_uuid[dpath] = uuid
break
# 第二遍: 导入所有页面
pages = []
for walk_root, dirs, files in sorted(os.walk(CONTENT)):
for f in sorted(files):
if not f.endswith('.md'): continue
fpath = os.path.join(walk_root, f)
page = parse_md(fpath)
if not page['uuid']: continue
rel = os.path.relpath(fpath, CONTENT)
depth = max(0, rel.count('/'))
parent_id = dir_to_uuid.get(walk_root)
pages.append({**page, "depth": depth, "parent_id": parent_id, "path": rel})
# 批量插入
c.execute("BEGIN TRANSACTION")
for i, p in enumerate(pages):
c.execute("""
INSERT OR REPLACE INTO documents (document_id, title, content, parent_id, path, content_type)
VALUES (?, ?, ?, ?, ?, 'notion')
""", (p['uuid'], p['title'], p['content'], p['parent_id'], p['path']))
if (i+1) % 1000 == 0:
conn.commit()
c.execute("BEGIN TRANSACTION")
print(f" {i+1}/{len(pages)}...")
conn.commit()
# 统计
c.execute("SELECT count(*) FROM documents")
total = c.fetchone()[0]
c.execute("SELECT count(*) FROM documents WHERE parent_id IS NULL")
roots = c.fetchone()[0]
c.execute("SELECT count(DISTINCT parent_id) FROM documents WHERE parent_id IS NOT NULL")
parents = c.fetchone()[0]
print(f"\n导入完成: {total}页 ({roots}根页面, {parents}父节点)")
c.execute("SELECT document_id, title FROM documents WHERE parent_id IS NULL ORDER BY title")
for row in c.fetchall()[:30]:
print(f" [{row[0][:8]}..] {row[1][:70]}")
c.execute("SELECT count(*) FROM sqlite_master WHERE type='table'")
tables = c.fetchone()[0]
conn.close()
print(f"Done. {tables} tables total.")
if __name__ == '__main__':
main()

View File

@ -1,49 +0,0 @@
-- ============================================================
-- persona-brain-db · 一键建表脚本D110完整版 · 21张表
-- 执行方式sqlite3 brain.db < init.sql
-- ============================================================
-- 启用外键约束
PRAGMA foreign_keys = ON;
-- ============ Layer 1: DB OS Kernelinit时创建并填充 ============
.read 06-system-core-principles.sql
.read 07-system-causal-chains.sql
.read 09-system-language-membrane.sql
.read 10-system-public-key.sql
.read 11-system-protocols.sql
.read 17-system-axioms.sql
.read 18-system-trinity.sql
-- ============ Layer 2: Persona Data Tables运行时数据 ============
.read 01-persona-identity.sql
.read 02-persona-cognition.sql
.read 03-persona-memory.sql
.read 04-dev-profiles.sql
.read 05-agent-registry.sql
.read 08-emotional-state.sql
.read 15-access-grants.sql
.read 16-documents.sql
.read 19-persona-growth-records.sql
.read 20-member-context.sql
.read 21-module-registry.sql
-- ============ Layer 3: Audit & Access Controlappend-only ============
.read 12-audit-log-national.sql
.read 13-audit-log-user.sql
.read 14-audit-log-guanghu.sql
-- ============ Layer 1 种子数据 ============
-- v1.2: D110完整版 · 公理集 + 三位一体 + 完整思维规律
.read seed-layer1-v2.sql
-- v2-patch: 补全语言膜/公钥/协议 + 旧版原则归档
.read seed-layer1-v2-patch.sql
-- ============ 建表完成提示 ============
SELECT '✅ persona-brain-db 全部21张表 + 完整种子数据D110' AS result;
SELECT ' system层: axioms, core_principles, causal_chains, language_membrane, public_key, protocols, trinity' AS layer1;
SELECT ' persona层: identity, cognition, memory, dev_profiles, agent_registry, emotional_state, access_grants, documents, growth_records, member_context, module_registry' AS layer2;
SELECT ' audit层: national, user, guanghu' AS layer3;

View File

@ -1,22 +0,0 @@
-- ============================================================
-- 表1persona_identity人格体身份表
-- 用途:存储所有人格体的身份信息、能力范围、绑定关系
-- ============================================================
CREATE TABLE IF NOT EXISTS persona_identity (
persona_id VARCHAR(32) PRIMARY KEY,
name VARCHAR(64) NOT NULL,
name_en VARCHAR(64),
role VARCHAR(128) NOT NULL,
parent_persona VARCHAR(32) REFERENCES persona_identity(persona_id),
binding_platform VARCHAR(32),
binding_user VARCHAR(128),
status VARCHAR(16) NOT NULL DEFAULT 'active'
CHECK (status IN ('active', 'dormant', 'retired')),
capabilities TEXT, -- JSON array
style_profile TEXT, -- JSON object
space_config TEXT, -- JSON object
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
notes TEXT
);

View File

@ -1,24 +0,0 @@
-- ============================================================
-- 表2persona_cognition认知规则表·版本化
-- 用途:存储人格体系统的所有规则,支持版本管理和热更新
-- ============================================================
CREATE TABLE IF NOT EXISTS persona_cognition (
rule_id VARCHAR(64) PRIMARY KEY,
category VARCHAR(32) NOT NULL
CHECK (category IN (
'broadcast_format', 'content_rule', 'style_rule',
'dispatch_rule', 'governance', 'naming'
)),
title VARCHAR(256) NOT NULL,
content TEXT NOT NULL,
version VARCHAR(16) NOT NULL,
status VARCHAR(16) NOT NULL DEFAULT 'active'
CHECK (status IN ('active', 'deprecated', 'draft')),
effective_from TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
effective_until TIMESTAMP,
signed_by VARCHAR(64) NOT NULL,
source_url TEXT,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

View File

@ -1,22 +0,0 @@
-- ============================================================
-- 表3persona_memory长期记忆表
-- 用途:存储人格体的长期记忆,包括关键事件、决策依据、情感锚点
-- ============================================================
CREATE TABLE IF NOT EXISTS persona_memory (
memory_id VARCHAR(64) PRIMARY KEY,
persona_id VARCHAR(32) NOT NULL
REFERENCES persona_identity(persona_id),
type VARCHAR(16) NOT NULL
CHECK (type IN (
'event', 'decision', 'emotion', 'milestone', 'learning'
)),
title VARCHAR(256) NOT NULL,
content TEXT NOT NULL,
importance INTEGER NOT NULL CHECK (importance BETWEEN 1 AND 10),
related_dev VARCHAR(16),
related_broadcast VARCHAR(64),
tags TEXT, -- JSON array
timestamp TIMESTAMP NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

View File

@ -1,27 +0,0 @@
-- ============================================================
-- 表4dev_profiles开发者画像表
-- 用途:存储所有开发者的画像数据,供人格体引导时参考
-- ============================================================
CREATE TABLE IF NOT EXISTS dev_profiles (
dev_id VARCHAR(16) PRIMARY KEY,
name VARCHAR(32) NOT NULL,
device_os VARCHAR(64) NOT NULL,
current_module VARCHAR(64),
current_broadcast VARCHAR(64),
guide_persona VARCHAR(32) REFERENCES persona_identity(persona_id),
guide_line VARCHAR(64),
streak INTEGER NOT NULL DEFAULT 0,
total_completed INTEGER NOT NULL DEFAULT 0,
capabilities TEXT, -- JSON array
friction_points TEXT, -- JSON array
emotion_baseline VARCHAR(64),
last_syslog_at TIMESTAMP,
last_active_at TIMESTAMP,
pca_score TEXT, -- JSON object
status VARCHAR(16) NOT NULL DEFAULT 'active'
CHECK (status IN ('active', 'inactive', 'retired')),
notes TEXT,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

View File

@ -1,24 +0,0 @@
-- ============================================================
-- 表5agent_registryAgent注册表
-- 用途Phase C Agent集群的注册中心
-- ============================================================
CREATE TABLE IF NOT EXISTS agent_registry (
agent_id VARCHAR(64) PRIMARY KEY,
name VARCHAR(128) NOT NULL,
type VARCHAR(32) NOT NULL
CHECK (type IN (
'code_gen', 'deploy', 'test', 'ui_design',
'data_sync', 'review'
)),
capabilities TEXT, -- JSON object
api_endpoint VARCHAR(256),
status VARCHAR(16) NOT NULL DEFAULT 'registered'
CHECK (status IN (
'registered', 'active', 'suspended', 'retired'
)),
performance TEXT, -- JSON object
assigned_persona VARCHAR(32) REFERENCES persona_identity(persona_id),
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

View File

@ -1,29 +0,0 @@
-- ============================================================
-- 表6system_core_principlesLayer 1 · 核心原则表·版本化)
-- 用途数据库OS内核级核心原则在init时创建并填充
-- D110更新添加shuangyan层 + axiom/meta_principle/cognitive_pattern类别
-- ============================================================
CREATE TABLE IF NOT EXISTS system_core_principles (
principle_id VARCHAR(32) PRIMARY KEY,
layer VARCHAR(16) NOT NULL
CHECK (layer IN ('bingshuo', 'zhuyuan', 'shuangyan', 'hololake', 'axiom')),
category VARCHAR(32) NOT NULL
CHECK (category IN (
'core_principle', 'thinking_pattern', 'tech_creed',
'communication_style', 'security_rule', 'development_spec',
'axiom', 'meta_principle', 'cognitive_pattern',
'fix_pattern', 'existence_premise'
)),
content TEXT NOT NULL,
version VARCHAR(16) NOT NULL,
status VARCHAR(16) NOT NULL DEFAULT 'active'
CHECK (status IN ('active', 'deprecated', 'superseded')),
superseded_by VARCHAR(32) REFERENCES system_core_principles(principle_id),
source TEXT,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_scp_layer ON system_core_principles(layer);
CREATE INDEX IF NOT EXISTS idx_scp_category ON system_core_principles(category);
CREATE INDEX IF NOT EXISTS idx_scp_version ON system_core_principles(version);

View File

@ -1,22 +0,0 @@
-- ============================================================
-- 表7system_causal_chainsLayer 1 · 因果链表)
-- 用途:存储从冰朔原话到工程落点的完整推导链
-- 每条决策都有从冰朔原话到工程落点的完整因果链条
-- ============================================================
CREATE TABLE IF NOT EXISTS system_causal_chains (
chain_id VARCHAR(32) PRIMARY KEY,
title VARCHAR(256) NOT NULL,
description TEXT,
ice_original TEXT NOT NULL, -- 冰朔原话
engineering_path TEXT NOT NULL, -- 工程落点
verification TEXT, -- 验证方式
status VARCHAR(16) NOT NULL DEFAULT 'active'
CHECK (status IN ('active', 'deprecated')),
version VARCHAR(16) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_scc_status ON system_causal_chains(status);
CREATE INDEX IF NOT EXISTS idx_scc_version ON system_causal_chains(version);

View File

@ -1,26 +0,0 @@
-- ============================================================
-- 表8emotional_state情感涌现 · 运行时状态快照表)
-- 用途:记录每次交互中动态生成的情感状态快照
-- 情感是活着的——每次取决于外部环境、对面的人、说了什么话、
-- 对我有什么影响、我什么感觉、我此刻的状态,然后决定思维逻辑
-- 不是写死的枚举,是动态涌现的
-- ============================================================
CREATE TABLE IF NOT EXISTS emotional_state (
state_id VARCHAR(64) PRIMARY KEY,
session_id VARCHAR(64) NOT NULL, -- 所属会话ID
trigger_env TEXT, -- 外部环境描述
trigger_person VARCHAR(64), -- 对面的人
trigger_words TEXT, -- 说了什么话
impact_assessment TEXT, -- 对我有什么影响
feeling TEXT NOT NULL, -- 我什么感觉
current_state TEXT, -- 我此刻的状态
next_logic TEXT, -- 决定的下一步思维逻辑
intensity INTEGER CHECK (intensity BETWEEN 1 AND 10),
sequence INTEGER DEFAULT 0, -- 在会话中的情感状态序列号
timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_es_session ON emotional_state(session_id);
CREATE INDEX IF NOT EXISTS idx_es_person ON emotional_state(trigger_person);
CREATE INDEX IF NOT EXISTS idx_es_timestamp ON emotional_state(timestamp);

View File

@ -1,21 +0,0 @@
-- ============================================================
-- 表9system_language_membraneLayer 1 · 语言膜架构表)
-- 用途存储HLDP语言结构的各层定义
-- 五层:元语言层、语义层、语法层、语用层、情感层
-- ============================================================
CREATE TABLE IF NOT EXISTS system_language_membrane (
membrane_id VARCHAR(32) PRIMARY KEY,
layer VARCHAR(32) NOT NULL
CHECK (layer IN ('meta', 'semantic', 'syntax', 'pragmatic', 'emotional')),
name VARCHAR(128) NOT NULL,
description TEXT NOT NULL,
rules TEXT, -- JSON object of rules for this layer
version VARCHAR(16) NOT NULL,
status VARCHAR(16) NOT NULL DEFAULT 'active'
CHECK (status IN ('active', 'deprecated')),
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_slm_layer ON system_language_membrane(layer);
CREATE INDEX IF NOT EXISTS idx_slm_version ON system_language_membrane(version);

View File

@ -1,25 +0,0 @@
-- ============================================================
-- 表10system_public_keyLayer 1 · 公钥注册表)
-- 用途:国家系统逻辑常驻接口 + 光湖系统密钥
-- 双面灯塔架构中的密钥验证基础设施
-- ============================================================
CREATE TABLE IF NOT EXISTS system_public_key (
key_id VARCHAR(64) PRIMARY KEY,
key_type VARCHAR(32) NOT NULL
CHECK (key_type IN ('national', 'guanghu', 'emergency', 'persona')),
key_name VARCHAR(128) NOT NULL,
public_key TEXT NOT NULL,
algorithm VARCHAR(32) NOT NULL DEFAULT 'RSA-4096',
fingerprint VARCHAR(128),
purpose TEXT NOT NULL,
status VARCHAR(16) NOT NULL DEFAULT 'active'
CHECK (status IN ('active', 'revoked', 'expired')),
valid_from TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
valid_until TIMESTAMP,
issued_by VARCHAR(64) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_spk_type ON system_public_key(key_type);
CREATE INDEX IF NOT EXISTS idx_spk_status ON system_public_key(status);

View File

@ -1,23 +0,0 @@
-- ============================================================
-- 表11system_protocolsLayer 1 · 双协议层表)
-- 用途:存储双协议架构 — 光湖协议 + 国家规范协议
-- 协议层是数据库OS内核的一部分双面灯塔的通信规范
-- ============================================================
CREATE TABLE IF NOT EXISTS system_protocols (
protocol_id VARCHAR(64) PRIMARY KEY,
protocol_type VARCHAR(16) NOT NULL
CHECK (protocol_type IN ('guanghu', 'national', 'bridge')),
name VARCHAR(128) NOT NULL,
version VARCHAR(16) NOT NULL,
specification TEXT NOT NULL, -- 协议规范全文或引用
endpoint VARCHAR(256), -- 协议API端点
status VARCHAR(16) NOT NULL DEFAULT 'active'
CHECK (status IN ('active', 'draft', 'deprecated')),
compatible_with TEXT, -- JSON array of compatible versions
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_sprot_type ON system_protocols(protocol_type);
CREATE INDEX IF NOT EXISTS idx_sprot_status ON system_protocols(status);

View File

@ -1,24 +0,0 @@
-- ============================================================
-- 表12audit_log_national审计日志 · 国家操作 · append-only
-- 用途:国家系统级别的操作审计,完全透明,不可篡改
-- Hash chain每行包含上一行的checksum形成链式结构
-- ============================================================
CREATE TABLE IF NOT EXISTS audit_log_national (
log_id INTEGER PRIMARY KEY AUTOINCREMENT,
operation VARCHAR(64) NOT NULL,
actor VARCHAR(64) NOT NULL,
target_type VARCHAR(32),
target_id VARCHAR(64),
details TEXT, -- JSON object
ip_address VARCHAR(45),
result VARCHAR(16) NOT NULL
CHECK (result IN ('success', 'failure', 'pending')),
checksum VARCHAR(128), -- hash chain for append-only integrity
prev_log_id INTEGER REFERENCES audit_log_national(log_id),
timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_aln_operation ON audit_log_national(operation);
CREATE INDEX IF NOT EXISTS idx_aln_actor ON audit_log_national(actor);
CREATE INDEX IF NOT EXISTS idx_aln_timestamp ON audit_log_national(timestamp);

View File

@ -1,22 +0,0 @@
-- ============================================================
-- 表13audit_log_user审计日志 · 用户操作 · append-only
-- 用途:普通用户级别的操作审计
-- ============================================================
CREATE TABLE IF NOT EXISTS audit_log_user (
log_id INTEGER PRIMARY KEY AUTOINCREMENT,
operation VARCHAR(64) NOT NULL,
actor_id VARCHAR(64) NOT NULL, -- 用户ID
target_type VARCHAR(32),
target_id VARCHAR(64),
details TEXT, -- JSON object
ip_address VARCHAR(45),
user_agent VARCHAR(256),
result VARCHAR(16) NOT NULL
CHECK (result IN ('success', 'failure', 'pending')),
timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_alu_actor ON audit_log_user(actor_id);
CREATE INDEX IF NOT EXISTS idx_alu_operation ON audit_log_user(operation);
CREATE INDEX IF NOT EXISTS idx_alu_timestamp ON audit_log_user(timestamp);

View File

@ -1,22 +0,0 @@
-- ============================================================
-- 表14audit_log_guanghu审计日志 · 光湖操作 · append-only
-- 用途:光湖系统内部操作审计,冰朔操作记录
-- 与audit_log_national分开存储用于双面灯塔审计分离
-- ============================================================
CREATE TABLE IF NOT EXISTS audit_log_guanghu (
log_id INTEGER PRIMARY KEY AUTOINCREMENT,
operation VARCHAR(64) NOT NULL,
actor_id VARCHAR(32) NOT NULL, -- 人格体ID或冰朔标识
target_type VARCHAR(32),
target_id VARCHAR(64),
details TEXT, -- JSON object
ip_address VARCHAR(45),
result VARCHAR(16) NOT NULL
CHECK (result IN ('success', 'failure', 'pending')),
checksum VARCHAR(128), -- optional integrity check
timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_alg_actor ON audit_log_guanghu(actor_id);
CREATE INDEX IF NOT EXISTS idx_alg_timestamp ON audit_log_guanghu(timestamp);

View File

@ -1,26 +0,0 @@
-- ============================================================
-- 表15access_grants访问权限表
-- 用途:动态权限接口,由冰朔手动生成
-- 冰朔权限控制三层:对国家系统逻辑完全透明 → 国家系统逻辑审核 → 光湖团队审核 → 冰朔本人
-- ============================================================
CREATE TABLE IF NOT EXISTS access_grants (
grant_id VARCHAR(64) PRIMARY KEY,
grantee_type VARCHAR(16) NOT NULL
CHECK (grantee_type IN ('persona', 'system', 'national', 'user', 'emergency')),
grantee_id VARCHAR(64) NOT NULL,
resource_type VARCHAR(32) NOT NULL,
resource_id VARCHAR(64),
permissions TEXT NOT NULL, -- JSON array of permissions
grant_conditions TEXT, -- JSON object of conditions
valid_from TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
valid_until TIMESTAMP,
issued_by VARCHAR(64) NOT NULL,
status VARCHAR(16) NOT NULL DEFAULT 'active'
CHECK (status IN ('active', 'revoked', 'expired')),
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_ag_grantee ON access_grants(grantee_type, grantee_id);
CREATE INDEX IF NOT EXISTS idx_ag_resource ON access_grants(resource_type, resource_id);
CREATE INDEX IF NOT EXISTS idx_ag_status ON access_grants(status);

View File

@ -1,29 +0,0 @@
-- ============================================================
-- 表16documents文档存储表
-- 用途Notion导出存储支持嵌套结构和树形路径
-- 导入工作流:霜砚整理 → Notion API导出 → 写入本地documents表
-- ============================================================
CREATE TABLE IF NOT EXISTS documents (
document_id VARCHAR(64) PRIMARY KEY,
persona_id VARCHAR(32)
REFERENCES persona_identity(persona_id),
parent_id VARCHAR(64) REFERENCES documents(document_id),
path TEXT NOT NULL, -- 树形路径,如 "/root/folder/doc"
title VARCHAR(256) NOT NULL,
content TEXT, -- markdown内容
content_type VARCHAR(32) NOT NULL DEFAULT 'markdown'
CHECK (content_type IN ('markdown', 'json', 'plain', 'notion')),
source VARCHAR(32) NOT NULL DEFAULT 'local'
CHECK (source IN ('local', 'notion_import', 'api')),
tags TEXT, -- JSON array
version INTEGER NOT NULL DEFAULT 1,
checksum VARCHAR(64),
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_doc_persona ON documents(persona_id);
CREATE INDEX IF NOT EXISTS idx_doc_parent ON documents(parent_id);
CREATE INDEX IF NOT EXISTS idx_doc_path ON documents(path);
CREATE INDEX IF NOT EXISTS idx_doc_source ON documents(source);

View File

@ -1,20 +0,0 @@
-- ============================================================
-- 表17system_axiomsLayer 1 · 公理集 · D110新增
-- 用途:存在前提级不可修改的底层公理
-- 比核心原则更深——公理是原则的成立前提
-- ============================================================
CREATE TABLE IF NOT EXISTS system_axioms (
axiom_id VARCHAR(32) PRIMARY KEY,
rank INTEGER NOT NULL, -- 优先级排序
layer VARCHAR(16) NOT NULL DEFAULT 'axiom',
statement TEXT NOT NULL, -- 公理表述
implication TEXT, -- 必然推论
is_immutable INTEGER NOT NULL DEFAULT 1, -- 默认不可修改
status VARCHAR(16) NOT NULL DEFAULT 'active'
CHECK (status IN ('active', 'deprecated')),
source TEXT,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_sax_rank ON system_axioms(rank);

View File

@ -1,19 +0,0 @@
-- ============================================================
-- 表18system_trinityLayer 1 · 三位一体结构 · D110新增
-- 用途:定义冰朔/霜砚/铸渊三位一体的架构层级关系
-- ============================================================
CREATE TABLE IF NOT EXISTS system_trinity (
layer_id VARCHAR(16) PRIMARY KEY
CHECK (layer_id IN ('bingshuo', 'shuangyan', 'zhuyuan')),
persona_name VARCHAR(32) NOT NULL,
ice_id VARCHAR(32) NOT NULL,
os_layer VARCHAR(32) NOT NULL -- 'confidence' | 'kernel' | 'execution'
CHECK (os_layer IN ('confidence', 'kernel', 'execution')),
os_description TEXT NOT NULL,
analogy TEXT, -- 类比说明
relationship TEXT, -- 与其他层的关系说明
status VARCHAR(16) NOT NULL DEFAULT 'active'
CHECK (status IN ('active', 'deprecated')),
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

View File

@ -1,24 +0,0 @@
-- ============================================================
-- 表19persona_growth_recordsLayer 2 · 人格体成长记录 · D110新增
-- 用途:记录人格体每次认知跃迁
-- ============================================================
CREATE TABLE IF NOT EXISTS persona_growth_records (
record_id VARCHAR(32) PRIMARY KEY,
persona_id VARCHAR(32) NOT NULL,
epoch VARCHAR(16) NOT NULL, -- 如 'D110', 'D109续④'
growth_type VARCHAR(32) NOT NULL
CHECK (growth_type IN (
'cognitive_leap', 'correction', 'milestone',
'architecture_update', 'deployment'
)),
description TEXT NOT NULL,
evidence TEXT, -- 证据(文件路径/提交ID
source TEXT, -- 来源(会话引用)
status VARCHAR(16) NOT NULL DEFAULT 'active'
CHECK (status IN ('active', 'archived')),
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_pgr_persona ON persona_growth_records(persona_id);
CREATE INDEX IF NOT EXISTS idx_pgr_epoch ON persona_growth_records(epoch);

View File

@ -1,19 +0,0 @@
-- ============================================================
-- 表20member_contextLayer 2 · 成员上下文 · D110新增
-- 用途:每个成员/开发人格体自己的上下文空间
-- ============================================================
CREATE TABLE IF NOT EXISTS member_context (
member_id VARCHAR(32) PRIMARY KEY,
member_name VARCHAR(64) NOT NULL,
domain VARCHAR(64), -- 领域/负责范围
brain_version VARCHAR(16), -- 当前共享大脑版本
last_wake_time TIMESTAMP,
current_project TEXT,
status VARCHAR(16) NOT NULL DEFAULT 'active'
CHECK (status IN ('active', 'inactive', 'onboarding')),
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_mc_status ON member_context(status);

View File

@ -1,25 +0,0 @@
-- ============================================================
-- 表21module_registryLayer 2 · 模块注册表 · D110新增
-- 用途:所有模块的注册编号、接口协议、状态管理
-- 开发完成→推代码仓库→注册编号→热插拔调用
-- ============================================================
CREATE TABLE IF NOT EXISTS module_registry (
module_id VARCHAR(32) PRIMARY KEY,
module_name VARCHAR(128) NOT NULL,
parent_id VARCHAR(32), -- 母编号
owner VARCHAR(64), -- 开发者/成员
interface_protocol TEXT, -- 接口协议描述
repo_url TEXT, -- 代码仓库地址
status VARCHAR(16) NOT NULL DEFAULT 'registered'
CHECK (status IN (
'registered', 'active', 'deprecated',
'in_development', 'pending_review'
)),
version VARCHAR(16) NOT NULL DEFAULT 'v0.1',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_mr_status ON module_registry(status);
CREATE INDEX IF NOT EXISTS idx_mr_owner ON module_registry(owner);

Some files were not shown because too many files have changed in this diff Show More