mcpField
F
Folio

Folio

远程服务
foliowiki.online生产力80今天更新

关于 Folio

Folio 是面向团队的自托管 Wiki,内容以 Git 仓库中的文件保存,支持浏览器协作编辑,也允许 AI Agent 读写页面。它将文档、数据表和白板放在同一页面树中,并提供 MCP 服务。

主要功能

  1. 01Git 文件作为 Wiki 内容与历史
  2. 02实时协作编辑和离线写作
  3. 03文档、数据表与白板同树管理
  4. 04搜索、访问权限与版本历史
  5. 05向 MCP 客户端开放页面读写

适用场景

  1. 01在浏览器与 IDE 中共同维护文档
  2. 02将产品仓库的 docs/ 用作 Wiki
  3. 03让 AI Agent 通过 MCP 更新发布说明
  4. 04将团队空间发布为只读网站

MCP 相关

Folio 提供 MCP 服务,MCP 客户端可按个人访问令牌或 OAuth 连接。客户端以令牌所有者的权限读取和编辑页面。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://demo.foliowiki.online/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

全部服务地址
Streamable HTTPhttps://demo.foliowiki.online/mcp
Streamable HTTPhttps://{folio_host}/mcp需要授权

工具

详细介绍

Folio

一款氛围编程打造的开源替代方案,可取代 Notion 和 Confluence。 团队的 Wiki 存放在 Git 中。大家可以在浏览器中实时协作编辑。AI Agent 可以读取和编辑相同的页面。只需一条命令,即可自行运行。

网站:https://foliowiki.online · 曾获 Self-Host Weekly(2026 年 10 月 9 日)专题介绍

👉 试用在线演示

无需安装或注册:打开页面,然后在登录屏幕上选择 Sam。所有人共用一个登录账号,数据每 24 小时重置一次;请勿输入个人数据或 API 密钥。

Folio:一个页面,展示 Folio AI 正在工作、一个白板和一个数据表格

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 将内容保存在数据库中,并提供 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 代码;也可以直接编写代码并查看画布同步变化。两边始终保持同步。

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 现在还可以将另外两种文件类型作为页面打开。

以页面形式呈现的 Obsidian 画布

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

以分组表格和汇总数据呈现的 Obsidian 基础视图

基础视图的可视化编辑器

这两种文件都会跟随重命名操作:移动笔记时,指向它的画布卡片和维基链接会在同一次提交中一并重写。基础视图由我们自行实现的安全求值器运行(不使用 eval);不支持 kanban 和 map 视图,也不支持插件函数。详情和限制:docs/LIMITATIONS.md。


构件:发布 Claude 构件和 Cursor 画布

AI Agent 构建了一个仪表盘、计算器或小工具;通常它只存在于聊天中,聊天结束后也就消失了。在 Folio 中,它会成为一个页面:显示在目录树和搜索结果中,纳入 Git 管理,并与其他内容遵循相同的访问权限。

交互式构件:包含区域筛选器、卡片和图表的销售仪表盘,以 wiki 页面形式呈现

  • 可交互,而非截图。 页面上的筛选器、标签页、图表和表单均可正常使用。页面在沙盒框架中运行,无法访问你的 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 分钟,也可自定义),所有打开该页面的人都会同时看到倒计时结束并听到提示音,适合工作坊或回顾会议。编辑者可以控制计时器,读者可以查看。

页面标题栏中运行的计时器,以及暂停、+1 分钟和重置控件


文档预览

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

在 Folio 中预览的 PDF

在 Folio 中预览的 Word 文档

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

这些文件仅供查看:不能在 Folio 中编辑,搜索可通过标题找到它们。


Folio AI

侧边栏中的助手,与你的 Wiki 协同工作,而不是与它并列。

助手向路线图添加一行,并根据数据作答

截图中,用户要求助手向路线图添加一项计划,并指出哪些计划紧急。它读取了表格的架构,插入了新行——该行显示在左侧的表格中——并根据数据作答。

  • 提问——只读。可在你有权访问的页面中查找、总结、比较和解释。
  • Agent——读取和写入。可起草页面、更新表格、绘制看板、创建表单、重组分区——但仅限你的权限范围,绝不越权。
  • 运行在服务器上。 关闭浏览器后,工作仍会继续;回来后即可从中断处接着进行。
  • 你可以看到它在做什么。 状态栏会显示模型的思考过程及令牌计数器;在它撰写较长的答案或页面时,还会显示已用时间计数器,以及它正在调用的工具的实际名称;实时回复会保留段落和链接。
  • 与其他人使用相同的工具。 助手通过外部 Agent 经 MCP 使用的同一套工具工作——没有第二套较弱的实现;在“提问”模式下,写入工具会在服务器上关闭,而不只是隐藏起来。

它可以创建表单和表格,不只是文本。 要求它“创建一个午餐投票表单,包含必填姓名、菜系,以及一个关于周五是否参加的是/否问题”,Agent 就会创建表单和用于存放答复的表格,步骤与表单编辑器相同。

Folio AI 的 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

提供 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 链接后,会展开为一张卡片,显示页面标题、位置、开篇文字和标题;卡片根据分享者的访问权限生成。分享者无法打开的页面完全不会显示标题。设置。

群组和单点登录

将人员分组,让身份提供商为他们登录,并保持两者同步,无需任何人手动操作。

Folio 登录页面,上方有“Continue with Keycloak”和“Continue with Keycloak (SAML)”按钮,下方是电子邮件和密码表单

Access 页面上的群组成员列表,每个人都标记为来自 OIDC 或 SAML,并显示经理复选框和该群组在空间中的角色

受父页面限制的页面:访问对话框说明,只有能打开父页面的人才能打开此页面

  • 群组。 一组有名称的人员(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。


运行

你需要 Docker 和 Git,除此之外不需要其他东西。

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.iodeploy/ 中提供现成的部署套件,参见一键部署和 PaaS
其他容器平台使用 Dockerfile,并配置 PostgreSQL、Redis 和持久卷——参见要求
Vercel、Netlify 和其他无服务器托管平台不支持——Folio 是长期运行的服务,会将 Git 仓库存放在磁盘上并保持实时连接

在 Railway 上一键部署:在 Railway 上部署

域名、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,这些内容不会妨碍你。

文档

开发

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 中的说明,私下报告漏洞。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。