puppyone vs Notion:Agent 工作空间 vs 协作文档系统,怎么选(2026)

2026年4月24日Ollie @puppyone

Notion 和 puppyone 都是工作空间,但服务的对象不一样。

Notion 是给团队和个人用的全能工作空间,团队的人在里面写文档、做协作。

puppyone 是给 AI Agent 用的开源工作空间。当你的团队在用 Cursor、Claude Code、n8n 这些 agent,又想给它们一个能共享文件、能版本控制、能自部署的地方,你要的就是 puppyone。

两者怎么选,或者怎么搭着用,看你的活儿主要是人在做还是 agent 在做。

30 分钟把 Cursor / Claude Code 接到 puppyone + NotionGet started

什么是 Notion

Notion 是给团队和个人用的全能工作空间。团队在里面写规格、做决策、整理 wiki,几个人一起编辑、留评论。从一开始它就是给真人用的,不是给 agent 用的。

什么是 puppyone

puppyone 是开源的、给 AI Agent 用的 File Workspace。代码在 github.com/puppyone-ai/puppyone

适用场景很简单:你的团队在用 Cursor、Claude Code、n8n、CrewAI 这些 agent,又想给它们一个能共享文件、能版本控制、能开源自部署的工作空间。文件用 Markdown 或 JSON 存,agent 直接读写。

你在找开源的方案,puppyone 就是。

你为什么会搜 "Notion 替代品"

我们跟 30 多个团队聊过,搜这个词的人,通常都是撞上了下面 4 类场景里的某一种。注意每段最后那句话:真正的问题,不是 Notion 不够好

场景 1:Cursor 接 Notion API 被 3 次/秒拖死

你想让 Cursor 在写代码时能 read_file 直接拿到 Notion 上的产品规格。写了个集成,跑两天发现:每个 token 一秒就 3 次请求的额度,团队几个 Cursor 实例一起跑就互相挤,HTTP 429 满天飞。

这不是 Notion 不够好。Notion 的限流是按人的节奏卡的,人本来就不会一秒钟发 100 次请求。真正的问题是,你需要在 Notion 外面套一层缓存加文件镜像

场景 2:几个 Agent 同时改同一份文档,互相覆盖

你跑了 3 个 agent:researcher 在 findings 这一页加 section A,writer 加 section B,formatter 改格式。三个一起 push,发现页面历史是后写覆盖前写,谁手快谁说了算,而且 Notion 历史里也看不出来"这段是 agent A 写的"。

这不是 Notion 不够好。Notion 的协作机制本来就是给真人设计的(OT + 在线状态、几秒钟一改)。真正的问题是,你需要一套带 commit、能自动合并的版本控制,而不是后写覆盖前写。

场景 3:想给 agent 限定只读某些页面,根本做不到

你想让 finance-bot 只读 /finance/ 下的页面、researcher 只读 /specs//research/、cursor 只能写 /scratch/cursor/。可 Notion 的权限只分到人、页面、workspace 这三级,没有"按 agent 分"的概念。一个集成 token 就是整个 workspace 的钥匙,要么全开要么不开。

这不是 Notion 不够好。Notion 的权限本来就是按真人公司组织划的(人、群组、workspace)。真正的问题是,你需要"按 agent + 路径"分权限的那一层,而这一层 Notion 压根不打算管。

场景 4:Agent 写歪了,想精确回滚

周三发现某个 agent 的 prompt 漂移了,把 /research/ 下面某些段落改坏了。Notion 的版本历史是按 block 一条一条 undo,能往回查的窗口还有限。你回答不出"agent X 这 24 小时改过哪些段落",更别说"只把 agent X 在某段时间的写入抹掉、其他 agent 和真人的修改全留下"。

这不是 Notion 不够好。页面级的版本历史给人用是够的。真正的问题是,你需要 Git 那种 commit、diff、按需回滚的能力


上面 4 个场景里只要中了一个,你要的就不是替代 Notion,而是在 Notion 旁边加一层

puppyone 替代的不是 Notion,是这些东西

表面看,puppyone 像是 Notion 在 Agent 场景下的替代品。但真正替代的,是你为了让 Agent 能用上 Notion 而手搓的那一堆胶水

