MemoryLake
返回全部文章
News2026 年 9 月 16 日·13 分钟阅读

Claude Code 现在支持从 Claude 应用分叉远程会话 —— 副本中学习到的任何内容都不会传回原始会话 (2026)

2026 年 9 月 15 日,Claude Code 发布了 2.1.273 版本。在冗长的发布说明中,夹在网关请求头更改和权限检查器修复之间,有一行文字悄然改变了单个对话可以存在的地方数量:"新增了从 Claude 应用分叉使用 claude --remote-control/remote-control 启动的会话的功能;该分叉作为后台会话在您的计算机上运行。"

直白地理解,这是一种便利。当您离开办公桌,用手机关注一个长会话,并希望在不干扰运行的情况下尝试一些不同的操作时 —— 现在您可以从手机端将其拆分,而拆分后的会话会在您家中的电脑上运行。

但如果将其视为关于您的工作记录在何处的问题,那情况就完全不同了。分叉将一个对话变成两个,每个都有自己的身份,从拆分的那一刻起各自独立累积。此后任何一半学到的东西都只会留在该半部分中。

大多数关于分叉的讨论都只解释了第一部分 —— 即分叉会复制您的历史记录,以便您可以尝试不同的方法。这是准确的,Anthropic 的文档也对此进行了清晰的说明。未被提及的是拆分的另一面,以及这两个副本中,哪一个最终会保存您下周会信任的事件版本。

Anthropic 实际发布了什么

这里有两个出于不同原因发布的关键文档。

第一个是日期为 2026 年 9 月 15 日的发布说明。关于分叉的那一行只是大约 60 个要点中的一个 —— 这是一个功能说明,而不是一个正式公告。没有博客文章,没有功能页面,而且截至本文撰写时,Remote Control 文档页面也未描述由应用发起的分叉。这种行为确实存在,但围绕它的官方宣传却付之阙如。

第二个是会话文档,它在一段时间前就描述了其机制。它的开头给出了一个值得记住的定义:"会话是与项目目录绑定的已保存对话。Claude Code 会在您工作时将其保存在本地,因此您可以从上次中断的地方继续、创建分支以尝试不同的方法,或在任务之间进行切换。"

关于分支:"分支会创建迄今为止对话的副本并切换到其中,同时保持原始对话完好无损。" 接着是起到关键作用的一句话:"/branch 复制对话记录,并将正在运行的 Claude Code 进程切换为向其写入。这一区别决定了分支会继承什么。"

随后,Anthropic 直接公布了继承表。对话历史记录是 "复制到分支中,直至您运行 /branch 的时间点。" 权限授予是 "结转;分支在相同的进程中运行,因此您现有的授权仍然适用。如果您使用 --fork-session 分叉到单独的进程中,新进程启动时将不包含这些授权,您需要在那里重新批准。"

几乎没有人引用的两行才是最有趣的。运行中的后台子智能体(subagents)和后台 Bash 命令 "继续运行。它们的输出会出现在您切换到的新分支中,而不是原始会话中。" 并且 Remote Control 连接 "保持连接。连接到会话的手机或浏览器会跟随您进入分支,并在那里继续接收新消息。"

这就是厂商在其官方文档中明确指出,您会话的活动部分会发生移动。原始会话保留其已有的对话记录;而仍在运行的工作以及您用来观察的设备,则会随副本一起转移。

这改变了什么,又没有改变什么

它没有改变存储的内容。文档明确指出 "原始会话在磁盘上保持不变,并保留在会话选择器中," 并且分支会话 "会获得它们自己的会话 ID,并作为单独的行显示。" 您可以随时返回任何一方。

它并没有让分叉成为镜像。分叉是在某一瞬间创建的副本,从那一刻起,这两个对话记录就是具有不同未来的独立文件。Anthropic 对子智能体也描述了相同的形式:"子智能体将重新开始,除非它是分叉,分叉会从迄今为止的对话副本开始。" 迄今为止的对话副本 —— 而不是指向它的链接。

改变的是分叉创建的简便程度,从而也改变了您最终拥有的分叉数量。以前,拆分会话意味着必须在运行它的终端前操作。现在,当会话通过 Remote Control 连接时,可以从手机或浏览器发起拆分,结果会作为后台会话保存在您的计算机上。

