MemoryLake
返回全部文章
Tutorial2026 年 8 月 6 日·11 分钟阅读

如何在不丢失研究成果的情况下将 Perplexity Spaces 迁移至 Claude Code (2026)

研究工作是在 Perplexity 中完成的。一个 Space 里有 40 个线程,每个线程都是你追问的问题,附带了来源,加上你上传的 PDF 以及让回答变得有用的自定义指令。现在你正在构建这个项目,并且是在 Claude Code 中进行——而它对这一切一无所知。

以下是直接的答案:Perplexity Space 不支持批量导出,且 Claude Code 端也没有导入器。Perplexity 只能通过线程的分享菜单每次导出一个线程为 PDF、Markdown 或 DOCX。Claude Code 会读取它在项目中找到的 Markdown 文件。因此,迁移的步骤是:将仍然重要的线程导出为 Markdown,将它们浓缩为陈述结论(而不是重放搜索过程)的项目仓库文档,并将 `CLAUDE.md` 指向它们。如果操作得当,对于一个内容丰富的 Space 来说,这只需要一个下午的时间,而这其中大部分时间都花在决定舍弃哪些内容上。

这种抉择才是真正的核心工作,因此本指南将花大量时间来探讨这一点。

真正能迁移的是什么

一个 Space 包含四样东西,它们在迁移到另一端时的表现截然不同。

线程可以作为文档逐个迁移。 打开一个线程,使用分享或更多选项菜单,然后导出为 PDF、Markdown 或 DOCX。Markdown 是你需要的格式——导出内容包含你的提示词、回答、格式以及带有来源列表的引用块,这是让研究在以后可重复使用的关键部分。目前没有官方的方法可以一键导出整个 Space。虽然存在可以批量导出 Space 甚至将其推送到 Notion 的浏览器扩展,并且它们确实有效;但它们也需要授权访问你的 Perplexity 账户,这是一个需要深思熟虑而不是随便做出的决定。

上传的文件不会迁移——因为你已经拥有它们了。 你附加到 Space 的任何 PDF 和文档应该仍在你的磁盘上。直接重新上传或将它们复制到项目仓库中,而不是尝试从 Perplexity 中重新提取它们。

自定义指令几乎可以直接迁移。 Space 的指令已经写成了关于语气、深度和优先考虑什么的指令。其中大部分内容只需轻微编辑即可映射到 CLAUDE.md 上;关于引用样式和回答长度的部分通常无法保留,因为你不再是要求它提供答案,而是要求它编写代码。

探索过程不会迁移,也不应该迁移。 在你的 40 个线程中,有 30 个是你在摸索正确的问题是什么。它们的价值在于孕育了另外 10 个线程。导出全部 40 个线程会给 Claude Code 留下一堆被取代的推理过程,其中一些甚至与你的最终结论相矛盾,所有这些都会争夺上下文空间。这就是迁移出错的地方:不是因为丢失了信息,而是因为携带了太多信息。

这里有一个值得提前说明的不对称性。Perplexity 的记忆是围绕线程组织的——每个对话都是它自己的容器,这就是为什么 Space 内部的内容不会自动通知你的其他线程。而 Claude Code 的记忆是围绕文件系统组织的——它读取项目中的内容。你不仅仅是在工具之间移动文本,你是在将“对话形态”的知识转化为“文件形态”的知识。以下的所有内容都是关于这种转化的。

手动迁移步骤

步骤 1:导出仍然重要的线程

在导出任何内容之前,先浏览 Space 并进行筛选。对于每个线程,问自己一个问题:这是否包含一个我会坚持的结论,还是一个我已经完成的搜索? 导出第一种,跳过第二种。

具体来说,保留那些确定了决策的线程(“由于许可问题,我们正在使用这个库”)、收集了你以后想再次引用的对比证据的线程、包含限制构建的领域事实的线程(速率限制、格式、监管要求),以及你犯了错误并找出原因的线程。最后一类是最有价值的,也是最常被丢弃的。

对于每个需要保留的线程:打开线程,使用分享或更多选项菜单,选择 Markdown。你将获得提示词、回答、格式以及带有来源列表的引用。保留这些引用——迁移研究而不是重新做研究的全部原因就在于来源也随之迁移了。

如果一个 Space 有几十个需要保留的线程,这就是第三方批量导出工具发挥作用的地方。坦率地权衡一下:它们需要账户访问权限,而你正在赋予一个浏览器扩展读取你 Perplexity 账户中所有内容的权限。对于个人研究 Space 来说,这可能没问题。但对于任何签署了客户保密协议(NDA)的项目,请手动导出线程,不要再考虑其他方式。

不要因为存在批量导出就跳过筛选。筛选的目的不是为了节省导出的点击次数,而是因为你带过去的每一件东西以后都会争夺 Claude Code 的注意力。

步骤 2:将导出的内容转化为 Claude Code 真正会加载的文件

