知行札记
DocFlow 实现与复用调查

DocFlow 调查依据与可复核边界

保留源码定位、原复核方法及提交和外部后端缺口。

本页整理自 2026-10-04 的 DocFlow 静态调查材料。原材料没有提供仓库 URL、分支或提交哈希;正文中的路径、行号、计数与依赖版本均指向该未锚定快照。本轮整理读取了归档报告,未取得原工作副本、启动产品或验证外部后端。下文的“复核”指原材料记载的复核,前端路径存在与运行可用性分别判断。

关键文件索引

编辑器核心

  • apps/DocFlow/src/app/docs/[room]/page.tsx — 编辑器组装入口(useEditor、协作条件装配、setEditable、Tab/Ctrl+F、copy text/json)
  • apps/DocFlow/src/extensions/extension-kit.ts — ExtensionKit 注册表与 StarterKit 裁剪
  • apps/DocFlow/src/extensions/index.ts — 官方/自研扩展 re-export 汇总
  • apps/DocFlow/src/extensions/SlashCommand/{SlashCommand.ts, groups.ts} — slash 菜单
  • apps/DocFlow/src/extensions/DragHandler/DragHandler.ts — 侧栏 DnD 策略工厂
  • apps/DocFlow/src/extensions/ImageUpload/ImageUpload.ts、view/ImageUploader.tsx — 占位上传块
  • apps/DocFlow/src/extensions/ImageBlock/ImageBlock.ts、Image/Image.ts、TableImage/TableImage.ts — 图片三节点
  • apps/DocFlow/src/extensions/CodeBlock/{CodeBlock.ts, CodeBlockComponent.tsx, SelectOnlyCode.ts} — 代码块
  • apps/DocFlow/src/extensions/MathLiveEditor/{MathLiveExtension.ts, MathLivePopover.tsx} — 可视化公式
  • apps/DocFlow/src/extensions/MarkdownPaste/MarkdownPaste.ts、JsonPaste/JsonPaste.ts — 粘贴增强
  • apps/DocFlow/src/extensions/Mention/{mention.ts, suggestion.tsx} — @提及
  • apps/DocFlow/src/extensions/AgentSuggestion/index.ts — AI diff mark
  • apps/DocFlow/src/extensions/TableOfContentsNode/TableOfContentsNode.tsx、SearchAndReplace/SearchAndReplace.ts — TOC 节点与搜索替换
  • apps/DocFlow/src/extensions/{Comment/Comment.ts, Figure/Figure.ts} — 未接线的评论/图注
  • apps/DocFlow/src/extensions/{Document/Document.ts, Youtube/Youtube.ts} — 文档根节点 / YouTube 扩展
  • apps/DocFlow/src/components/menus/TextMenu/{BubbleMenu.tsx, TextMenu.tsx} — 自研气泡菜单
  • apps/DocFlow/src/components/menus/{ContentItemMenu/ContentItemMenu.tsx, LinkMenu/LinkMenu.tsx, ImageBlockMenu/index.tsx} — 各菜单
  • apps/DocFlow/src/app/docs/layout.tsx、_components/DocumentSidebar/{index.tsx, BlocksTab.tsx, SettingsTab.tsx}、_components/{FloatingToc/index.tsx, SearchPanel.tsx, HistoryPanel/index.tsx, DocumentHeader/index.tsx}、DocumentHeader/components/document-actions.tsx、DocumentHeader/hooks/use-blog-publish.ts — 页面骨架与面板

实时协同

  • apps/DocFlow/src/hooks/useCollaboration.ts — 两阶段启动、awareness、stateless 权限
  • apps/DocFlow/src/hooks/useDocumentPermission.ts — HTTP 权限与 Y.Doc 创建
  • apps/DocFlow/src/hooks/useEditorHistory.ts、services/snapshot/index.ts — 本地历史快照
  • apps/DocFlow/src/hooks/useDocumentEdit.ts — Agent 提案落地
  • apps/DocFlow/src/utils/auth/cookie.ts — token cookie
  • apps/DocFlow/src/app/dashboard/workflow/_components/{canvas.tsx, cursors-layer.tsx} — 画布协同(演示级)
  • apps/DocFlow/src/proxy.ts — Next.js 16 路由守卫
  • apps/DocFlow/.env.development / .env.production — 外部服务地址

AI 能力

  • apps/DocFlow/src/services/collaboration/index.ts — Agent 编辑 SSE 接口
  • apps/DocFlow/src/app/docs/_components/AgentEditPanel/index.tsx — Agent 面板
  • apps/DocFlow/src/services/request/{client.ts, server.ts} — 双请求封装(含 streamPost)
  • apps/DocFlow/src/services/chat-ai/{index.ts, type.ts}、constants.ts — 聊天服务与默认配置
  • apps/DocFlow/src/app/chat-ai/hooks/{useChat.ts, useChatModels.ts, useConversations.ts} — 聊天状态
  • apps/DocFlow/src/app/chat-ai/_components/{ConfigFields.tsx, ModelConfigModal.tsx, ChatAIPanels.tsx, ChatInterface.tsx} — 配置与双模型对比
  • apps/DocFlow/src/services/ai/{index.ts, type.ts}、services/knowledge/index.ts — AI/知识库服务(含孤儿接口)
  • apps/DocFlow/src/app/dashboard/knowledge/_components/{KnowledgeDocumentList.tsx, CreateKnowledgeDialog.tsx} — 知识库 UI
  • apps/DocFlow/src/app/dashboard/settings/_components/api-key-settings.tsx — API Key 设置(无消费方)
  • apps/DocFlow/src/app/dashboard/podcast/_components/UploadResumeCard.tsx、services/podcast/index.ts — AI 播客

