Skip to content

Feature request: 插件化架构 —— 支持第三方插件开发 #28

Description

@skylkw

需求

希望把 Flowix 的功能做成可插件化,支持第三方按插件的形式扩展(自定义编辑器扩展、命令、面板、AI 工具等),而不是把所有能力都编进主程序。

现状(核实结果)

目前代码里的 "plugin" 全部是编译期集成,没有面向第三方的插件系统:

  • 前端所谓 plugin 都是 Tiptap / ProseMirror 编辑器扩展,直接在 app/flowix-web/features/editor/markdown-editor.tsximport + 静态注册(如 extensions/markdown-link.tsextensions/tag.tstable/table-plugin.ts 等)。
  • 后端是 Tauri 内建插件(tauri-plugin-*),同样是编译期依赖。
  • 没有:插件清单(manifest)、运行时加载 / 卸载、稳定的插件 API / SDK、插件沙箱与权限模型、插件市场或本地安装目录。

即当前不具备类似 Obsidian / VS Code 那种第三方插件开发能力。

期望方向(供讨论)

一个完整的插件化会涉及不少设计决策,建议分阶段:

  1. 扩展点定义:先明确对外开放哪些扩展点(编辑器节点/标记、斜杠命令、侧栏面板、状态栏项、AI 工具、命令面板动作等)。
  2. 插件清单 + 加载机制:定义 manifest 格式与插件目录,支持运行时发现/启用/禁用。
  3. 稳定 API/SDK:给插件暴露一套受控的前端(编辑器、store、命令)与后端(IPC 命令、文件访问)接口。
  4. 安全模型:插件权限声明与沙箱(尤其涉及文件系统 / 网络 / AI provider 时),复用现有 path_scope / 白名单机制。
  5. 分发:本地安装 → 后续可考虑插件市场。

这是一个较大的架构性工作,先开 issue 记录需求、收集设计意见。

收益

  • 社区可自行扩展编辑器与工作流,降低主仓维护负担;
  • 现有内建扩展(Tiptap 扩展、AI 工具)可逐步迁移到统一插件模型,验证 API 完备性。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    ProposalAdvice for roadmap / 提案

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions