项目快照:AppFlowy-IO/AppFlowy,约 75,569 个 Star,5,875 个 Fork;最新推送时间 2026-08-11T13:01:19Z。本文基于仓库公开资料撰写。

项目地址:https://github.com/AppFlowy-IO/AppFlowy · https://appflowy.com

AppFlowy 从代码、运行环境到实践流程的项目封面
AppFlowy 的项目能力与实践流程示意。

项目速览(TL;DR)

AppFlowy 是一个以跨平台工作区为目标的开源项目,仓库描述将其定位为用于项目、知识库和团队协作的人工智能(Artificial Intelligence,AI)工作区,并强调用户对数据的控制权。README 将其称为“Notion 的开源替代方案”,但仓库同时明确表示,项目当前不宣称在功能和设计上已经超过 Notion。

根据给定 GitHub 仓库元信息,项目默认分支为 main,主要语言为 Dart,许可证为 AGPL-3.0,当前资料中的 Star 数为 75,569,Fork 数为 5,875。Star 和 Fork 属于随仓库变化的统计值,发布文章时应以仓库页面显示为准。

  • 主要用途:项目管理、知识管理、团队协作和 AI 工作区。
  • 客户端技术:README 明确列出 Flutter 与 Rust。
  • 覆盖平台:README 提供 macOS、Windows、Linux、iPhone 和 Android 的安装入口。
  • 部署选项:资料列出桌面端、移动端、自托管和源码构建入口。
  • 许可证:GNU Affero General Public License Version 3,即 GNU AGPL-3.0。

定位与目标用户

这一项目的核心定位不是单一的待办事项工具,而是把项目、维基(Wiki)和团队工作空间放在同一个产品模型中。README 的目标表述同时覆盖个人用户、企业用户以及希望基于协作基础设施构建应用的开发者。

README 将数据隐私、可靠的原生体验和社区驱动的可扩展性列为三项基本价值。需要注意的是,“数据控制权”是项目使命和产品定位中的要求,不能直接等同于某一具体部署方式已经满足全部组织级隐私、审计或合规要求。

“AppFlowy is the AI workspace where you achieve more without losing control of your data”
来源:README

目标问题

README 认为现有工作区工具存在数据安全、移动端兼容性和定制能力方面的限制,因此 AppFlowy 希望提供跨平台原生体验,并为企业和开发者提供可修改的构建基础。这个目标意味着使用者不仅可以把它当作现成应用,也可以将源码作为进一步定制的起点。

与 Notion 的关系

README 明确提到 Notion 是项目团队长期使用的项目和知识管理工具,AppFlowy 以“开源替代方案”作为项目表达。根据 README,当前优先级并不是盲目增加功能,而是建设社区和复杂工作场景的开发基础;因此,不能仅依据项目名称推断两者在功能、交互或兼容性上完全等价。

核心功能

README 通过产品描述和界面示意图列出了任务看板、数据库、站点、AI 和模板等能力。资料没有提供完整的功能规格、接口定义、数据流图或组件级行为说明,以下内容只描述仓库资料能够直接支持的范围。

项目与任务看板

README 的图片替代文本将任务界面描述为“AppFlowy Kanban Board for To-dos”,说明项目包含面向待办事项的看板形态。看板的具体列模型、卡片字段、拖拽事件、持久化接口和协作冲突处理方式,官方仓库资料未提供该信息,建议以最新 README 和产品文档为准。

从输入输出角度看,资料只确认该能力面向待办事项展示,并未确认具体输入字段或输出格式。部署前应通过实际客户端和对应文档核验任务创建、状态变更、筛选、排序以及多人同时编辑的行为。

数据库与项目数据

README 的图片替代文本将另一项能力描述为“AppFlowy Databases for Tasks and Projects”,可据此确认项目展示了用于任务和项目的数据表或数据库场景。仓库资料没有给出数据库引擎名称、查询语法、字段类型、索引策略和导入导出格式。

因此,数据库能力在本文中只按产品层能力记录,不把它扩展解释为某一种关系型数据库或文档数据库。若需要进行迁移、备份或系统集成,应先从官方文档确认数据模型和支持的导入导出路径。

站点与知识文档

