关于 Folio
Folio 是面向团队的自托管 Wiki,内容以 Git 仓库中的文件保存,支持浏览器协作编辑,也允许 AI Agent 读写页面。它将文档、数据表和白板放在同一页面树中,并提供 MCP 服务。
主要功能
- 01Git 文件作为 Wiki 内容与历史
- 02实时协作编辑和离线写作
- 03文档、数据表与白板同树管理
- 04搜索、访问权限与版本历史
- 05向 MCP 客户端开放页面读写
适用场景
- 01在浏览器与 IDE 中共同维护文档
- 02将产品仓库的 docs/ 用作 Wiki
- 03让 AI Agent 通过 MCP 更新发布说明
- 04将团队空间发布为只读网站
MCP 相关
Folio 提供 MCP 服务,MCP 客户端可按个人访问令牌或 OAuth 连接。客户端以令牌所有者的权限读取和编辑页面。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://demo.foliowiki.online/mcpclaude mcp add --transport http evergreen-it-dev-folio https://demo.foliowiki.online/mcp{"mcpServers":{"evergreen-it-dev-folio":{"type":"http","url":"https://demo.foliowiki.online/mcp"}}}在 Cursor 中打开{"servers":{"evergreen-it-dev-folio":{"type":"http","url":"https://demo.foliowiki.online/mcp"}}}在 VS Code 中打开{"mcpServers":{"evergreen-it-dev-folio":{"type":"http","url":"https://demo.foliowiki.online/mcp"}}}{"mcpServers":{"evergreen-it-dev-folio":{"serverUrl":"https://demo.foliowiki.online/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://demo.foliowiki.online/mcphttps://{folio_host}/mcp需要授权工具
详细介绍
Folio
一款氛围编程打造的开源替代方案,可取代 Notion 和 Confluence。 团队的 Wiki 存放在 Git 中。大家可以在浏览器中实时协作编辑。AI Agent 可以读取和编辑相同的页面。只需一条命令,即可自行运行。
网站:https://foliowiki.online · 曾获 Self-Host Weekly(2026 年 10 月 9 日)专题介绍
👉 试用在线演示
无需安装或注册:打开页面,然后在登录屏幕上选择 Sam。所有人共用一个登录账号,数据每 24 小时重置一次;请勿输入个人数据或 API 密钥。

