- 百工域 domains/baigong:capabilities(统一能力契约:执行类型 builtin/qiankun/mcp/http + 四维风险标注 + 来源版本)、mandates(授契 grant / 行契 charter 预算时间窗,撤销立即生效)、tool_calls(净化摘要 + 观察标证);请命复用 pending_confirmations 加 expires_at/brief_json(超时=拒绝执行 HJ-1302,六要素说明) - 司命裁决器 siming.py:四维取最高档(能力/数据/后果/情境);禁域为代码常量不可配置(递归删根/格式化/写裸设备/fork 炸弹、file:// 协议、密钥材料外发)——专项测试断言恶意标注与篡改对象仍拒 HJ-1301 - 执行链:禁域→裁决(HJ-1303 未授契拒且双留痕)→请命→执行(乾坤经 SandboxClient HMAC;MCP 经 call_tool;内置无副作用)→净化标证(观察非事实,敏感遮蔽+体量截断)→行动账 - MCP 登记/启停/刷新自动派生与撤下 capabilities(博闻登记接入点);内置能力种子(echo/datetime/qiankun.shell/web.fetch) - 端点:/capabilities /mandates /petitions /tool-calls + /tools 兼容投影;前端百工页四区(能力目录四维标注/授契行契/请命批准拒绝/行动账观察标证) - 退役:modules/safety|skills|tool_runtime|agent、application/tool_runtime、services/skills|safety、tool_policies/skills/model_endpoint_overrides 表(迁移 006)、前端 SkillManager/ToolsConsole/旧 tools 页 - 验收(test_baigong_siming 四用例):未授契被拒留痕、请命超时不执行、禁域不可关闭、结果为观察不入忆;后端 454、前端 220、BFF 4、神识 5 包全绿(2 个预存环境失败不变)
12 KiB
魂镜数据模型
状态:重写目标态(rewrite/1.0 基线) 职责:定义六域核心数据模型、关系与不变量的落库方式。枚举取值、ID 前缀、事件名以契约词典为单一事实源,本文不复制取值列表。 存储分档:本地开发 SQLite(向量能力降级为关键词检索),标准档 PostgreSQL + pgvector;向量索引可重建,不是权威事实源。
0. 通用约定
- 主键:带业务前缀的 ULID(见契约词典 §3 ID 前缀表)。
- JSON 列以
_json结尾,API/DTO 层去掉后缀(契约词典 §4)。 - 时间戳一律 UTC 存储,展示层本地化。
- 不可变表(append-only):run_events、audit_events、factual_records、canonizations、identity_record_versions、covenant_events。禁止 UPDATE/DELETE,修正走新版本或正影。
- 状态变更与关键事件经同一事务或 Outbox 一致提交。
1. 镜生域
erDiagram
users ||--o{ embryo_drafts : "创建/领养/导入"
embryo_drafts ||--o| characters : "启镜签发"
users ||--|| custodianships : "执镜"
characters ||--|| custodianships : "被执镜"
characters ||--o| runtime_seats : "唯一命台"
characters ||--o{ identity_records : "魂籍"
identity_records ||--o{ identity_record_versions : "版本"
characters ||--o{ form_anchors : "真形锚点"
characters ||--o{ forms : "主仪/化仪"
characters ||--o{ voice_profiles : "声音"
| 表 | 要点 |
|---|---|
characters |
正式人物(仅启镜后)。status、来源、道体(identity_baseline_json,最小锚点+禁域,不可被运行时覆盖)、死亡与冷静期字段。灵胚不是人物,不入本表 |
embryo_drafts |
灵胚草稿:预备身份、来源(原创/领养/导入/随缘)、照心试演记录、启镜前确认清单。放弃灵胚=删除草稿 |
custodianships |
执镜关系(治理关系,1.0 一对一)。与缘契(covenants)严格分离 |
runtime_seats |
命台:UNIQUE(character_id),租约持有者、租约到期、epoch(迁移/交接递增)。同一人物同一时刻最多一行有效租约 |
identity_records + identity_record_versions |
魂籍:可验证、版本化的身份与状态包。版本含签名摘要;导出物含身份/数据/运行状态三段分离声明 |
form_anchors / forms / voice_profiles |
形仪:真形锚点(稳定辨识特征、许可、禁忌、可变范围);主仪/化仪(生成内容先为 candidate,用户定相才转正);声音来源与克隆授权字段 |
死亡流程:characters.status 迁移 + 确认记录(confirmations)+ 冷静期撤销窗;默认死亡后转只读档案,数据清除是独立操作。
2. 镜树域
erDiagram
characters ||--o{ mirror_trees : "主题镜树"
mirror_trees ||--o{ tree_nodes : "节点"
tree_nodes ||--o{ tree_nodes : "parent_node_id"
tree_nodes ||--o{ citations : "引文锚"
mirror_trees ||--o{ canonizations : "归真记录"
canonizations ||--o{ memories : "归真触发候选"
mirror_trees ||--o{ tree_transplants : "移栽谱系"
| 表 | 要点 |
|---|---|
mirror_trees |
主题、当前界域默认值、工作入口 working_entry_node_id("采用"的落点,可反复改变)、归档状态、移栽来源引用 |
tree_nodes |
统一节点表:node_type(问节/候答/续思)、parent_node_id(问节的父是候答,候答的父是问节)、status(芽体/残答/已固化)、内容版本(编辑已发送内容=新建分叉节点,原文保留)、界域、生成元数据(模型、trace)、supersedes_node_id(正影后继链) |
citations |
引文锚:目标类型(文本区间/图片区域/PDF 页区/附件/音视频时间段)+ 原文快照 + 来源标识与版本;来源正影时旧锚不静默替换,只提示后继 |
canonizations |
归真记录(不可变):scope(真界/境界/幻境)、world_id(境界归真时必填)、路径端点与长度、快照摘要、确认者与时间。归真主脉=同作用域内 canonization 的路径并集 |
tree_transplants |
移栽谱系:新树保留原树/原节点/来源版本引用;树间只引用不合流 |
落库不变量:
- 候答重生成=插入新
tree_nodes行,永不 UPDATE 旧行(应用层禁止 + 测试强制); - 后代节点
parent_node_id绑定用户实际采用的候答(采用变更后新问节挂新入口); working_entry_node_id变更不触碰canonizations(采用与归真解耦);canonizations不可变,正影=新版本节点 + 新 canonization 记录,旧记录保留。
3. 记忆域(息壤)
erDiagram
canonizations ||--o{ memories : "归真触发候选"
memories ||--o{ memories : "prev_version_id 正影链"
memories ||--o{ memory_triggers : "触发条件"
memories ||--o{ memory_embeddings : "向量"
characters ||--o{ memories : "人物私有"
canonizations ||--o{ factual_records : "实录"
| 表 | 要点 |
|---|---|
memories |
统一记忆表:tier(微痕/明忆/重忆)、type(含心痕 relationship_view,主观非事实)、status(候选/待确认/生效/被取代/删除墓碑)、source(用户明说/人物推断)、source_refs_json(指向节点/事件,可解释性与撤销的依据)、敏感等级、优先级、置信度、活力值(衰减 2^(−Δdays/半衰期),命中强化)、界域(境界记忆不进真界上下文)、有效期(微痕) |
memory_triggers |
触发条件:关键词(微痕/世谱共用激活管线)与 disclosure("当提到 X 时",单一触发) |
memory_embeddings |
pgvector 向量列 + 来源类型;标准档启用,开发档降级 |
factual_records |
实录(不可变,append-only):发生了什么 + 证据引用(节点/引文锚/工具观察)。与心痕(memories 内 relationship_view)严格分离 |
落库不变量:
- 只有
canonizations(或用户手动入忆,带类型标注)能产生长期记忆候选——微痕不自动升级; - 重忆候选
status=pending直到用户确认;deny 两次自动退出检索; - 正影=新行
prev_version_id指旧行,旧行status=superseded停止普通召回,内容不改写; - 删除=墓碑行(不承载原文)+ 主存储/向量索引/上下文/主动对话同步停用。
4. 缘契域
erDiagram
characters ||--o{ covenants : "缘契"
users ||--o{ covenants : "互动者"
covenants ||--o{ covenant_events : "提议/问心/铭契/撤回"
| 表 | 要点 |
|---|---|
covenants |
当前生效版本:多维关系维度(dimensions_json,不以单一好感度表达)、边界、成人内容授契(按会话临时开启)、版本号 |
covenant_events |
不可变历史:提议、问心(人物自陈候选)、铭契确认、撤回与边界变更。即时停止与撤回立即生效并留痕 |
5. 三界域
| 表 | 要点 |
|---|---|
persistent_worlds |
境界:世界背景、规则、实体索引、正史版本 |
world_entities / world_relations |
河图世界认知:实体与关系(图查询走 PG 递归 CTE;Neo4j/NebulaGraph 只在规模需要时作为投影库引入,不是事实源) |
lorebooks / lorebook_entries |
世谱(ST 世界信息兼容):关键词/次级键/常驻/位置/深度/顺序/概率/时序效果/递归与预算参数;导入导出兼容 ST 格式 |
界域本身是 tree_nodes.realm + canonizations.scope 字段,不建独立表;入境/出境是事件与节点属性。境界正史=该 world 下 canonizations 集合;幻境试演=scope=simulation 的 canonization 记录。
6. 灵台域(运行、能力与安全)
erDiagram
characters ||--o{ runs : "运行"
runs ||--o{ run_events : "一炁事件"
characters ||--o{ mandates : "授契/行契"
mandates }o--|| tools : "能力"
runs ||--o{ confirmations : "请命确认"
tools ||--o{ tool_calls : "调用记录"
tool_calls ||--o{ evidence : "证据"
| 表 | 要点 |
|---|---|
runs |
运行:种类(前台/后台受托)、状态、命台 epoch、Profile 快照引用 |
run_events |
一炁事件流(现有 event_store 改造):单调序号、类型、可见性、载荷;SSE 与回放的数据源 |
capabilities |
百工能力注册表(M5 落地单表统一契约):稳定标识、参数 Schema、执行类型(builtin/qiankun/mcp/http)、四维风险标注、来源与版本 |
mandates |
授契(单次范围)与行契(重复执行:能力/参数/数据/目标/预算/时间窗);可撤销,撤销立即生效 |
confirmations(pending_confirmations) |
请命:六要素说明(brief_json)、超时策略(超时=拒绝执行 HJ-1302);含死亡、重忆、铸魂等高影响确认 |
tool_calls |
调用记录与证据链(evidence_json 内嵌):净化后输入输出摘要、观察标证、裁决与授契关联、trace 关联 |
audit_events / 行动账 |
现有审计表改造:所有工具调用(用户+时间+工具+参数+结果)与外部行动 |
mcp_servers |
MCP 服务登记(博闻等);玄关退役后由百工持有 |
| ST 兼容层 | user_personas(本相)、generation_presets(火候)、instruct_templates(科仪)、quick_replies(锦囊)、author_notes(眉批)、macros(符文引擎,无独立表,组装期展开) |
7. 天宰域
| 表 | 要点 |
|---|---|
users / credentials |
账户与多凭证(邮箱/Passkey/受信第三方);年龄分层核验骨架字段 |
domains |
镜域:数据与治理边界,区域驻留字段 |
| RBAC 相关 | 现有 rbac 表保留改造;管理员默认不可见私密原文 |
preferences |
用户偏好(含神识路由偏好,联动神识 BYOK) |
神识侧数据模型(providers/endpoints/byok_keys/usage_logs 等)在神识网关定义,不与灵台共库共表。
8. 导入域
| 表 | 要点 |
|---|---|
import_jobs / import_items |
现有导入表改造:角色卡(ST V2/V3:PNG tEXt ccv3/chara 双块、JSON/CharX)、世谱、聊天记录;静态隔离解析,任何能力逐项授契 |
| 对接 | 导入产物默认生成 embryo_drafts + 待审 lorebook_entries;外部聊天仅作外部前史,不产生真界实录 |
9. 表处置清单
保留改造(现有基础设施):users/credentials/rbac、audit_events、event_store(→run_events)、idempotency、mcp_servers、import_jobs/import_items、lorebooks/lorebook_entries、settings/preferences 类。
新建:characters(重建)、embryo_drafts、custodianships、runtime_seats、identity_records(+versions)、mirror_trees、tree_nodes、citations、canonizations、tree_transplants、memories(重建)、memory_triggers、memory_embeddings、factual_records、covenants(+events)、persistent_worlds、world_entities/relations、form_anchors/forms/voice_profiles、devices/device_grants、tools/skills(重建)、mandates、confirmations(改造)、runs(重建)。
退役删除(旧模型,开发数据随 db 丢弃):personality、personality_emotion、personality_versions/proposals、mood_events、character_emotion_states、drive、evolution、wuxing 相关、big_cycle、goals、plans、time_anniversaries、idle_window、suspension、uncertainty_states、curiosity_questions、exploratory_subgoals、chat_sessions/chat_messages(被镜树取代)、memory_timelines/timeline_events、knowledge_documents/memory_chunks/embedding_refs(并入记忆域新表)、candidates(并入灵胚审核)、character_situational_entries、avatar 旧表(并入形仪)。
Alembic 基线重建:丢弃现有 4 个迁移,以本模型为新基线 000;迁移编号使用三位顺序号(000、001、002…),生成统一经根目录 make db-revision m="说明"(自动编号,不手写哈希 id);迁移与退役的执行顺序见重写执行计划。
10. 隐私与删除的落库规则
- 敏感字段(重忆内容、克隆授权、私箧类)列级标注敏感等级;默认查询路径不得返回高敏原文(摘要或脱敏)。
- 删除传播:人物死亡≠数据删除;数据删除按"权威存储→向量索引→缓存→派生视图→主动对话候选"顺序停用,墓碑只留行为证据。
- 跨人物共享(本相授权)以授权记录为查询前提,缘识与心痕默认人物私有,不做任何跨人物隐式 JOIN。