botmux 提供两种把「已有会话」接入/搬移的能力,方向相反、不可混用:

  • /adopt:把本机 tmux 里已在跑的 CLI 进程接入 botmux(外部 → 飞书);
  • /relay:把已在 botmux 里跑的会话从 A 群搬到 B 群(飞书群 → 飞书群)。

会话锚定与生命周期的整体模型见 session-model。

/adopt:本地 tmux 会话桥接

把已经在本地 tmux 里跑着的 CLI 无缝接入 botmux,在手机上通过飞书查看进度和交互。典型场景:公司电脑 tmux 里 Claude Code 写到一半要走,手机飞书发 /adopt 就能接着看、接着发。

/adopt              # 扫描本机 tmux,弹出选择卡片
/adopt 0:2.0        # 直接接入指定 tmux pane(session:window.pane)

选择卡片只列当前 bot 所绑 CLI 的会话(Pi bot 不会列出 Codex/TRAE 的 pane),且排除 botmux 自己的 bmx-* 常驻会话。

是「桥接」,不是接管

adopt 采用零打扰桥接:botmux 只旁路观察 pane(tmux pipe-pane 读输出、send-keys 写输入),从不 attach、不 zoom、不 group 你本地的 tmux。

  • 共享模式:接入后本地终端(如 iTerm2)与飞书双向同步——流式卡片实时显示终端输出,飞书聊天框输入直接透传到终端;本地 tmux 全程保持连接、毫发无损。
  • 安全断开:点流式卡片「⏏ 断开」(或发 /close),botmux 退出观察、清掉自己这侧的 worker,绝不结束你的 CLI,原进程继续在本地 tmux 里跑。

卡片上旧的「🔄 接管」按钮已停用:桥接模式下不再渲染,历史卡片点了也是空操作。以 --resume 完整重建为标准 botmux 会话的能力(/adopt --takeover)仍在路线图上、尚未上线。当前 adopt 始终只有「共享桥接」一种形态。

adopt 的硬边界

adopt 会话的生命周期在你的机器上,不归 botmux 管:

  • 不能 /relay:CLI 在你电脑里跑,botmux 控不了它的 tmux 生命周期,接力会被拒。要换群继续,用新会话 + 交接。
  • 不能 resume:不支持 --resume 重建。
  • CLI 退出即结束:adopt 模式下 botmux 不做自动重启——被接入的 CLI 自己退出后会话随之结束(卡片冻结、worker 收掉),不会像常驻会话那样重开。
  • 沙盒 bot 不能 adopt:沙盒要包住一个从头启动的 CLI,无法套在已跑的进程上(fail-closed 拒绝,见 sandbox)。
  • daemon 重启后的恢复很谨慎:重启时先核对宿主 CLI 是否还活着——确认没了才关会话;探测结果不确定(瞬时失败)时保持会话关闭,要等下一次 restore pass(例如再次重启 daemon)才重新验证,不会在下一条消息到来时自动复验。

定位是多设备共享而非远程控制:路上用手机继续,回到电脑点「断开」接着用。

/relay:会话跨群接力

把一个正在运行的 AI 会话从一个群接力到另一个群继续:飞书消息历史留在源群,但 AI 的记忆 / 上下文接续过去。搬过去是原班 CLI 进程、原班记忆,不是复制一份重开——例如私聊里把方案调通后,一键搬进团队群让大家接着这条上下文继续。

两种用法

1. /relay(picker 模式)—— 在目标群把会话「拉」过来。在你想接力到的群里发 /relay,弹出卡片列出你作为 owner、同一机器人在别处的活跃会话,选一个拉过来。列表排除当前落点锚点——thread-scope 下即当前话题、chat-scope 下即整群、扁平 DM 下即整段单聊;因此同群里的其它话题会话会列出,可用于同群话题间搬运。

**2. /relay --create(建群模式)—— 把当前会话「搬」到新群。**在当前会话里发 @botA @botB /relay --create:自动新建一个群、把被 @ 的机器人都拉进去,并把当前会话(以及被 @ 的协作伙伴在本话题的会话)一起接力过去。

/relay                            # 在目标群:拉一个你的远程会话过来
@Claude @Codex /relay --create    # 把当前会话搬进新建群,带上协作伙伴

接力后的表现

新群里会收到提示:「已从源群接力会话过来;飞书消息历史留在源群,AI 记忆已接续;@ 对应机器人继续对话即可」。源群里那张流式卡片冻结成存档(移除按钮,避免误操作影响新群里活着的会话)。

限制

  • picker 模式在普通群 / 话题群 / 线程内 / 机器人单聊(DM)都可用:thread-scope 目标落在对应话题;单聊按 DM 模式落点——扁平连续模式(p2pMode chat)接进整段单聊,话题模式由 /relay 消息种一个新话题。
  • 只有**会话发起人(owner)**能接力自己的会话。
  • 会话正在处理中(mid-turn)不能接力,等本回合 idle 后再发。
  • /adopt 接入的外部 tmux 会话不能接力。
  • 目标落点若已有该 bot 的活跃会话,需先 /close 再接力(按落点锚点判定:chat-scope 是整群/整段扁平 DM,thread-scope 才是具体那条话题——同群不同话题不冲突)。

adopt 与 relay 的区别

/adopt/relay
方向本机 tmux 进程 → 飞书botmux 会话 A 群 → B 群
形态旁路桥接(不接管进程)整会话搬家(上下文接续)
生命周期归属你的机器botmux
可否互相配合adopt 会话不能 relay—

多 bot 协作场景下常配合使用:先在单聊跑通,再 /relay --create 拉上协作 bot 建群继续(见 multi-bot)。