Folio 的初衷是为真实团队取代 Confluence 和 Notion,而且它由 AI Agent 在开源协作中构建。Agent 参考的计划、规格说明和交接记录都在这个代码仓库中,与它们编写的代码放在一起。 下文将详细介绍。
git clone https://github.com/evergreen-it-dev/folio.git
cd folio
docker compose up -d
打开 http://localhost:4870,创建第一个账号,然后开始撰写。
还没准备好安装?不妨先试用在线演示。
为什么选择 Folio
- 内容由你掌控。 每个页面都是 Git 仓库中的普通文件,仓库由你控制。无需导出,也没有厂商锁定:即使明天停止使用 Folio,文件仍会保留,可在任何编辑器中阅读。
- 具备 Wiki 应有的体验。 实时编辑、页面树、搜索、访问权限、历史记录、共享——离线时也能正常使用。
- Agent 是一等用户。 不只是附加在一旁的聊天机器人:内置助手、每个空间都可使用你自己的 Agent、完整的 MCP 服务,以及专为 Agent 打造的 Markdown 链接。
- 文档、表格、白板、图表和文件都在同一棵树中。 路线图表格与规格说明、架构白板、已签名的 PDF 并列存放。Obsidian 画布和数据库也能作为页面打开,Agent 创建的交互式作品同样如此。
- 查看页面之间的关联。 整个空间的关系图和每个页面旁的局部关系图,均根据团队已有的链接生成,并且只显示读者有权打开的内容。
- 为团队打造。 支持群组、使用 OpenID Connect 和 SAML 2.0 的单点登录、SCIM 配置、审计日志,以及可由子页面继承的页面限制。
- 发布适合公开的内容。 将一个空间转为只读网站,支持搜索和可选的访客“询问 AI”功能;网站可托管在实例路径下、子域名上或你自己的域名上。
- 一条命令即可运行。 使用 Docker,首次启动无需任何配置。
实际演示
简短演示,没有幻灯片。视频中的语音由合成技术生成。
- 存储在 Git 中的团队 Wiki — 在浏览器中编辑页面,点击 Sync,即会生成真正的 Git 提交;一位队友在终端中编辑,改动随即显示在页面上(0:37)
- AI Agent 通过 MCP 更新你的 Wiki — 只需发出一个请求:Agent 阅读发布流程、撰写发布说明,并添加一行路线图(0:53)
- 使用 Folio AI 为销售代表提供入职培训 — 根据团队自己的页面提供答案及来源、通过表单进行每周检查,并将结果显示在表格中(1:22)
- 存储在 Git 中的白板 — 一起绘图,将白板嵌入文档,并在历史记录中保留每个版本(0:51)
- 不用 IDE,将文档作为代码管理 — 产品仓库中的
docs/文件夹变成一个空间;技术文档撰写者手动编辑并使用 Folio AI,Agent 通过 MCP 添加发布记录,开发者则通过git pull查看提交(1:36) - 将空间发布为公开网站,并为访客提供 Ask AI — 只需一项设置,就能将空间变成只读网站,可通过路径、子域名或自有域名访问;访客可以搜索、下载页面并向 Folio AI 提问(1:21)
- 编辑器与 Mermaid 图表 — 实时 Markdown、同一页面的源代码视图,以及可通过可视化方式或代码编辑的图表(1:04)
- 你的 Wiki AI 助手有在帮忙吗?Folio AI 分析 — 实例管理员可以查看评分后的对话和未解答的问题,补上缺失的页面,之后同一个问题就会得到带有来源的答案(1:21)
- 将 Claude artifacts 发布到团队 Wiki — 只需对 Claude Code 随口说一句:仪表板就会变成 Wiki 中的交互式页面,重新加载后仍会保留读者的筛选条件,作为文件夹存储在 Git 中,并可通过分享链接供访客访问(1:33)
贯彻始终的 Git 优先
大多数 Wiki 将内容保存在数据库中,并提供 Git 导出功能。Folio 则恰恰相反:Git 仓库就是 Wiki。数据库保存索引、访问权限和实时编辑状态,而绝不会是你文字的唯一副本。
下面是一个空间在磁盘上的样子:
acme-handbook/
├── index.md
├── welcome-to-acme.md
├── engineering.md
├── engineering/
│ ├── onboarding-checklist.md
│ ├── release-process.md
│ ├── incident-runbook.md
│ └── how-folio-fits-together.excalidraw.svg ← a whiteboard
├── meeting-notes.md
├── meeting-notes/
│ └── product-sync-september-28.md
├── roadmap.table.md ← a data table
├── onboarding-feedback.table.md
├── onboarding-feedback/
│ └── onboarding-feedback.form.md ← a form
├── security-policy.md
├── security-policy.pdf ← files are pages too
└── security-policy.docx
这是它的历史记录——普通的提交,并以变更者作为作者:
$ git log --format='%h %an %s'
be529a0 Maria Chen folio:update
aeac3bb Maria Chen folio:update
6c2c061 Sam Rivera folio:update
026d9ec Maria Chen folio:update
...
4e9ec49 Folio init: create space
这能带给你:
- 随处编辑。 在浏览器或 IDE 中修改页面并推送——两者都会进入同一段历史记录。页面之间的链接是普通的相对 Markdown 链接,而非私有方言。
- 使用自己的仓库。 从空空间开始,克隆现有仓库,或稍后再连接仓库。多个空间可以共用一个仓库,各自位于不同文件夹中——这样文档就能紧挨着代码存放。
- 像审查代码一样审查。 合并请求、blame、差异比较和还原都适用于你的 Wiki,因为它 就是 一个仓库。
- 适合文档即代码工作流。 Docusaurus、MkDocs、Hugo 或 Jekyll 写入的 Front Matter 键会逐字节保留;绑定到
docs/等文件夹的空间不会将 ID 写入文件(覆盖整个仓库的空间则会);图片可以与页面一起存储在仓库中,并通过相对路径链接,因此 GitHub 可以显示这些图片;移动页面时,会在一次提交中重写指向该页面的链接以及页面内部的链接。完整示例见不使用 IDE 的文档即代码。 - 不会悄无声息地丢失任何内容。 同步状态始终清晰可见——干净、领先、落后或冲突——而且会列出整个空间中的冲突。“采用 Git 中的版本”会将空间重置为远程分支,并先将原有内容保存到备份分支。
- 格式易读。 白板是可在任何浏览器中打开的 SVG,同时保留可编辑场景。数据表是一个 Markdown 文件——列类型和已保存视图放在 Front Matter 中,行则以表格形式呈现,方便阅读:
# Roadmap
| Initiative | Status | Owner | Team | Due | Effort, days | Urgent | id |
| --- | --- | --- | --- | --- | ---: | --- | --- |
| Single sign-on for enterprise plans | In progress | @alex | Engineering | 2026-10-09 | 8 | [x] | 1787nfg3 |
| New onboarding flow | In review | @sam | Design | 2026-10-02 | 5 | [ ] | b227mwwh |
| Pricing page redesign | Planned | @sam | Design | 2026-10-16 | 3 | [ ] | ndxvtpa3 |

不用 IDE,也能像编写代码一样管理文档
如果产品的文档位于代码仓库的 docs/ 文件夹中,Folio 可以将该文件夹显示为一个空间。作者在浏览器中编辑,开发者继续使用自己的 IDE 并查看常规提交,Agent 也能在同一批页面上工作。
- 连接文件夹,而不是整个仓库。 使用仓库 URL 创建空间,选择分支,并将
docs/选为根路径。只有该文件夹会成为空间:Markdown 文件是页面;源代码和其他文件不是页面,也绝不会被修改。Folio 会在自己的索引中保存页面 ID,唯一新增的文件是隐藏文件docs/.<slug>.folio。 - 作者在浏览器中编辑。 可以阅读、使用 Live edit 或 Source(纯 Markdown)编辑、多人协作编辑同一页面,或在侧边栏中向 Folio AI 提出请求。Folio 会立即将每次编辑写入文件,并在静默约 90 秒后提交;点击 Sync 时则会立即提交到该空间所跟随的分支。
- 开发者能看到署名为作者的提交。 使用
git pull、git log和git blame时,编辑者会显示为作者;Folio 是提交者,提交消息为folio:update。一个时间段内只会记录最后一位编辑者为作者。开发者自己的提交会通过获取操作回到空间,频率约为每三分钟一次,也会在每次 Sync 时执行。 - Agent 通过 MCP 更新页面。 Claude Code、Cursor 或任何 MCP 客户端都可以使用个人访问令牌或通过 OAuth 连接,以令牌所有者的权限(不多于这些权限)读取和编辑同一批页面,提交也会署上该用户的名字。
- 空间可以变成文档门户。 将空间设为公开后,同一批页面会以只读网站的形式提供,并带有搜索功能;如果启用,还会为访客提供下载和“Ask AI”。参见将空间发布为网站。
适用限制:一个空间只能跟随一个分支,且 Folio 会直接推送到该分支,不使用拉取请求(如果希望在合并到 main 之前进行审查,可让空间指向 docs 分支;如果分支受保护,推送会失败,空间会显示 git 的消息)。如果空间包含整个仓库且没有根路径,每个页面都会写入一个 id,仓库根目录中也会新增一个小文件,除非管理员勾选“Light footprint”(系统会自动检测包含 .obsidian/ 的仓库)。打开页面不会写入任何内容:只有有人编辑时,文件才会发生变化。页面标题取自第一个 # 标题,其次是 front matter 中的 title:,最后是文件名;如果页面没有标题,Folio 不会添加标题。其他工具写入 front matter 的 id(Docusaurus 和 Jest 使用 id: intro)不会导致页面在空间之间移动。MDX 文件(.mdx)不是页面;扫描日志会记录跳过的文件数量。粘贴的图片会保留在 Folio 的资源存储中,直到空间管理员启用“Store images in the repository”。另请参阅目前尚不支持的功能。
操作指南见博文不用 IDE,也能像编写代码一样管理文档:在浏览器中编辑仓库文档和视频。
协同编写
多人可以同时编辑文档、数据表和白板。你可以看到谁正在编辑页面,以及他们的光标位置;更改会随着输入即时显示。页面停止编辑后,Folio 会提交更改,并将编辑者记为作者。

