oh-my-muse/design-docs/前端-03-元引擎与动态表单.md
zizi 2124a79312 docs(design): 补知识效用缺环——新增专题-07 消费契约与质量闭环 + 七册配套拍板
第一性原理结论:知识的价值只在被选中并改善产出的那一刻兑现;此前 SoT 钉死了治理
(谁能读什么),缺消费选择(该读哪几条)与输入侧质量(什么算好知识、怎么测)。

- 新增 专题-07 v1(唯一 owner):术语桥(卡↔SoT 载体)、按用途默认消费合同与注入
  视图两档、知识质量三性(可命中/可行动/可持续+口径)、回放评测(参考书=标准答案,
  三评测线+两道合规闸+知识策略对象与上线门禁)、长线进度三期消费、实验台实证附录、
  验收清单 8 条
- 专题-06 v4:拍板双层型判定(craft 1326 条实测无损→不拆,判据不变);新增 §6.4
  参照作品面(参考书实体演变=系统侧证据资产,蒸馏成叙事域成长曲线范式才入 Global);
  世界域六型登记演变历程元素;读取器 purpose 枚举 parse→extraction
- 架构-02 v11:aiContext 值域升级为布尔或用途集(实验台字段级用途裁剪实证反哺)
- 专题-03 v3 / 专题-04 v2(补 .md 改名+离线评估允许样本第 5 类)/ 后端-05 v11 /
  前端-03 v7 / 产品-01·02、前端-02、后端-03 断链修复 / 大纲 v10 / 映射表 v8
- prototypes/ 新增四页签开发者总览

依据:设计文档全库横切取证 + 实验台 9 批实拆实证(活卡 8587、消费端 0 实现、升格
卡向量 0%、p50 实例数 1)。经 codex 与 opus 双独立评审,必修项全部落实。
2026-07-18 00:02:51 +08:00

12 KiB
Raw Blame History

前端-03元引擎与动态表单

  • 版本v7
  • 更新日期2026-07-17
  • 目标读者:前端 / 架构 / 产品 / 后端
  • 阅读时间25-45 分钟
  • 边界说明:本文件定义 MetaSchema 在两个前端中的使用方式Vben 管理后台配置元结构,muse-studio 用户端消费可见投影并渲染创作表单。元结构定义看 架构-02Schema 看 后端-04API 看 后端-05

1. 核心定位

元引擎不是一个单独产品空间而是把管理员配置、用户可见内容、AI 上下文和导出边界翻译成稳定 UI 的机制。

它服务两类前端:

前端 使用者 目标
muse-admin/ 管理员 配置 MetaSchema、字段、可见性、AI 上下文、导出、校验和版本
muse-studio/ 普通用户 填写作品设定、章节大纲、世界设定、角色关系、文风检查和知识表单

两端可以共享接口类型和字段渲染约定,但不能共享错误的用户语言。管理员可以看到系统术语,普通用户默认只看到创作语言。

