Claude Code 跨会话发消息怎么用

讲清 ListAgents、SendMessage 与 crossSessionInbound 审批,及 Agent Teams 分工。v2.1.224+,macOS/Linux。

Claude Code 跨会话发消息怎么用

你在一个终端里改 schema,另一个终端还在写 payments API。改完才发现两边假设不一致,只能手动复制粘贴。Claude Code 跨会话发消息怎么用:从 v2.1.224 起,Claude 可用 ListAgents 发现本机其它会话,用 SendMessage 把结论送过去;你口述意图,Claude 写正文,不用自己调工具。

作者CodePass 技术编辑

跨会话消息传的是什么

官方 Cross-session messaging 文档 把通道定义得很窄:传的是一段纯文本,由发送方 Claude 写给接收方 Claude,不含对话历史,也不带文件。要把整段上下文搬过去,应走 resume 会话,不是 SendMessage。

典型用法有四类:一个会话发现 breaking change,通知正在改受影响模块的另一个会话;多个 worktree 并行时同步「这边已经 merge 了什么」;长任务(迁移、测试)向你在盯的主会话回报进度;以及回复从其它机器或网页 Remote Control 打进来的消息(跨机器只能回复,不能主动开聊)。

消息在接收方 Claude 的两轮 tool call 之间插入;若接收会话空闲,会新开一轮处理。送达后计费与你自己输入的 prompt 相同。权限仍按会话隔离:发送方 Claude 被指示不得替你在对方会话里申请已被本会话拒绝的操作;接收方若执行消息里的工作,仍走自己的 permission 规则。

ListAgents 与 SendMessage 怎么分工

这两个工具面向 Claude,不是你手敲的命令。ListAgents 列出当前能联系的对象;SendMessage 按名字投递。同一 SendMessage 工具也用于 subagent 和同会话内的 Agent Teams 队友,但跨独立会话才是本文主题。

你只需用自然语言下指令,例如「问另一个终端里的会话 migration 跑完没有」,或「把刚才的决定告诉正在改 payments API 的那个会话」。Claude 自己组织措辞;你不必写最终消息正文。v2.1.224 release 把 cross-session SendMessagecrossSessionInbounddialogExpiry 设置一并合入;更早版本没有这条通道。

送达结果分三种:Delivered(交给接收方 Claude)、Held(暂存,等你批准或策略变更后再放)、Refused(直接丢弃)。同机两个默认设置的交互会话之间,通常直接 Delivered;是否 Held 取决于接收方的 inbound 规则,见下一节。

怎么发现本机其它会话

自己查看可用对象,运行 /list-agents(别名 /peers)。输出里每个会话有可寻址的名字,以及工作目录(同名会话靠目录区分)。名字来自 /rename 或启动时的 --name;未指定时,交互会话默认用工作目录文件夹名加后缀,如 myapp-3f

列表覆盖三类可达目标:

  • 当前会话内的 subagent(Agent Teams 队友不在此列,走团队自己的 roster)。
  • 同一台机器上的其它 Claude Code 会话,包括 background sessions;前提是对方绑定了 inbox socket。
  • Remote Control 已连接时,标注为 Remote Control 的远端会话(只能回复其先发来的消息)。

/list-agents 不被识别,说明本会话不具备跨会话能力(版本、平台或 provider 不满足)。若命令可用但某次发送没到,多半是更窄的限制:SendMessage/ListAgents 被 deny、接收方 inbound 设为 hold/refuse,或目标在另一台机器而你试图主动开聊。

会话自己的收件地址在 /statusPeer address 行(uds: 前缀),也会通过环境变量 CLAUDE_CODE_MESSAGING_SOCKET 暴露给 hooks 与 Bash。同机投递走 per-session Unix socket,不经 Anthropic 服务器;容器与宿主机文件系统隔离时,两边互相看不见,同一容器内的两个会话仍可互发(含 self-hosted runner 场景)。