在 Live edit 和 Reading 之间切换时,你输入的内容不会丢失:浏览器会保留本地副本,直到服务器确认已收到你的更改。如果服务器无法确认,页眉会显示 Not saved,关闭标签页时也会先询问你。
并排比较
将同一页面的两种译文、本季度计划与上季度计划、规范与后续应遵循的草稿放在一起:并排查看最多五个页面,或同一页面的旧版本。

- 先收集,再打开。 侧边栏菜单(只读用户也能使用)、页面标题栏和历史记录面板中都有“并排比较”选项。窗口底部的标签会保存列表,你可以添加来自任何可打开空间的页面。
- 实时列。 当前页面就是页面本身,使用相同的编辑器并支持实时协作:在某一列中输入,页面上的所有人都能看到。
- 将版本与页面并排显示。 在页面历史记录中选择“与当前版本并排比较”,即可在实时页面旁显示一个只读版本。“突出显示更改”会以绿色标记新增或更改的内容,以红色标记相对于最左侧列删除的内容;同步滚动会让各列保持同步。

- 分享链接。 “复制链接”会复制一个仅包含页面 ID 和版本号的地址;打开链接的人会根据自己的访问权限查看各列。
突出显示功能会逐块比较文本。请参阅 docs/LIMITATIONS.md。
离线使用
无论是在火车上、飞机上,还是酒店 Wi-Fi 信号不佳时,都能继续写作。
- 已打开的页面和白板在断网时仍可编辑。
- 离线时可以创建新页面和白板,它们会立即显示在树形结构中。
- 所有内容都会保存在设备上,网络恢复后会自动发送到服务器——地址不变,也不会产生重复内容。
- 切换页面或关闭标签页也不会丢失内容。
- 标题栏中的指示器会显示等待发送的内容。

数据表格、表单和文件上传需要联网。
文档
无需费心考虑 Markdown 的 Markdown 编辑器。提供三种模式——阅读、实时编辑和源码——让写作者和工程师都能轻松使用。

