前言¶
如果你同时在多个终端里开着 Claude Code,大概率遇到过这种场景:A 窗口刚跑完数据库迁移,B 窗口还在写依赖新表结构的接口,C 窗口在另一个 worktree 里改前端——彼此不知道对方进展,只能手动把终端输出复制到另一个窗口,再让 Claude 重新理解一遍上下文。
2026 年 8 月 7 日,Anthropic 在 Claude Code v2.1.224 中上线了跨会话消息传递(Cross-Session Messaging)功能。macOS 和 Linux 上各自独立运行的会话,可以通过 ListAgents 发现彼此、用 SendMessage 互发纯文本摘要,不再需要你在终端之间来回搬运信息。官方文档与 MacRumors 等媒体均已报道这一更新。
本文基于 Anthropic 官方文档核实功能细节,介绍它的工作原理、适用场景、使用方式与安全边界。
跨会话消息传递是什么¶
跨会话消息传递,指的是你自己启动的多个 Claude Code 会话之间,由 Claude 代为传递一段文字消息。
需要明确几点:
- 传的是摘要,不是上下文。消息是一段 Claude 写给另一个 Claude 的纯文本,不包含对话历史、文件内容或权限状态。如果要延续整段对话,应使用会话恢复(resume)功能,而不是跨会话消息。
- 你不需要手动调用工具。
ListAgents和SendMessage是 Claude 在后台使用的工具,你在终端里用自然语言告诉 Claude「把这件事通知另一个会话」即可。 - 默认开启,无需额外配置。只要版本、平台和提供商满足要求,功能自动可用。
Anthropic 在 X 上发布的演示也强调了这一点:Claude 发送的是摘要,接收方在自己的任务中途拾取消息继续工作。
核心机制:ListAgents 与 SendMessage¶
Claude Code 为跨会话通信引入了两个工具:
| 工具 | 作用 |
|---|---|
ListAgents |
发现当前可联系的会话,包括本机其他会话、当前会话内的子代理(subagent)等 |
SendMessage |
按名称向目标会话投递一段纯文本消息 |
同一套 SendMessage 也服务于单会话内的子代理和 Agent Teams 队友,但跨会话消息针对的是你独立启动、各自 steering 的会话,与 Agent Teams(由 Claude 生成并协调的团队)是不同层级的协作方式。
如何查看可联系的会话¶
在任意会话中输入:
/list-agents
别名是 /peers。输出会列出每个会话的名称、工作目录等信息。会话名称可通过 /rename 或启动时的 --name 参数自定义;未设置时,Claude Code 会根据工作目录文件夹名自动生成,例如 myapp-3f。
如果 /list-agents 命令无法识别,说明当前会话不具备跨会话消息能力,应先检查 claude --version 是否达到 v2.1.224。
消息如何投递¶
接收方 Claude 在工具调用间隙读取消息,不会打断正在执行的工具。如果接收会话处于空闲状态,Claude Code 会开启新一轮对话来处理这条消息。
消息到达后,会话里会显示带发送方标识的卡片;阅读完毕后折叠为一行 Message from,按 Ctrl+O 可展开查看原文。
典型使用场景¶
官方文档列举了以下几类常见用法:
- 传递发现与决策:一个会话发现破坏性变更或做出架构决策,Claude 自动把摘要发给正在相关模块上工作的另一个会话。
- 并行 worktree 协作:多个会话在不同 git worktree 中并行开发,一方合并或提交后,可通知其他会话「main 上已落地某改动,可以 rebase」。
- 长任务状态回报:迁移、测试套件等耗时任务在后台会话运行,完成后向主会话汇报结果;你也可以主动询问「另一个终端里的迁移跑完了吗」。
- 跨设备回复:通过 Remote Control 连接到手机或 Web 端的会话发来消息后,本机终端可以回复(跨机器场景仅限回复,不能主动发起)。
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 会自行组织消息措辞,你不必逐字指定内容。
消息传输路径与安全边界¶
本机 vs 跨机器¶
| 对方会话位置 | 传输方式 | 本机会话能做什么 |
|---|---|---|
| 同一台机器 | 本地 per-session socket,不经过 Anthropic 服务器 | 发新消息 + 回复 |
| 你的另一台机器 | 经 Anthropic 服务器,通过 Remote Control 投递 | 仅回复 |
| Claude Code on the Web | 经 Anthropic 服务器直达云端会话 | 仅回复 |
同机消息走本地 socket,MacRumors 与官方文档均确认这类流量不会上传到 Anthropic。跨机器场景则必须经过服务器,且只能回复对方先发来的消息。
如需对跨机器消息额外把关,可在设置中开启 isolatePeerMachines: true,每次向外发送前需你明确批准。
接收方的权限限制¶
来自其他会话的消息不能替代你的操作授权,具体限制如下:
- 不能代你批准权限:消息不算你的同意,无法替你点击 pending 的 permission prompt。
- 不能修改配置:接收方 Claude 被明确禁止因另一条会话的请求而改动权限设置、
CLAUDE.md等配置。 - 命令不会被执行:消息里的
/compact等文本按纯文字处理,Claude Code 不会执行。 - 敏感操作仍需你确认:如果消息引发的工作需要权限,接收会话仍会弹出与你手动操作相同的提示。
此外,可通过 crossSessionInbound 设置控制入站消息:accept(直接投递)、hold(暂存待审批)、refuse(直接丢弃)。默认策略还会根据双方 permission mode 分类——例如接收方处于 bypass 模式时,来自普通模式的会话消息会被 hold 等待你批准。
平台支持与限制¶
版本要求:Claude Code v2.1.224 或更高。
操作系统:macOS、Linux(含 WSL 2)。原生 Windows 暂不支持。
不支持的提供商:Amazon Bedrock、Claude Platform on AWS、Google Cloud Agent Platform、Microsoft Foundry。
可能关闭功能的变量:若设置了 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC、DISABLE_TELEMETRY、DO_NOT_TRACK 或 DISABLE_GROWTHBOOK 中任一导致 feature-flag 评估被关闭,跨会话消息也会不可用。
其他限制:
- 仅支持纯文本,不含结构化 Agent Teams 协议消息。
- 防循环:对重复消息有速率限制,相同内容短时间内的重复投递会被丢弃;每个会话最多排队 50 条待读消息。
- 容器与宿主机之间因文件系统隔离,通常无法互发;同一容器内的会话可以。
claude -p无头会话也可接收消息(bare mode 除外)。
同一版本还包含约 31 项其他改动,例如面向 Team 和 Enterprise 计划的 claude self-hosted-runner 命令,以及一项 Linux/macOS 沙箱安全修复(denyRead/denyWrite 规则尾部带斜杠时被静默忽略的问题)。
与 Agent Teams、子代理的区别¶
Claude Code 有多种「多代理」形态,容易混淆,简要对照:
| 方式 | 适用场景 |
|---|---|
| 跨会话消息 | 你自己开的多个独立终端会话之间传递摘要 |
| Agent Teams | Claude 生成并协调一组队友,团队内有专用消息协议 |
| 子代理(Subagents) | 单会话内 Claude 派生的子任务代理,可用同一 SendMessage 联系 |
| Agent View | 从一个界面监控、调度多个并行会话 |
| Remote Control | 用手机或其他设备遥控某个终端会话 |
| Channels | 把 CI 结果、聊天消息等外部事件推入会话 |
跨会话消息解决的是「我自己开了好几个窗口,怎么让它们互通情报」;Agent Teams 解决的是「让 Claude 自己组队干活」。两者可以并存,但定位不同。
如何关闭或限制¶
若不需要此功能,可以分方向关闭:
停止接收:设置 crossSessionInbound 为 refuse。
停止发送与发现:在权限规则中 deny SendMessage 和 ListAgents(注意:这会同时禁用对子代理和 Agent Teams 队友的消息能力)。
组织管理员也可在 managed settings 中统一关闭。
小结¶
Claude Code v2.1.224 的跨会话消息传递,把「终端 A 的发现告诉终端 B」这件事从人工复制粘贴,变成了 Claude 之间的自动摘要投递。ListAgents 负责发现,SendMessage 负责送达;同机走本地 socket,跨机经 Remote Control 且仅支持回复。
它不会搬运文件和历史,也不能替你批准敏感操作——安全边界仍牢牢握在你手里。对同时在多个 worktree 或终端并行开发的开发者来说,这是一个实用的小升级:少切几次窗口,少粘贴几段日志,协作节奏会顺畅不少。
升级后可在终端执行 claude --version 确认版本,再输入 /list-agents 看看当前有哪些会话在线。如果你已经在 macOS 或 Linux 上跑着多个 Claude Code,不妨让其中一个会话给另一个发条消息试试。