这很重要,因为 Remote Control 本身就已经是一个多界面方案。Anthropic 将其描述为将 "claude.ai/code 或适用于 iOS 和 Android 的 Claude 应用连接到在您机器上运行的 Claude Code 会话," 并对这些界面的定义非常谨慎:"Web 和移动界面是通往该本地会话的窗口。" 窗口,单数。而分叉给您两个会话和一个窗口,且该窗口会跟随分叉。

同一发布说明中的第二行内容也应该放在这里讨论,因为这是从另一个角度反映的同一个问题:"修复了上下文计量器和自动压缩(auto-compact)将 advisor-tool 轮次计算为大约两倍于其实际上下文大小的问题,这导致自动压缩在大约实际窗口一半时就会触发。"

压缩(Compaction)不是复制操作,而是一种重写,文档描述了其代价:Claude Code "首先清除较旧的工具输出,然后在需要时总结对话。您的请求和关键代码片段会被保留;对话早期的详细指令可能会丢失。" 提前触发意味着重写发生得比预期更早,而您唯一能注意到这一点的只有那个本身就被错误计算的计量器。我们在在压缩过程中究竟能保留什么中讨论了这一问题的通用版本。

这两行都描述了对话在没有您注意到的事件的情况下改变了形态:一个拆分了,一个变短了。Anthropic 发现了第二个问题并进行了修复;而第一个是记录在案的、符合预期的行为。两者都不是怀疑该工具的理由。但两者都是让您停止将对话视为决策存放地的理由。

人们会从中得出什么误解,以及为什么不应该这样想

"分叉就像 git 分支,所以我以后可以把它合并回来。" 这种类比带来了最大的误导。版本控制中的分支存在是为了让分歧的工作重新合并;合并才是重点。而会话文档描述了创建分支并返回其中任何一个,但并未描述两个会话 ID 之间的任何调和。这种对比仅在拆分时成立,到此为止。

"原始会话未被触及,所以没有丢失任何东西。" 在磁盘上未被触及,确实如此。但文档指出,运行中的后台工作会向分支报告,"而不是在原始会话中," 并且连接的手机或浏览器会 "跟随您进入分支。" 分叉然后离开,原始会话确实和之前一样完整 —— 但也同样过时。

"我可以同时打开两者,它们会保持同步。" 它们不会同步,而且手动版本有一个记录在案的失败模式:"如果您在两个终端中恢复同一个会话而不进行分叉,来自两者的消息会交织成一个对话记录。" 一个包含两个作者交织消息的对话记录并不是两个同步的对话;它只是一个事后难以阅读的记录。

"手机会向我显示一切。" Remote Control 页面在此处非常谨慎。当您切换对话时,"连接的设备不会收到切换后对话的标题或早期历史记录,但双向的新消息都会发送到您终端中打开的任何对话,或从该对话发送。" 该设备是一个实时视图,而不是存档。

解决方案:将结论写在两个副本都不拥有的地方

可靠的做法不是去选择正确的会话,而是根本不要再要求会话来充当记录。

步骤 1:在创建分叉之前决定其用途

现在分叉的成本很低,这使得深思熟虑变得很有价值。拆分有两个合理的理由:您想尝试一种可能会放弃的方法,或者您希望两线工作并行推进而不相互交织。两者都会产生一个永远不会重新合并的副本。

在分支名称中明确说出是哪一种。Anthropic 指出,如果您省略名称,"Claude Code 会根据对话中的第一个提示词为新分支命名" —— 这很有用,但第一个提示词描述的是您开始的地方,而不是您拆分的原因。

步骤 2:首先将已确定的内容从对话记录中提取出来

在分叉之前,先过一遍对话已经确立的内容:您做出的决定及原因、您发现的限制、您排除的方法。这些都是结论。其他一切都是产生这些结论的推理过程。

结论必须能够从拆分的两侧读取,这意味着它们不能仅存在于即将被复制的对话记录中。Anthropic 自身关于压缩的建议也指向了同样的方向:"将持久规则放在 CLAUDE.md 中,而不是依赖对话历史记录。" 这是应用于单个仓库中单个文件的正确直觉。将同样的直觉应用于您的工作知识,就是长上下文与记忆之间的区别

