会话与话题模型

理解 botmux 的关键是搞清「一条消息落到哪个会话」——「为什么每次 @ 都像新开、丢了上下文」「新群怎么拉到历史」这类困惑,根子都在这。

适用:搞不清消息去了哪个会话、想控制新开 vs 复用、或配群内权限时。

三种群形态

形态行为
话题群(THREAD)每个新话题 = 一个独立 CLI 会话。同一话题内的消息进同一会话,不同话题互相隔离。最推荐。
普通群(DEFAULT)默认不自动开话题。/t <内容> 新开话题并提交首轮任务,需要选仓时选定后开工;裸 /t 先建立话题入口:需要选仓时显示仓库选择卡,已有固定目录或没有可选项目时不启动空会话,等待话题内下一条任务或 /repo。
私聊直接和机器人开聊,相当于一个长期会话。

关闭「任务执行时显示状态卡片」后,/t <内容> 仍会先产生一条可见的话题回复,确保飞书立即展开 thread;reaction 只作为进度提示。

Oncall 群 & chat-scope 群

  • Oncall 群:/oncall bind <path> 把整个群锚定到一个项目目录,跳过仓库选择,群内任何成员 @ 即问即答。见 Oncall 模式。
  • chat-scope 群:/group <群名> 一键新建一个群,整个群作为一个独立会话。

会话状态机

流式卡片顶部的状态指示:

  • 🟡 启动中 — worker 正在拉起 CLI 进程
  • 🔵 工作中 — CLI 正在思考/执行,输出实时刷新
  • 🟢 就绪 — CLI 空闲,等你的下一条消息

每次回复创建新的流式卡片,上一轮卡片冻结在最后状态,便于回看历史。

会话的四个名字

「改了名怎么飞书里没变?」——一个会话同时挂着四层名字,各管各的:

层是什么谁能改 / 怎么改
飞书群名(oc_ 群)群本身的名字,群里所有人可见会话内执行 botmux chat rename "新群名"(对应 botmux-chat-rename 技能;agent 因阶段变化主动改名加 --proactive,带 10 分钟防抖)。改的是整个群:话题群里所有话题、全部成员都看到新群名
飞书话题名(omt)话题在飞书话题列表里显示的名字改不了:飞书开放平台没有话题标题接口,话题列表始终显示话题首条消息。这是平台限制,不要期待 botmux 能改
botmux 规范标题(canonical title)Dashboard 各视图、/sessions 列表里显示的会话标题人在群里发 /rename <标题>(有对话权即可);agent 在会话内用 botmux session rename "<标题>"(见下)。最长 200 字符,Dashboard 与列表即时更新
CLI 原生会话名Claude Code / Codex 等 CLI 自己的 resume 列表名botmux 改名时 best-effort 同步;CLI 不在线或不支持原生改名时不同步,不影响 botmux 标题

botmux session rename 是本批次新增的会话内原语:

  • 只能在会话内执行,会话 id 只从会话环境自动识别,不接受 --session-id 等参数——改不了别人的会话。
  • 标题建议「类型|具体事项」,如 排障|支付链路超时(对应 botmux-session-rename 技能)。
  • 它只改 botmux/Dashboard 标题:飞书群名不变(那是 botmux chat rename),飞书 omt 话题名平台侧不可改。

权限模型(三层)

层级能力由谁控制
对话权(canTalk)提问、查日志、读代码allowedUsers / allowedChatGroups(群内全员)/ chatGrants、globalGrants(带额度的访客)/ oncall / 开放模式等多条放行腿;另有 blockedUsers 黑名单全局否决
操作权(canOperate)切目录 /cd、/restart、/close、/card、/cot、/mention-mode、点卡片按钮allowedUsers(owner 与管理员名单);开放模式下人人有
管理命令/grant /revoke 授权他人、oncall 开关owner / 管理员(allowedUsers)

这套分层让你能放心把机器人拉进值班群:所有人能问,但只有管理员能改会话状态,外部成员误点也不会把会话搞乱。完整分层(额度、有效期、入群≠授权、黑名单、授权申请卡)见 权限与授权。

常见困惑

  • 「每次 @ 都像重新开始、丢上下文」:在话题群里,不同话题是不同会话——你以为在追问,其实开了新话题 = 新会话。想接着聊就在同一条话题里回复;确实要复用同一会话见下。
  • 新群 / 新话题拉不到之前的聊天:新会话默认从干净状态起。要它读群历史,直接说「看下之前的聊天记录」(需机器人有群消息读取权限,见 FAQ)。
  • 想换底层 CLI 又保留上下文:目前做不到跨 CLI 无损热切——原生会话历史不会翻译到另一种 CLI。要换 CLI 就开新 bot / 新 session,并让原 bot 输出一份 handoff 摘要交接。(/relay 是把同一个会话整体搬到另一个群、不换 CLI;/adopt 是把本机已有 tmux/zellij / 可恢复会话接进飞书,也不换 CLI。)

下一步:权限细节见 权限与授权 与 FAQ;@ 策略见 @ 策略;把会话搬到别的群见 会话接力。