README 的图片替代文本将 Sites 描述为用于创建文档的能力,原文为“AppFlowy Sites for Beautiful documentation”。这表明项目覆盖知识发布或文档组织场景,但资料没有说明站点是否必须依赖官方服务、是否可完全离线生成、是否提供公开访问控制,也没有给出发布流程。

对需要内部知识库的团队而言,实际评估重点应放在访问控制、数据存储位置、备份方式和离线行为。这些项目级配置与部署细节不在给定资料中,不能仅依据产品截图作出结论。

人工智能工作区

README 单独展示了 AppFlowy AI,并在项目描述中将 AI 工作区作为整体定位的一部分。资料没有提供模型供应商、模型名称、调用协议、上下文范围、数据是否发送到第三方服务、密钥配置或离线推理方式。

所以,AI 功能可以确认存在于产品展示范围,但无法从当前资料确认具体触发条件、输入输出格式或运行依赖。对于包含个人信息、内部文档或商业秘密的数据,应在启用前完成供应商、网络和数据处理边界审查。

模板与跨设备工作

README 展示了 Templates,并提供多张“Work across devices”界面图片,安装部分则明确列出桌面端和移动端入口。资料没有列出模板文件格式、模板同步协议、跨设备冲突处理规则或平台功能差异。

跨设备使用应理解为项目提供相应客户端入口,而不是自动推导所有平台具备完全一致的功能。具体平台支持范围和版本要求,应以发布页面和官方文档的当前内容为准。

系统架构与关键模块

从 README 能直接确认的技术事实是:项目使用 Flutter 和 Rust。Flutter 通常对应跨平台界面层,但本文不把未提供的模块边界、通信协议或存储实现写成既定事实;Rust 在仓库中的具体职责也未由给定资料展开说明。

可确认的技术分层

层次或能力 资料中的事实 可以确认的用途 未提供的信息
跨平台客户端 README 列出 Flutter 承载多平台应用界面 具体页面、状态管理和渲染模块
原生或底层组件 README 列出 Rust 项目包含 Rust 代码 Rust crate、FFI 接口和线程模型
平台覆盖 macOS、Windows、Linux、iPhone、Android 提供对应安装入口 各平台最低版本和功能差异
协作工作区 项目、维基、团队与 AI 工作区 构成产品能力边界 同步服务、权限模型和冲突解决算法
自托管 README 提供自托管指南链接 存在自建部署文档入口 服务组件、端口、数据库和资源要求

模块边界的阅读方法

阅读源码时,可以先从 Flutter 和 Rust 的构建入口确认边界,再沿着任务、数据库、站点、AI 和模板等产品能力追踪调用关系。由于给定资料没有提供目录树、构建脚本或接口说明,具体目录名称、模块名称和依赖关系不能在本文中虚构。

如果目标是二次开发,建议先固定仓库的 main 分支状态,记录本地改动和构建环境,再依照官方“from source”文档完成平台特定配置。对于涉及协作、同步和 AI 的修改,应分别验证离线行为、网络行为和数据边界,而不能只验证界面是否能够启动。

依赖与运行环境

仓库资料明确给出的核心技术依赖只有 Flutter 和 Rust,主要语言元信息为 Dart。README 没有提供 Flutter、Dart、Rust 的版本号,也没有列出操作系统最低版本、编译器版本、数据库、容器运行时或外部服务要求。

  • 源码技术:Dart、Flutter、Rust。
  • 桌面端:macOS、Windows、Linux 下载入口。
  • 移动端:iPhone App Store 入口,以及 Android 10 或更高版本的 Play Store 入口。
  • Android 限制:README 明确写明不支持 ARMv7。
  • 源码开发:README 要求查看 OS-specific development instructions。

官方仓库未提供完整的版本矩阵、系统软件包列表、硬件要求、端口清单和网络依赖,建议以最新开发文档为准。不要根据项目语言或框架版本自行推断兼容范围。

快速开始

对于普通使用者,README 推荐从 GitHub Releases 下载桌面端,或使用 FlatHub、Snapcraft、Sourceforge 等渠道;移动端则通过 App Store 和 Play Store 获取。对于开发者,README 提供了源码构建文档,但没有在给定内容中内嵌完整命令。