步骤 3:指定一个副本作为您将要返回的副本

拆分之后,两个会话同样真实,但周一您只会恢复其中一个。决定是哪一个,并将其写在您能看到的地方 —— 在分支名称中、在项目文件中,或者在您正在处理的 issue 中。

这里的失败很少是戏剧性的。它通常是打开会话选择器,看到两个看起来很像的行,选择活动较新的那一个,然后从您已经放弃的推理中继续。选择器只给您名称、时间戳和文件大小;它无法告诉您您原本想要的是哪一边 —— 同样的限制使得历史命令的回滚成为决策记录的微弱替代品

在 MemoryLake 中进行设置

这三个步骤的关键在于,结论的生命周期比得出结论的容器更长。MemoryLake 是一个您专门用来写入这些结论的存储库,它独立于任何单个对话记录,并且可以从您之后打开的每个会话中读取。您可以用自己的语言亲自编写这些条目。不会从 Anthropic 的系统中读取、写入或删除任何内容 —— 您的会话、对话记录和检查点完全保留在 Claude Code 自身的控制之下。

步骤 1:创建 API 密钥

从仪表板生成一个密钥。正是它让分叉会话、原始会话以及您下个月启动的会话都能访问同一组事实。

带有“创建 API 密钥”对话框打开的 MemoryLake 控制台 API 密钥页面,要求输入密钥名称和过期时间
带有“创建 API 密钥”对话框打开的 MemoryLake 控制台 API 密钥页面,要求输入密钥名称和过期时间

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

从您不愿再争论的决定开始:您确定下来的方法、使显而易见的选项出错的限制、您已经尝试过的事情。十几个简短的条目通常就能涵盖一个项目所有已确定的内容。将它们写成陈述句,而不是叙述性文字。

MemoryLake 默认工作区的“项目”选项卡,显示第一个项目及与其关联的数据源
MemoryLake 默认工作区的“项目”选项卡,显示第一个项目及与其关联的数据源

步骤 3:连接您的 AI 和智能体

将 Claude Code 指向该层,以便这些事实在会话开始时加载,而不是重新构建。然后用能证明效果的方式进行测试:分叉一个会话,打开副本,并要求返回其中一个事实。如果副本给出了回答,那么拆分就不再是您知识库中的分叉。

MemoryLake 集成库,包含 OpenClaw、Hermes Agent、Claude、ChatGPT、MCP 和 REST API 的卡片
MemoryLake 集成库,包含 OpenClaw、Hermes Agent、Claude、ChatGPT、MCP 和 REST API 的卡片

这在实践中改变了什么

第一个变化是,分叉在实质意义上变得“免费”了。人们之所以犹豫是否要拆分一个长会话,是因为该会话兼作他们的笔记,而拆分笔记感觉很鲁莽。一旦确定的部分存在于会话之外,您就可以根据工作需要随时进行拆分。

第二个变化是,会话选择器不再是一次记忆力测试。仅凭元数据很难区分同一个下午产生的两行记录。如果结论在别处,选错行只会浪费几分钟来重新熟悉情况,而不是重复做出决定。

第三个变化体现在多个会话同时运行时。Anthropic 特意支持了这一点 —— 后台会话、智能体团队、跨会话消息传递 —— 并且每个会话都是另一个在启动时不了解其他会话所知内容的上下文。我们在智能体团队如何共享他们正在处理的工作以及在 Claude Code 会话之间共享上下文中讨论了这个问题。

第四个变化是,对话记录回归了其本质 —— 它是对发生过的事情的极佳记录,但对已决定事情的索引效果却很差,这就是为什么可搜索的日志总是让想要记忆功能的人感到失望的原因。

使用分叉 Claude Code 会话的最佳实践

在创建时为每个分叉命名。 默认名称描述的是对话的开始;您需要一个描述拆分原因的名称。

在实验之前进行分叉,而不是在出错之后。 在产生疑问的瞬间进行分叉可以给您一个干净的起点。在进行了三次探索性尝试之后再进行分叉,会将这些探索过程复制到两边。

