Skip to content

项目架构

整体架构

Fredica 采用本地服务 + 内嵌 WebView的架构,将 Kotlin 后端服务与 React 前端结合在一个桌面应用中。Python 辅助服务随桌面应用一同启动,以子进程形式运行。

前端与后端之间存在两条独立的通信通道:HTTP Route API 和 kmpJsBridge。两者的适用场景、安全模型和调用方式均不同,详见前后端通信通道

模块划分

模块技术代码位置
composeAppCompose MultiplatformcomposeApp/
shared(主服务)KMP + Ktor + Ktormshared/src/commonMain/ · shared/src/jvmMain/
fredica-webuiReact 19 + React Router 7 + Tailwind 4fredica-webui/app/
fredica-pyutil(子进程)Python FastAPIdesktop_assets/common/fredica-pyutil/
docsVitePressdocs/
  • composeApp:桌面窗口宿主,托管 AppWebView,注册所有 JsMessageHandler,负责启动主服务和 Python 子进程。支持 JVM Desktop(Windows / macOS / Linux)。
  • shared:核心业务逻辑。commonMain 定义路由模型、DB 接口、任务引擎接口;jvmMain 实现 Ktor 服务器、SQLite、JVM Executor。详见 任务模型
  • fredica-webui:所有用户界面,文件系统路由,位于 fredica-webui/app/routes/
  • fredica-pyutil:Python 辅助子进程,监听 :7632。短任务通过 HTTP POST 调用,长任务(下载/转码/ASR)通过 WebSocket 双向流执行,支持进度上报、取消、暂停/恢复。运行时(Python 3.14 嵌入式)随安装包分发,无需用户手动安装。目前仅 Windows 完整实现。

服务端口规划

端口服务状态
7630React WebUI 开发服务器(Vite)✅ 可用
7631Ktor API 服务器✅ 可用
7632Python 辅助服务(FastAPI)✅ 可用(仅 Windows)

图片代理与缓存机制详见 图片代理与缓存

Fredica — AI 视频工坊