桌面端安装路径

  1. 打开项目的 Releases 页面。
  2. 根据操作系统选择 macOS、Windows 或 Linux 安装包。
  3. 完成本地安装后启动 AppFlowy,并根据客户端界面验证工作区、项目或文档功能。

README 还列出 FlatHub、Snapcraft 和 Sourceforge 作为其他分发渠道。不同渠道的包格式、签名验证步骤和更新策略未在资料中说明,安装前应核对发布页面提供的校验与发行说明。

源码获取与校验示例

下面的示例只执行源码获取和分支状态验证,使用默认分支 main。它是基于仓库地址和 README 所给开发入口整理的本地准备步骤,不包含官方资料未提供的 Flutter 或 Rust 启动命令。

Bash
git clone https://github.com/AppFlowy-IO/AppFlowy.git
cd AppFlowy
git checkout main
git status

命令执行后,git status 用于确认当前工作树状态;如果本地尚未安装 Git,官方仓库资料未给出安装命令。源码安装、编译和运行必须继续按照官方“From Source”文档执行,本文不补写缺失的版本参数或平台命令。

最小可运行闭环的边界

从给定资料可以安全复现的最小闭环是“获取源码—切换默认分支—验证工作树”。“启动 AppFlowy 应用”所需的具体命令、构建目标和运行参数未出现在资料中,官方仓库未提供该信息,建议以最新 README 和源码开发文档为准。

Bash
# 在已完成官方源码环境配置的本地测试环境中执行
cd AppFlowy
git status
# 运行命令未出现在给定 README 资料中,请遵循官方 From Source 文档

这里没有伪造一个看似完整但无法核验的启动命令。若需要对发布包做验证,应记录下载渠道、平台、包版本和实际测试结果,而不是把源码分支名称当作应用版本号。

配置说明

给定 README 和 LICENSE 没有提供配置章节、环境变量样例、配置文件样例或端口定义。因此,配置工作不能按照未提供的字段、默认值和接口签名进行推演。

配置项类别 字段名 类型 默认值 作用
运行端口 未提供 未提供 未提供 官方仓库资料未列出端口配置
环境变量 未提供 未提供 未提供 官方仓库资料未列出环境变量
AI 服务 未提供 未提供 未提供 官方仓库资料未列出模型或服务配置
数据存储 未提供 未提供 未提供 官方仓库资料未列出数据库或文件存储配置
自托管服务 未提供 未提供 未提供 README 只提供自托管指南入口,未内嵌字段说明

如果组织准备部署自托管版本,应从官方自托管指南提取服务拓扑、密钥管理、域名、网络和持久化配置,并将这些值纳入变更记录。不要把上述“未提供”解释为项目不支持对应能力,只能说明当前输入资料没有给出可核查细节。

进阶用法

进阶使用的主要方向包括源码构建、自托管、功能提案、缺陷报告和翻译贡献。README 为这些方向分别提供了文档、路线图、Issue 模板、贡献指南和翻译入口,但没有在 README 中复制具体操作步骤。

自托管

README 提供了“从零到生产”的自托管指南链接,说明项目存在面向自建环境的部署文档。资料没有确认自托管所需服务数量、数据库类型、容器编排方式、反向代理配置、备份方案或高可用设计。

根据本文作者的经验判断,自托管评估应先做数据流盘点,再做容量和故障恢复设计;但这属于通用工程判断,不是 AppFlowy 官方承诺。正式上线前应以官方指南和实际版本的部署文件为准。

源码开发

源码开发入口明确要求结合操作系统阅读开发说明。由于核心技术包含 Flutter 和 Rust,开发者需要同时关注界面端和底层代码的构建链;具体命令、IDE 配置和调试方法仍须以官方文档为准。

路线图与贡献

README 提供了 Roadmap ReadMe 和 GitHub Public Roadmap 两个路线图入口,并提供功能请求和缺陷报告模板。提交问题时,应分别使用功能请求或 Bug 报告入口,附带可复现步骤、平台信息和实际结果;资料没有要求使用特定模板字段,因此不应擅自补充为官方硬性规则。

翻译