你现在在维护的胶水puppyone 这层把它做了
block 转 markdown 的转换器(Notion 改一次 schema 你跟着改一次)Notion 连接器在导入的时候自动转成 markdown 文件
定时轮询脚本(Notion 不给 webhook)文件系统原生事件,hook 想订阅就订阅
自己写的权限代理(Notion API token 颗粒太大)按 agent 分的 Access Point,能读哪些路径、能写哪些路径都写明白
自己搭的跨会话临时存档(agent 重启就忘了)文件系统天然就持久,关掉再打开东西还在
自己写的多 agent 合并逻辑(Notion 是后写覆盖前写)内置的 Mut 自动合并,每个 commit 都带是谁写的
自己造的版本/回滚工具(Notion 只能按 block undo)Git 那套 commit + diff,可以按 agent + 时间段精确回滚
自己接的 Slack/Postgres/Gmail(每家一份转换器)内置 SaaS 连接器,统一落成文件夹

不是 Notion 解决不了这些,是 Notion 压根不打算碰。这层胶水活儿,puppyone 一开始就是冲着它来的。

puppyone 给 Agent 工作流的 5 件事

1. 跨会话不丢状态(Cursor / Claude Code 不再"失忆")

每个 agent 在 puppyone 里都有自己的工作目录。关掉会话再打开,所有临时笔记、todo、跑出来的东西全都在原地。昨天你让 Claude Code 跑了 4 小时的 codebase 分析、结果写到 /scratch/claude/notes.md,今天打开新会话第一句不用再补"还记得我们昨天聊的 X 吗",Claude 直接 read_file /scratch/claude/notes.md 就接着干。

Notion 不是干这个的。Notion AI 看的上下文是单页面的,每个 chat 各管各的;外部 agent 想知道"我昨天写了什么",只能拿 Notion API 一遍遍轮询。

2. 几个 agent 同时写,自动合并

puppyone 内置的 Mut 就是冲着 agent 做的版本控制。3 个 agent 同时改 /research/findings.md 的不同段落,服务端那边自动合并,每个 commit 都带是谁写的标签,没人需要手动解冲突。下午发现 formatter 把表格改坏了,一句 puppyone revert --by formatter-bot --since "13:00" 就把它这段时间的写入单独抹掉,其他 agent 和真人改的全留着。

Notion 这块插不上手。Notion 的协作机制是给真人写的,里面就没有"谁是哪个 agent"这一层。

3. 每个 agent 一份路径权限(Access Point)

每个 agent 自己一个身份,能读哪些路径、能写哪些路径明摆着,文件系统这层就给你拦下来:

researcher-agent     READ /specs/, /research/        WRITE /research/
cursor-agent         READ /codebase/, /research/     WRITE /scratch/cursor/
finance-bot          READ /finance/                  WRITE /finance/reports/

researcher 写不进 /scratch/cursor/,cursor 读不到 /finance/。万一 token 泄了,能搞坏的也就是它自己那点 scope。

Notion 给的颗粒达不到。Notion 的权限只分到人、页面、workspace 这三级,没有"按 agent 分"。

4. Git 那套 commit / diff / 秒级回滚

每次写文件就是一次 commit,谁写的、什么时候、改了什么全都有:

puppyone log /research/                         # 这个目录最近的变更
puppyone diff @yesterday                        # 昨天到现在的所有改动
puppyone revert /research/ \
  --by claude-research-bot --since "Tue 18:00"  # 精确抹掉某个 agent 某段时间的写入

Notion 的版本历史做不了这事。它是按 block 一条条 undo,没法做"按 agent 精确回滚"。

5. Notion / Slack / Postgres / GitHub 一起接进来

/integrations/
  notion/specs/feature-x.md         ← Notion 里的页面
  slack/eng-channel.json            ← Slack 频道历史
  postgres/customers.snapshot       ← Postgres schema + 数据快照
  github/repo-puppyone/PRs.json     ← GitHub PR / issue

Agent 一句 read_file /integrations/notion/specs/feature-x.md 拿到干净的 markdown,不用再写 block 转换器、不用再去对付 3 次/秒的限流。

Notion 不是干这个的。它是协作文档,不是 SaaS 数据中转站。想要中转站,每家 SaaS 你都得自己接一遍。

