From 3adc2b5e85a18ac38a0b8e6d8cc1c32821ca7cb7 Mon Sep 17 00:00:00 2001 From: lix-2026 Date: Sat, 9 May 2026 21:12:57 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E7=BB=A7=E7=BB=AD=E6=94=B6=E5=8F=A3?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E7=A8=BF=E7=8A=B6=E6=80=81=E4=B8=8E=E4=B8=BB?= =?UTF-8?q?=E7=BA=BF=E5=8F=A3=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ust-web-legacy-next-retirement-gates-v1.md | 6 ++++- ...eb-dual-pane-editable-document-shell-v1.md | 18 ++++++++++--- .../3-1-rust-web-long-term-checklist-v2.md | 2 +- ...al-markdown-gfm-ast-parser-migration-v1.md | 18 ++++++++++--- design/03-rust-web/process/3-4-undo.md | 2 +- .../3-rust-web-long-term-architecture-v1.md | 20 +++++++------- ...ge-settings-and-ai-surface-alignment-v1.md | 26 +++++++++++-------- ...ge-settings-and-ai-surface-checklist-v1.md | 8 ++++-- ...tiptap-notion-like-template-adoption-v1.md | 2 +- ...-4-leptos-tiptap-mainline-correction-v1.md | 21 +++++++-------- ...e-main-editor-experience-restoration-v1.md | 6 ++--- ...5-9-wolai-aline-continuous-checklist-v1.md | 14 +++++----- ...7-document-ai-minimum-loop-checklist-v1.md | 2 +- ...ase7-structured-artifact-write-chain-v1.md | 4 +-- .../7-phase7-ai-kernel-projection-plan-v4.md | 14 ++++++---- .../7-phase7-ai-kernel-projection-plan-v1.md | 2 +- .../7-phase7-ai-kernel-projection-plan-v2.md | 7 ++++- .../7-phase7-ai-kernel-projection-plan-v3.md | 4 +-- 18 files changed, 110 insertions(+), 66 deletions(-) rename design/03-rust-web/{process => done}/3-11-rust-web-legacy-next-retirement-gates-v1.md (87%) rename design/03-rust-web/{process => done}/3-14-rust-web-dual-pane-editable-document-shell-v1.md (97%) rename design/05-editor-mainline/{process => done}/5-10-wolai-page-settings-and-ai-surface-alignment-v1.md (92%) rename design/05-editor-mainline/{process => done}/5-11-wolai-page-settings-and-ai-surface-checklist-v1.md (97%) rename design/{ => old}/07-ai/process/7-phase7-ai-kernel-projection-plan-v2.md (98%) rename design/{ => old}/07-ai/process/7-phase7-ai-kernel-projection-plan-v3.md (98%) diff --git a/design/03-rust-web/process/3-11-rust-web-legacy-next-retirement-gates-v1.md b/design/03-rust-web/done/3-11-rust-web-legacy-next-retirement-gates-v1.md similarity index 87% rename from design/03-rust-web/process/3-11-rust-web-legacy-next-retirement-gates-v1.md rename to design/03-rust-web/done/3-11-rust-web-legacy-next-retirement-gates-v1.md index fb2ac6e7..ad2ce6dd 100644 --- a/design/03-rust-web/process/3-11-rust-web-legacy-next-retirement-gates-v1.md +++ b/design/03-rust-web/done/3-11-rust-web-legacy-next-retirement-gates-v1.md @@ -1,4 +1,8 @@ -# 3-11 [process] Rust Web Legacy Next Retirement Gates v1 +# 3-11 [done] Rust Web Legacy Next Retirement Gates v1 + +> 状态说明: +> - 本稿定义的 default gate 已在当前主线代码中成立:`mnote-web` 是 `3000` owner,Next 仅保留 legacy compat/debug 边界 +> - `MNOTE_WEB_ENABLE_LEGACY_NEXT_COMPAT` 默认关闭与 `task117` guard 已落地,故迁入 `done/` ## 目标 diff --git a/design/03-rust-web/process/3-14-rust-web-dual-pane-editable-document-shell-v1.md b/design/03-rust-web/done/3-14-rust-web-dual-pane-editable-document-shell-v1.md similarity index 97% rename from design/03-rust-web/process/3-14-rust-web-dual-pane-editable-document-shell-v1.md rename to design/03-rust-web/done/3-14-rust-web-dual-pane-editable-document-shell-v1.md index ce807ae5..35a43c0f 100644 --- a/design/03-rust-web/process/3-14-rust-web-dual-pane-editable-document-shell-v1.md +++ b/design/03-rust-web/done/3-14-rust-web-dual-pane-editable-document-shell-v1.md @@ -1,7 +1,11 @@ -# 3-14 [process] Rust Web 双窗格可编辑文档壳方案 v1 +# 3-14 [done] Rust Web 双窗格可编辑文档壳方案 v1 > 更新时间:2026-05-08 > +> 状态说明: +> - 本稿对应的双窗格文档壳、共享 session、事件流复用、URL 恢复与自动化 smoke 已完成,故迁入 `done/` +> - 下文第 2 节保留的是实现前问题基线;当前真实完成状态与验证证据以第 15-16 节为准 +> > 关联文档: > - `/mnt/Data1T/mnote/design/03-rust-web/process/3-rust-web-long-term-architecture-v1.md` > - `/mnt/Data1T/mnote/design/03-rust-web/process/3-3-rust-web-tree-realtime-event-stream-v1.md` @@ -11,9 +15,17 @@ ## 1. 结论 -当前 `3000` 已经把“在右侧边栏打开”挂到了右键菜单和搜索提示上,但实际只发出了 `tree.page.open-right` 事件,还没有真正的右侧文档容器、窗格状态和多实例同步模型。 +截至 2026-05-09,当前 `3000` 已经具备: -这一步不应该做成“再开一个完整页面”或“在右侧塞一个 iframe”,而应该在现有 `workspace shell` 内引入: +- 右侧 `secondary pane` 文档容器 +- pane 状态模型与 URL 恢复 +- 同文档双开共享 session 与即时同步 +- tree live stream / local-folder 事件流复用 +- 对应 Rust 单测与浏览器 smoke + +本稿记录的是这条双窗格能力从问题定义到完成验收的收口过程。 + +最终实现没有做成“再开一个完整页面”或“在右侧塞一个 iframe”,而是在现有 `workspace shell` 内引入了: - 双窗格文档宿主 - 可复用的文档 session 层 diff --git a/design/03-rust-web/process/3-1-rust-web-long-term-checklist-v2.md b/design/03-rust-web/process/3-1-rust-web-long-term-checklist-v2.md index 61e84d22..b270af0a 100644 --- a/design/03-rust-web/process/3-1-rust-web-long-term-checklist-v2.md +++ b/design/03-rust-web/process/3-1-rust-web-long-term-checklist-v2.md @@ -241,7 +241,7 @@ - [ ] `Sidebar` 仍然是超大客户端组件 - [sidebar.tsx](/mnt/Data1T/mnote/wolai-frontend/src/components/sidebar/sidebar.tsx) -- [ ] 页面树 / 文件树虽然已统一协议,legacy Next 侧整体执行面仍主要在客户端;当前 Rust Web 3000 SSR 壳也尚未直接消费 live EventSource +- [ ] 页面树 / 文件树虽然已统一协议,legacy Next 侧整体执行面仍主要在客户端;当前 Rust Web 3000 SSR 壳已接入 live EventSource,但 live cache、preferred snapshot 与补偿链还未完全统一 - [x] `buildDocumentTree(...)` 仅剩兼容 helper 与旧单测,不再位于树域主路径 - [ ] 主布局仍然默认常驻挂载 Sidebar - [ ] 还不能叫“服务端输出 + 局部 island”,现在更像“服务端首包 + 超大客户端壳” diff --git a/design/03-rust-web/process/3-13-rust-web-local-markdown-gfm-ast-parser-migration-v1.md b/design/03-rust-web/process/3-13-rust-web-local-markdown-gfm-ast-parser-migration-v1.md index a86153be..98437f36 100644 --- a/design/03-rust-web/process/3-13-rust-web-local-markdown-gfm-ast-parser-migration-v1.md +++ b/design/03-rust-web/process/3-13-rust-web-local-markdown-gfm-ast-parser-migration-v1.md @@ -1,12 +1,24 @@ # 3-13 [process] Rust Web 本地 Markdown GFM AST 解析器迁移方案 v1 -> 更新时间:2026-05-08关联:`/mnt/Data1T/mnote/rust/crates/mnote-web/src/routes/local_folder_source.rs/mnt/Data1T/mnote/rust/crates/mnote-web/src/routes/web_shell.rs/mnt/Data1T/mnote/design/04-tree-domain/done/4-21-local-folder-convex-unified-tree-source-v1.md/mnt/Data1T/mnote/design/04-tree-domain/done/4-22-local-folder-convex-unified-tree-execution-checklist-v1.md` +> 更新时间:2026-05-09 +> +> 关联: +> - `/mnt/Data1T/mnote/rust/crates/mnote-web/src/routes/local_folder_source.rs` +> - `/mnt/Data1T/mnote/rust/crates/mnote-web/src/routes/local_markdown_parser.rs` +> - `/mnt/Data1T/mnote/rust/crates/mnote-web/src/routes/web_shell.rs` +> - `/mnt/Data1T/mnote/design/04-tree-domain/done/4-21-local-folder-convex-unified-tree-source-v1.md` +> - `/mnt/Data1T/mnote/design/04-tree-domain/done/4-22-local-folder-convex-unified-tree-execution-checklist-v1.md` ## 1. 结论 -当前本地 Markdown 渲染链路是 `mnote-web` 自己写的轻量 parser,不是 VSCode 解析器,也不是成熟 GFM AST pipeline。它已经被补到能覆盖一部分常见语法,但本质上仍是“自己造轮子”,后续维护成本会持续上升。 +当前本地 Markdown 渲染链路已经进入“读侧 AST、写侧仍在过渡”的 partial 状态: -本方案建议把本地 `.md` 读取侧迁移到 Rust 侧成熟 GFM AST 解析器,再把 AST 映射到现有 `PageAggregate` / Tiptap bridge。当前手写 parser 只保留为过渡层,不再作为长期语义来源。 +- 读侧已新增 Rust `local_markdown_parser.rs`,并基于成熟 GFM AST 解析常见语法 +- 写侧回 Markdown 仍主要依赖 `local_folder_source.rs` 里的手写规则 + +因此当前问题已经不再是“要不要迁到 AST”,而是“如何把剩余写侧与兼容补丁继续收口”。 + +本方案当前聚焦的是:继续把 AST 映射到现有 `PageAggregate` / Tiptap bridge,并让剩余手写 parser/回写逻辑逐步退回过渡层,不再作为长期语义来源。 ## 2. 当前问题 diff --git a/design/03-rust-web/process/3-4-undo.md b/design/03-rust-web/process/3-4-undo.md index 707a198d..93eaa13a 100644 --- a/design/03-rust-web/process/3-4-undo.md +++ b/design/03-rust-web/process/3-4-undo.md @@ -300,7 +300,7 @@ MNOTE_UI_BASE_URL=http://127.0.0.1:3000 node scripts/task127-rust-web-mindmap-ke - Modify: `rust/crates/mnote-web/src/routes/gateway.rs` - Modify: `rust/crates/mnote-web/src/config.rs` - Modify: `scripts/task117-next-retirement-guard.js` -- Create or Modify: `design/03-rust-web/process/3-11-rust-web-legacy-next-retirement-gates-v1.md` +- Create or Modify: `design/03-rust-web/done/3-11-rust-web-legacy-next-retirement-gates-v1.md` **Checklist:** - [x] 盘点 `routes/mod.rs` 中所有 `/api/compat/next`、fallback proxy、legacy debug route 的入口和调用方。 diff --git a/design/03-rust-web/process/3-rust-web-long-term-architecture-v1.md b/design/03-rust-web/process/3-rust-web-long-term-architecture-v1.md index 3392a532..fd86c85a 100644 --- a/design/03-rust-web/process/3-rust-web-long-term-architecture-v1.md +++ b/design/03-rust-web/process/3-rust-web-long-term-architecture-v1.md @@ -1,6 +1,6 @@ # 3 [process] Rust Web 长期架构方案 v1 -> 更新时间:2026-04-16 +> 更新时间:2026-05-09 > > 相关文档: > - `/mnt/Data1T/mnote/ARCHITECTURE.md` @@ -26,7 +26,7 @@ - 前端哪些部分应该退出当前重 React 壳 - `axum`、`Leptos` 这类 Rust Web 方案是否值得采用 - `mnote-cli` 应如何成为唯一长期 agent 执行面 -- `BlockNote` 应如何被隔离到最后处理 +- 默认主编辑器已经切到页面内 `leptos-tiptap` island 后,剩余重编辑兼容链应如何继续收口 --- @@ -58,17 +58,17 @@ - **Web 承载层:`axum`** - **页面渲染模型:`Leptos Islands`** - **AI 执行面:`mnote-cli`** -- **最后保留的重前端孤岛:`BlockNote`** +- **最后保留的重编辑兼容孤岛:少量编辑器 runtime(当前默认主编辑器已是页面内 `leptos-tiptap` island,`BlockNote` 仅保留为 fallback / 对照链)** 一句话概括: > **mnote 的长期正确方向不是“Next 外壳上继续打补丁”,也不是“只把 API 改成 Rust”,而是“Rust 内核 + Rust Web 壳 + server-first 页面 + 少量交互孤岛”。** -### 2.3 `BlockNote` 不是第一刀,而是最后一刀 +### 2.3 重编辑兼容链不是第一刀,而是最后一刀 当前真正难替代的主要是: -- `BlockNote` +- 以 `BlockNote` fallback、转换链和剩余兼容保存链为代表的重编辑 runtime 而下面这些能力,从长期看都可以先退出当前大前端壳: @@ -81,7 +81,7 @@ 所以长期路线应当是: -> **先把能 Rust 化、能 server-first 化、能 island 化的东西全部迁走,最后再处理 `BlockNote`。** +> **先把能 Rust 化、能 server-first 化、能 island 化的东西全部迁走,最后再处理重编辑兼容链。** --- @@ -353,12 +353,14 @@ Leptos Islands 很适合承接下面这类长期目标: 对应的执行细节、逐阶段清单和可验证项,当前应先以 `/mnt/Data1T/mnote/design/01-05-current-priority-overview.md` 确认优先级;`/mnt/Data1T/mnote/design/03-rust-web/process/3-1-rust-web-long-term-checklist-v2.md` 保留为 Rust Web 分阶段全景参考。 -### 8.4 当前已落地的最小里程碑(2026-04-16) +### 8.4 当前已落地的最小里程碑(2026-05-09) 到目前为止,长期路线里已经有几条可以被源码直接证明的最小里程碑: -- Rust Web 承载层已经有 `mnote-web` crate 骨架,`router / middleware / request context / SSE / WS / AI bridge` 的主接缝已立住;历史上这条线曾经包含 Hermes bridge。 -- 文档页已经从“默认先进编辑器”改成“先阅读、后编辑”:服务端先读 `meta + content`,阅读态单独渲染,`BlockNote` 只在进入编辑态后挂载。 +- `mnote-web` 已经不是只停留在 crate 骨架;`3000` 公开入口已由 Rust Web 主壳承接,`3104` 已退到仅显式 debug / internal 边界。 +- Rust Web 主壳已经接入 `/api/tree/events` snapshot / delta / resync consumer,双 pane 也已复用同一条 tree realtime 主链,而不是每个页面壳各自维护第二条流。 +- 文档页读取已经进入 Rust-first `page aggregate` 过渡态:`/api/documents/page` 优先消费 Rust `/api/page-aggregate/:id` 的 `mnote.page_aggregate.v1` snapshot,失败时才回退 TS builder。 +- 默认主编辑区已经切到页面内 `leptos-tiptap` island;阅读态、页头、页面设置和页面内 AI 面板都在 `3000` 主壳上继续收口,`BlockNote` 只保留为 fallback / 对照链。 - Sidebar 已形成“服务端首包 + 客户端局部 island”的最小边界,导航数据聚合契约不再散落在布局层。 - SearchPalette 与页面级 AI 面板都已经收成轻 host + 按需 runtime island,重量运行态不再默认跟随主布局常驻。 - Global AI 继续保留为实验入口,但不再回到 app layout 主链,避免长期路线再次滑回“全局大面板常驻”模式。 diff --git a/design/05-editor-mainline/process/5-10-wolai-page-settings-and-ai-surface-alignment-v1.md b/design/05-editor-mainline/done/5-10-wolai-page-settings-and-ai-surface-alignment-v1.md similarity index 92% rename from design/05-editor-mainline/process/5-10-wolai-page-settings-and-ai-surface-alignment-v1.md rename to design/05-editor-mainline/done/5-10-wolai-page-settings-and-ai-surface-alignment-v1.md index 3c7e0933..83d436d6 100644 --- a/design/05-editor-mainline/process/5-10-wolai-page-settings-and-ai-surface-alignment-v1.md +++ b/design/05-editor-mainline/done/5-10-wolai-page-settings-and-ai-surface-alignment-v1.md @@ -1,7 +1,11 @@ -# 5-10 [process] Wolai 页面设置与 AI 交互壳对齐方案 v1 +# 5-10 [done] Wolai 页面设置与 AI 交互壳对齐方案 v1 > 更新时间:2026-05-06 > +> 状态说明: +> - 本稿对应的页面设置 `popover`、页面 AI `drawer`、入口位置与最小接线方案已在当前 `mnote-web` 文档壳中落地,故迁入 `done/` +> - 本稿中的 deferred 项继续由后续独立任务推进,不影响这一轮“页面设置 + 页面 AI 交互壳”完成判定 +> > 关联文档: > - `/mnt/Data1T/mnote/ARCHITECTURE.md` > - `/mnt/Data1T/mnote/design/01-05-current-priority-overview.md` @@ -348,7 +352,7 @@ Wolai 里页面设置和 AI 的第一感受,首先是: 负责。 -因此本轮入口层优先落在 React compat 主路径,而不是先去大改 Rust SSR 占位按钮。 +因此本轮入口层最终落在当前 `mnote-web` / Rust SSR 文档壳主路径,而不是回到 React compat 交互 owner。 首批调整建议: @@ -358,9 +362,9 @@ Wolai 里页面设置和 AI 的第一感受,首先是: 理由: -- 当前现网入口真正在这里 -- 直接改这里可以最小改动验证体验 -- 先把交互壳对齐,再决定 Rust SSR 侧是否同步收口 +- 当前 `3000` 主壳 owner 已是 `mnote-web` +- 页面设置与页面 AI 的入口、容器和状态合同已经在 Rust SSR 文档壳中集中落地 +- 继续把入口回接到 React compat 会重新制造双 owner 歧义 ## 7.2 页面设置面板组件 @@ -437,15 +441,15 @@ Wolai 里页面设置和 AI 的第一感受,首先是: Rust `mnote-web` 当前在文档壳中已有顶栏占位按钮与右下角浮动按钮。 -本轮不把 Rust SSR 作为首批真实交互 owner,原因是: +当前实现已经把 Rust SSR 作为这一轮真实交互 owner,原因是: -- 当前现网文档页真实入口仍由 React compat 壳主导 -- 先在 React compat 层做对入口与容器,风险更低 -- 等行为稳定后,再决定是否把 Rust SSR 占位按钮收口到同一 contract +- 当前 `3000` 文档页主壳就是 `mnote-web` +- 页面设置与页面 AI 的入口、容器和状态合同已收口到同一份 Rust shell/runtime contract +- React compat 不再承担这一轮页面设置与页面 AI 的默认交互 owner -这意味着本轮的正确做法是: +这意味着本轮完成后的正确做法是: -> **先统一产品行为合同,再决定是否让 Rust SSR 与 React compat 共用同一套入口渲染。** +> **以 Rust SSR / `mnote-web` 文档壳作为默认行为 owner;React compat 只保留兼容与过渡边界。** --- diff --git a/design/05-editor-mainline/process/5-11-wolai-page-settings-and-ai-surface-checklist-v1.md b/design/05-editor-mainline/done/5-11-wolai-page-settings-and-ai-surface-checklist-v1.md similarity index 97% rename from design/05-editor-mainline/process/5-11-wolai-page-settings-and-ai-surface-checklist-v1.md rename to design/05-editor-mainline/done/5-11-wolai-page-settings-and-ai-surface-checklist-v1.md index fc90b702..8bec5126 100644 --- a/design/05-editor-mainline/process/5-11-wolai-page-settings-and-ai-surface-checklist-v1.md +++ b/design/05-editor-mainline/done/5-11-wolai-page-settings-and-ai-surface-checklist-v1.md @@ -1,9 +1,13 @@ -# 5-11 [process] Wolai 页面设置与 AI 交互壳连续执行 checklist v1 +# 5-11 [done] Wolai 页面设置与 AI 交互壳连续执行 checklist v1 > 更新时间:2026-05-06 > +> 状态说明: +> - 本清单覆盖的页面设置 A/B、页面 AI C、集成护栏 D 均已完成并有 `task160/161/162` 证据,故迁入 `done/` +> - `X1-X6` 属于明确 deferred 项,不构成这轮完成阻塞 +> > 本清单服务于: -> - `/mnt/Data1T/mnote/design/05-editor-mainline/process/5-10-wolai-page-settings-and-ai-surface-alignment-v1.md` +> - `/mnt/Data1T/mnote/design/05-editor-mainline/done/5-10-wolai-page-settings-and-ai-surface-alignment-v1.md` > > 执行口径继续统一服从: > - `/home/lix/.codex/skills/wolai-aline/SKILL.md` diff --git a/design/05-editor-mainline/process/5-2-tiptap-notion-like-template-adoption-v1.md b/design/05-editor-mainline/process/5-2-tiptap-notion-like-template-adoption-v1.md index 989b554f..25685004 100644 --- a/design/05-editor-mainline/process/5-2-tiptap-notion-like-template-adoption-v1.md +++ b/design/05-editor-mainline/process/5-2-tiptap-notion-like-template-adoption-v1.md @@ -6,7 +6,7 @@ > > 现在的问题不再是“这套模板能不能迁进来”,而是: > -> **我们已经做出了一版 `leptos-tiptap` 编辑器,接下来应该从官方模板中保留什么行为模型,并优先把它接入主编辑器。** +> **默认主编辑器已经切到页面内 `leptos-tiptap` island;当前问题转为:应该从官方模板保留什么行为模型,并优先把哪些能力继续收口到当前主编辑器主链。** ## 1. 修正后的总判断 diff --git a/design/05-editor-mainline/process/5-4-leptos-tiptap-mainline-correction-v1.md b/design/05-editor-mainline/process/5-4-leptos-tiptap-mainline-correction-v1.md index 7b0fc56e..b55214df 100644 --- a/design/05-editor-mainline/process/5-4-leptos-tiptap-mainline-correction-v1.md +++ b/design/05-editor-mainline/process/5-4-leptos-tiptap-mainline-correction-v1.md @@ -14,7 +14,7 @@ 这份文档只解决一个已经开始偏掉的问题: -> **当 `mnote` 决定继续采用 `Tiptap + leptos-tiptap` 作为主编辑器输入 runtime 时,如何避免把“过渡桥接层”误当成“Rust + Leptos 主线已经成立”。** +> **当 `mnote` 已经采用 `Tiptap + leptos-tiptap` 作为默认主编辑器输入 runtime 时,如何避免把剩余过渡适配层误当成“Rust + Leptos 主线已经完全成立”。** 当前需要纠偏的不是: @@ -50,27 +50,26 @@ ### 2.2 当前偏差也已经很明确 -当前未提交改动里的主要偏差不是“换成了 `leptos-tiptap`”,而是: +当前需要继续纠偏的主要偏差不是“换成了 `leptos-tiptap`”,而是: -- 在真实文档页主链里,已经把 `BlockNoteEditor` 直接替成了新的 `EditorHost` +- 默认文档页主链虽然已经切到页面内 `leptos-tiptap` island - `/mnt/Data1T/mnote/wolai-frontend/src/components/editor/document-content.tsx` -- 这个 `EditorHost` 当前又固定只挂 `leptos-tiptap` - `/mnt/Data1T/mnote/wolai-frontend/src/components/editor/editor-host.tsx` -- 当前 host 的真实承载方式是 `iframe + postMessage + 8123 runtime + TS converter + 旧 /api/documents/save` - - `/mnt/Data1T/mnote/wolai-frontend/src/components/editor/leptos-tiptap-editor-host.tsx` +- 但仍保留 TS converter、fallback host、兼容保存链与部分 host/runtime 过渡层 - `/mnt/Data1T/mnote/wolai-frontend/src/lib/documents/tiptap-content-converter.ts` + - `/mnt/Data1T/mnote/wolai-frontend/src/components/editor/blocknote-editor.tsx` 这条线的问题不是“代码不能运行”,而是: -> **它把 `leptos-tiptap` 先落成了一个“跨 iframe 的外来 runtime”,而不是一个真正受 Rust truth 和 Leptos 页面模型约束的主编辑区。** +> **它虽然已经是页面内主编辑器,但剩余 fallback / adapter / 兼容保存链还没有完全退到过渡边界。** ### 2.3 当前最该回退的不是 Tiptap,而是默认主链切换方式 -当前最该回退的是: +当前最该继续收口的是: -- **默认主文档页直接切到 `iframe host`** -- **把 TS converter + `/api/documents/save` 当成正式保存边界** -- **把 `documentEditorHost = leptos_tiptap` 提前写成事实默认值** +- **把 TS converter 继续降级为过渡适配层** +- **把 fallback host / 兼容保存链继续收回到非主路径** +- **让默认 `leptos-tiptap` 主链更多直接消费 Rust-first projection / command 边界** 当前不该回退的是: diff --git a/design/05-editor-mainline/process/5-7-wolai-page-tree-main-editor-experience-restoration-v1.md b/design/05-editor-mainline/process/5-7-wolai-page-tree-main-editor-experience-restoration-v1.md index 224acfb1..d040bcf6 100644 --- a/design/05-editor-mainline/process/5-7-wolai-page-tree-main-editor-experience-restoration-v1.md +++ b/design/05-editor-mainline/process/5-7-wolai-page-tree-main-editor-experience-restoration-v1.md @@ -133,12 +133,12 @@ | 项 | Wolai Hermes | 本地 `3000` | 后续处理 | | --- | --- | --- | --- | -| 首屏入口 | owner 登录态直接显示 `Hermes` 正文页,标题、正文、页面树同屏 | 默认是聚合 / 预览壳,正文编辑器需点击 `打开当前页面` 才出现 | 拆成 P0/P1 独立任务;先用 smoke 固化“普通文档首屏直接进入正文体验”或明确产品降级 | +| 首屏入口 | owner 登录态直接显示 `Hermes` 正文页,标题、正文、页面树同屏 | `task130` 后已改为根页直接进入 document shell + editor island;历史上曾停留在聚合 / 预览壳 | 后续仅继续收口侧栏数据、视觉密度与 owner/published 状态差异 | | 侧栏数据与选中态 | 真实空间树,当前页在 `个人 / 软件开发 / Hermes` 路径下,红色选中态明显 | anonymous 示例树,当前页为 `1111`,行密度和图标体系仍偏本地化 | Sidebar checklist 必须同时验视觉和真实 active path | | 搜索入口 | 左侧放大镜可打开全局搜索;本轮 `Ctrl+K` 未稳定打开,`Ctrl+P` 在另一轮可 toggle | 顶栏搜索可打开;侧栏搜索曾修为 modal;`Ctrl+P` 可 toggle | 搜索任务不得只测一个入口;需记录每个入口、快捷键和 URL | | 搜索控件 | modal 居中,遮罩、结果行、快捷键提示完整;switch 视觉可见 | modal 结构接近,`role="switch"` 可测;不同输入下结果为空或本地数据结果 | switch 默认状态必须同时记录截图和 `aria-checked`,结果态需拆数据差异与控件差异 | | 搜索结果 | 输入 `Hermes` 命中页面和块,结果有红色高亮和路径 | 本地同词可出现空态或示例数据结果,取决于当前页面数据 | 建立固定本地 fixture 或 smoke 种子,不能用随机工作区数据验视觉 | -| 正文编辑区 | 首屏正文 `contenteditable=true`,标题也可编辑 | 首屏无可见编辑区;点击后出现 title textarea 与 `.tiptap.ProseMirror` | 文档画布任务必须先消除“打开当前页面”入口语义差异或显式记录降级 | +| 正文编辑区 | 首屏正文 `contenteditable=true`,标题也可编辑 | 当前已在首屏直接出现主编辑区;剩余差异转为标题区、正文密度与块交互细节 | 文档画布任务继续聚焦主编辑器体验,而不是首屏入口纠偏 | | 编辑焦点风险 | Wolai 标题和正文均可编辑,测试输入曾误落到标题,已清理 | 本地输入 / 撤销可完成,但页面结构不同 | editable-test mode 前必须先断言焦点 block 类型,优先在正文末尾新建唯一测试块 | | 块 hover | 正文块左侧出现轻量块控制入口,视觉很克制 | 本地显示 `+` 与拖拽/块句柄按钮,但位置、密度、内容列差异明显 | E2-E4 必须以截图和 hover 点位复核,不可只看按钮存在 | @@ -357,7 +357,7 @@ mnote 当前差距: - 当前本地文档页标题偏靠左且偏低,内容列与真实 Wolai 相比没有稳定对齐。 - 当前显示“个人空间 / 工作区首页”元信息和横向分割线,这不是 Wolai 普通文档页默认观感。 -- 当前正文首块是“打开当前页面”链接,和目标 `Hermes` 的普通块 / 任务块 / 段落展示差异较大。 +- 历史上首屏正文首块曾是“打开当前页面”链接;`task130` 之后这条差异已收口,当前重点转向主编辑区密度、块 hover 和 toolbar 细节。 - 右下角绿色 AI 浮动按钮比 Wolai 更重,真实 Wolai 是更轻的 AI 方形入口和问号入口。 ### 4.5 主编辑器块级体验 diff --git a/design/05-editor-mainline/process/5-9-wolai-aline-continuous-checklist-v1.md b/design/05-editor-mainline/process/5-9-wolai-aline-continuous-checklist-v1.md index 55032bd3..4ddaa087 100644 --- a/design/05-editor-mainline/process/5-9-wolai-aline-continuous-checklist-v1.md +++ b/design/05-editor-mainline/process/5-9-wolai-aline-continuous-checklist-v1.md @@ -27,17 +27,16 @@ | 项 | Wolai 证据 | 本地证据 | 当前结论 | | --- | --- | --- | --- | -| 首屏 | `/mnt/Data1T/mnote/tmp/wolai-editor-parity/doc-baseline-mini/wolai-initial.png` | `/mnt/Data1T/mnote/tmp/wolai-editor-parity/doc-baseline-mini/local-initial.png` | 本地首屏仍是聚合/预览壳,需点击 `打开当前页面` 才进入正文,和 Wolai 直接正文页不一致 | +| 首屏 | `/mnt/Data1T/mnote/tmp/wolai-editor-parity/doc-baseline-mini/wolai-initial.png` | `/mnt/Data1T/mnote/tmp/wolai-editor-parity/doc-baseline-mini/local-initial.png` | 历史基线显示本地首屏曾停留在聚合/预览壳;该差异已由 `task130` 收口,当前保留为基线证据 | | 搜索 modal | `/mnt/Data1T/mnote/tmp/wolai-editor-parity/baseline-20260430/wolai-03-search-modal-controls-filled.png` | `/mnt/Data1T/mnote/tmp/wolai-editor-parity/baseline-20260430/local-03-search-modal-controls-filled.png` | 容器接近;结果态、数据、入口矩阵仍需拆开验;switch 状态必须截图 + `aria-checked` 双证据 | | 块 hover | `/mnt/Data1T/mnote/tmp/wolai-editor-parity/baseline-20260430/wolai-08-block-hover-insert-entry.png` | `/mnt/Data1T/mnote/tmp/wolai-editor-parity/baseline-20260430/local-14-block-hover-insert-entry.png` | 本地已有 `+` 与手柄入口,但位置、密度、页面状态不同,不可判定已对齐 | | 编辑清理 | `/mnt/Data1T/mnote/tmp/wolai-editor-parity/baseline-20260430/wolai-14-title-suffix-after.png` | `/mnt/Data1T/mnote/tmp/wolai-editor-parity/baseline-20260430/local-16-editor-after-undo-cleanup.png` | Wolai 标题和正文都可编辑,editable-test 前必须先确认焦点 block 类型 | -当前必须优先拆解的差异: +当前仍需优先拆解的差异: -1. 普通文档首屏入口语义:Wolai 直接显示正文页,本地仍需点击 `打开当前页面`。 -2. 搜索入口矩阵:Wolai 左侧搜索可打开,`Ctrl+K` 本轮未稳定;本地顶栏搜索可打开,侧栏入口和快捷键要继续按 smoke 验证。 -3. 搜索结果数据:Wolai 对 `Hermes` 有真实结果,本地依赖当前工作区示例数据;后续需要固定 fixture 或种子。 -4. 编辑器测试焦点:写入前必须确认当前焦点在正文测试块,不在标题或 breadcrumb 渲染副本。 +1. 搜索入口矩阵:Wolai 左侧搜索可打开,`Ctrl+K` 本轮未稳定;本地侧栏入口和快捷键要继续按 smoke 验证。 +2. 搜索结果数据:Wolai 对 `Hermes` 有真实结果,本地依赖当前工作区示例数据;后续需要固定 fixture 或种子。 +3. 编辑器测试焦点:写入前必须确认当前焦点在正文测试块,不在标题或 breadcrumb 渲染副本。 ### 2.1 task129 Phase A 执行记录 @@ -69,8 +68,7 @@ subagent 复测: 主线程截图复核结论: - Wolai Hermes 为 owner 登录态,直接显示正文页和 `全网公开` 状态。 -- 本地 `3000` 工作区可见,但首屏仍停留在聚合 / 预览入口,需要点击 `打开当前页面` 才进入正文。 -- `task129` 只证明取证工具链可用,不证明 UI 已对齐;后续首个实现任务应优先处理 `D9 普通文档首屏入口语义`。 +- `task129` 只证明取证工具链可用,不证明 UI 已对齐;其中暴露出的 `D9 普通文档首屏入口语义` 已在后续 `task130` 中收口。 ### 2.2 task130 D9 执行记录 diff --git a/design/07-ai/done/7-1-phase7-document-ai-minimum-loop-checklist-v1.md b/design/07-ai/done/7-1-phase7-document-ai-minimum-loop-checklist-v1.md index 9f90dcb6..05635fea 100644 --- a/design/07-ai/done/7-1-phase7-document-ai-minimum-loop-checklist-v1.md +++ b/design/07-ai/done/7-1-phase7-document-ai-minimum-loop-checklist-v1.md @@ -3,7 +3,7 @@ > 更新时间:2026-04-22 > > 上位依据: -> - `/mnt/Data1T/mnote/design/07-ai/process/7-phase7-ai-kernel-projection-plan-v2.md` +> - `/mnt/Data1T/mnote/design/old/07-ai/process/7-phase7-ai-kernel-projection-plan-v2.md` > - `/mnt/Data1T/mnote/ARCHITECTURE.md` > - `/mnt/Data1T/mnote/design/05-editor-mainline/process/5-6-page-aggregate-alignment-checklist-v1.md` > diff --git a/design/07-ai/process/7-2-phase7-structured-artifact-write-chain-v1.md b/design/07-ai/process/7-2-phase7-structured-artifact-write-chain-v1.md index ed35b45b..9f11d441 100644 --- a/design/07-ai/process/7-2-phase7-structured-artifact-write-chain-v1.md +++ b/design/07-ai/process/7-2-phase7-structured-artifact-write-chain-v1.md @@ -7,7 +7,7 @@ > - `/mnt/Data1T/mnote/design/01-tree-first-graph-kernel/process/1-tree-first-graph-kernel-v1.md` > - `/mnt/Data1T/mnote/design/05-editor-mainline/process/5-5-page-aggregate-single-truth-alignment-v1.md` > - `/mnt/Data1T/mnote/design/05-editor-mainline/process/5-6-page-aggregate-alignment-checklist-v1.md` -> - `/mnt/Data1T/mnote/design/07-ai/process/7-phase7-ai-kernel-projection-plan-v2.md` +> - `/mnt/Data1T/mnote/design/07-ai/process/7-phase7-ai-kernel-projection-plan-v4.md` > - `/mnt/Data1T/mnote/design/07-ai/done/7-1-phase7-document-ai-minimum-loop-checklist-v1.md` > > 2026-05-05 追加说明: @@ -43,7 +43,7 @@ - `ai_note node` - `reference edge` 2. 只允许围绕**当前文档页**创建,不做跨页、跨工作区写链 -3. 触发方式不是自然语言,不做自动推断,只允许页面 AI 面板里的固定按钮触发;该面板长期应只是 `mnote-cli` host +3. 触发方式不是自然语言,不做自动推断,只允许页面 AI host 暴露的固定动作触发;当前页面 AI 面板只是 `mnote-cli` host 的一个页面内入口 4. 点击按钮后直接创建,不走“先预览再确认”的两阶段流 5. `summary node` 默认单例覆盖更新;`ai_note node` 每次新建 6. 两者都落成**可编辑的页面型节点** diff --git a/design/07-ai/process/7-phase7-ai-kernel-projection-plan-v4.md b/design/07-ai/process/7-phase7-ai-kernel-projection-plan-v4.md index b9c4aba4..4ff9fc99 100644 --- a/design/07-ai/process/7-phase7-ai-kernel-projection-plan-v4.md +++ b/design/07-ai/process/7-phase7-ai-kernel-projection-plan-v4.md @@ -1,6 +1,6 @@ # 7 [process] mnote Kernel Phase 7 CLI-First 外置 Agent 统一执行面方案 v4 -> 更新时间:2026-05-05 +> 更新时间:2026-05-09 > > 上位依据: > - `/mnt/Data1T/mnote/ARCHITECTURE.md` @@ -11,8 +11,8 @@ > - `/mnt/Data1T/mnote/design/05-editor-mainline/process/5-5-page-aggregate-single-truth-alignment-v1.md` > - `/mnt/Data1T/mnote/design/05-editor-mainline/process/5-6-page-aggregate-alignment-checklist-v1.md` > - `/mnt/Data1T/mnote/design/07-ai/done/7-1-phase7-document-ai-minimum-loop-checklist-v1.md` -> - `/mnt/Data1T/mnote/design/07-ai/process/7-phase7-ai-kernel-projection-plan-v2.md` -> - `/mnt/Data1T/mnote/design/07-ai/process/7-phase7-ai-kernel-projection-plan-v3.md` +> - `/mnt/Data1T/mnote/design/old/07-ai/process/7-phase7-ai-kernel-projection-plan-v2.md` +> - `/mnt/Data1T/mnote/design/old/07-ai/process/7-phase7-ai-kernel-projection-plan-v3.md` > > 本稿与前稿的关系: > - `v2` 的价值仍然成立:它记录了文档页 AI 最小闭环已经真实完成 @@ -23,6 +23,8 @@ > - 文档页 AI 面板不再被视为独立 AI 编排主线 > - `openai-agents-python` 不再被视为长期默认主编排,而是一个可插拔外置 agent > - Hermes、Codex、后续其他 agent,应统一通过 `mnote-cli` 接入 +> - `3000` 上的页面内 AI host 已属于 Rust `mnote-web` 主壳;`/api/ai-agent/run` 只保留 CLI host / adapter 口径 +> - 文档页 AI 上下文读取已优先消费 Rust `page aggregate` snapshot,旧 TS builder / 旧 sidecar 只保留 fallback / 对照语义 --- @@ -88,7 +90,7 @@ 当前文档页 AI 最小闭环已经完成,这个事实不变: -- page aggregate 上下文读取 +- Rust `mnote.page_aggregate.v1` snapshot 优先的页面上下文读取 - 标题改名与正文改写 - `openai-agents-python` sidecar - `Hermes` fallback / 对照链 @@ -251,6 +253,8 @@ CLI-first 不等于没有产品内 AI UI。 > **CLI 的图形客户端。** +并且当前这些客户端默认都挂在 `3000` 的 Rust `mnote-web` 主壳里,而不是重新长出第二套产品内执行面。 + ### 6.2 页面语义仍然保留 虽然主执行面转到 CLI,但下面这些产品语义仍要保留: @@ -488,7 +492,7 @@ CLI 要能明确限制: - 已核对:该文件明确写入“长期执行面应收口到 `mnote-cli`,Web 只作为 CLI host / client,`openai-agents-python` / Hermes / Codex 只作为可插拔外置 agent”。 - [x] 检查 legacy Next retirement gate 的 AI route 口径。 - - 文件:`/mnt/Data1T/mnote/design/03-rust-web/process/3-11-rust-web-legacy-next-retirement-gates-v1.md` + - 文件:`/mnt/Data1T/mnote/design/03-rust-web/done/3-11-rust-web-legacy-next-retirement-gates-v1.md` - 通过标准:`/api/ai-agent/run` 只能写成 CLI host / adapter 兼容层,结构化写入必须经 Rust runtime。 - 已核对:该文件明确写入 `/api/ai-agent/run` 长期应降为 `mnote-cli` host / adapter,结构化写入必须经 Rust runtime,外置 agent 不得拥有第二执行面。 diff --git a/design/old/07-ai/process/7-phase7-ai-kernel-projection-plan-v1.md b/design/old/07-ai/process/7-phase7-ai-kernel-projection-plan-v1.md index ec742ac3..8036de16 100644 --- a/design/old/07-ai/process/7-phase7-ai-kernel-projection-plan-v1.md +++ b/design/old/07-ai/process/7-phase7-ai-kernel-projection-plan-v1.md @@ -3,7 +3,7 @@ > 更新时间:2026-04-22 > > 状态说明: -> - 本稿已被 `/mnt/Data1T/mnote/design/07-ai/process/7-phase7-ai-kernel-projection-plan-v2.md` 覆盖 +> - 本稿已被 `/mnt/Data1T/mnote/design/old/07-ai/process/7-phase7-ai-kernel-projection-plan-v2.md` 覆盖 > - 保留在 `design/old/` 仅作为上一轮判断稿与历史参考,不再作为当前执行口径 > > 当前主线依据: diff --git a/design/07-ai/process/7-phase7-ai-kernel-projection-plan-v2.md b/design/old/07-ai/process/7-phase7-ai-kernel-projection-plan-v2.md similarity index 98% rename from design/07-ai/process/7-phase7-ai-kernel-projection-plan-v2.md rename to design/old/07-ai/process/7-phase7-ai-kernel-projection-plan-v2.md index aa52b93f..2f914066 100644 --- a/design/07-ai/process/7-phase7-ai-kernel-projection-plan-v2.md +++ b/design/old/07-ai/process/7-phase7-ai-kernel-projection-plan-v2.md @@ -1,7 +1,12 @@ -# 7 [process] mnote Kernel Phase 7 AI 编排与 Kernel Projection 实施计划 v2 +# 7 [process][recycle] mnote Kernel Phase 7 AI 编排与 Kernel Projection 实施计划 v2 > 更新时间:2026-04-22 > +> 状态说明: +> - 本稿记录的是 `openai-agents-python` 作为过渡主链时期的 `Phase 7` 执行口径 +> - 当前长期方向已被 `/mnt/Data1T/mnote/design/07-ai/process/7-phase7-ai-kernel-projection-plan-v4.md` 覆盖 +> - 因此本稿迁入 `design/old/`,仅保留为历史过渡基线 +> > 当前主线依据: > - `/mnt/Data1T/mnote/ARCHITECTURE.md` > - `/mnt/Data1T/mnote/design/01-05-current-priority-overview.md` diff --git a/design/07-ai/process/7-phase7-ai-kernel-projection-plan-v3.md b/design/old/07-ai/process/7-phase7-ai-kernel-projection-plan-v3.md similarity index 98% rename from design/07-ai/process/7-phase7-ai-kernel-projection-plan-v3.md rename to design/old/07-ai/process/7-phase7-ai-kernel-projection-plan-v3.md index 4f3fac3b..55eb3903 100644 --- a/design/07-ai/process/7-phase7-ai-kernel-projection-plan-v3.md +++ b/design/old/07-ai/process/7-phase7-ai-kernel-projection-plan-v3.md @@ -1,4 +1,4 @@ -# 7 [process] mnote Kernel Phase 7 AI 与 CLI 外置 Agent 边界实施方案 v3 +# 7 [process][recycle] mnote Kernel Phase 7 AI 与 CLI 外置 Agent 边界实施方案 v3 > 更新时间:2026-05-05 > @@ -11,7 +11,7 @@ > - `/mnt/Data1T/mnote/design/05-editor-mainline/process/5-5-page-aggregate-single-truth-alignment-v1.md` > - `/mnt/Data1T/mnote/design/05-editor-mainline/process/5-6-page-aggregate-alignment-checklist-v1.md` > - `/mnt/Data1T/mnote/design/07-ai/done/7-1-phase7-document-ai-minimum-loop-checklist-v1.md` -> - `/mnt/Data1T/mnote/design/07-ai/process/7-phase7-ai-kernel-projection-plan-v2.md` +> - `/mnt/Data1T/mnote/design/old/07-ai/process/7-phase7-ai-kernel-projection-plan-v2.md` > > 本稿与 `v2` 的关系: > - `v2` 记录的是文档页 AI 最小闭环与 `openai-agents-python` sidecar 的主线收口