原始的线程导出并不是有用的项目文档。线程是一个记录:你半生不熟的问题、一个长回答、一个纠正它的后续问题、另一个回答。Claude Code 会阅读所有这些内容,并把权重放在错误的部分。

因此需要进行浓缩。对于每个相关的线程集群,在项目仓库中编写一个 Markdown 文件(docs/research/ 是一个合理的存放位置),结构如下:

  • 结论优先,用一两句话概括,作为关于项目的既定事实陈述。
  • 排除的选项(如果有)。“我们评估了 X 并因 Y 拒绝了它”可以防止 AI 代理在三周后兴高采烈地重新提议使用 X。
  • 浓缩的证据,附带导出引用块中的来源链接。
  • 日期以及来源工具。研究会过时,带日期的文件能让你辨别其时效性。

然后让 Claude Code 感知到它。项目根目录下的 CLAUDE.md 是它自动加载的文件——指针应该放在这里,而不是具体内容:

```markdown

研究上下文

决策及其证据保存在 docs/research/ 中。在修改 src/auth/ 下的任何内容之前,请先阅读 docs/research/auth-approach.md。 未经标记,请勿重新讨论其中记录的决策。 ```

有两点原因使得这种做法比直接将研究内容倾倒在行内更好。首先,CLAUDE.md 在每次会话中都会被加载,因此将其保持为指针和规则几乎不会消耗你每个任务的成本,而一个 4000 字的研究内容倾倒则会在每一次请求中都消耗你的成本。其次,@path 导入允许你在实际相关时引入特定文件,而不是一直引入。

将个人偏好放在 ~/.claude/CLAUDE.md 中,而不是项目文件中,并提交项目文件,以便你的团队继承相同的上下文。如果你希望 Claude Code 起草文件的第一个版本,/init 将从仓库中构建其脚手架,而 /memory 则直接打开记忆文件进行编辑。

然后正确设定预期:这只是让知识可用,而不是被记住。Claude Code 在每次会话开始时仍然是全新的,并且在长会话中仍然会压缩上下文,这就是为什么即使有合适的文件,它也会在会话之间忘记项目上下文。文件是底线,而不是上限。

更好的方法:统一的研究与代码记忆层

看看步骤 2 实际上做了什么:你手动将研究成果从一种工具的格式转换为另一种工具’的格式,并将结果存储在只有第二种工具才能读取的地方。

现在考虑接下来的六个月。你还会再次进行研究——在 Perplexity 中,或者在取代它的任何工具中——并且你将在 Claude Code、Codex 或 10 月份发布的某些新工具中进行构建。每种组合都需要自己的转换。知识是稳定的,而围绕它的工具却不是。

将知识保存在双方都能访问的层中可以省去转换步骤。MemoryLake 是一个位于工具之下的记忆层:研究笔记、决策和源文档只需输入一次,Claude Code 就可以通过 MCP 读取它们,而你使用的任何其他工具都可以通过 API 读取相同的存储。你的研究不再是需要迁移的 Perplexity 产物,而是变成了你的工具可以查询的东西。

公平地权衡一下:docs/ 加上 CLAUDE.md 确实有其优点。它是纯文本,处于版本控制中,可以在拉取请求(PR)中进行审查,并且无需任何设置即可工作。对于属于代码库的任何内容,请保留这种方式。而记忆层则适用于那些不适合代码库形态的知识——跨项目研究、客户上下文、跨越三个仓库的决策——以及让这些知识可以被你尚未选择的工具读取。

步骤 1:创建 API 密钥

生成密钥并在大约 30 秒内发出你的第一次请求。将其存储在你的环境变量或机密管理器中,而不是直接写在会被提交或同步的配置文件中。

创建 MemoryLake API 密钥
创建 MemoryLake API 密钥

步骤 2:上传你的第一批记忆

放入你的研究实际依赖的文档、图像和文件——导出的线程、你上传到 Space 的 PDF、决策文档。尽可能上传源文件,而不仅仅是它们的摘要。摘要往往会漏掉至关重要的限制条件。

上传你的第一批记忆到 MemoryLake
上传你的第一批记忆到 MemoryLake

步骤 3:连接你的 AI 和代理

让 Claude、Codex、OpenClaw 和其他 AI 代理通过 MCP 或 API 访问记忆。Claude Code 支持 MCP 服务器,因此这只是一个配置项,而不是重写。对于没有 MCP 客户端的研究工具(其中包括 Perplexity),通过 API 提取你所需的内容并将其注入到提示词或工作流中,这样双向流动都可以实现。

通过 MCP 连接你的 AI 和代理
通过 MCP 连接你的 AI 和代理

这在实践中改变了什么

第一个改变是,在你编写代码的工具中,“我们对身份验证(auth)做出了什么决定?”会得到一个附带来源的答案。而不是一个指向另一个产品中你需要去阅读的线程链接。

第二个改变是,被拒绝的选项会一直保持被拒绝状态。在从研究到构建的交接之后,最常见的一个失败案例就是 AI 代理自信地推荐了你花了一周时间排除的库,因为排除的过程保存在 Perplexity 线程中,而代码保存在这里。一旦决策及其推理过程进入存储库,这种情况就会停止。