接口边界:

  • 管理后台只通过 /admin-api/** 配置和发布 MetaSchema。
  • 用户端只通过 /app-api/** 消费当前用户和当前作品可见投影。
  • 用户端当前用户入口是 /app-api/muse/me,不使用 /app-api/auth/me
  • 用户端动态表单只依赖后端 app 侧投影接口;字段可见性、授权、来源状态和用户语言分组都由后端返回,前端不能从管理端原始 MetaSchema、本地缓存或字段名自行推断。
  • 用户端动态表单只能调用业务 owner 提供的投影和动作Planning、Knowledge、Content 等 owner 决定哪些对象可保存、确认、合并或拒绝。MetaSchema 只是渲染、校验和可见性投影,不能成为绕过 owner 决策接口的通用写入层。

2. 管理后台 MetaSchema 配置

管理后台归属 Vben Admin。

管理员可配置:

  • domain / scope / targetType
  • 字段类型、必填、枚举、引用、排序和校验规则。
  • uiVisibleaiContextuserEditableuserSearchableexportable
  • 版本、启停、回滚、灰度或变更记录。
  • 影响预览:哪些用户端表单、知识投影、生成上下文和导出范围会受影响。

约束:

  • 管理后台只提交结构配置,不替用户填写作品内容。
  • 激活配置必须进入版本化记录。
  • 配置变化影响用户端时,用户端看到的是可理解的能力变化或字段变化,不看到后台字段表。
  • 关闭字段可见性不能删除历史事实只影响展示、检索、AI 上下文或导出。
  • 管理后台可以配置用户知识库、市场知识库、作品资产和智能体相关结构的展示规则,但购买、安装或绑定资产不等于写入作品事实。
  • 作品资产 feature gate 默认关闭;管理后台可以看到配置和影响预览,但用户端只能展示阅读、收藏、授权记录或禁用态,不允许模板化、参考写入或进入 AI 上下文。

3. 用户端创作表单

用户端归属 muse-studio

普通用户默认入口:

用户入口 承载内容 AI 辅助
作品设定 题材、类型、主题、基调、禁区、结局方向 生成故事前提、补全设定、整理梗概、检查偏题
章节大纲 章节顺序、摘要、目标、主线、支线、伏笔、情节节拍 生成章节摘要、补齐大纲、检查章节目标
世界设定 角色、地点、物品、组织、规则、事件、时间线 从正文提取、补全属性、检查冲突
角色关系 角色档案、目标、动机、弱点、秘密、弧光、关系变化 生成弧线、补全关系、提示关系停滞
文风检查 作者声音、句式、节奏、视角、风格漂移 分析样本、整理禁用风格、检查偏移

用户端可以触发 AI 生成、补全、整理、检查和从正文提取,但结果必须先进入 Shadow 候选或 Knowledge Draft。用户确认后才成为后续生成上下文。

用户端动态表单不得暴露系统保护节点配置。开放槽位可以让用户选择可替换智能体或知识库输入输出合规、拆分切块、RAG 入库、语义安全围栏、静态检查、质量门控、权限、审计和 Shadow -> Canonical 仍由系统固定链路保证。

4. 可见性合同

控制项 管理后台含义 用户端含义
uiVisible 是否允许展示给普通用户 false 时用户端默认不展示;也不生成可见空壳
aiContext 是否允许进入 AI 上下文(布尔或用途集,值域权威见 架构-02 §9 不等于用户可见,也不等于可导出;前端只展示后端返回的上下文摘要
userEditable 普通用户是否可编辑 false 时只能只读展示或隐藏;不能在前端强开编辑
userSearchable 是否允许普通用户检索 false 时不进入用户搜索入口、筛选项或联想结果
exportable 是否允许随作品导出 false 时导出预检必须排除,并显示不可导出原因

前端约束:

  • 用户端只消费后端 app 侧投影接口返回的可见投影,不自行推断隐藏字段、授权状态或来源状态。
  • 管理后台可以看到完整配置,用户端只能看到有权限且允许展示的字段。
  • aiContext=true 不允许前端把隐藏字段展示给用户。
  • userEditable=falseuserSearchable=falseexportable=false 都必须同时在 UI 和提交动作上体现;前端禁用只是体验,后端仍要强制校验。
  • 投影落后时,用户端必须显示重试/稍后刷新,而不能展示已被隐藏的数据。
  • 导出预检必须返回已包含/已排除清单(included/excluded manifest)、字段或来源被排除的原因、下载凭证有效期和重验要求;用户端按该清单展示,不自行拼装可导出范围。

安全边界:

  • 前端隐藏字段、禁用控件或移除入口不是安全边界。
  • 后端必须在可见投影、保存、检索、AI 上下文组装和导出预检中重复执行权限、来源状态和授权快照校验。
  • 前端不能把 uiVisible=false 的字段通过搜索、导出、调试面板、错误详情或 AI 上下文摘要泄露出来。
  • 来源 lineage 和授权快照由后端生成并随投影返回;前端只能展示、传递和刷新,不能伪造或覆盖。

5. 渲染链路

5.1 管理后台

加载 MetaSchema 列表
-> 选择 domain/scope/targetType
-> 编辑字段和可见性
-> 前端即时校验
-> /admin-api 提交
-> 后端版本化
-> 展示影响预览和激活结果

5.2 用户端

进入作品规划台或知识表单
-> /app-api 拉取当前作品可见结构、数据和版本修订
-> 按创作语言分组渲染
-> 用户手写或触发 AI
-> AI 结果进入候选/草稿
-> 用户确认后调用对应 owner action

用户确认必须走对应业务入口规划候选进入规划正式事实Knowledge Draft 进入 Local KB正文候选进入正文 Block。规划候选的接受、修改后保存和丢弃必须走 planning owner 的 /app-api/** 决策接口,不得复用 AI Suggestion accept也不得通过动态表单通用保存写入规划正式事实。

前端禁止封装通用动态字段写入 SDK。动态字段没有跨 owner 的通用写接口(参见 后端-05-统一API契约-v1.md §4.3 作品和正文中的投影说明);正式写入必须回到目标 owner 命令路径:规划写 PUT /app-api/muse/works/{workId}/planning/{sectionKey},正文写 PUT /app-api/muse/blocks/{blockId},知识写 Knowledge Draft confirm/ignore 命令Agent 写 Agent 配置命令。前端只能调用 /app-api/muse/works/{workId}/dynamic-fields/validate 做校验和路由建议,不能据此直接写入任何 Canonical fact。

5.3 版本兼容和提交合同

后端 app 侧投影接口返回动态表单时,必须带版本与修订信息:

字段 含义 前端用途
schemaVersion 当前激活 MetaSchema 结构版本 判断字段结构、校验规则和枚举是否仍匹配
projectionVersion 当前用户、作品、授权和来源状态计算后的可见投影版本 判断可见性、可编辑状态和来源快照是否仍匹配
dataRevision 当前表单目标对象的数据修订号 判断用户编辑期间是否发生并发修改

用户端提交 owner 允许的动态字段草稿或普通字段保存时,必须带 expectedSchemaVersionexpectedProjectionVersionexpectedDataRevision。后端只能在三者仍匹配且权限、来源状态、授权快照、字段状态都有效时写入;前端不能只靠本地 Zod 校验或禁用控件放行提交。涉及规划候选、Knowledge Draft、正文候选接受或合并的动作不走通用动态字段保存必须调用对应 owner action。

错误码 触发条件 前端处理
SCHEMA_STALE 激活 MetaSchema 已升级,字段结构或校验规则不再匹配 暂存用户未提交输入,重新拉取投影并重渲染表单,提示用户复核变更字段后再提交
FIELD_DEPRECATED 提交包含已废弃、隐藏或不再可编辑字段 标记被移除字段,不再把该字段随下一次提交发送;如有用户输入,展示为需人工处理的本地草稿
PROJECTION_STALE 用户权限、授权快照、来源状态或可见性投影已变化 重新拉取投影,刷新可见字段和不可用原因;不能继续展示或提交旧投影里的隐藏数据
DATA_REVISION_CONFLICT 目标对象在用户编辑期间被其他操作修改 拉取最新数据,展示冲突提示,由用户选择覆盖、合并或放弃本地草稿;具体策略由对应业务 owner 决定

这些错误属于动态表单兼容策略,不改变 owner规划正式事实仍由 planning owner API 决策,知识正式事实仍由 Knowledge Draft 确认入口决策,正文正式事实仍由编辑器 Block 保存或候选接受入口决策。前端只展示 owner 返回的下一步动作,不自行从错误码推断可以覆盖、合并或继续提交。

6. 组件边界

Vben 管理后台组件示例:

  • MetaSchemaList
  • MetaSchemaEditor
  • MetaFieldTable
  • VisibilityPolicyPanel
  • SchemaImpactPreview

muse-studio 用户端组件示例:

  • PlanningDeskForm
  • PlanningSection
  • KnowledgeDraftForm
  • DynamicField
  • AIPlanningActions
  • VisibilityGate

共享只限:

  • 类型定义。
  • 字段渲染协议。
  • 校验消息码。
  • 设计 token 或基础 UI 规范。

不共享:

  • 管理后台 layout。
  • Vben 菜单和 store。
  • 管理员系统术语文案。
  • 后台配置编辑组件。

用户可见文案映射:

技术名 用户端产品语言
handoff session 跳转授权
precheckId / publishCheckId 使用检查
Tool Grant 工具权限摘要
Runtime Permission Envelope 运行权限摘要

这些技术名只能出现在管理员审计、调试详情或接口说明中;普通用户界面不得直接展示。

7. 校验和错误

前端即时校验:

  • 必填。
  • 类型。
  • 范围。
  • 枚举。
  • 基础引用是否选择。

后端最终校验:

  • 权限。
  • revision。
  • 来源状态。
  • 授权快照。
  • 跨字段业务规则。
  • 是否允许进入 Canonical。

用户端错误必须回到创作语言。例如“这个角色关系缺少目标角色”,不要直接暴露 target_entity_id required

8. 章节叙事规划边界

用户端可以使用“情节节拍 / 场景推进”作为创作语言,但阶段 7 不新增 Scene 作为独立一级前端模型。近程叙事控制归入章节大纲、章节目标或 Narrative State 展示。

如果未来引入独立 Scene 模型,必须先由架构、后端 Schema/API 和状态机确认,再调整前端路由与状态。

9. 关联阅读

  • 前端工程结构:前端-01-工程结构与核心依赖.md
  • 后端 Schema后端-04-统一数据库Schema-v1.md
  • 后端 API后端-05-统一API契约-v1.md
  • 架构核心模型:架构-02-核心数据结构与双轨模型.md
  • 状态机:架构-04-状态机与约束清单.md