- 提示框、清单、带合并单元格和颜色的表格、代码块、可折叠区域、高亮显示、
++underline++,以及类似:status[Done]{color=green}的彩色状态标签。 - 从 Excel 和 Google Docs 粘贴内容时会保留表格和格式;从实时编辑模式复制内容也会保留格式。
- 输入
[[可链接页面,输入@可提及某人,输入/可插入任何内容。 ::pagetree可将子页面的实时树形结构直接插入文本。- 大纲和备注面板、反向链接、页面图标和封面、带悬停卡片的词汇表词条。
- 自定义模板:
_templates/中的任何页面(包括带子页面的页面)都可作为模板,并可设置名称和说明(“设为模板”“根据模板创建…”);新空间默认包含三个模板。 - 浅色和深色主题,可跟随系统设置或手动选择。

绘制图表,无需编写代码
Mermaid 图表配有可视化编辑器。你可以在画布上构建图表,由 Folio 为你生成 Mermaid 代码;也可以直接编写代码并查看画布同步变化。两边始终保持同步。

- 点击即可构建。 点击节点上的加号可添加相连节点,点击连线上的加号可在连线中插入节点,拖动控制柄可从一个节点向另一个节点创建连线。
- 九种基于模板的图表类型:流程图、时序图、类图、状态图、ER 图、甘特图、时间线、饼图、思维导图。
- 代码与画布并排显示,需要更多空间时可全屏;语法错误时会显示易读的提示,而不是损坏的图片。
- 仍然是纯 Markdown。 图表以普通的
mermaid代码块形式存储,因此 GitHub 和 GitLab 也能渲染。
数据表格
属于 wiki 的电子表格:包含类型化列、已保存的视图、筛选和排序——一个小型数据库,可从任意页面链接,也可供任何 Agent 查询。

- 列类型:文本、长文本、数字、日期、复选框、选择、状态、用户、链接。
- 视图以标签页呈现,每个视图都有自己的列、顺序、宽度、多列排序和
and/or筛选条件——包括“我”“今天”“本周”。 - 多人实时协同编辑,并作为一个易读文件存储在 Git 中。
- 支持导入和导出;每个表格最多 20,000 行。
表单可将表格变成问卷:每个回答都会成为一行。表单可以公开,让人们无需账户也能作答。

白板
wiki 内的 Excalidraw 白板——用于架构图、流程图和研讨会。多人实时协同绘制,并保存为可在任何地方渲染的 SVG 文件。

上面的白板并非手工绘制。Agent 根据对方框和箭头的简短描述,通过 MCP 创建了它;之后,人们可以像编辑其他白板一样继续编辑。
反应。 在编辑模式下选择一个形状,其选框角落会出现一个小按钮:选择表情符号(✅ ❌ 🔧,分别表示是、否和进行中,或 👍 ❤️ 😂 🎉 🤔 👀 🔥 👏),形状下方会显示一个计数标签。 点击标签即可添加或移除自己的反应;将指针悬停在标签上可查看谁做出了反应。 白板上的所有人都能实时看到反应;只有查看权限的人(或处于查看模式的人)也能看到反应,但不能点击。反应保存在白板的实时状态中,而非其 SVG 文件中。
图谱
页面之间的每个链接都已在索引中,因此 Folio 可以将其绘制出来。在标签树下打开 图谱,空间便会以地图形式呈现:页面是节点,链接是边,最大的枢纽会显示名称。

- 标签随缩放变化。 在概览视图中,只有顶级枢纽会显示名称;放大后,更多标题会逐渐显现,并且不会相互重叠。悬停或选中的页面及其相邻页面始终会显示标签。
- 包含树结构。 “树结构”切换开关会添加表示页面树的虚线,因此嵌套空间不会变成一团互不相连的点。你可以打开的其他空间中的页面也会显示,并在名称中标明所属空间,且使用独立的颜色。
- 每份文档旁都有本地图谱。 右侧面板会显示页面及其一到三层链接范围内的邻近页面,可选择入向、出向或双向;点击节点可打开页面,或将其展开为全尺寸图谱。

- 搜索语法中的筛选条件(
tag:、in:、kind:、prop:)、按顶级文件夹、页面类型、标签或自定义查询进行的颜色分组,以及布局作用力,都是图谱的设置,并按空间记忆。 - 查询会应用访问权限。 你无法打开的页面绝不会成为节点、幽灵节点或边。图谱由服务器根据页面索引构建(约 150 ms 可处理 5,000 个页面),绘图代码仅在打开图谱时加载。
- Agent 也可以读取图谱。 MCP 工具
get_graph会返回相同的图谱,内置助手也会使用它。
限制(10,000 个页面;公共站点不支持图谱)详见 docs/LIMITATIONS.md。
Obsidian 画布和基础视图
Obsidian 知识库不只有 Markdown,Folio 现在还可以将另外两种文件类型作为页面打开。

- 画布(
.canvas)。 文本卡片以 Markdown 呈现;笔记卡片显示笔记的开头;还有图片、网页卡片、分组,以及带箭头和颜色的连线,并支持平移、缩放和适应视图。指向你可能无权打开的页面的卡片会显示“无权访问”。“转换为 Folio 白板”会在一次提交中创建一块新的可编辑白板,同时保留原画布不变。 - 基础视图(
.base)。 对某个空间中的页面执行已保存查询,并以表格、卡片或列表形式显示,支持分组、排序、公式和列汇总。切换“编辑”开关可通过修改页面属性来就地更改单元格;可视化编辑器则可修改视图、筛选条件和公式,而不影响文件的其他内容。


这两种文件都会跟随重命名操作:移动笔记时,指向它的画布卡片和维基链接会在同一次提交中一并重写。基础视图由我们自行实现的安全求值器运行(不使用 eval);不支持 kanban 和 map 视图,也不支持插件函数。详情和限制:docs/LIMITATIONS.md。
构件:发布 Claude 构件和 Cursor 画布
AI Agent 构建了一个仪表盘、计算器或小工具;通常它只存在于聊天中,聊天结束后也就消失了。在 Folio 中,它会成为一个页面:显示在目录树和搜索结果中,纳入 Git 管理,并与其他内容遵循相同的访问权限。

- 可交互,而非截图。 页面上的筛选器、标签页、图表和表单均可正常使用。页面在沙盒框架中运行,无法访问你的 Folio 会话或 API,并且只会从少数 CDN(cdnjs、jsDelivr、unpkg、esm.sh、Tailwind、jQuery、Google Fonts)加载脚本和字体。
- 状态会保留。
window.storage(Claude 构件使用的 API)和localStorage均可正常使用,并按读者分别保存:已登录的用户数据保存在数据库中,访客数据保存在浏览器中。 - 从 Agent 发布。 MCP 工具
publish_artifact可创建构件页面或替换现有页面,并将额外文件和原始源文件(JSX 或 TSX)保存在其旁边。在连接了 Folio 的 Claude 或 Cursor 中,说“将此构件发布到 Folio”即可。 - 也可以手动导入。 “+”菜单中的“构件…”可导入
.html、.zip、.svg或.md文件的链接、电脑上的文件,或粘贴的 HTML。页面上提供“显示源代码”和“下载”;替换构件时会保留其链接和在目录树中的位置。 - 文件纳入 Git 管理。 构件在空间的代码仓库中是一个
<name>.artifact/文件夹,包含index.html、artifact.yaml清单、源文件和资源文件。移动、复制、移至回收站、分享链接、公开站点和历史记录的操作方式都与其他页面相同。
简短演示:将 Claude 构件发布到团队 wiki(1:33)。
Folio 负责显示完成的页面;它本身不会构建 React 或 TSX,因此 Agent 需要发送可直接运行的 HTML;构件中也无法调用 Claude、你自己的 API 或连接器。claude.ai 或 Cursor 的分享链接不会被下载:请让 Agent 通过 MCP 发布。另请参阅 docs/LIMITATIONS.md。
属性和共享计时器
每种页面都支持属性。 页面上方的细窄“属性”栏现在也会显示在数据表、表单、看板和文件上,而不只是文档。看板的属性保存在 Git 中与看板相邻的独立小文件里,并且与其他属性一样,可用于搜索(tag:、prop:)、标签树和 MCP。

属于页面的计时器。 标题栏中的时钟图标可启动倒计时(1、3、5 或 10 分钟,也可自定义),所有打开该页面的人都会同时看到倒计时结束并听到提示音,适合工作坊或回顾会议。编辑者可以控制计时器,读者可以查看。

文档预览
PDF、Word、Excel 和 PowerPoint 文件也可以作为页面。将文件拖到树中, 即可在 Folio 内直接打开——无需下载、无需打开其他应用,也无需在服务器上转换。


- PDF 使用浏览器自带的查看器:可查看缩略图、缩放、搜索和打印。
- Word、Excel 和 PowerPoint 在浏览器中渲染。
- 文件存放在空间的 Git 仓库中,与相关页面并列,位于同一棵树中,并遵循相同的访问权限。
- 单击即可在新标签页中打开或下载。
- Folio 绝不会改写你的文件:上传的内容与存储的内容逐字节一致。
- 文件的新版本,页面不变。 使用树菜单中的“替换为新版本……”、页面标题栏中的按钮,或将文件拖到打开的页面上。页面会保留其链接、在树中的位置和访问权限;新文件甚至可以是另一种类型(例如将演示文稿替换为 PDF),其他页面中指向该文件的链接也会随之更新。系统会显示提示消息,供你撤销操作。
- 保留每个版本。 每次替换都会创建独立提交。页面历史记录会列出各个版本及其文件名和大小,并允许你下载任意版本(或预览 PDF)并恢复它;恢复操作会新增一条提交,而不会改写任何内容。
这些文件仅供查看:不能在 Folio 中编辑,搜索可通过标题找到它们。
Folio AI
侧边栏中的助手,与你的 Wiki 协同工作,而不是与它并列。

截图中,用户要求助手向路线图添加一项计划,并指出哪些计划紧急。它读取了表格的架构,插入了新行——该行显示在左侧的表格中——并根据数据作答。
- 提问——只读。可在你有权访问的页面中查找、总结、比较和解释。
- Agent——读取和写入。可起草页面、更新表格、绘制看板、创建表单、重组分区——但仅限你的权限范围,绝不越权。
- 运行在服务器上。 关闭浏览器后,工作仍会继续;回来后即可从中断处接着进行。
- 你可以看到它在做什么。 状态栏会显示模型的思考过程及令牌计数器;在它撰写较长的答案或页面时,还会显示已用时间计数器,以及它正在调用的工具的实际名称;实时回复会保留段落和链接。
- 与其他人使用相同的工具。 助手通过外部 Agent 经 MCP 使用的同一套工具工作——没有第二套较弱的实现;在“提问”模式下,写入工具会在服务器上关闭,而不只是隐藏起来。
它可以创建表单和表格,不只是文本。 要求它“创建一个午餐投票表单,包含必填姓名、菜系,以及一个关于周五是否参加的是/否问题”,Agent 就会创建表单和用于存放答复的表格,步骤与表单编辑器相同。

助手真的有帮助吗?
Folio 会收集关于回答质量的三项反馈,无需任何人填写表单:
- 对回答点 👍 / 👎。 每条已保存的助手回答都可以评价为“回答有帮助”或“没有帮助”。每条回答只能评价一次,但你可以更改或删除评价。
- 简短调查。 每次对话中每收到第三条回答,面板都会询问“助手解决你的问题了吗?”——可选“是”“部分解决”“没有”或“暂时不”,并可附上评论。
- 没有答案的问题。 如果页面中没有答案,或者助手不确定答案,它会记录问题和缺少的信息——简要说明,并附上它确实读过的页面链接——然后仍然直接回答用户。
实例管理员可以在一个页面上查看所有这些信息:助手分析(/admin/assistant,可从账户菜单进入),其中包含对话及其评价和调查结果;第二个标签页“没有答案的问题”则列出文档中缺少的内容,方便直接查阅——先显示用户自己的原话,下方是助手的转述,并附上助手读过的页面链接。两个标签页都可以按空间、用户和日期筛选。空间管理员看到的页面内容相同,但仅限其管理的空间:只显示在这些空间中进行的对话,以及这些对话中的消息。管理员可以打开对话阅读;对话页面会列出谁在何时打开过对话,每次打开都会写入审计日志。其他人看不到此页面。

每个空间都有自己的 Agent:.agent
每个空间都有一个 .agent 文件夹。你放在其中的内容都会成为助手在该空间中的指令——而且这些内容是普通的 Folio 页面,不是配置文件。
- 通过编写页面来构建 Agent。 编写它的角色、语气、术语表、必须遵循的规则、应使用的模板,以及应引导用户完成的流程。
- 每个团队都可以有不同的 Agent。 支持空间中的 Agent 会像支持人员一样回答。工程空间中的 Agent 了解发布流程。法务空间中的 Agent 绝不擅自发挥。同一个 Folio,不同的 Agent。
- 像其他内容一样进行版本管理。 这些指令存储在 Git 中:你可以查看是谁更改了 Agent 的行为、审查更改并回滚。
- 由管理员负责。 只有空间管理员能查看和编辑
.agent;其他人只会获得更好的助手。
这些指令适用于该空间中的每次运行,无论是 Ask 模式还是 Agent 模式。
使用你自己的密钥
Folio 不转售 AI 服务,也不加价。助手使用 Cursor 密钥运行:可以是你自己的密钥,也可以是管理员为某个空间或整个实例提供的密钥。密钥由所有者付费。
| 提供商 | 状态 |
|---|---|
| Cursor | 可用 — 每个人都可以连接自己的密钥,也可以由管理员为某个空间或整个实例提供密钥 |
| 其他 | 暂不支持 |
由谁付费。 运行会使用第一个可用的密钥:先是用户自己的密钥,然后是空间密钥,再然后是实例密钥,最后是服务器环境中的 CURSOR_API_KEY。空间管理员可以为某个空间设置密钥(空间菜单中的“Folio AI 密钥”);实例管理员可以设置实例密钥并关闭个人密钥,这样所有人都会使用共享密钥。共享密钥会加密存储,保存后不会再次显示;每次更改都会记录在审计日志中。公开网站的访客没有自己的密钥,因此他们的问题会依次使用空间密钥、实例密钥或服务器环境中的密钥。
没有密钥时,Folio 的其他功能仍会照常运行。
专为 Agent 打造
MCP 服务。 /mcp 提供 45 个工具:列出和搜索空间、读取和写入页面、构建表单、编辑数据表列和视图、将画布转换为白板、读取页面大纲、标签、属性和链接、列出空间的标签和属性键、重命名标签、设置页面属性、查找未解析的链接和孤立页面、读取链接图、查询、创建和编辑 Obsidian 基础、创建和编辑白板、发布交互式产物、列出模板并基于模板创建页面、查询和更新数据表、读取历史记录。
使用个人访问令牌连接,也可通过 OAuth 2.1 从运行在供应商云端的客户端(claude.ai、Claude Desktop、ChatGPT)连接。search 和 fetch 可用于 ChatGPT 深度研究。
claude mcp add folio --transport http https://wiki.example.com/mcp \
--header "Authorization: Bearer folio_pat_…"
开箱即用的配置。 Claude Code 的文件(一个插件和一个技能)、Cursor、VS Code、Codex、n8n(两个可导入的工作流)、Open WebUI、ChatGPT 和 Claude 的配置都位于 integrations/ 中:包含带占位符的配置、Agent 规则和分步说明。
供 Agent 使用的 Markdown。 任意页面(也可包含其子页面)都能通过一个链接返回简洁的 Markdown。无需抓取、无需 HTML,也无需登录流程:
curl https://wiki.example.com/share/<token>.md

提供 Agent 和用户所需的导出格式:Markdown、YAML、PDF、DOCX,或整个空间的 zip 文件。
对于 claude.ai 或 ChatGPT,将 https://wiki.example.com/mcp 添加为自定义连接器,登录 Folio,并在授权页面上允许 read 或 read + write。连接器将以你的权限操作,所做的写入会以你的名义保存到 Git。步骤:docs/MCP.md。
安全设计。 令牌或 OAuth 授权的权限永远不会超过其所有者;read 令牌无法写入;两者都无法执行管理操作。详情:docs/MCP.md。
从 Confluence 迁移
将 Confluence 页面或整棵页面树交给 Folio,它就会将页面转换为 Markdown 并导入,同时保留图片、代码、复选清单,并将面板转换为提示框。页面可来自 Confluence Cloud 或本地部署;Confluence Cloud 中的白板会转换为 Excalidraw 白板。
请先运行测试导入:并非所有宏都有对应的替代项。 尚未支持的内容列出了相关情况,内容如实说明。
访问管理
谁能看到什么,都由一个地方决定,而且一目了然。

- 每个空间的角色:管理员、编辑者、查看者。
- 私密、开放或公开的空间。 私密空间仅对其成员可见。对实例开放的空间允许每位已登录用户读取,但仍需单独授予编辑权限。公开空间也可供互联网上的任何人作为网站阅读,参见 将空间发布为网站。
- 访问矩阵。 左侧列出人员,顶部列出空间,每个单元格显示一个角色。可以一次更改一个或多个单元格。
- 管理员不等于读者。 实例管理员可以管理人员和访问权限,但看不到自己并非成员的私密空间内容。他们可以授予自己访问权限——此操作会记入审计日志,并标记出来供所有人查看。
- 审计日志。 每次授予、撤销和可见性变更都会记录操作者和时间。实例管理员可以使用带筛选条件的页面并导出 CSV,参见群组与单点登录。
页面级访问权限。 任何页面的访问范围都可以比所属空间更窄:对所有成员开放、仅对你开放,或仅对获得查看或编辑权限的指定人员或群组开放。 限制会由子页面继承:限制父页面后,其下所有内容都会受到限制;子页面只能进一步收窄访问范围。页面访问权限对话框会显示是谁限制了页面,以及谁可以打开页面;侧边栏会用锁标记受限页面。

邀请人员加入
- 通过链接邀请,可预设空间和角色、设置过期日期及使用次数上限。
- 访问请求。 某人打开自己无权查看的空间时,可以申请访问;管理员会立即收到通知,并选择授予的角色。
- 登录可使用电子邮件和密码,也可通过你的身份提供商登录(见下文)。新用户会获得一个账户,但在有人授予访问权限前无法访问任何内容;除非你为其预设空间。
- 停用账户时不会删除该用户撰写的内容:其会话、个人令牌和已连接的应用会立即失效。
对外分享
- 为没有账户的人员创建分享链接:可设为查看或编辑权限,可分享单个页面或整个子树(不包括设置了独立访问限制的页面),并可随时撤销。已登录且本来就能打开该页面的读者会转到自己账户中的普通页面(
?as=guest可保留访客视图)。 - 无需账户即可提交回答的表单。
面向 Agent 和脚本
- 具有
read或write范围的个人访问令牌,或来自 claude.ai、Claude Desktop 或 ChatGPT 的 OAuth 连接(可在“已连接的应用”中移除)。令牌的权限不会超过其所有者,且令牌完全不能执行管理操作。 .agent文件夹仅对空间管理员可见。
在 Slack 和 Microsoft Teams 中
- 粘贴 Folio 链接后,会展开为一张卡片,显示页面标题、位置、开篇文字和标题;卡片根据分享者的访问权限生成。分享者无法打开的页面完全不会显示标题。设置。
群组和单点登录
将人员分组,让身份提供商为他们登录,并保持两者同步,无需任何人手动操作。



- 群组。 一组有名称的人员(Engineering、Support、Contractors),在空间中拥有角色,或在受限页面上获得授权。为群组设置一次角色;将人员移入或移出群组,就会更改他们在所有位置的访问权限。人员的角色取其个人角色和所属群组角色中的最高者。实例管理员创建群组,经理编辑成员名单,空间管理员为自己管理的空间授予群组角色。Access 页面上设有 Groups 选项卡,群组也会显示在矩阵、成员对话框、页面访问权限和邀请中。
- 使用 OpenID Connect 或 SAML 2.0 单点登录。 支持 Keycloak、Authentik、Microsoft Entra ID、Okta、Google Workspace 及其他提供商;可同时配置多个提供商,可在
/admin/auth中设置,也可通过环境变量配置;“Test connection”会显示提供商发送的内容。登录页面会先询问电子邮件,再将你的域名发送给对应的提供商。用户可以在首次登录时创建账户,并获得预设的空间;也可以设置为只有受邀用户才能登录。 - 设为必选。 为你的域名关闭密码登录;实例管理员仍可使用经过审计的紧急登录方式。
- 来自提供商的群组。 每次登录时,Folio 都会将人员加入提供商报告的 Folio 群组,并将其从提供商不再报告的群组中移除。手动添加的成员关系不会受到影响。
- SCIM 2.0。 Okta、Microsoft Entra ID、Keycloak(需使用插件)、OneLogin 和 JumpCloud 可以创建、更新和停用人员及群组。停用用户会立即结束其所有会话和令牌。
- 审计日志和会话。 实例管理员可使用带筛选器和 CSV 导出的审计日志页面;每个人都能查看自己已登录的设备并让其他设备退出登录,管理员则可以结束某个人的会话。
各提供商的设置说明见 docs/INSTALL.md;未涵盖的内容(LDAP、单点注销、加密的 SAML 断言)见 docs/LIMITATIONS.md。
将空间发布为网站
只需设置一个选项,就能将空间变为无需账号即可访问的只读网站。打开空间菜单,选择 发布为网站,并将空间设为公开。这是同一个空间,而不是副本:编辑页面后,网站上也会显示更改。登录用户读取公开空间的方式,与读取实例中任何开放空间的方式相同。常见用途包括:使用仓库中的 docs/ 文件夹搭建文档门户(参见用代码管理文档,无需 IDE)、公开手册和更新日志。
简短演示:将空间发布为公开网站,并为访客启用 Ask AI(1:21)。
网站外观保存在仓库中,而非数据库中。打开空间菜单,选择 网站和 PDF 设置…,即可在一个页面中编辑网站标题、描述、语言、图标、徽标和社交分享图片,以及网站样式表、PDF 页眉、页脚和打印样式。所有内容都会作为文件保存在空间内容根目录下的 .folio/ 文件夹中(site.json、site.css、export.css、pdf-header.html、pdf-footer.html 和 assets/),每次保存都会生成一个提交,因此也可以直接在 Git 中编辑这些文件。搜索引擎会获取每个页面的 <head>、robots.txt 和 sitemap.xml;发布对话框中还有“将此网站编入索引”开关和主地址设置。
| 地址 | 生效条件 |
|---|---|
https://wiki.example.com/public/<space> | 空间一经公开即可访问,无需设置。 |
https://<label>.sites.example.com | 操作者设置 PUBLIC_SITES_DOMAIN=sites.example.com,且空间管理员选定一个标签后即可使用。需要通配符 DNS、通配符证书,以及将这些主机路由到 Folio 的反向代理。 |
https://docs.example.com | 单个空间的自定义域名:将 CNAME 指向 Folio 所在主机,并配置反向代理将该主机路由到 Folio,同时为该域名配置证书。 |
- 访客可以访问的内容。 页面树、空间内搜索、文档、数据表(实时、只读)、白板图片、表单(仅查看)以及 PDF 和 Office 文件,并支持面包屑导航和手机布局。
- 下载为 Markdown、PDF 或 DOCX,可按空间启用。
- Ask Folio AI,可按空间启用:访客可以提问,助手仅在 Ask 模式下,基于该空间的公开页面作答,使用空间密钥或实例密钥。它无法更改任何内容,且会按地址和网站限制提问频率。
- 绝不会发布的内容。 单独设置了访问限制的页面、
.agent文件夹和模板。子页面会继承访问限制,因此锁定某个页面也会让其下的所有内容都不会显示在网站上。 - 谁可以发布。 空间管理员和实例管理员可通过浏览器操作。相关决策(谁可以访问网站、网站位置、下载、Folio AI 和索引设置)保存在数据库中,而非 Git 中;网站外观保存在仓库的
.folio/中,由空间管理员修改。在公开演示版中,Folio Handbook 已发布于 https://demo.foliowiki.online/public/folio-handbook;你可以在那里试用发布对话框(不支持子域名、自定义域名或 Ask),所有内容每天都会重置。 - 搜索引擎。 每个页面都有自己的标题、描述、Open Graph 标签和规范链接;在 front matter 中设置
unlisted: true的页面不会出现在站点地图中。公开演示版永远不会被编入索引。 - 尚不支持。 保存前无法预览 PDF;
site.css无法加载外部字体或图片(请将它们放入.folio/assets/);频率限制按服务器进程统计。
操作者为子域名和自定义域名所做的设置: docs/INSTALL.md。限制: docs/LIMITATIONS.md。
运行
git clone https://github.com/evergreen-it-dev/folio.git
cd folio
docker compose up -d
首次启动时会构建应用,需要几分钟。然后打开 http://localhost:4870 并创建第一个账户——它将成为管理员。
简短的欢迎流程会带你完成后续步骤:选择首先要创建的内容——文档、 白板或数据表——了解 Folio 的功能,然后进入第一个空间,并打开该页面。 只需在同一屏幕上点击一个链接,即可连接现有的 Git 仓库。

| 位置 | 方法 |
|---|---|
| 你的计算机 | docker compose up -d |
| 服务器或 VPS | 使用已发布镜像运行一条命令:deploy/vps,或使用上方的 compose 文件并添加 --profile https,即可自动配置 HTTPS |
| Coolify、Railway、Render、DigitalOcean、Dokploy、CapRover、Easypanel、Portainer、Fly.io | deploy/ 中提供现成的部署套件,参见一键部署和 PaaS |
| 其他容器平台 | 使用 Dockerfile,并配置 PostgreSQL、Redis 和持久卷——参见要求 |
| Vercel、Netlify 和其他无服务器托管平台 | 不支持——Folio 是长期运行的服务,会将 Git 仓库存放在磁盘上并保持实时连接 |
域名、HTTPS、更新和备份: docs/INSTALL.md。
**不收集遥测数据。**你运行的 Folio 不会向任何人发送使用情况信息:不会加载分析库,也不会与 Folio 作者或第三方建立连接。唯一的可选例外是运行公开演示的用户:将 FOLIO_POSTHOG_KEY 设置为你自己的 PostHog 项目后,Folio 会发送匿名事件(页面类型、空间标识,不包含内容)。不设置该密钥则不会发送任何信息。可选的错误报告也是如此:若要报告到你自己的 Sentry 项目(设置 SENTRY_DSN,即可显示“报告问题”菜单项,还可选择录制近期操作,但所有文本都会被遮盖;设置 SENTRY_REPLAY=0 可关闭录制),不设置 DSN 就不会加载库,也不会建立连接。详情请参阅:
docs/INSTALL.md 和
docs/INSTALL.md。
由 AI 编码,但我们不加以掩饰
Folio 由 AI 编码 Agent 编写。人工产品负责人决定要构建什么,在浏览器中试用每项更改,并决定发布哪些内容;Agent 负责规划工作、编写代码和测试,并记录所做的工作。
从 2026 年 8 月 21 日的首次提交到 2026 年 9 月 29 日的 0.1.0 版本,共用时 39 天,上游提交超过 400 次。0.2.0 版本随后于 2026 年 10 月 14 日发布,距首次提交 54 天。如今,项目包含约 110,000 行 TypeScript 和另外 70,000 行测试代码,已在一支真实团队的生产环境中运行。
我们不仅公开成品,也公开它的构建过程:
| 文件 | 内容 |
|---|---|
| AGENTS.md | 工作的组织方式,以及 Agent 在此仓库中遵循的规则 |
| docs/HANDOFF.md | 当前状态:Folio 的组成方式、绝不能破坏的部分、尚未解决的问题,以及那些让我们付出代价才学到的经验 |
| DEV-PLAN.md | 已构建的内容、构建顺序,以及接下来的计划 |
如果你也在使用 Agent 构建项目,这个仓库就是一个示例,展示了如何以这种方式打造复杂产品。如果你只想要一个 wiki,这些内容不会妨碍你。
文档
- 网站:foliowiki.online
- 公开演示:demo.foliowiki.online — 共用登录账号,每 24 小时重置一次
- 免费工具,无需注册:Confluence 转 Markdown 转换器 · Mermaid 在线编辑器
- Markdown 模板:会议记录、PRD、SOP、运行手册、复盘报告、入职清单等(CC0)
- 诚实比较的替代方案:Confluence · Notion · 可自托管的 Wiki
- 安装、HTTPS、更新、备份
- 功能
- 无需 IDE 的文档即代码:在浏览器中编辑仓库文档
- 尚未实现的功能
- 面向 Agent 的 MCP 和 REST
- Slack 和 Microsoft Teams 中的链接预览
- 更新日志
开发
cp .env.dev.example .env
docker compose -f docker-compose.dev.yml up -d # PostgreSQL, Redis, MinIO
npm install
npm run dev # http://localhost:4871
Node.js 22.12 或更高版本(助手需要 22.13 或更高版本)。请参阅 CONTRIBUTING.md — 如果贡献者是 Agent,也请参阅 AGENTS.md。
帮助与安全
问题和 Bug 报告:SUPPORT.md。请按照 SECURITY.md 中的说明,私下报告漏洞。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。