docs: 继续收口设计稿状态与主线口径
This commit is contained in:
+5
-1
@@ -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/`
|
||||
|
||||
## 目标
|
||||
|
||||
+15
-3
@@ -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 层
|
||||
@@ -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”,现在更像“服务端首包 + 超大客户端壳”
|
||||
|
||||
+15
-3
@@ -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. 当前问题
|
||||
|
||||
|
||||
@@ -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 的入口和调用方。
|
||||
|
||||
@@ -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 主链,避免长期路线再次滑回“全局大面板常驻”模式。
|
||||
|
||||
+15
-11
@@ -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 只保留兼容与过渡边界。**
|
||||
|
||||
---
|
||||
|
||||
+6
-2
@@ -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`
|
||||
@@ -6,7 +6,7 @@
|
||||
>
|
||||
> 现在的问题不再是“这套模板能不能迁进来”,而是:
|
||||
>
|
||||
> **我们已经做出了一版 `leptos-tiptap` 编辑器,接下来应该从官方模板中保留什么行为模型,并优先把它接入主编辑器。**
|
||||
> **默认主编辑器已经切到页面内 `leptos-tiptap` island;当前问题转为:应该从官方模板保留什么行为模型,并优先把哪些能力继续收口到当前主编辑器主链。**
|
||||
|
||||
## 1. 修正后的总判断
|
||||
|
||||
|
||||
@@ -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 边界**
|
||||
|
||||
当前不该回退的是:
|
||||
|
||||
|
||||
+3
-3
@@ -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 主编辑器块级体验
|
||||
|
||||
@@ -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 执行记录
|
||||
|
||||
|
||||
@@ -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`
|
||||
>
|
||||
|
||||
@@ -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. 两者都落成**可编辑的页面型节点**
|
||||
|
||||
@@ -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 不得拥有第二执行面。
|
||||
|
||||
|
||||
@@ -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/` 仅作为上一轮判断稿与历史参考,不再作为当前执行口径
|
||||
>
|
||||
> 当前主线依据:
|
||||
|
||||
+6
-1
@@ -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`
|
||||
+2
-2
@@ -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 的主线收口
|
||||
Reference in New Issue
Block a user