WeKnora 开源组件集成路线图

不造轮子,集成优先。26 个开源组件 + 6 阶段集成方案,从 WeKnora 改造到 IMA 完整体验

WeKnora 开源组件集成路线图

核心原则:不造轮子,集成优先。每个改造项都指定具体的开源组件 + 集成方式 + GitHub 地址。
基于:WeKnora v0.6.3 源码扫描 + IMA 2.5.6 全功能调研 + GitHub 开源组件深度评估


一、WeKnora 编辑器现状澄清

WeKnora 没有富文本编辑器。 源码中唯一的”编辑器”是 manual-knowledge-editor.vue(1117 行),本质是 <t-textarea>(TDesign 纯文本框)+ Markdown 工具栏 + marked 预览面板。Wiki 页面没有人类编辑 UI,只有 AI Agent 通过工具创建。所有聊天输入都是纯 <t-textarea>package.json 中无任何编辑器依赖(无 TipTap/ProseMirror/Quill/Lexical)。


二、推荐开源组件总表(26 个组件)

改造领域推荐组件GitHub Stars许可证集成难度说明
AI 富文本编辑器TipTap 337.4kMITVue 3 原生支持,最成熟的 headless 编辑器
AI 编辑器 AI 层AiEditor 参考架构1.8kLGPLWeb Components,内置 AI 续写/润色/翻译,参考其 AI 交互设计
PPT 生成python-pptx3.4kMITPython 生成 PPTX 的事实标准
PPT 渲染替代Marp CLI12kMITMarkdown → PPTX/PDF,适合快速出片
播客/TTSPodcastfy6.4kApache-2.0端到端播客生成流水线(文本→脚本→音频)
TTS 引擎(免费)edge-tts11.4kMIT*极低微软 Edge TTS,400+ 音色,免费,无需 GPU
TTS 引擎(本地)ChatTTS39.5kAGPL对话式语音,自然度高,需 GPU
图片生成LocalAI47.2kMITOpenAI 兼容 API,一站式 LLM+图片+TTS+STT
图片生成备选HuggingFace Diffusers33.9kApache-2.0直接 Python 集成,支持 SD/SDXL/Flux
思维导图Markmap12.9kMIT极低Markdown → 交互式脑图,npm 包直接嵌入
脑图编辑器Mind Elixir3.1kMIT框架无关的脑图编辑器,支持拖拽/编辑/导出
报告生成GPT-Researcher27.9kApache-2.0深度研究 Agent,树形探索+结构化报告+引用
报告生成备选STORM (Stanford)11.8kApache-2.0斯坦福出品,模拟研究员对话生成报告
四层记忆Mem049k+Apache-2.0独立 REST 服务 + MCP Server,Go 直接调 API
记忆图谱Graphiti (Zep)8k+Apache-2.0Neo4j 时序知识图谱,专为 Agent 记忆设计
任务编排LangGraph35.8kMIT图结构有状态 Agent 工作流,Plan-and-Execute
任务编排备选CrewAI30k+MIT多 Agent 协作框架,角色化分工
浮窗 UIVue 3 Teleport + 自建Vue 3 内置能力,无需外部组件
实时录音whisper.cpp37k+MIT纯 C++,有 Go 绑定,可直接嵌入 Go 后端
服务端 ASRfaster-whisper20kMIT4x 加速 Whisper,部署为 FastAPI 微服务
流式 ASRwhisper_streaming5kMIT实时流式转写,3.3s 延迟,WebSocket 服务
技能市场参考 awesome-agent-skills 格式38kCC0Markdown 定义技能,已被广泛验证的轻量格式
知识库广场Outline29kBSLAPI-first 知识库平台,实时协作,Docker 部署
桌面端增强Wails v3(已有)25kMIT已集成,升级到 v3 即可获得系统托盘+全局快捷键
移动端Capacitor(PWA→App)12k+MIT将 Vue 3 前端打包为 iOS/Android 原生 App
评测持久化自建(简单 DB 表)WeKnora 已有评测引擎,只需加 DB 持久化

三、分阶段集成方案(6 阶段)