README 指出翻译资源位于 /frontend/resources/translations,可以手工编辑 JSON 翻译文件,也可以使用 Inlang 在线编辑器,或执行 npx inlang machine translate。该命令来自 README,但资料没有给出 Node.js 版本、依赖安装方式或自动翻译的权限要求,运行前应按官方翻译说明确认环境。

Bash
# README 给出的翻译命令
npx inlang machine translate

机器翻译涉及文本内容处理,提交前应检查术语一致性、占位符完整性和语言文件格式。README 没有说明该命令是否会覆盖现有翻译,因此应先在独立分支或备份副本中验证变更。

可观测性与运维

给定资料没有提供日志格式、指标名称、追踪协议、健康检查接口、告警规则、审计日志、备份脚本或服务等级协议(Service Level Agreement,SLA)。因此,不能从仓库描述推导出某种现成的监控集成或可用性承诺。

  • 版本记录:使用 Releases 页面和 changelog 核对发布内容。
  • 变更管理:源码环境记录分支、提交哈希和本地改动。
  • 数据保护:自托管环境单独设计备份、恢复和访问控制。
  • 故障定位:收集操作系统、客户端分发渠道、复现步骤和相关日志,再提交 Bug 报告。
  • 容量评估:官方资料未提供性能基准、并发上限或数据规模建议,需要在目标环境自行测试。

根据本文作者的经验判断,协作工作区的运维不应只监控进程是否存活,还应验证数据同步、登录、文档读写和备份恢复;不过这些检查项并非资料中已确认的 AppFlowy 内置接口。

安全与合规边界

项目强调数据隐私优先,但当前资料没有给出加密算法、密钥托管、访问控制模型、审计能力、数据驻留区域或第三方 AI 数据处理条款。使用者不能仅凭 AGPL-3.0 许可证或“控制数据”的项目目标,推断已经满足特定行业的合规要求。

授权与数据边界

  • 只在组织拥有授权的设备、账号和数据范围内部署与测试。
  • 向 AI 功能输入内部文档、个人信息或商业秘密前,先确认数据是否会离开本地环境。
  • 自托管时明确管理员、普通成员、访客和服务账号的权限边界。
  • 对生产数据执行备份、恢复演练和最小权限管理。
  • 发生数据暴露或权限异常时,按照组织现有事件响应流程处置。

本文不提供绕过访问控制、未授权读取工作区、攻击协作服务或规避检测的方法。关于安全配置、漏洞修复和合规认证,官方仓库未提供该信息,建议以最新文档、发布说明和组织内部审查结果为准。

许可证与商用条款

仓库许可证为 GNU Affero General Public License Version 3(GNU AGPL-3.0)。LICENSE 说明该许可证允许运行、复制、修改和传播受保护作品,但这些权利以遵守许可证条件为前提;许可证文本同时强调,网络服务器场景下的修改版本需要向相关用户提供对应源代码。

能否商用

从 LICENSE 的自由软件条款看,许可证并未以“禁止商业使用”为基本条件,因此商业使用不能被简单认定为禁止。但商用部署、修改、再分发、提供网络服务时的源代码提供义务、版权声明和其他通知要求必须逐条核对完整 LICENSE。

分发与修改

如果组织向外部用户分发修改后的程序,或以网络服务形式向用户提供修改版本,应重点审查对应源代码、许可证文本、版权声明、修改说明和用户通知等要求。LICENSE 的完整法律文本优先于本文摘要;具体商业模式、闭源插件组合和托管服务方案应取得专业法律意见。

本文不对任何特定集成方式作合规结论。许可证适用范围、第三方依赖许可和商标使用边界,均应以仓库 LICENSE、项目声明及相关第三方许可文件为准。

局限性与已知限制

README 自身承认项目“至少目前”不声称在功能和设计上胜过 Notion,并表示当前重点不在单纯增加更多功能。这是项目维护者对定位和阶段重点的明确说明,不应被改写成成熟度或性能结论。

  • 给定资料没有版本号,无法据此判断某项功能属于哪个发布版本。
  • 没有性能基准、并发数据、数据规模上限或资源消耗数据。
  • 没有完整的 API、插件机制、同步协议和存储格式说明。
  • 没有列出各操作系统的最低版本及功能差异。
  • 没有提供默认端口、环境变量和生产配置样例。
  • AI 的模型、供应商、数据处理边界和离线能力未在资料中说明。

