9.2 KiB
次级域与设计治理实现偏差审查
范围
本次只审查 Mindmap、AI、OnlyOffice、Wolai-aline、SiYuan reference,以及 design/process/done 治理口径与当前实现方向的一致性。重点读取了 ARCHITECTURE.md、design/README.md、design/06-mindmap/process/*、design/07-ai/process/*、design/08-wolai-aline-test-flow/process/wolai-aline-test-flow-v1.md、design/09-siyuan-reference/process/9-siyuan-reference-boundary-and-adoption-v1.md、design/90-reference/*,并对照了 Mindmap、AI route/lib、OnlyOffice route/adapter 与相关 Convex/Rust runtime 代码。
结论
总体方向与当前主线基本一致:Mindmap 已明确降为 tree-first graph kernel 的视图/编辑挂件;AI 长期方向已从 mnote-cli 收口改为 Hermes 页面内客户端 + mnote Hermes skill/plugin;OnlyOffice 仍是独立页面型编辑器边界,SiYuan 参考稿没有发现被提升为上位架构来源的证据。
主要风险集中在三处:OnlyOffice 在 mnote-web 主入口里的 callback/forcesave 仍是 no-op,而 legacy Next route 已有真实写回链;Mindmap 的导出 action 在 schema/action map 中暴露,但 bridge 安全命令集不支持;Mindmap AI 补完 route 当前硬返回 501,和 Rust tool 已登记的能力面不闭合。
关键发现表格
| ID | 分类 | 级别 | 发现 | 简短证据 | 建议 |
|---|---|---|---|---|---|
| F-01 | 实现偏差 / 风险 | P1 | OnlyOffice mnote-web 主入口已挂载 callback/forcesave,但当前实现不写回,只返回成功或 noop,可能让 3000 主链下的 OnlyOffice 保存丢失。 |
rust/crates/mnote-web/src/routes/mod.rs:78-84 挂载 /api/onlyoffice/callback 与 /api/onlyoffice/forcesave;rust/crates/mnote-web/src/routes/onlyoffice.rs:717-759 callback 只记录日志并返回 {error:0},forcesave 返回 mnote-web-rust-noop;而 wolai-frontend/src/app/api/onlyoffice/callback/route.ts:93-192 有真实 Convex 写回链。 |
优先把 Rust route 接到 onlyoffice_prepare_callback / media asset writeback,或显式把该路由代理到 legacy Next,避免主入口 shadow 掉真实写回。 |
| F-02 | 未完成 | P2 | Mindmap export 动作暴露给 UI action map,但 simple-mind-map 安全执行器不允许 EXPORT,默认路径可能显示能力却执行失败。 |
wolai-frontend/src/lib/mindmap/mindmap-action-map.ts:65 将 export 映射为 runtimeCommand EXPORT;wolai-frontend/src/lib/mindmap/simple-mind-map-bridge.ts:119-129 的 SIMPLE_MIND_MAP_SAFE_COMMANDS 不包含 EXPORT。 |
要么把 EXPORT 加入安全命令并补 smoke,要么在 UI state 中继续禁用导出并标注为延期。 |
| F-03 | 未完成 / 方向变化 | P2 | Mindmap AI 补完 route 当前直接 501,后续大段旧 Supabase/在线 AI 实现被注释;但 Rust tool registry 已登记 mindmap_expand_node,形成“工具存在、产品入口不可用”的断层。 |
wolai-frontend/src/app/api/mindmap-ai/expand-node/route.ts:90-97 校验后直接返回 501;同文件后续注释块仍保留旧 Supabase/AI 逻辑;rust/crates/core-protocol/src/tool.rs:231-240 与 rust/crates/bridge-runtime/src/lib.rs:3803-3812 已有 mindmap_expand_node。 |
若该能力仍在 Phase 6/7 范围内,应按 CLI/Rust bridge 路线重接;若延期,应把 route 标成 retired/debug,避免前端或测试误以为可用。 |
| F-04 | 方向变化 / 文档滞后 | P2 | AI 主 Web route 曾收口到 mnote-cli host,但新主线已改为 Hermes 页面内客户端;wolai-backend 仍暴露 openai_agents_python 文档 agent route 与旧工具面,旧 route / sidecar / host 的退场关系需重新明确。 |
wolai-frontend/src/app/api/ai-agent/run/route.ts:36-57 曾明确拒绝 codex/hermes/claudecode 并进入 startMnoteCliAgentHostRun;wolai-backend/app/routers/ai_agent.py:34-57 仍暴露 /ai-agent/health、/ai-agent/document/run,health 返回 bridge: openai_agents_python;wolai-backend/app/services/ai_document_agent.py:1174-1470 仍指令 agent 使用 doc_insert_blocks、doc_replace_range、slash_run。 |
以 design/07-ai/done/7-3-page-ai-hermes-panel-and-mnote-plugin-v1.md 为上位依据,明确页面 AI 改走 Hermes client proxy,mnote 能力通过 Hermes skill/plugin 暴露;openai-agents-python 和 mnote-cli host 只保留为历史/兼容/内部适配路径并补退场计划。 |
2026-05-14 复核:F-04 的长期方向已由 design/07-ai/done/7-4-page-ai-hermes-panel-execution-checklist-v1.md 继续落地到 mnote-web Hermes client proxy 与 mnote Hermes tool routes;旧 /api/ai-agent/run 已在 mnote-web 中收口为 legacy_ai_agent_run_retired guard,旧 openai-agents-python / mnote-cli host 只按历史/兼容/对照链处理,不再代表页面 AI 长期主入口。
| F-05 | 文档治理风险 | P3 | design/90-reference 符合“参考资料”目录定位,但内容仍带有问答式残留,容易被后续 worker 误用为正式设计结论。 | design/README.md 明确 90-reference/ 不参与 process/done 状态判断;design/90-reference/90-1-filetree.md 末尾保留“需要我给你...”类对话尾巴;design/90-reference/90-2-yemianshu.md 同样保留示例请求口吻。 | 低优先级清理为中性参考笔记,并在引用时强制以 ARCHITECTURE.md 和主线设计为上位依据。 |
证据
Mindmap
- 设计口径清晰:
design/06-mindmap/process/6-mindmap-kernel-phase6-projection-editor-v1.md明确 Phase 6 主线是Rust kernel truth -> mindmap.simple_mind_map_scene.v1 -> leptos-mindmap editor island -> simple-mind-map runtime -> command bridge,并禁止把 runtime data 当唯一事实源。 - 实现已对齐主线壳:
rust/crates/mnote-web/src/routes/mindmap_shell.rs:105-123输出mnote.mindmap_shell.v1、mindmap.simple_mind_map_scene.get与mindmap.command.apply;rust/crates/mnote-web/src/ssr/pages/mindmap.rs:50-56提供 standalone island 挂载点。 - 旧 React 块已自我标注为 legacy/compat/reference:
wolai-frontend/src/components/editor/blocks/MindmapBlock.tsx:3-5明确 3000 文档页默认主链是leptos-tiptap NodeView + leptos-mindmap adapter。 - 仍有 compat 数据层:
wolai-frontend/convex/schema.ts:164-184的mindmaps.data: v.any()仍承载导图数据;这与当前过渡态兼容,但不应被描述为长期 canonical truth。
AI
- 旧 CLI-first 入口曾基本对齐:
wolai-frontend/src/app/api/ai-agent/run/route.ts:36-57将默认执行入口限定到mnote-cli host,拒绝旧 provider;但该口径已被 2026-05-13 的 Hermes 面板主线覆盖。 - 结构化 artifact 设计应继续保留对象模型,但触发方改为 Hermes tool call -> mnote plugin -> Rust runtime / kernel,见
design/07-ai/done/7-3-page-ai-hermes-panel-and-mnote-plugin-v1.md与design/07-ai/done/7-2-phase7-structured-artifact-write-chain-v1.md。 - 旧后端 agent 仍存在:
wolai-backend/app/routers/ai_agent.py:47-57仍提供 streaming run;这只能作为历史/兼容/对照链,不能被误认为长期默认主编排。
OnlyOffice
- 正确边界已有:
rust/crates/adapter-onlyoffice/src/lib.rs:124-126明确 adapter 只定义资产定位、会话、签名、代理、callback/forcesave 边界,不把 OnlyOffice 变成主事实层。 mnote-web页面是独立编辑页:rust/crates/mnote-web/src/routes/onlyoffice.rs:325-630直接渲染/onlyoffice,通过 DocsAPI 创建编辑器,未嵌入正文主编辑画布。- 关键风险是写回链 owner 分裂:Rust 主入口 no-op 与 legacy Next 真写回并存,见 F-01。
Wolai-aline
- 流程文档严格要求“Wolai 基线 -> RED smoke -> 小范围实现 -> 本地验证 -> subagent 复测 -> 主线程截图复核”:
design/08-wolai-aline-test-flow/process/wolai-aline-test-flow-v1.md。 - 本次不是具体 Wolai 对标实现任务,未执行浏览器对标;未发现该流程被错误提升为产品架构来源。
SiYuan Reference
design/09-siyuan-reference/process/9-siyuan-reference-boundary-and-adoption-v1.md的边界与当前主线一致:思源只作为产品能力与交互参考,不替代tree-first graph kernel、Rust kernel、Page Aggregate、tree command 与 tree realtime。- 当前只读检索未发现将 SiYuan
.sy、SQL API 或前端 runtime 直接提升为 mnote 长期事实源的实现证据;若后续新增属性视图/数据库视图,应继续先做对象域评估。
建议优先级
- P1:补齐或明确代理 OnlyOffice Rust callback/forcesave 写回链,避免主入口下保存成功但内容未持久化。
- P2:收口 Mindmap action 可用性,先修
export映射与安全命令不一致,再继续扩展 UI 能力。 - P2:处理 Mindmap AI route:要么按 Hermes plugin / Rust bridge 重接
mindmap_expand_node,要么显式退役该 Next route。 - P2:继续保持
wolai-backendAI agent、旧/api/ai-agent/run与mnote-cli host的历史/兼容定位和访问边界;页面 AI 长期主链已经由7-4收口到 Hermes 面板 + mnote plugin,后续只在各自 legacy domain 里拆迁移。 - P3:清理
design/90-reference的问答残留,并在引用规范里再次强调它不是 process/done 设计稿。
本次修改文件
/mnt/Data1T/mnote/design/10-review/04-secondary-domains-and-design-governance-review.md