这套方案解决什么问题?
DocFlow 将富文本编辑、CRDT 协同状态、在线成员感知和离线持久化放在同一文档协作空间中。团队成员可以同时编辑同一份文档;网络中断时,本地内容继续保留,恢复连接后再同步。需要长期保存的文档、权限和审计数据仍由服务端数据库负责。
适合哪些团队
从真实业务边界判断是否适合采用或二次开发。
- 需要多人同时撰写、评审和修订制度、方案或知识文档的团队
- 计划在自有系统中集成 Tiptap、Yjs 或 Hocuspocus 的研发团队
- 对文档权限、数据隔离、离线编辑和私有化部署有明确要求的企业
从功能名称落到可验证的实现边界
多人同步编辑
Yjs 负责可合并的协同文档状态,Hocuspocus 负责连接和文档同步,避免依赖脆弱的本地文本索引。
离线缓存与自动重连
IndexedDB 保留本地 Y.Doc 状态;网络恢复后,客户端重新连接协同服务并继续同步。
在线状态与选区感知
awareness 只承载在线用户、光标和临时选区等瞬时信息,不用于保存需要长期持久化的业务数据。
修订与审阅
编辑建议以结构化修订进入文档,审阅者可以定位、接受或拒绝变更,保留清晰的人机协作边界。
关键步骤与错误边界保持清楚
- 1
加载文档与权限
服务端根据已认证用户、工作区和文档标识校验访问边界,再加载对应协作文档。
- 2
初始化本地与远端状态
客户端创建 Y.Doc,并同时连接 IndexedDB 持久化与 Hocuspocus Provider。
- 3
同步正文和临时在线状态
正文通过 Yjs update 合并;在线成员、光标和选区通过 awareness 单独同步。
- 4
持久化快照与业务数据
文档快照、元信息、权限、评论和审计记录按职责进入数据库,而不是混入 awareness。
技术与数据职责
明确每一层负责什么,避免把临时状态、权限和持久业务数据混在一起。
- Tiptap:富文本编辑器和文档 schema
- Yjs:正文与可合并协同状态
- Hocuspocus:WebSocket 协同服务和房间隔离
- IndexedDB:离线编辑状态与恢复
- Database:权限、文档元信息、审计和长期业务数据
常见问题
DocFlow 的协同编辑为什么使用 Yjs?+
Yjs 提供 CRDT 数据结构和增量更新机制,适合多人并发编辑与离线合并。DocFlow 用它承载文档协同状态,而不是把普通 React state 当成协同数据源。
断网后还能继续编辑文档吗?+
可以。客户端通过 IndexedDB 保留本地协同状态;网络恢复后会重新连接并同步更新。具体冲突结果由 Yjs 合并语义决定。
是否适合私有化文档协作平台?+
适合以开源代码为基础进行私有化扩展。企业部署仍需结合现有身份认证、网络、存储、审计和运维要求完成配置与安全评估。
awareness 是否保存评论和审批数据?+
不保存。awareness 只适合在线用户、光标、选区等临时状态;评论、权限、审批和审计应持久化到数据库。
继续了解相关方案
基于 DocFlow 评估你的文档协作与 AI 工作流
可以先查看源码和实现边界;需要企业知识库、认证、内部工具或私有化环境集成时,再根据实际需求设计交付范围。