这些“未提供”表示当前资料的证据边界,而不是断言产品一定缺少相关能力。进行采购、迁移或生产部署时,应以实际版本文档和验收测试补足证据。

适合谁

以下信号同时满足较多时,AppFlowy 值得进入技术评估清单;最终结论仍应以实际功能验证和许可证审查为准。

  • 团队需要把项目、知识文档和团队协作放在同一工作区,而不是分别维护多个工具。
  • 组织希望获得 macOS、Windows、Linux 以及移动端入口,并愿意验证不同平台的实际差异。
  • 团队具备 Flutter、Dart 或 Rust 开发能力,需要基于单一跨平台代码库做定制。
  • 组织希望研究自托管方案,并能承担数据备份、升级、权限和故障恢复责任。
  • 使用场景能够接受 AGPL-3.0 的修改、分发和网络服务合规要求。

不适合谁

以下信号表明需要谨慎评估,或应先选择已满足组织要求的现有方案,而不是直接迁移生产数据。

  • 团队要求官方资料明确承诺固定 SLA、并发上限、性能指标或长期支持周期,而当前资料没有这些数据。
  • 组织必须使用特定身份系统、审计系统、数据驻留区域或行业认证,但官方资料未确认对应集成与认证。
  • 项目需要闭源分发或网络服务,却无法接受 AGPL-3.0 对源代码提供和许可证通知带来的审查成本。
  • 团队没有能力维护自托管环境,却又不能接受使用官方或第三方分发渠道进行客户端安装。
  • 业务依赖已经明确的 AI 模型、API、离线推理或数据不出网策略,而项目资料没有给出这些能力的确认信息。

在场景 A 需要开源、可修改并能自行控制部署边界时,可评估 AppFlowy;在场景 B 需要资料中未确认的固定 SLA、认证或专有集成时,应保留现有方案或继续验证,而不能仅凭项目定位做替换决定。

常见问题与排查(FAQ / Troubleshooting)

AppFlowy 的默认端口是多少

给定 README 和 LICENSE 没有列出默认端口。官方仓库未提供该信息,建议以最新自托管文档和实际部署文件为准。

项目是否完全离线可用

资料没有给出完整的离线能力说明。虽然项目强调用户对数据的控制权,并提供桌面端和移动端入口,但这不足以证明同步、AI、登录或所有编辑能力都可以在无网络条件下运行。

Android 支持哪些设备

README 写明 Android 10 或以上,并明确指出 ARMv7 不受支持。其他架构、厂商系统和具体设备兼容性未在给定资料中说明。

如何从源码启动

README 要求查看 OS-specific development instructions,并链接到源码文档,但给定资料没有包含具体启动命令、版本号或构建参数。应先完成 Flutter 和 Rust 环境准备,再按照对应操作系统的官方文档执行。

源码构建失败如何排查

  1. 确认源码来自仓库的 main 分支,并记录提交状态。
  2. 确认本机已按官方文档准备 Flutter 和 Rust 环境。
  3. 核对操作系统和目标平台是否属于 README 列出的范围。
  4. 保留完整错误输出,不自行替换未在资料中声明的版本或依赖。
  5. 若问题仍可复现,使用仓库提供的 Bug 报告入口提交平台、环境和复现步骤。

如何添加翻译

README 指出翻译 JSON 文件位于 /frontend/resources/translations,可手工编辑、使用 Inlang 在线编辑器,或执行 npx inlang machine translate。提交前应检查 JSON 格式和翻译内容,具体贡献流程以官方贡献文档为准。

如何报告功能需求

README 提供了功能请求 Issue 模板和缺陷报告模板。功能需求应使用功能请求入口,已确认的错误应使用 Bug 报告入口;仓库资料没有承诺所有请求的处理时限或是否一定纳入路线图。

项目地址与资源

以下链接均来自给定仓库资料,用于源码、安装、文档、路线图和社区协作。外部链接的可用性、页面内容和项目统计会随时间变化。