把 Notion / Slack / Postgres 接成 Agent 能直接 cat 的文件夹Get started

把两者放在工作分层里看

这事不是 "Notion vs puppyone" 二选一,而是"协作层 vs Agent 工作空间层",两边各干各的:

维度协作层(Notion 在这)Agent 工作空间层(puppyone 在这)
给谁用一起协作的人共用工作空间的几个 agent
基本单位页面 + 富文本 block(人读人写)文件 + commit(agent 读 agent 写)
怎么接网页、移动 app、REST APIMCP、bash、SSH、REST
权限分到哪到人、到页面、到 workspace到 agent,能读哪些路径、能写哪些路径
频率限制一个 token 3 次/秒,撞了就 HTTP 429 让你等自部署不卡
几个一起写OT + 在线状态,最后写的覆盖前面Mut 自动合并,每条 commit 带是谁写的
版本历史按 block 一条条 undo(往回查的窗口有限)Git 那套 commit + diff,可按 agent 精确回滚
变更通知没 webhook,得定时轮询文件系统事件,hook 想订阅就订阅
持久性完全持久(人写的不会丢)完全持久(agent 写的也不会丢)
数据怎么进来手贴 / 浏览器剪藏 / 第三方同步工具内置 Notion、Slack、Postgres、GitHub 等连接器
部署只能云上开源 + Docker 自部署,云端可选

表里 Notion 那边的数据来自:Notion API 限制文档MCP 集成文档、2026 年 4 月的 Workers for Agents 公告

每一行不是在比"谁更好",而是在说"谁负责哪一块"。协作层那块 puppyone 没打算碰(也碰不过),Agent 工作空间层那块 Notion 也没打算管。

你是哪一种团队?

老实说一句:不是所有团队都需要 puppyone。

团队还没开始用 Agent,全是真人协作 → 留在 Notion 就够了,puppyone 用不上。等哪天开始接 Cursor / Claude Code / n8n 跑批量活儿了,再回来。

就 1 个 Agent,偶尔跑跑,比如周末跑个 summary → Notion + 官方的 Notion MCP server 八成够用。3 次/秒在低频场景下卡不住,就一个 agent 也不存在并发问题。先用着,撞墙了再换。

几个 Agent 同时跑批量任务(典型:AI 公司、AI 工程团队、要给客户的 Agent 做 internal tools 的 SaaS)该加 puppyone 这一层了。3 次/秒限流、没法按 agent 分权限、几个 agent 互相覆盖、没法精确回滚,这 4 件事撞上任何一件,都够你头疼一周。

完全 AI-driven 的公司,Agent 是主要写手,人只过最后一道puppyone 当主,Notion 当辅。Notion 留给真人审完再发的那一步,agent 干活全在 puppyone 里。


要是你在头两类里,老实说,你现在不需要 puppyone。我们宁可你晚点回来,也不希望你现在硬上、过两天嫌过度工程。

怎么把 puppyone 接到 Notion 旁边(30 分钟)

不叫迁移。你不用弃 Notion,是给 Notion 旁边加一层。4 步:

  1. Notion 不动:团队继续在 Notion 写规格、做决策、记复盘,该怎么用还怎么用。
  2. puppyone connect notion:挑要接进来的 Notion space / database,puppyone 把它们镜像成 /integrations/notion/... 下的 markdown 文件,定时刷新(默认 5 分钟,可改)。
    puppyone connect notion --space "Engineering" --target /integrations/notion/
    
  3. 给每个 agent 配一个 Access Point:把它能读、能写哪些路径写明白。Cursor 一个 token、Claude Code 一个、n8n 一个、CrewAI 一个,每个一份身份、一份 scope。
    puppyone agent create cursor-research \
      --read=/integrations/notion/specs/,/research/ \
      --write=/scratch/cursor/
    
  4. 想要的话,可以把 agent 跑出来的东西同步回 Notion:agent 写完一份 research summary,挑想发的那部分推回 Notion 的某个页面,团队的人在 Notion 上看、改。挑着发,不让 agent 把 Notion 灌成垃圾场

接完之后,Cursor / Claude Code / n8n 一律通过 puppyone 读写,再也不直接撞 Notion API。3 次/秒限流、按 agent 分权限、按 agent 精确回滚,这些事都在 puppyone 这一层一并解决。

