feat: EditorRuntimeActor - 三层缓存/delta/事件架构

Phase A — EditorRuntimeActor 内存缓存层
- 新增 editor_actor.rs: EditorBlockDocument 内存态 + apply_command + load_or_init
- block.rs 四个写工具(replace/insert/delete/move)接入 actor 路径
- editor_actor feature flag(MNOTE_WEB_ENABLE_EDITOR_ACTOR=true 默认开启)
- bridge-runtime 三个核心函数公开化
- rust-toolchain: 1.89 → stable(修复 spike WASM 编译阻塞)

Phase B — 编辑器增量 delta channel
- BlockDelta/DeltaOperation 类型 + actor.build_block_delta()
- leptos-tiptap spike: mnote:editor:block-delta CustomEvent 监听 + JSON patch
- DocumentAiAgentPanel: 拦截 blockDelta → window dispatchEvent
- 工具响应含 blockDelta 字段供前端消费

Phase C — 事件 stream delta
- broadcast channel 在 AppState/actor/SSE 三层贯通
- tree_events SSE 端点发 block.delta 事件
- 旧客户端降级兼容

环境修复
- rustc recursion_limit = 1024(修复 Leptos SSR 类型深度溢出)
- run-convex-deploy.js(封装 Convex function 部署到本地后端 3210)

ref: design/07-ai/process/7-13-page-block-editor-runtime-actor-v1.md
This commit is contained in:
lix-2026
2026-05-16 22:03:30 +08:00
parent d8bfaea306
commit f292c6710a
101 changed files with 13618 additions and 2416 deletions
+26 -9
View File
@@ -1,6 +1,6 @@
# MNOTE 当前架构梳理
> 更新时间:2026-05-09
> 更新时间:2026-05-16
本文只描述当前仓库中真实成立的主线结构,以及当前最优先的架构收口点。
@@ -47,15 +47,19 @@
## 3. 当前页面运行结构
### 3.1 根布局
### 3.1 根布局与 legacy island source
- `/mnt/Data1T/mnote/wolai-frontend/src/app/layout.tsx`
职责:
- 注入运行时配置
- 挂载 Convex / Query Provider
- 作为前端 App Router 根布局
- 作为 legacy Next / React island bundle source 的根布局
- 保留 Convex / Query Provider 等前端 island 运行时依赖
- 服务显式 legacy/debug/迁移边界
注意:
> **3000 当前根入口与文档页 shell 由 `mnote-web` 持有;Next App Router 不再是 3000 主入口或页面根布局事实源。**
### 3.2 工作区壳与 Sidebar
@@ -114,8 +118,6 @@
文档页主路径已不再暴露显式 debug host 选择;历史 `iframe_debug` 宿主仅剩源码参考,不再参与页面 host 选择面。
- `blocknote`
### 4.4 正式主编辑器
- `/mnt/Data1T/mnote/wolai-frontend/src/components/editor/leptos-tiptap-island-editor-host.tsx`
@@ -146,16 +148,19 @@
当前真实状态是:
- 读取主链已优先消费 Rust `mnote.page_aggregate.v1` snapshot
- Page Aggregate 已输出 `blockDocument``blockProjectionVersion``projectionSource`
- 标题链路已开始与工作区树 canonical snapshot 对齐
- 正文默认由 `leptos-tiptap` island 编辑与保存
- 页面设置已有一部分进入 island 运行时语义
- `page_tree` / `pageSubtree` 已进入统一聚合入口
- 页面/块 AI tools 已开始通过 Page Aggregate block projection 读取、定位、dry-run、替换、插入和受限移动块,并经 `page.body.save -> documents:updateContent` 持久化
但仍未完成的关键点是:
1. Rust 侧虽已提供最小 `Page Aggregate` snapshot,但页面设置、页头标题与 AI 写入口还没有完整闭环到同一组聚合真相
1. Rust 侧虽已提供最小 `Page Aggregate` snapshot 和 block projection v1,但当前 block projection 仍主要从 `documents.content` / local markdown content 投影,不是 EditorBlockDocument 原生落库完成态
2. 标题 / 正文 / 页面设置虽已开始收口到 `page.*` family,但 projection 回流与运行时语义仍未完全统一
3. 客户端仍保留 preferred sidebar snapshot 与本地 aggregate state reducer,说明页面域单一真源仍在推进中
3. AI 块工具最小闭环已启动,但 `scope=selection``format=page_xml/text`、多块插入、复杂块移动矩阵和持久审阅 UI 仍未完成
4. 客户端仍保留 preferred sidebar snapshot 与本地 aggregate state reducer,说明页面域单一真源仍在推进中
因此当前正确表述应是:
@@ -277,6 +282,18 @@ OnlyOffice 仍然是:
- `/mnt/Data1T/mnote/design/03-rust-web/process/3-3-rust-web-tree-realtime-event-stream-v1.md`
### 8.4 Page / Block AI Tooling
目标:
- 让 AI 读取、定位、dry-run 和精确块写入统一走 Rust Hermes tools、Page Aggregate block projection 与 `EditorCommand`
-`mnote.page.save` 固定为页面级兜底写入工具,不再代表长期精确块编辑主入口
- 补齐 `scope=selection``format=page_xml/text`、多块插入、复杂块移动矩阵和持久审阅 UI
对应设计稿:
- `/mnt/Data1T/mnote/design/07-ai/process/7-10-page-block-ai-tooling-execution-checklist-v1.md`
## 9. 当前不该再用的旧口径
下面这些说法现在都不准确: