AFFiNE
Notion+Miro开源替代,三合一知识管理,本地优先+实时协作
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Notion+Miro开源替代,三合一知识管理,本地优先+实时协作
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
左手 Notion 写文档,右手 Miro 画白板,中间再开个 Airtable 管数据库——这是多少知识工作者和创业团队的日常。工具越来越多,割裂感越来越强,笔记在一个地方,白板在另一个地方,数据还要手动同步。更要命的是:这些工具都是闭源的,你的数据不属于你。
AFFiNE(读作 "uh-FINE")的出现,正是要打破这个困局。它是一个将文档编辑、白板画布、多视图数据库三者深度融合的开源工具,同时支持本地优先(Local-First)和实时协作,目标直指 Notion 和 Miro 的替代品。目前在 GitHub 上已斩获 69,235 Stars,是知识管理类开源项目的顶流存在。

图1:AFFiNE 官方产品界面,展示文档+白板融合视图
AFFiNE 由 Toeverything 团队开发,背后还有另一个关键开源项目 BlockSuite——这是 AFFiNE 的核心编辑器引擎,本身也是一个独立的协作编辑框架。
团队的技术选型很有意思:他们选择了 Rust + TypeScript 的组合。前端核心基于 React + TypeScript,但底层数据存储和同步引擎用 Rust(NAPI) 实现,通过 Node.js NAPI 绑定暴露给 JavaScript 层。这带来的好处是:数据操作既享受 Rust 的内存安全和性能,又保持前端开发的 TypeScript 生产力。
更底层的技术栈包括:
这套架构的核心理念是本地优先:你的数据最初保存在本地磁盘,协作时通过网络同步,而非传统的"数据存在服务器上"。这意味着即使断网,你依然可以正常编辑,数据完全属于你自己。
AFFiNE 的最大卖点是"三合一",但又不是简单的功能叠加,而是底层打通的深度融合:
1. 文档编辑(Docs) 基于 BlockSuite 构建的块编辑器,支持 Markdown、代码高亮、嵌入网页、评论、标签等一切 Notion 有的功能。编辑体验流畅,块的概念让内容的组织极其灵活。
2. 白板画布(Whiteboard) 无边界的画布,可以自由放置任何"块"——不只是形状和便签,而是文字、数据库视图、嵌入页面、甚至幻灯片。和 Miro 比起来,AFFiNE 的白板优势在于"块是可以复用的",白板上的一张便签可以直接拖进文档里,文档里的表格也可以拖到白板上。
3. 多视图数据库(Database) Airtable 风格的可编程数据表,但更强大——每个数据库条目可以对应一个独立的页面,页面里又可以嵌入白板,形成页面 → 数据库 → 白板 → 页面的无限嵌套结构。
4. 本地优先 + 实时协作 通过 CRDT 机制支持多人实时编辑,即使多人同时离线编辑,恢复网络后也能无冲突地自动合并数据。
5. 自托管(Self-Host) 官方提供 Docker 镜像,可以完全自托管,不依赖云服务,自主控制数据。部署一个 Docker Compose,就能跑起完整的 AFFiNE 服务(PostgreSQL + Redis + AFFiNE)。
6. AFFiNE AI 官方正在推进 AI 集成,包括将大纲转幻灯片、文章摘要生成思维导图、任务规划等。虽然尚在发展中,但路线图明确。
AFFiNE 是一个复杂的 monorepo 项目(基于 Yarn Workspaces),核心架构分三层:
toeverything/AFFiNE/
├── packages/
│ ├── frontend/ # React 前端(electron 桌面端入口)
│ ├── backend/ # Node.js 服务端
│ └── common/ # 共享工具和主题
├── blocksuite/ # 核心编辑器引擎(独立发布)
├── .docker/selfhost/ # 自托管 Docker Compose 配置
└── docs/ # 文档
前端:React 18 + TypeScript + Vite 构建,有 Web 和 Electron 桌面两个入口,Jotai 状态管理。
数据层:Rust 编写的 OctoBase 通过 NAPI(napi-rs)暴露 Rust API 给 Node.js,配合 y-octo(CRDT)处理协作冲突。PostgreSQL(带 pgvector 扩展)存储向量数据,支持语义搜索。
自托管:官方提供 compose.yml,包含四个服务:
affine:主服务镜像affine_migration:数据库迁移脚本postgres:pgvector:带向量搜索的数据库redis:缓存层.env 配置只需设置域名、端口、数据库密码即可运行,支持 HTTPS 外部代理。
开发环境:本地开发需要 Node.js 22 + Rust 工具链,首次构建耗时较长(约 10~30 分钟编译 Rust NAPI 模块)。
自托管 Docker 部署(推荐):
部署难度:★★★☆☆(中等)
# 1. 克隆或下载 .docker/selfhost/
# 2. 配置 .env
cp .docker/selfhost/.env.example .env
# 编辑 .env,填入 DB_PASSWORD 等
# 3. 启动
docker compose -f .docker/selfhost/compose.yml up -d
约 10 分钟启动完成,服务监听 3010 端口。硬件要求不高,2GB RAM + 10GB 磁盘即可。
支持 HTTPS,需要在前面架一个 Nginx/Caddy 反向代理,并设置 AFFINE_SERVER_EXTERNAL_URL=https://yourdomain.com。
官方云服务:不想自己运维?affine.pro 有免费版可直接使用,界面和自托管完全一致。
从源码构建(仅供开发者): 需要 Node.js 22 + Rust + Yarn 4,首次构建要编译 NAPI 原生模块,耗时长、配置复杂,不建议普通用户尝试。
协作功能依赖服务器。虽然数据本地存储,但实时协作、多人同步功能仍需要连接到服务器(自托管时需要自己的服务器),纯离线场景下只能做单机编辑。
国际化仍在完善。作为中国团队开发的项目,AFFiNE 对中文的支持相对较好,但部分功能文档和社区讨论仍以英文为主。
复杂度带来的学习成本。三合一的设计理念强大,但功能太多对新手不够友好,刚接触时容易不知道从哪下手。相比专注文档的 Notion,AFFiNE 的上手曲线更陡。
Rust NAPI 编译环境门槛高。如果你想在本地开发而不是用 Docker,需要装 Rust 工具链,这增加了贡献代码的门槛。
稳定性方面。作为一个快速迭代的项目(当前版本 0.26),偶有小 bug 属正常现象,社区反馈渠道(Discord + GitHub)活跃,问题通常能得到较快响应。
AFFiNE 的出现代表着几个重要趋势:
本地优先架构的成熟。CRDT 技术让离线优先+实时协作成为可能,不再需要传统的中心化服务器模型。这是 Notion、Miro 等闭源工具一直没能解决的问题。
开源替代商业 SaaS 的可能性。Notion 年费 96 美元/人起,AFFiNE 社区版完全免费,自托管后数据自主可控。对于对数据隐私敏感的企业和团队,这是极具吸引力的替代方案。
Monorepo + Rust + TS 的工程实践。AFFiNE 在前端工程化上展示了一个大型 TypeScript 项目如何与 Rust 原生模块协作,对想学习这类架构的开发者有参考价值。
目前 BlockSuite 已经独立发展,成为 AFFiNE 之外其他编辑器项目的底层依赖,形成了围绕"块编辑器"的生态系统。未来如果 AI 集成成熟,AFFiNE 有潜力成为真正的"AI 时代的知识操作系统"。
项目地址: https://github.com/toeverything/AFFiNE 官网: https://affine.pro 技术栈: React / TypeScript / Rust (NAPI) / PostgreSQL / Redis / CRDT / BlockSuite Star: 69,235 | Fork: 4,915