菜单

后端架构

相关源文件

AFFiNE 的后端架构提供了驱动协作文档编辑、AI 能力、用户管理和工作区管理功能的服务器端基础设施。本文档概述了后端系统的核心组件、它们之间的交互以及实现细节。

后端系统概述

AFFiNE 的后端基于现代 NodeJS 栈,并使用 NestJS 作为应用框架。它使用 GraphQL 进行 API 交互,使用 Prisma ORM 进行数据库访问,并集成基于 Rust 的原生模块以实现性能关键型操作。

来源

服务器基础设施

后端实现为一个 NestJS 应用,具有模块化架构。它提供 GraphQL 和 RESTful API 端点,管理身份验证,处理工作区和文档权限,并与 AI 服务集成。

核心依赖项

后端依赖于几个关键依赖项

  • NestJS:使用 TypeScript 的应用框架
  • Prisma:用于数据库访问的 ORM
  • Apollo Server:GraphQL 实现
  • BullMQ:后台作业处理
  • Ioredis:用于缓存和会话管理的 Redis 客户端
  • 多个 AI 集成:OpenAI、Google AI (Gemini)、FAL AI

来源

数据库 Schema

AFFiNE 使用 PostgreSQL 和 Prisma ORM。Schema 包含用户、工作区、文档、AI 会话等实体。主要实体包括:

  • User:用户账户和身份验证
  • Workspace:协作工作区
  • WorkspaceDoc:文档元数据
  • WorkspaceUserRole:工作区中的用户权限
  • WorkspaceDocUserRole:特定文档的用户权限
  • Snapshot:文档内容快照
  • AiSession & AiSessionMessage:AI 聊天历史记录
  • AiPrompt & AiPromptMessage:预定义 AI 提示
  • AiContextEmbedding & AiWorkspaceEmbedding:用于 AI 上下文的文档嵌入

来源

Copilot AI 系统架构

Copilot AI 系统是 AFFiNE 的一项关键功能,可在应用程序中提供 AI 辅助。它包含多个组件:

  • Providers:与 AI 服务集成(OpenAI、Google Gemini、Perplexity、FAL AI)
  • Sessions:聊天会话和消息历史记录管理
  • Prompts:预定义的提示模板
  • Workflows:用于特定任务的复杂 AI 工作流
  • Context:文档嵌入和上下文管理

来源

Copilot Provider 系统

Copilot 系统集成了多个 AI 服务提供商,各有不同的能力。

来源

聊天会话管理

聊天会话系统管理 AI 对话,包括:

  1. 会话创建和存储
  2. 消息历史记录
  3. 令牌计数和配额管理
  4. 上下文处理
  5. 提示模板

来源

工作流系统

工作流系统支持复杂 AI 处理管道。

来源

API 层

AFFiNE 的后端同时提供 GraphQL 和 REST API 端点。

GraphQL API

GraphQL API 是客户端-服务器交互的主要接口。主要解析器包括:

  1. CopilotResolver:AI 功能
  2. WorkspaceResolver:工作区管理
  3. DocResolver:文档操作
  4. UserResolver:用户管理
  5. AuthResolver:身份验证

来源

REST 端点

除了 GraphQL 之外,后端还为特定功能提供 REST 端点。

  • /api/copilot/chat/:sessionId:非流式聊天补全
  • /api/copilot/chat/:sessionId/stream:流式聊天补全
  • /api/copilot/chat/:sessionId/workflow:复杂工作流执行
  • 身份验证端点
  • 文件上传/下载端点

来源

原生集成

后端包含基于 Rust 的原生模块,用于性能关键型操作。

来源

后端部署

AFFiNE 后端旨在支持在多种环境下的部署

  1. 云部署:主要的部署模式
  2. 自托管:支持用户运行自己的实例
  3. 开发环境:用于开发的本地设置

关键的部署考量包括

  • 使用 Prisma 进行数据库迁移
  • 环境配置
  • 不同平台的原生模块编译
  • AI 提供商配置

来源

总结

AFFiNE 后端的架构为协作式文档编辑平台提供了坚实的基础,关键组件包括

  1. NestJS 应用框架:提供结构和模块化
  2. GraphQL API:客户端-服务器通信的主要接口
  3. PostgreSQL 数据库:使用 Prisma ORM 的核心数据存储
  4. Copilot AI 系统:与多个 AI 提供商集成
  5. Rust 原生模块:性能关键操作

该架构使 AFFiNE 能够提供丰富的特性集,包括实时协作、AI 助手、用户和工作区管理以及文档处理。

来源