
Plate 编辑器行为标准文档体系从行为决策模型到发布覆盖门禁的工程治理实践【免费下载链接】plateRich-text editor with AI and shadcn/ui项目地址: https://gitcode.com/GitHub_Trending/pl/platePlate本项目为 GitHub 精选仓库GitHub_Trending/pl/plate一个集成 AI 与 shadcn/ui 的富文本编辑器在docs/editor-behavior/目录下建立了一套面向编辑器行为的事实源source of truth文档体系它不再把Markdown 支持等同于能解析、能序列化也不再让编辑器行为默认等于当前插件恰好做出的行为而是用一套分层文档回答三个问题——决策模型是什么、我们想要什么行为、当前实际覆盖了什么。读完本文你将掌握这套体系的文件分工、权威排序、Spec ID 规约、覆盖门禁与阅读路径并知道如何结合仓库源码与测试去验证每一条行为规则。一、这套体系解决什么问题docs/editor-behavior/README.md开宗明义该目录是编辑器行为标准与覆盖度的事实源专门用于回答三个问题What is the decision model?决策模型是什么——当参照编辑器互相冲突时Plate 依据什么规则做裁决What behavior do we want?我们想要什么行为——可读的规范性行为规约What is actually covered right now?当前实际覆盖了什么——按功能家族的覆盖度门禁。对应的markdown-standards.md 记录了这套体系要阻止的两种典型失败模式把 markdown support 只当作 parse 与 serialize把 editor behavior 当作当前插件实现恰好做到的样子。因此该文件的作用是记录方法论与权威模型防止后续行为工作重新滑回猜测式开发。二、核心文件分工一套法律—覆盖—协议—路线图的分层堆栈文件角色用它回答的问题markdown-standards.md方法论与权威模型权威从哪来、参考池怎么用、决策规则是什么markdown-parity-matrix.md家族级覆盖门禁release gate哪些功能家族已覆盖、有什么证据、哪些被推迟、什么还阻塞发布master-roadmap.md剩余实现的规范路线图哪些已关闭、哪些待实现、泳道顺序与批次编排editor-protocol-matrix.md场景穷举矩阵每个键、边界、选区形态、容器交互是否被覆盖markdown-editing-spec.md规范性行为规约readable law不变量、所有权规则、规范示例、已锁定的策略决策markdown-editing-reference-audit.md参照证据第一轮 Typora/Milkdown 审计结论、Obsidian 研究如何追加产品压力、Plate 在哪里做了取舍editor-behavior-architecture.md长期架构行为是否应继续散落在插件里、profile-driven 模型长什么样commands/README.md运维命令包不重新读全部文档即可恢复/维护这条工作线的入口辅助目录执行笔记在 docs/plans主历史执行笔记为 2026-04-02-editor-behavior-major-execution.md 与 2026-04-03-editor-protocol-matrix-completion.md只用于查批次历史不作为当前门禁来源编译后的外部参照研究在 docs/research可复用方法论沉淀在 docs/solutions。三、决策模型权威排序与候选参考池markdown-standards.md 给出了决定 Plate 行为时的权威顺序Authority Order语法规范syntax spec优先明确的表层定义与节点模型有真实证据的最强表层特定 UX 权威可检视的开源交叉验证与最强相邻先例仅在以上都沉默或不兼容时才做显式回退决策。候选参考池是路由提示而非治理赢家——每个具体表层concrete surface单独选权威而不是按大类默认。各池子的分工如下Typoramarkdown-first 表层的高信号参考池覆盖段落、标题、列表、引用、链接、markdown 原生标记、代码、硬换行、链接/图片类源码点击编辑、脚注预览与引用导航、HTML 块编辑入口、markdown-first 剪贴板、token 式 TOC 插入Obsidian双模live preview vs source与笔记链接导航的高信号参考池覆盖链接自动补全、重命名联动内部链接、反链与未链接提及、大纲导航、markdown 工作区搜索、块引用产品行为、双模编辑器内联脚注约束Notion块编辑器原生元素toggle、callout、mention、date mention、TOC 块、列、媒体/文件块、slash 式插入感、内联 chip 与页面引用交互Google Docs文档式编辑表格单元格、多选单元格、缩进与对齐手感、行列结构操作、大纲式标题跳转、评论/建议/审阅行为GitHub仅 GFM 语法与渲染语义任务列表、autolink 字面量、脚注语义、GFM 表格不作为通用 WYSIWYG 编辑权威Milkdown可检视的开源交叉验证markdown-first 编辑选择、引擎权衡、Typora/Notion 难以直接检视的场景。Surface-first 规则是决策模型的核心同一个markdown 扩展家族里一行可能落在 Typora另一行可能落在 Obsidian第三行可能落在 Google Docs 或 GitHub Docs——这完全正常不要因为家族标签就强行统一一个所有者。当主次参照一致时默认采用该行为除非与语法正确性或 Plate 文档模型冲突当主次参照冲突时必须记录场景、主参照行为、次参照行为、Plate 的选择以及选择理由当两者都沉默时先寻找最强的相邻主流先例只有失败后才做显式回退决策并写入规约与测试。特别地当前 Plate 行为不是平局决胜者——现有行为是证据不是权威。四、节点模型与亲和度行为规约的底层坐标系所有规约、奇偶矩阵与协议矩阵中的功能家族都必须声明节点模型Node Modelblock non-void可编辑的块/容器内容block void atom富文本模式下体内部无光标的原子块inline non-void span可编辑的内联内容如链接inline void atom无可编辑富文本体的原子内联表层leaf mark由叶子承载的文本标记而非独立内联元素text token解析后保持语法文本行为如硬换行overlay / no node不拥有文档节点的编辑器镀层。当内联键入可能跨越其边界时还必须声明亲和度Affinitydirectional从格式化侧键入延伸该格式从普通侧键入保持在外hard边界键入保持在外不延伸格式化跨度outward元数据范围偏向避免意外增长none / n-a块节点、void 原子、文本 token 与 overlay 不拥有内联亲和度。配套规则见 markdown-editing-spec.md 的 Node Model And Affinity Classes 小节不要从 UI 镀层推断 atomicity不要从 DOM 的contentEditable{false}推断 voidness必须以编辑器节点契约为准内联 void 原子mention、date、脚注引用、内联数学不依赖 mark/link 亲和度而是作为原子自己拥有方向键、删除与导航行为。五、可锁定规约Spec ID 体系、锁级别与偏差策略每一条有意义的规则都必须有稳定的 Spec ID这是从文档驱动测试TDD的前提EDIT编辑行为如EDIT-BQ-ENTER-EMPTY-001、EDIT-LIST-BACKSPACE-START-002PARITY解析/序列化/往返奇偶如PARITY-GFM-TASKLIST-001、PARITY-MATH-BLOCK-003STREAM流式/增量 markdown 行为如STREAM-BQ-PARTIAL-001DEVPlate 有意偏离参照的偏差。锁级别Lock Levelsdraft参照前框架、audit参照研究进行中、proposed可能决策未锁定、locked已接受的目标行为、deviation有意区别于参照、profile 专属。偏差政策Deviation Policy允许偏差但不允许隐藏偏差。当 Plate 与 Typora/Obsidian/Google Docs/Notion/Milkdown 不同时必须记录 spec ID、场景、参照行为、Plate 行为与理由。好的理由包括语法正确性、文档模型安全、更好的多块一致性、更好的流式稳定性、更好的 profile 可组合性、更强的主流编辑器先例、把参照行为暴露为显式 profile 选项坏的理由包括插件本来就这样、改起来很麻烦、我们已经有测试了、这是 Plate 的旧默认值。每条已锁定规则最终应映射到一个或多个测试、所属包或集成表层、以及激活的行为 profile测试命名应在行为足够重要时直接引用 spec ID。六、三大矩阵协议矩阵、奇偶矩阵与路线图6.1 协议矩阵editor-protocol-matrix.md场景穷举editor-protocol-matrix.md 与其余文档刻意不同规约是可读法律奇偶矩阵是家族级发布门禁而它是场景完整的协议积压——回答我们是否覆盖了每个键、边界、选区形态与容器交互。每行场景遵循统一的行模式Row Schema列含义Familymarkdown-native / markdown extension / block-editor-native / styling layout / collaboration / cross-surfaceEntity段落、表格单元格、链接、mention、媒体等Node Model上文七类节点模型之一Contextroot、quote、list、table、column、closed/open container、adjacent to atom 等Selectioncollapsed、expanded-inline、expanded-multiblock、backward、cell-range、node-selectedCaret / Edgestart、middle、end、before/after atom、first/last visual lineInput↵、⌫、⌦、⇥、⇤、方向键、⇧arrow、⌘A、copy、paste、hover、click、mod-click、drag、delete commandExpectedsplit、reset、lift、unwrap、select container、delete atom、keep native、no-op 等Authority语法参照 主/次 UX 参照Spec ID规约中的规范 IDEvidence当前测试或实现接缝Statusseeded/specified/tested/partial/deferred矩阵还给出了实体模型映射表Entity Model Map例如链接 inline non-void spandirectional、内联代码 leaf markhard、代码块 block non-void owner、表格 block non-void grid owner、脚注引用 inline void atom、TOC block void atom、评论 leaf metadata markoutward、建议 leaf metadata mark block wrapperoutward、讨论 overlay/anchor、Yjs 光标 overlay/no node。被推迟的交互类剪贴板变体、鼠标拖拽选区、交互式预览/导航、导航反馈、平台快捷键、删除命令变体、IME/组合输入在apps/www/src/__tests__/package-integration/__deferred__/的集成红套件中可用pnpm test:deferred显式运行。6.2 奇偶矩阵markdown-parity-matrix.md发布门禁尽管文件名带 markdown该矩阵早已不止追踪 markdown 原生结构——大版本可能破坏任何影响内容的既有功能因此它追踪markdown-native 行为、markdown 扩展、块编辑器原生元素、文档样式与布局、协作与编辑器专属内容表层。状态语义为locked足够强健不阻塞大版本即可在其上构建partial既有功能可用但契约或覆盖仍薄弱gap既有功能规范不足、有损或覆盖弱profile-divergence既有功能可用但在严格 markdown-first profile 之外仍需显式行为策略deferred-minor不属于本大版本即使解析器或文档提及它。每行的读法是Node Model / Affinity是否 void 内联亲和度、Behavior Scope必须规约的用户可见行为、Current Evidence代表性接缝而非全部测试、Next Work本大版本泳道的剩余具体工作、Editing Spec IDs。以表格行为为例该矩阵将表格标记为locked其行为范围包含单元格导航、↵、⇥/⇤、⌫、多单元格选择、复制/粘贴、合并/拆分、行列增删、反序列化/序列化以及多段落单元格内容的有意内联br/回退——因为纯 markdown 表格语法无法承载嵌套块结构。6.3 主路线图master-roadmap.md实施顺序的所有权master-roadmap.md 是docs/editor-behavior的规范实施序列拥有剩余泳道顺序、泳道进出条件、操作者交接与路线图词汇表不拥有当前法律真相、门禁措辞、证据历史与架构理由。其词汇表定义closed major早期既有功能大版本门禁已不是活跃执行队列、lane一个剩余实施项目可能仍宽于一个批次、slice泳道内的一个具体可执行块、feature-gap follow-up法律已写好之后仍存在的真实实施工作、todo活跃已批准队列项、backlog需用户批准才能回到活跃队列的推迟项。Truth Ownership 表划清了权力边界法律law归 markdown-editing-spec.md、editor-protocol-matrix.md 与 markdown-standards.md门禁归 markdown-parity-matrix.md证据归 markdown-editing-reference-audit.md 与 docs/research顺序归路线图与 commands/README.md历史执行归 2026-04-02-editor-behavior-major-execution.md。七、可读行为规约速览全局不变量与结构键所有权markdown-editing-spec.md 目标 profile 为markdown_typora、伴随参照为markdown_milkdown是当前可读法律。它定义了五条全局不变量均为lockedEDIT-GLOBAL-001结构键由最近的结构获胜EDIT-GLOBAL-002一次按键只改变一层结构深度EDIT-GLOBAL-003空块↵只退出一层容器而非全部层EDIT-GLOBAL-004⌫先原地删除/合并当前空块再做任何结构提升EDIT-GLOBAL-005展开的选择操作所有被选块且不静默丢弃结构。结构键的默认所有权顺序为表格单元格 → 代码块/围栏块 → toggle 类容器 → 列表项 → 引用块 → 缩进块 → 通用块回退。⌫的层级是最近强所有者先赢 → 当前块为空且能在同容器内消亡则原地消亡 → 否则移除一层结构 →绝不因为光标在 offset 0 就逃出代码、数学或表格。规约用紧凑符号书写规范示例|为光标、[[text]]为内联选区、↵/⌫/⌦/⇥/⇤分别表示 Enter/Backspace/Delete/Tab/ShiftTab、为一次按键后的结果。例如列表的EDIT-LIST-BS-START-EMPTY-ROOT-001空顶层列表项⌫退出到段落、引用列表交互EDIT-BQ-LIST-ENTER-EMPTY-001连续两次↵列表先退一层、引用再退一层、表格单元格EDIT-TABLE-TAB-001⇥移到下一格⌘A从单元格→表格→文档逐级升级选择。跨表层交互剪贴板、交互式预览导航、导航反馈、搜索跳转、IME 组合输入也各有锁定条目例如导航反馈EDIT-NAV-FEEDBACK-*规定成功导航应依次按所属表层落焦点/光标 → 滚动目标入视 → 短暂高亮目标且高亮是共享的瞬时反馈原语TOC 跳转、脚注引用/定义跳转与搜索跳转复用同一原语。八、仓库证据链从 Spec ID 到测试的实现印证这套文档体系并非空中楼阁——奇偶矩阵的Current Evidence列与协议矩阵的Evidence列都直接指向仓库源码与测试。以段落与标题行为为例证据落在packages/core/src/lib/plugins/override/withBreakRules.spec.tsxEnter 拆分与withDeleteRules.spec.tsx删除/重置缩进行为在 withIndent.spec.tsx链接与内联代码的亲和度由 AffinityPlugin.spec.tsx 覆盖表格的⇥跨格导航、⌘A升级选择、行列结构操作在 withTable.spec.tsx 及其 transforms/merge 测试族中markdown 解析/序列化往返证据在 deserializeMd.spec.ts 与commonmarkSurface.spec.ts、gfmSurface.spec.ts等文件中。脚注包的查找助手api.footnote.definitions、hasDuplicateDefinitions等则指向 registry.ts 与footnoteRegistry.spec.ts。这些测试既是规约 ID 的落点也是当前行为是证据、不是权威这一原则的可验证载体。九、按阅读路径使用这套体系README 针对不同诉求给出了五条阅读路径看大局先读 markdown-standards.md → editor-behavior-architecture.md → markdown-parity-matrix.md → master-roadmap.md看当前发布门禁先读 markdown-parity-matrix.md → commands/README.md仅在需要历史执行脉络时补读 2026-04-02-editor-behavior-major-execution.md恢复或维护这条工作线commands/README.md → master-roadmap.md → 奇偶矩阵 → 需要批次历史时再读执行笔记要具体行为规则markdown-editing-spec.md → markdown-editing-reference-audit.md → 需要时深入 docs/research 的编译参照层要穷举协议覆盖editor-protocol-matrix.md → 规约 → 奇偶矩阵。实用规则Practical Rule可概括为用规约定义行为用协议矩阵穷举场景用奇偶矩阵判断家族覆盖是否足够审计只在规则需要外部依据时使用架构文档只在问题是结构性问题时使用。当两份文档看似说同一件事时法律以规约为准穷举场景以协议矩阵为准发布门禁以奇偶矩阵为准。十、当前状态已关闭的发布门禁与审批制积压奇偶矩阵记录的当前发布门禁已关闭markdown-native 关键行为以及 blockquote、list、heading、code block、table 核心行为、缩进所有权、callout reset/soft-break、mention/date/TOC 边界行为、columns 包表层往返、media/caption 包表层行为均视为已闭合search/find-replace 停留在活跃门禁之外其行为法律与协议行已存在但编辑器搜索表层被有意推迟到该产品泳道真正启动为止。仍属于编辑器行为积压的包括typed syntax-trigger 转换link automd 通过更丰富的 link/source-entry 交互泳道发布$...$闭合转换与$$↵块数学提升已发布安全切片selection-wrap 仍推迟、更重的 date/media 序列化语义、toggle 重写泳道、跨表层 search/find-replace 产品泳道当前文件搜索、从选区播种搜索、下一个/上一个、替换、搜索目标导航反馈、大纲标题搜索、code-drawing/Excalidraw 泳道、协作/编辑器专属泳道comment、suggestion、discussion、yjs与流式改进。路线图的积压泳道toggle rewrite、search/find-replace、collaboration、streaming follow-up、link input/autolink policy rewrite均需用户批准后才能重新进入活跃队列——这正是把行为治理从猜测变成显式决策系统这一工程目标的落地形态。【免费下载链接】plateRich-text editor with AI and shadcn/ui项目地址: https://gitcode.com/GitHub_Trending/pl/plate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考