非交互的 claude -p 会话也会绑 socket,可出现在列表里;bare mode 不绑 socket,既不能收也不能被列出来。

crossSessionInbound 与 bypass 会话为什么要审批

crossSessionInbound 控制「别人发进来的消息怎么办」,取值 accept / hold / refuse。未显式配置时,Claude Code 按两个 permission 类自动决定,文档在 settings 优先级 里写清覆盖顺序。

一类是会 bypass permission prompts 的会话(含 bypassPermissions;Plan mode 在可选 bypass 时也归入此类)。另一类是会弹窗的:autoacceptEditsdontAsk 等。

默认规则可以压成一张对照表(发送方 → 接收方):

接收方权限类 发送方为 bypass 发送方会弹窗
接收方会弹窗 直接投递 直接投递
接收方 bypass held,需你点 Approve 直接投递

Held 时接收会话弹出审批框,展示发送方与预览;Approve 只放这一条,Deny 或超时(默认 dialogExpiry 五分钟)则丢弃。发送方在同机时会收到「消息被 hold」通知,以及后续批准/拒绝/过期的跟进。队列最多保留 100 条 held 消息,超出删最旧。

这正是 v2.1.224 release notes 强调的点:向 bypass 权限的会话发 cross-session 消息,不再 silent 投递,避免高权限会话被其它窗口悄悄驱动。-p 工人无法弹审批框;若要让无人值守的 -p 收消息,需在其 --settings 里设 crossSessionInbound: accept(用户级 accept 会影响你开的所有会话,慎用)。

跨机器回复还可设 isolatePeerMachines: true,任何发往本机以外会话的 SendMessage 都先问你,即使在 bypass 模式下也不例外;同机互发不弹此额外门。

和 Agent Teams、Remote Control 别混用

官方文档把多条「多会话」路径并列,选错通道会白配:

  • 续聊同一条对话或共享上下文 → resume,不是 SendMessage。
  • 要 Claude spawn 并协调一队队友、共享任务列表 → Agent Teams(实验开关 CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1)。
  • 从一个面板盯很多后台会话 → agent view。
  • 用手机/另一设备亲自 steer 某个终端会话 → Remote Control。
  • 把 CI、Slack 等外部事件推进入会话 → channels。

跨会话 messaging 适合你自己开多个独立终端、各自有任务,但偶尔要把结论或状态推给邻居。它和 Agent Teams 的边界在于:Teams 是单 lead 编排的多实例协作,SendMessage 在 team 内走同一 roster;跨会话则是你已存在的、互不隶属的窗口之间传话。多窗口文件互踩仍要靠 worktree 隔离,SendMessage 不替磁盘加锁,并行踩坑清单见 Claude Code 并行会话怎么管才不踩坑

平台门槛与通道本身的限制

功能要求 Claude Code v2.1.224 及以上,且满足后默认开启,无需单独开关。平台侧限制(摘自官方 Availability):

  • 操作系统:macOS、Linux(含 WSL 2);原生 Windows 不提供 cross-session messaging。
  • Provider:Amazon Bedrock、Claude Platform on AWS、Google Cloud Agent Platform、Microsoft Foundry 不可用。
  • CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICDISABLE_TELEMETRYDO_NOT_TRACKDISABLE_GROWTHBOOK 关掉了特性依赖的 feature-flag 评估,功能保持关闭。

通道层限制与平台无关:仅纯文本;Agent Teams 结构化协议消息不出 team。防 ping-pong:重复消息 rate limit、短窗口内相同内容丢弃、每会话最多 50 条待读。接收方对入站消息还有硬约束:不能代你点批准、不能因对方要求改 CLAUDE.md 或权限配置、消息里的 /compact 等命令只当普通文字、需要权限的工作仍弹你自己的 prompt。

组织可在 managed settings 里 deny SendMessageListAgents,并把 crossSessionInbound 设为 refuse,双向静默关闭(socket 仍绑定,但消息丢弃,界面无明显提示,需查配置确认)。

参考资料