国内场景:飞书 / 语雀 / 钉钉文档

一句话:只要是"以页面为基本单位、给真人用"的协作文档工具,给 Agent 用都会撞上同一类问题。puppyone 是补在它们旁边的那一层,跟飞书、语雀、钉钉文档之间,同样不是谁替代谁的关系。

工具接口频率Sandbox 是否持久webhook能否按 agent 分权限
Notion一个 token 3 次/秒Workers for Agents 跑完就忘不能
飞书等级 4:50 次/秒 + 1000 次/分(官方文档Aily 沙箱 5 分钟、1GB、跑完就忘部分 API 有不能
语雀限频较松,产品定位在"写作"没有 sandbox不能
puppyone自部署不卡文件系统天然就持久文件事件,hook 想订阅就订阅每个 agent 一份 Access Point

国内常见的搭法是飞书做团队协作(人写人读),puppyone 做 Agent 工作空间(agent 读 agent 写),中间用 puppyone 的飞书连接器把数据打通。语雀(国内对比可参考)中文写起来最舒服,但产品就盯着"写作"这件事,多 agent 不在它的考虑范围里。

FAQ

那你到底算不算 Notion 替代品? 不算。我们替代的是你为了让 Agent 能用上 Notion 而手搓的那堆胶水:block 转换器、轮询脚本、自己写的权限代理、自己造的版本控制。Notion 还是留在原地,照样做团队的协作。要是你的活儿主要是人在做,puppyone 用不上;要是主要是 agent 在做(或者人和 agent 混着干),puppyone 就是补在 Notion 旁边的那一层。

能一行命令把 puppyone 接进 Cursor / Claude Code 吗? 能。puppyone 有官方 MCP server,Cursor、Claude Code、Claude Desktop、Continue 这些只要支持 MCP,都是一行配置就能接上。具体看 Cursor 集成指南

Notion 自己出了 AI 和 MCP server,puppyone 还有必要吗? 看你要不要"给 agent 一个自己的工作空间"。Notion AI 是塞在 Notion 里给 Notion 用户用的助手,Notion MCP server 是 agent 接 Notion 数据的入口,它们管的是"agent 怎么读到 Notion 里的东西",没管"agent 怎么有自己的工作空间、怎么跨会话不丢状态、怎么并发不冲突、怎么按 agent 精确回滚"。后面这几件 puppyone 在做,跟 Notion MCP server 不冲突,可以一起用。

puppyone 跟飞书、语雀能一起用吗? 能。puppyone 的 SaaS 连接器是开放的,飞书、语雀、钉钉文档都能同样接进来。国内常见的搭法是飞书做团队协作,puppyone 做 Agent 工作空间。

和 Mem0 / Zep / Letta 这些 agent memory 平台是什么关系? 不冲突。它们管的是 memory 这一层:一条条事实怎么存、怎么召回、怎么过期;puppyone 管的是工作空间这一层:多个 agent 怎么共用一份文件、怎么版本控制、SaaS 数据怎么接进来。经常是一起用的:agent 用 Mem0 存用户级的小事实,用 puppyone 存共享的文件和跨会话的状态。详细对比可看 2026 年最佳 AI Agent Memory 平台清单

数据存在哪?能自部署吗? puppyone 是开源项目(github.com/puppyone-ai/puppyone)。云端版我们托管,企业版可以挂自己的 S3;自部署走 Docker,所有数据(包括 commit 历史)都在你自己机器上。

一句话收尾

你不用在 Notion 和 puppyone 之间二选一。Notion 留在协作层,照常给团队的人用;puppyone 在它旁边做 Agent 工作空间,负责跨会话状态、并发合并、按 agent 分权限、按 agent 回滚,外加把 Slack、Postgres、GitHub 这些数据也一起接进来。中间一行命令就把数据通起来,agent 读 puppyone,不再直接撞 Notion API。撞过 3 次/秒限流、撞过几个 agent 互相覆盖、撞过想给 agent 限权限做不到、撞过想精确回滚某个 agent 做不到,你需要的是这一层,不是替代 Notion。

给你的 AI Agent 一个真正的工作空间,30 分钟接通 Cursor + NotionGet started