03 技术设计
技术设计:编辑器 Markdown 边界
这是示例知识库,可以自由编辑、体验产品。你可以修改流程图、时序图或代码块。
Markdown 是导入、导出和 AI 生成内容的文本协议。编辑器运行时仍以 DOM block 和 JsonML 为核心,Markdown 只在系统边界转换。
四条链路
场景 | 转换 |
导入 | `markdownToBlocks`:Markdown → block DOM |
导出 | `jsonmlToMarkdown`:JsonML → Markdown |
AI 建页 | 模型生成 Markdown → vent 转换 → 创建页面 |
AI 上下文 | 页面 JsonML → vent 转换 → Markdown |
AI 如何创建页面
sequenceDiagram
participant UI as AI Chat
participant Go as doodle ChatService
participant LLM
participant Vent as vent converter
participant Page as PageService
participant Redis
UI->>Go: agent 对话
Go->>LLM: tool_choice=create_page
LLM-->>Go: name / parent_id / markdown
Go->>Vent: POST /convert/markdown-to-jsonml
Vent->>Vent: markdownToBlocks + JsonMLDom.fromHTML
Vent-->>Go: JsonML
Go->>Page: Create page
Go->>Redis: InitPageDocFromJSONML
Go-->>UI: page_created
模型只需要生成稳定的 Markdown,不需要理解 DOM、JsonML 或 JSON0 op;服务端继续负责页面归属校验和初始化。
- 运行时不用 Markdown:DOM block 更适合富文本编辑和协同操作。
- 组件保存源数据:图表和白板导出后仍可继续编辑。
- 保证语义往返:不追求文本逐字一致,但不能丢失 block 语义。
新增组件时,需要同时检查导入、导出和 Desktop 本地同步;能显示出来,只完成了表达的一半。
把总览图里的「Markdown 文本」改成「我的笔记」