Skip to content
FunCoding

Search

Search docs, agents, posts, Skills and MCP servers

跨会话消息

让 Claude 向你的其他 Claude Code 会话发送消息:何时使用、怎么发、消息怎么送达与被拒绝、空闲通知,以及跨机器的限制。

跨会话消息要求 macOS 和 Linux(包括 WSL 2 里的 Linux)上的 Claude Code v2.1.224 或更新版本,原生 Windows 上需要 v2.1.234 或更新版本。会话满足要求时,消息功能默认就是开启的。

跨会话消息让 Claude 把一条消息从你的一个 Claude Code 会话送到另一个。当一个会话里的改动破坏了另一个会话所依赖的东西,Claude 可以在你察觉之前就警告那个会话;当一个会话敲定了一个问题,它也可以把结论交给需要的会话。消息是一个 Claude 写给另一个的一段文字,从不包含发送者的对话历史或文件。想移动整段对话或它的上下文,改为恢复会话。

何时使用

当你的某个会话有另一个会话在任务中途需要的东西时使用。Claude 看到需要时可以自己发消息,比如做了影响另一个会话工作的改动之后,你也可以要求它发:

  • 交接发现:一个会话发现破坏性改动或做出决定时,Claude 为负责受影响区域的会话总结它,而不是让你在那里重新解释
  • 协调并行 worktree:当多个会话在不同的 worktree 里处理同一仓库,Claude 可以告诉其他会话什么已经合入
  • 获取长任务的状态:让迁移或测试运行向你正在看的会话汇报,或你自己在那里问;如果那个会话在这台机器上,Claude 还可以请它在下次空闲或退出时发一条通知
  • 跨机器发消息:触达你在另一台机器或云端的会话

向另一个会话发消息

当你的一个会话学到另一个会话需要的东西(发现、状态或决定),Claude 会把它传过去,而不是让你在终端之间复制粘贴。Claude 用 ListAgents 发现目标,用 SendMessage 发送。想自己提示,告诉 Claude 你想让另一个会话知道或做什么:

Ask the session running in my other terminal whether the migration finished
Explain what we just did to the session working on the payments API

消息的具体内容由 Claude 自己写,所以你的提示可以把内容留给它。想自己指定目标,在提示里提及那个会话:输入 @ 加会话名的前几个字母,从补全里选择,就像 @ 提及子智能体一样:

Let @api-worker know the schema migration finished

补全里列出这台机器上你其他活动的会话。有两种情况需要的不只是名字的前几个字母:本机之外的会话(云端或 Remote Control 会话)只有在 Claude 列出或给它们发过消息之后才会出现在补全里,所以先让 Claude 列出它们;名字里有空格或字母、数字、连字符、下划线之外的字符时,要用双引号括起来,如 @"release notes"。当不止一个活动会话响应同一个名字时,Claude 会在发送前问你指的是哪一个。

消息送达

接收方 Claude 在活动回合里的工具调用之间读取消息,所以正在运行的工具从不会被打断;接收会话空闲时,Claude Code 用这条消息开启一个新回合。来自另一个会话的消息以纯文本到达:如果它用 @ 提到了文件或 MCP 资源,Claude 看到的是按字面写的提及,Claude Code 不会附加任何东西。

Claude Code 在这些情况下拒绝一条消息:消息超过大小上限(在发送会话里就被拒绝,不会离开);对这台机器上某个会话的快速连发已经达到它收件箱能接受的数量;这台机器上的回复目标没通过安全检查(如符号链接目标)。

接收会话用它自己的入站控制检查每条到达的消息,结果有三种:已送达(Claude Code 把消息交给接收方 Claude)、被扣留(Claude Code 把消息搁置而不送达,只有你批准或之后的模式或设置变化允许时才到达 Claude)、被拒绝(Claude Code 丢弃消息)。送达后,消息像你输入的提示一样计入用量,接收方 Claude 可以用同样的方式回复发送者。

权限边界保持按会话划分:Claude 被指示永远不要请另一个会话执行在自己会话里被拒绝或阻止、或会被自己权限设置阻止的动作,而是把这类工作转回给你。

在另一个会话空闲时收到通知

Claude 可以请你这台机器上的某个会话在它下次空闲或退出时发回一条通知(这里的空闲指会话完成一个回合且没有排队内容)。当你在等另一个会话里的长任务、又不想反复去看时用它:

Tell me when the migration session finishes what it's working on

Claude 用 SendMessage 工具的 notify_when_idle 输入订阅,可以附在它本来要发的消息上,也可以单独使用。单独使用时,Claude Code 订阅时不会在被观察的会话里开始回合或花费 token。被观察的会话会显示一行说明另一个进程请求在它下次空闲时得到通知;提出请求的会话把通知显示为一行点名被观察会话的文字。如果 12 小时内没有通知到达,Claude Code 会丢弃订阅并告诉 Claude,让它不再继续等。

官方原文还涵盖消息的样子、控制入站消息(crossSessionInbound、isolatePeerMachines 等设置)、向其他机器上的会话发消息(单向情形)以及限制。