对话与可视化引擎
大约 2 分钟前端开发开发指南
对话与可视化引擎
Saber-AI 将传输、协议和交互状态与业务页面分开。引擎位于 src/engine/,不依赖页面、接口或 store;界面由 components 与 views 组装。
引擎分工
| 引擎 | 职责 | 主要消费方 |
|---|---|---|
stream | SSE 解析、中止、心跳与传输错误 | 对话、流程、问数、上传进度 |
chat | 消息块、协议归并、会话状态与中断恢复 | 助手、试聊、演练场、资源运行页 |
markdown | 文本解析、代码段与增量内容渲染 | 对话、知识片段、工具结果 |
canvas | 流程定义、变量图谱、校验、图映射与运行态 | 流程设计器、调试、日志回放 |
app | 对话编排与专家团的定义、序列化与校验 | 对应工作区与应用导入导出 |
传输与协议
createStreamRequest 返回 AsyncGenerator<StreamMessage>。SSE 的 event 进入 type,JSON 数据解析后交给业务协议;ping 心跳与 [DONE] 结束标记由传输层处理。
engine/chat 的协议先 parse,再由 reduce 生成消息块操作。文本、思考、工具与领域块以事件顺序归并;流程、问数、完成和专家团使用对应协议。
新增事件语义时修改对应协议;新增渲染形态时登记块渲染器;传输解析不承载业务事件判断。
流程定义
FlowDefinition
├── version: 2
├── nodes: FlowNode[]
├── edges: FlowEdge[]
├── canvas?: 视图信息
└── chat?: 对话设置节点按 type 选择对应配置。登记表定义 26 种节点的分类、出口、变量、缺省配置和执行特性。图映射在定义与画布模型之间转换,保存时序列化顺序稳定。
变量引用来自上游节点、系统变量与当前循环上下文。文本引用使用双花括号路径,赋值目标和条件变量使用裸路径。校验覆盖连接、必填参数、变量作用域、流式来源与循环体。
Markdown 渲染
渲染器输出普通 HTML 段与独立代码段,代码段交由高亮组件展示。流式追加保留未变化段的对象引用;内联 HTML 作为文本处理,链接和图片按已支持协议输出。
调试与扩展
先阅读相应引擎 README 和类型,再沿 views → components → engine 找到业务装配点。引擎静态校验与实际运行各自验证不同问题:前者检查定义,后者检查服务、资源和执行结果。
源码定位:src/engine/{stream,chat,markdown,canvas,app}/README.md。操作示例见 流程编排。
