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

项目速览(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 提供了源码构建文档,但没有在给定内容中内嵌完整命令。
桌面端安装路径
- 打开项目的 Releases 页面。
- 根据操作系统选择 macOS、Windows 或 Linux 安装包。
- 完成本地安装后启动 AppFlowy,并根据客户端界面验证工作区、项目或文档功能。
README 还列出 FlatHub、Snapcraft 和 Sourceforge 作为其他分发渠道。不同渠道的包格式、签名验证步骤和更新策略未在资料中说明,安装前应核对发布页面提供的校验与发行说明。
源码获取与校验示例
下面的示例只执行源码获取和分支状态验证,使用默认分支 main。它是基于仓库地址和 README 所给开发入口整理的本地准备步骤,不包含官方资料未提供的 Flutter 或 Rust 启动命令。
git clone https://github.com/AppFlowy-IO/AppFlowy.git
cd AppFlowy
git checkout main
git status命令执行后,git status 用于确认当前工作树状态;如果本地尚未安装 Git,官方仓库资料未给出安装命令。源码安装、编译和运行必须继续按照官方“From Source”文档执行,本文不补写缺失的版本参数或平台命令。
最小可运行闭环的边界
从给定资料可以安全复现的最小闭环是“获取源码—切换默认分支—验证工作树”。“启动 AppFlowy 应用”所需的具体命令、构建目标和运行参数未出现在资料中,官方仓库未提供该信息,建议以最新 README 和源码开发文档为准。
# 在已完成官方源码环境配置的本地测试环境中执行
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 版本、依赖安装方式或自动翻译的权限要求,运行前应按官方翻译说明确认环境。
# 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 环境准备,再按照对应操作系统的官方文档执行。
源码构建失败如何排查
- 确认源码来自仓库的
main分支,并记录提交状态。 - 确认本机已按官方文档准备 Flutter 和 Rust 环境。
- 核对操作系统和目标平台是否属于 README 列出的范围。
- 保留完整错误输出,不自行替换未在资料中声明的版本或依赖。
- 若问题仍可复现,使用仓库提供的 Bug 报告入口提交平台、环境和复现步骤。
如何添加翻译
README 指出翻译 JSON 文件位于 /frontend/resources/translations,可手工编辑、使用 Inlang 在线编辑器,或执行 npx inlang machine translate。提交前应检查 JSON 格式和翻译内容,具体贡献流程以官方贡献文档为准。
如何报告功能需求
README 提供了功能请求 Issue 模板和缺陷报告模板。功能需求应使用功能请求入口,已确认的错误应使用 Bug 报告入口;仓库资料没有承诺所有请求的处理时限或是否一定纳入路线图。
项目地址与资源
以下链接均来自给定仓库资料,用于源码、安装、文档、路线图和社区协作。外部链接的可用性、页面内容和项目统计会随时间变化。