第三个改变是大多数人没有预料到的方向:它也反向起作用。一旦实现决策保存在同一个层中,你的下一次研究就可以从代码库实际执行的操作开始,而不是从你记忆中的操作开始。

而且在实际操作中,它在下一次工具切换时依然适用。无论你最终使用的是 Cursor 还是回到聊天产品中,知识都在同一个地方,而工具只是一个客户端。

迁移的最佳实践

在导入前进行浓缩,而不是在导入后

本能反应是把所有东西都移过去,让 AI 代理去整理。但它不会——它会把被取代的答案和你的最终答案赋予相同的权重,因为导出内容中没有任何标记能区分它们。10 篇写得很好的结论文档胜过 40 篇对话记录,而撰写过程正是迫使你注意到哪些结论实际上无法站得住脚的过程。

保留引用

迁移研究优于重新做研究的原因在于来源也随之迁移了。为了整洁而从导出内容中剥离引用块,意味着你保留了主张却丢弃了证据——这意味着当有人第一次质疑它时,你又得回到搜索框。Markdown 导出包含来源列表。请保留它。

为所有内容标注日期,并说明哪些已过时

针对快速变化的 API 的研究只是一个快照。在文件中写上日期,当你得知某些内容发生变化时,编辑该文件,而不是在旁边添加一个更新的文档。两份没有日期且相互矛盾的文档,比一份诚实标注了日期的文档更糟糕。

将指令和知识保存在不同的地方

CLAUDE.md 用于存放规则和指针,在每次会话中都会加载,因此应该保持简短。研究是知识——内容长、偶尔相关、无条件加载成本高。将它们混在一起会给你带来一个臃肿的文件,你不仅要在每次请求中为此付费,而且仍然无法装下所有内容。

结论

Perplexity 每次只能将一个线程导出为 PDF、Markdown 或 DOCX,并且没有官方的批量 Space 导出功能;Claude Code 也没有导入器。因此,最实在的路径是手动且简短的:筛选 Space 以获取结论而不是搜索过程,将这些结论连同其引用一起导出为 Markdown,将每个集群浓缩为以决策开头的带日期文档,并将 CLAUDE.md 指向该文件夹,而不是将其内联粘贴。

值得深思熟虑的选择是知识此后保存在哪里。在项目仓库中,它在此工具中为该项目服务。在双方都能读取的记忆层中,它也为下一个项目和下一个工具服务——这比听起来更重要,因为研究花了你一周的时间,而工具的选择在研究失效之前就会发生改变。

常见问题

我可以一次性导出整个 Perplexity Space 吗?

原生不支持。Perplexity 的导出是按线程进行的——打开线程,使用分享或更多选项菜单,然后选择 PDF、Markdown 或 DOCX。Space 和共享线程的导出方式与单个线程相同。第三方浏览器扩展确实提供批量导出功能,包括直接导入 Notion,但它们需要访问你的 Perplexity 账户,因此对于任何机密内容,请将其视为一个需要慎重对待的决定。

对于编码代理,我应该选择哪种导出格式?

Markdown。它以 Claude Code 原生读取且你可以编辑的形式携带提示词、回答、格式和引用块。PDF 用于存档,DOCX 用于发送给他人;在 AI 代理能够很好地使用它们之前,这两者都需要进行转换。

Claude Code 会自动读取我导出的文件吗?

只有它被指向的内容。项目根目录下的 CLAUDE.md 会自动加载,而 ~/.claude/CLAUDE.md 保存你的个人偏好。docs/ 中的文件在被引用时会被读取——要么通过 @path 导入,要么因为 CLAUDE.md 告诉 AI 代理在特定工作时读取它们。仅仅把 Markdown 丢进仓库并寄希望于它能被读取并不是一个好策略。

我会在迁移中丢失我上传到 Perplexity 的文件吗?

Space 会保留它们,它们只是不会随之迁移。将原始文件复制到项目仓库或你的记忆层中,而不是尝试从 Perplexity 中检索它们——并注意,上传的文件脱离上下文也是该工具端一个众所周知的痛点,这也是保留你自己的副本很重要的部分原因。

在这之后我应该继续使用 Perplexity 进行研究吗?

通常是的——这并不是一个要放弃它的理由。Perplexity 擅长有来源的搜索工作,而 Claude Code 擅长编写代码工作,摩擦从来不在于你两者都用,而在于两者都看不到对方的上下文。解决衔接问题比二选一是一个更好的结果。

这与直接将研究内容粘贴到提示词中有什么不同?

粘贴只在一次会话中有效,然后就消失了,明天你还得重新粘贴。将其写入文件可以使其在会话结束后依然存在。将其放入记忆层可以使其在工具更换后依然存在。为 Claude Code 添加记忆层介绍了具体机制,如果你想直接跳到该部分的话。