会话与话题模型

理解 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 空闲,等你的下一条消息

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

权限模型(三层)

层级能力由谁控制
对话权(canTalk)提问、查日志、读代码allowedChatGroups(群内全员)/ globalGrants(全局名单)/ /grant
操作权(canOperate)切目录 /cd/restart/close、点卡片按钮allowedUsers(owner 名单)
owner 专属/grant /revoke 授权他人owner

这套分层让你能放心把机器人拉进值班群:所有人能问,但只有 owner 能改会话状态,外部成员误点也不会把会话搞乱。

常见困惑

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

下一步:权限细节见 FAQ · 权限怎么分;把会话搬到别的群见 会话接力