阶段 1:AI 编辑器 + 笔记系统(第 1-4 周)

集成 TipTap 3 构建 AI 写作编辑器和智能笔记模块。

1.1 集成 TipTap 3 作为核心编辑器

组件TipTap 3(37.4k stars,MIT,Vue 3 原生)

集成步骤

# 前端安装
cd frontend
npm install @tiptap/vue-3 @tiptap/starter-kit @tiptap/extension-placeholder \
  @tiptap/extension-highlight @tiptap/extension-image @tiptap/extension-link \
  @tiptap/extension-table @tiptap/extension-task-list \
  @tiptap/extension-code-block-lowlight @tiptap/extension-mermaid \
  @tiptap/extension-collaboration @tiptap/extension-floating-menu \
  @tiptap/extension-slash-command

前端新增文件

  • frontend/src/components/editor/WeKnoraEditor.vue:TipTap 编辑器主组件
  • frontend/src/components/editor/SlashCommandMenu.vue/ 斜杠命令菜单(参考 AiEditor 的 AI 菜单设计)
  • frontend/src/components/editor/AIAssistBubble.vue:选中文本后的 AI 浮窗(改写/扩写/缩写/翻译/续写)
  • frontend/src/extensions/tiptap/:自定义 TipTap 扩展目录
    • KnowledgeRef.ts@ 引用知识库文档的 TipTap 扩展
    • AICompletion.ts:AI 续写扩展(SSE 流式输出到编辑器)
    • ImageGen.ts/image 命令生成 AI 图片并插入

后端新增

  • POST /api/v1/editor/ai-assist:AI 辅助写作端点(接收选中文本 + 指令 → 流式返回改写结果)
  • config/prompt_templates/editor_ai/:6 种 AI 操作 prompt(expand/condense/polish/translate/continue/outline)

参考设计:AiEditor 的 AI 交互模式(续写/润色/翻译按钮)+ Novel 的 Slash 命令设计

工作量:2 周

1.2 智能笔记模块

数据模型(新建 2 张表):

-- migrations/versioned/000066_notes.up.sql
CREATE TABLE note_folders (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id UUID NOT NULL REFERENCES users(id),
  tenant_id UUID NOT NULL REFERENCES tenants(id),
  name VARCHAR(255) NOT NULL,
  parent_id UUID REFERENCES note_folders(id),
  position INT DEFAULT 0,
  created_at TIMESTAMPTZ DEFAULT now(),
  updated_at TIMESTAMPTZ DEFAULT now()
);
 
CREATE TABLE notes (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id UUID NOT NULL REFERENCES users(id),
  tenant_id UUID NOT NULL REFERENCES tenants(id),
  title VARCHAR(500),
  content JSONB,           -- TipTap JSON 格式
  content_text TEXT,        -- 纯文本(全文索引用)
  folder_id UUID REFERENCES note_folders(id),
  status VARCHAR(20) DEFAULT 'draft',  -- draft/published
  is_pinned BOOLEAN DEFAULT false,
  tags JSONB DEFAULT '[]',
  source_type VARCHAR(20),  -- manual/ai/chat/web
  source_id UUID,           -- 关联的 session/message/knowledge ID
  created_at TIMESTAMPTZ DEFAULT now(),
  updated_at TIMESTAMPTZ DEFAULT now()
);
CREATE INDEX idx_notes_tenant_user ON notes(tenant_id, user_id);
CREATE INDEX idx_notes_content_text ON notes USING gin(to_tsvector('simple', content_text));

后端(5 个新文件):

  • internal/types/note.go + internal/types/note_folder.go
  • internal/application/repository/note.go + note_folder.go
  • internal/application/service/note.go:CRUD + 全文搜索 + 知识库关联 + PDF 导出(用 wkhtmltopdfchromedp 渲染)
  • internal/handler/note.go:RESTful API
  • internal/router/router.go:注册 /api/v1/notes 路由组

前端(新建目录):

  • frontend/src/views/notes/NotesView.vue:笔记列表 + 文件夹树
  • frontend/src/views/notes/NoteEditor.vue:集成 TipTap 的笔记编辑器
  • frontend/src/stores/notes.ts:Pinia Store
  • 路由:/platform/notes + /platform/notes/:noteId