预料到单独的进程会再次要求授权。 文档明确指出,分叉到单独的进程中 "启动时将不包含这些授权,您需要在那里重新批准。" 提前为这些提示做好准备,而不是在运行中途遇到它们。

检查您的设备连接到了哪个对话。 分叉后,连接的手机或浏览器会跟随分支。如果您打算继续观察原始会话,请主动切换回去。

不要仅依赖计量器来判断对话是否完整。 9 月 15 日的修复提醒我们,指示器和它所测量的对象是两个独立的系统。

在每个会话之外,为每个决定保留一份书面答案。 如果一个事实足够重要,以至于分叉的两半都需要它,那么它就不应该属于其中任何一半。

结论

2.1.273 版本增加了一个小巧、实用的便利功能:您现在可以从 Claude 应用分叉一个 Remote Control 会话,并且该分叉作为后台会话在您的计算机上运行。其机制一直都有文档记录 —— 分叉 "复制对话记录," 原始会话 "在磁盘上保持不变," 并且运行中的工作会向 "您切换到的新分支报告,而不是在原始会话中。"

该版本改变的是数量关系。以前拆分对话需要坐在电脑前;现在无论您身在何处,只需轻点一下即可。这意味着会有更多的分叉、更多看起来很像的会话行,以及更多您学到的东西仅存在于两个地方之一的时刻。

这一切都不是缺陷,环境也并非在这里宣布一项记忆功能。这只是一个复制操作表现出了它应有的行为,厂商在其官方文档中对此进行了准确的描述。应该得出的结论与分叉无关。而是对话从来都不是保存您已经决定的内容的正确地方,而分叉在短短一个下午的时间里就让这一点变得显而易见。

常见问题

从这里分叉对话实际上会复制什么?

截至拆分时间点的对话历史记录。Anthropic 的会话文档将其表述为 "复制到分支中,直至您运行 /branch 的时间点," 并描述了一个 "复制对话记录并将正在运行的 Claude Code 进程切换为向其写入" 的操作。此后添加的消息仅存在于添加它们的那一侧。

当我分叉时,原始会话会被损坏吗?

不会。文档指出 "原始会话在磁盘上保持不变,并保留在会话选择器中," 并且分叉会话 "会获得它们自己的会话 ID,并作为单独的行显示。" 您可以使用 /resume 及其名称或 ID 返回它。确实会移动的是活动工作:运行中的后台子智能体和后台 Bash 命令会继续运行,它们的输出 "会出现在您切换到的新分支中,而不是原始会话中。"

我可以将分叉的 Claude Code 会话合并回原始会话吗?

会话文档描述了创建分支并返回其中任何一个,但并未描述两个会话 ID 之间的任何调和。请将分叉视为您将在其中做出选择的副本,而不是您将要重新合并的分支,并将双方都需要的内容保留在两个对话记录之外。

当我分叉手机所连接的会话时,手机会发生什么?

它会跟随分叉。文档指出,连接的手机或浏览器 "会跟随您进入分支,并在那里继续接收新消息。" 当您切换对话时,也会有相关的行为:设备 "不会收到切换后对话的标题或早期历史记录," 仅接收来自终端中打开的任何对话的新消息。

我的权限批准会结转到分叉中吗?

这取决于进程。在同一个进程中,授权是 "结转;分支在相同的进程中运行,因此您现有的授权仍然适用。" 如果分叉在单独的进程中运行 —— 也就是 --fork-session 所做的,以及新的由应用发起的分叉在您的机器上产生的结果 —— 那么 "新进程启动时将不包含这些授权,您需要在那里重新批准。"

2.1.273 中的自动压缩修复会恢复我已丢失的上下文吗?

不会。发布说明描述的是纠正今后计算上下文的方式:计量器和自动压缩此前 "将 advisor-tool 轮次计算为大约两倍于其实际上下文大小,这导致自动压缩在大约实际窗口一半时就会触发。" 已经运行的压缩不会被撤销,且文档对其代价描述得很清楚:较旧的工具输出首先被清除,并且 "对话早期的详细指令可能会丢失。"