后端与部署

  • apps/DocFlow/package.json、pnpm-lock.yaml — 依赖(装而未用项的出处)
  • apps/DocFlow/src/app/api/health/route.ts — 唯一 API route
  • apps/DocFlow/src/services/{auth/index.ts, upload/index.ts, video/index.ts, image/index.ts, rooms/index.ts} — 鉴权/上传/视频/图片/LiveKit 服务
  • apps/DocFlow/src/{instrumentation-client.ts, instrumentation.ts}、apps/DocFlow/sentry.server.config.ts、next.config.ts — Sentry 接入
  • apps/DocFlow/src/hooks/{useAnalysis.ts, useSetupE2EE.ts} — 埋点 / LiveKit E2EE
  • apps/DocFlow/src/app/auth/{page.tsx, callback/page.tsx} — 登录
  • apps/DocFlow/src/app/rooms/page.tsx、rooms/[roomName]/{PageClientImpl.tsx, PreJoinScreen.tsx}、rooms/_components/{CustomControlBar.tsx, SettingsMenu.tsx, Debug.tsx} — LiveKit 前端
  • Dockerfile、docker-compose.yml、turbo.json、.husky/pre-commit、commitlint.config.cjs、.github/workflows/* — 构建部署
  • README.md、AGENTS.md — 文档宣称 vs 约定

导入导出与工程化

  • packages/transformer/src/{Prosemirror.ts, presets/{index.ts, alert.ts, bilibili.ts}} — Yjs↔JSON 转换(backend-only)
  • packages/bilibili/src/{Bilibili.ts, utils.ts}、packages/alert/src/{Alert.ts, AlertSchema.ts, alertBase.ts} — 扩展包(未注册)
  • apps/DocFlow/src/utils/markdown-to-tiptap.ts — Markdown→Tiptap(其一)
  • apps/DocFlow/src/utils/export-doc/{generator.ts, utils.ts, converters/} — docx 导出 fork
  • apps/DocFlow/src/utils/document-export/{docx.ts, pdf.ts} — 导出入口
  • apps/DocFlow/src/utils/format/file-type.ts — xlsx 的唯一用途处
  • apps/DocFlow/src/app/blog/{page.tsx, [id]/page.tsx} — 博客
  • apps/DocFlow/src/app/dashboard/contacts/_components/{ContactMemberList.tsx, ContactDetail.tsx, FriendRequestList.tsx, AddContactDialog.tsx} — 通讯录
  • apps/DocFlow/tailwind.config.ts、src/hooks/useDarkMode.tsx、src/styles/index.css、src/styles/partials/ai-brainstorm.css — 深色模式与遗留样式

复核方法、判定标准与局限

  • 复核范围与选取规则:5 个模块共 72 条调研结论,其中 40 条经逐条代码复核(编辑器 8、协同 8、AI 8、后端 8、导入导出 8)。这 40 条是上游调研材料中 verifications 数组自带复核记录的条目,清单由上游给定——由上游材料选定,未采用随机抽样,因此"32 条未复核"不代表其结论风险更高或更低,复核覆盖面不具统计代表性。复核方式为按 evidence 引用逐行核对源码并补跑 grep / find / diff 命令验证。
  • confirmed 的判定标准:结论的核心论断(主张本身)经逐行核对成立,即计 confirmed;行号、计数、归属类偏差记为勘误、不改判。唯一边界案例是 LiveKit 条目(勘误 #14):核心论断"完整度较高的独立音视频模块"成立,但四个子功能由"已实现"修正为"死代码"——若按子项口径计为部分驳回,严格读法是"39 条 confirmed + 1 条部分驳回";本报告选择按核心论断计入 confirmed,并全文(导出及周边盘点、周边交付链路)以修正后口径呈现,两种读法的差异已在此显式交代。其余 32 条(如 slash 菜单细节、快捷键、代码块功能、TOC 双实现、workflow 画布、fingerprintjs 埋点、blog/contacts、工程化等)未列入逐条复核清单,报告按调研原文呈现。
  • 局限 1:后端不在本仓库——LangGraph 三节点、RAG 检索、MinIO 存储、Hocuspocus 拦截器、聊天上下文是否截断等后端行为只能从前端代码/注释反推,无法从所查仓库直接核实(文中已逐处标注)。
  • 局限 2:静态代码调研,未运行应用;各"未接线/零调用方"结论基于全仓库 grep(排除 node_modules/.git/lockfile),不能排除运行时动态拼装(如字符串拼接的模块名)——但材料中未发现此类模式。
  • 局限 3:行号以调研时快照为准,后续提交可能漂移;引用路径均为仓库相对路径(调研命令基于 /tmp/DocFlow 工作副本执行)。
  • 局限 4(版本锚点缺失,结构性缺口):上游调研材料未提供仓库 URL、分支名或 commit hash(仓库内 docker-compose.yml 的镜像名 ghcr.io/xun082/docflow:latest 仅提示作者 GitHub 用户名,不能作为仓库锚点),本报告因此无法给出任何可复核的版本锚点。这意味着:① 所有行号引用无法跨版本复核;② 无法完全排除"调研的是过时版本或其他分支"的可能,文档声明与源码边界 的"README 宣称与代码不符"结论应严格理解为"针对调研时快照成立"。引用本报告结论前,建议先在当前 HEAD 上抽查关键文件(如 extension-kit.ts、useCollaboration.ts、package.json)再行采信。

最后更新于

本页目录