工作量:2 周

阶段 2:内容生成矩阵(第 5-10 周)

集成 6 个开源组件,补齐 PPT/报告/播客/脑图/图片生成。

2.1 PPT 生成 — python-pptx + Marp CLI

组件

  • python-pptx(3.4k stars,MIT)— 编程式 PPTX 生成
  • Marp CLI(12k stars,MIT)— Markdown → PPTX 快速转换

集成架构

用户请求 → WeKnora Agent 检索知识库 → LLM 生成幻灯片大纲 JSON
→ Python 脚本(python-pptx 渲染)→ 输出 .pptx → 下载

具体实现

  • 新增 Python 渲染脚本:docreader/generators/ppt_generator.py(接收 JSON 大纲 → python-pptx 生成 PPTX)
  • 预设 5 个模板:docreader/generators/templates/(.pptx 骨架文件)
  • Go 后端通过 gRPC 调用(复用已有的 docreader 通道),或通过 Asynq 任务调用 Python 子进程
  • 备选方案:简单场景直接用 Marp CLI(marp --pptx output.md
  • API:POST /api/v1/slides/generate(异步任务)+ GET /api/v1/slides/:task_id/download

前端

  • frontend/src/components/slides/SlideGenDialog.vue:输入面板
  • frontend/src/components/slides/SlidePreview.vue:预览(PPTX 转图片展示)

工作量:1.5 周

2.2 深度研究 & 报告生成 — GPT-Researcher

组件GPT-Researcher(27.9k stars,Apache-2.0)

为什么选它:树形研究探索(非单线循环)、并发处理、MCP 协议支持、结构化报告输出、引用标注,是目前最成熟的深度研究 Agent。

集成架构

用户输入研究主题 → WeKnora 启动 GPT-Researcher 子进程/API 调用
→ GPT-Researcher 自动规划 → 多轮搜索(复用 WeKnora 的 web_search 引擎)
→ 交叉验证 → 生成 Markdown 报告(含引用)→ SSE 推送进度

具体实现

  • 部署 GPT-Researcher 为独立 Python 微服务(Docker 容器)
  • 配置 GPT-Researcher 使用 WeKnora 已有的搜索引擎(SearXNG/Bing/Tavily 等)
  • Go 后端通过 REST API 与 GPT-Researcher 通信
  • internal/application/service/deep_research.go:封装调用逻辑 + 进度追踪
  • API:POST /api/v1/research/start + GET /api/v1/research/:id/progress(SSE)+ GET /api/v1/research/:id/report
  • 前端:frontend/src/views/research/DeepResearchView.vue(大纲预览 + 实时进度 + 报告渲染)

备选STORM (Stanford)(11.8k stars)——模拟研究员多轮对话生成报告,更学术但集成复杂度更高。

工作量:2 周

2.3 播客生成 — Podcastfy + edge-tts

组件

  • Podcastfy(6.4k stars,Apache-2.0)— 端到端播客生成
  • edge-tts(11.4k stars)— 免费高质量 TTS

集成架构

用户选择文档 → LLM 生成双人对话脚本 → edge-tts 分别生成两个角色的音频
→ FFmpeg 合并音频 + 背景音乐 → 输出 MP3

具体实现

  • Podcastfy 支持 edge-tts 作为后端,可直接调用其 API
  • 新增 Python 脚本:docreader/generators/podcast_generator.py
  • 音色配置:商务男声 / 知性女声 / 多种可选(edge-tts 400+ 音色)
  • 通过 WeKnora sandbox 执行 FFmpeg 音频合并
  • API:POST /api/v1/podcast/generate(Asynq 异步,1-3 分钟)

前端

  • frontend/src/components/podcast/PodcastPlayer.vue:音频播放器 + 脚本同步显示

工作量:1.5 周

2.4 思维导图 — Markmap + Mind Elixir

组件

  • Markmap(12.9k stars,MIT)— Markdown → 脑图,零转换成本
  • Mind Elixir(3.1k stars,MIT)— 可编辑脑图

集成方式

npm install markmap-view markmap-lib markmap-toolbar
  • 快速模式(Markmap):WeKnora 已有 Markdown 内容,Markmap 直接将 Markdown 标题层级转为交互式脑图 SVG。只需 new Markmap(svgElement, options, markmapData)
  • 编辑模式(Mind Elixir):用户需要拖拽/编辑节点时,用 Mind Elixir 替代。支持导入/导出 JSON + XMind 格式
  • 后端:新增 prompt 模板 config/prompt_templates/mindmap_generation.yaml,LLM 输出 Mermaid mindmap 或结构化 JSON
  • 前端:frontend/src/components/mindmap/MindmapViewer.vue(Markmap 渲染 + Mind Elixir 编辑切换)

工作量:1 周

2.5 AI 图片生成 — LocalAI 或 Diffusers

组件LocalAI(47.2k stars,MIT)

为什么选它:一个 Docker 容器同时提供 OpenAI 兼容 API 的 LLM + 图片生成 + TTS + STT。如果已部署 LocalAI 作为本地 LLM 服务,图片生成是免费附赠的——直接调用 /v1/images/generations 端点即可。

集成方式

  • 如果已有 LocalAI 实例:Go 后端直接用 OpenAI 兼容 HTTP 客户端调用 POST /v1/images/generations
  • 如果需要独立图片服务:部署 HuggingFace Diffusers(33.9k stars,Apache-2.0)为 FastAPI 微服务
  • 复用 WeKnora 已有的 internal/models/ 模型管理架构,新增 imagegen provider
  • API:POST /api/v1/image/generate
  • 前端:frontend/src/components/imagegen/ImageGenDialog.vue

工作量:0.5 周(LocalAI 已部署)或 1 周(独立部署 Diffusers)

2.6 AI 解读面板(三合一入口)

集成方式:将上述脑图 + 播客 + 测验整合为统一入口

  • frontend/src/views/knowledge/AIInterpretPanel.vue:三个 Tab(脑图/播客/测验)
  • 知识测验:复用 WeKnora 已有的 generate_questions prompt,包装为交互式答题组件

工作量:0.5 周

阶段 3:四层记忆系统 — Mem0(第 11-15 周)

用 Mem0 作为记忆引擎,大幅降低自建成本。

3.1 集成 Mem0 作为记忆服务

组件Mem0(49k+ stars,Apache-2.0)

为什么选它

  • 独立 REST API 服务,Go 直接通过 HTTP 调用,无需嵌入 Python 运行时
  • 提供 MCP Server,WeKnora 的 MCP 框架可直接接入
  • 内置用户画像(User)+ 长期记忆(Memory)+ Agent 经验三层
  • 支持 Neo4j 图谱存储(与 WeKnora 已有的 Neo4j 实例共享)
  • 记忆自动提取、去重、冲突解决
  • 生产就绪,49k+ stars

集成架构

用户对话 → WeKnora Chat Pipeline → MemoryPlugin
→ POST http://mem0:8081/v1/memories/ (存储记忆)
→ GET http://mem0:8081/v1/memories/?user_id=xxx (检索记忆)
→ 记忆自动注入 system prompt

部署

# docker-compose.yml 新增 mem0 服务
mem0:
  image: mem0/mem0:latest
  environment:
    - NEO4J_URI=bolt://neo4j:7687  # 共享 WeKnora 已有的 Neo4j
    - NEO4J_USER=neo4j
    - NEO4J_PASSWORD=xxx
  ports:
    - "8081:8081"

具体实现

层 1:Copilot 设定(Soul)

  • copilot_profiles 表(WeKnora 自建,简单 CRUD)
  • 修改 internal/agent/prompts.goBuildSystemPromptWithOptions(),在最前面注入 persona prompt
  • 前端 frontend/src/views/settings/CopilotProfile.vue:设定编辑界面
  • 工作量:1 周

层 2+3+4:用户画像 + 长期记忆 + 经验技巧 → Mem0

  • 修改 internal/application/service/chat_pipeline/memory.go
    • 替换现有的简单 FindRelatedEpisodes 调用为 Mem0 API
    • MEMORY_STORAGE 事件:POST /v1/memories/ 存储对话记忆
    • MEMORY_RETRIEVAL 事件:GET /v1/memories/?user_id=xxx&query=xxx 检索相关记忆
  • Mem0 自动处理:记忆提取、去重、实体关联、冲突解决
  • 用户画像通过 Mem0 的 user_id 维度自动积累
  • 经验学习通过 Mem0 的 agent_id 维度存储 Agent 学到的规则
  • 工作量:2 周

记忆管理 UI

  • frontend/src/views/settings/MemoryManager.vue
    • 调用 Mem0 API 展示所有记忆
    • 支持搜索、删除、标记重要性
    • 可视化实体关系图(小型 D3 组件,复用已有的 mermaid/D3 依赖)
  • 工作量:1 周

3.2 Copilot 浮窗 & 全场景感知

不需要外部组件,Vue 3 内置能力即可实现:

  • frontend/src/components/copilot/CopilotFloat.vue
    • Vue 3 <Teleport to="body"> 挂载到根级别
    • position: fixed + 拖拽(@vueuse/coreuseDraggable
    • 迷你模式(圆形按钮)↔ 展开模式(聊天面板)
  • frontend/src/composables/usePageContext.ts
    • Vue Router afterEach 钩子追踪当前页面
    • Pinia store 提取页面上下文(当前文档/搜索结果/笔记内容)
    • 上下文自动注入 Copilot 请求
  • 全局快捷键 Ctrl+K:复用已有的 GlobalCommandPalette.vue,增加 Copilot 模式切换
  • 工作量:1.5 周

阶段 4:任务模式 — LangGraph(第 16-20 周)

用 LangGraph 实现 Plan-and-Execute 任务编排。

4.1 集成 LangGraph 作为任务编排引擎

组件LangGraph(35.8k stars,MIT)

为什么选它

  • 图结构有状态 Agent 工作流,天然适合 Plan-and-Execute
  • 内置持久化(SQLite/PostgreSQL),支持暂停/恢复/回退
  • 原生支持 human-in-the-loop(中途注入)
  • MIT 许可,Go 通过 REST API 调用 LangGraph Platform 或自部署

集成架构

用户输入任务 → WeKnora Go 后端 → REST API 调用 LangGraph
→ LangGraph 执行计划图:
[Plan] → [Step1: Search] → [Step2: Read] → [Step3: Generate] → [Review]
→ 每步结果通过 SSE 推送回 WeKnora 前端
→ 中途注入通过 API 发送 human feedback

部署

# docker-compose.yml 新增 langgraph 服务
langgraph:
  build: ./langgraph-server/  # 自定义 Dockerfile
  environment:
    - DATABASE_URI=postgresql://...  # 共享 WeKnora 的 PostgreSQL
  ports:
    - "8123:8123"

具体实现

  • 创建 langgraph-server/ 目录,包含 LangGraph Platform 的自定义 Dockerfile
  • 定义任务图:langgraph-server/graphs/task_mode.py(Plan → Execute → Review 节点)
  • Go 后端:internal/application/service/task_mode/task_client.go(REST 客户端)
  • API:POST /api/v1/task-mode/startGET /api/v1/task-mode/:id/stream(SSE)、POST /api/v1/task-mode/:id/feedback
  • 前端:frontend/src/views/taskmode/TaskModeView.vue(任务计划可视化 + 进度条 + 中途注入面板)

备选CrewAI(30k+ stars,MIT)——多 Agent 角色化分工,适合”研究员+写手+编辑”的协作模式。

工作量:3-4 周

阶段 5:ASR & 实时录音(第 21-25 周)

5.1 实时录音 — whisper.cpp Go 绑定

组件whisper.cpp(37k+ stars,MIT)

为什么选它

  • 纯 C++ 实现,有 Go 绑定github.com/ggerganov/whisper.cpp/bindings/go),可直接嵌入 Go 后端
  • 无需 Python 运行时,无需 GPU(CPU 推理足够实时)
  • 支持 GGML 量化模型(400MB 即可运行)

集成方式

  • Go 后端直接调用 whisper.cpp Go 绑定
  • WebSocket 端点:/api/v1/asr/stream(实时音频流 → 文本流)
  • 前端:@capacitor/voice-recorder 插件录音 → WebSocket 推送音频 → 实时显示转写文本

工作量:1.5 周

5.2 服务端 ASR 增强 — faster-whisper

组件faster-whisper(20k stars,MIT)

集成方式

  • 部署为 FastAPI 微服务(Docker 容器)
  • Go 后端通过 gRPC/REST 调用
  • 支持批量音频文件转写(复用已有的 Asynq 任务队列)
  • 多语言支持:Whisper large-v3 支持 100+ 语言

工作量:1 周

阶段 6:技能市场 + 知识库广场(第 26-30 周)

6.1 技能市场

参考格式awesome-agent-skills(38k stars,CC0)— Markdown 定义技能

WeKnora 已有基础skills/preloaded/ 目录 + SKILL.md 格式 + Docker 沙箱执行

改造方案

  • skill_marketplace 表:id, name, description, author_id, skill_content, category, tags, downloads, rating, version, is_public
  • API:/api/v1/skills-marketplace(CRUD + 搜索 + 安装/卸载)
  • 安装操作:将 skill_content 写入 skills/ 目录 → skills.Manager.Reload()
  • 从对话提取技能:POST /api/v1/skills-marketplace/extract-from-chat
  • 前端:frontend/src/views/skills/SkillMarketplace.vue(卡片展示 + 搜索 + 一键安装)

工作量:2 周

6.2 知识库广场

组件参考Outline(29k stars)的 API-first 设计 + DigitalHippo 的市场 UI 模式

改造方案

  • knowledge_bases 表增加 visibility 字段(private/organization/public)
  • kb_marketplace 表:id, kb_id, description, category, tags, subscriber_count, sample_questions
  • kb_subscriptions 表:user_id + kb_id
  • API:/api/v1/marketplace(搜索/浏览/订阅)
  • 前端:frontend/src/views/marketplace/MarketplaceView.vue

工作量:1.5 周


四、总览时间线

月份 M1 M2 M3 M4 M5 M6 M7 M8
├───────┼───────┼───────┼───────┼───────┼───────┼───────┤
阶段1 ████████████████
阶段2 ████████████████████████████
阶段3 ████████████████████
阶段4 ████████████████████████
阶段5 ████████████████
阶段6 ████████████████
阶段内容周期核心组件
1AI 编辑器 + 笔记4 周TipTap 3
2内容生成矩阵6 周python-pptx, GPT-Researcher, Podcastfy, Markmap, LocalAI
3四层记忆系统5 周Mem0, Graphiti
4任务模式5 周LangGraph
5ASR & 录音5 周whisper.cpp, faster-whisper
6市场 & 广场5 周awesome-agent-skills, Outline

总计:约 30 周(7-8 个月),2-3 名全栈工程师


五、组件选型决策树

需要什么能力?
├── AI 编辑器 → TipTap 3(Vue 3 原生,37.4k stars)
├── PPT 生成 → python-pptx(Python 标准)+ Marp CLI(快速出片)
├── 深度研究 → GPT-Researcher(27.9k stars,MCP 支持)
├── 播客生成 → Podcastfy + edge-tts(免费,400+ 音色)
├── 思维导图 → Markmap(零成本)+ Mind Elixir(可编辑)
├── 图片生成 → LocalAI(已有 LLM 则免费附赠)
├── 记忆系统 → Mem0(49k+ stars,独立 REST 服务)
├── 任务编排 → LangGraph(图结构,human-in-the-loop)
├── 实时 ASR → whisper.cpp(Go 绑定,嵌入后端)
└── 技能市场 → 自建(参考 awesome-agent-skills 格式)

本文档基于 WeKnora v0.6.3 源码扫描 + IMA 2.5.6 功能调研 + GitHub 开源组件评估生成。
最后更新:2026-06-26