斜杠命令
在话题里直接发这些命令即可,由 daemon 拦截处理。只有透传章节里白名单内的命令会原样透传给底层 CLI;其余 daemon 不认识的 /xxx 会被当作普通对话文本按普通消息转发。随时发 /help 查看完整清单。
📌 会话管理
/sessions 卡片示意:

裸 /t 的选仓/固定目录分支见会话与话题模型。
指令头的几条指令:
/repo <路径|项目名>—— 直接钉仓库,跳过选仓卡片。注意只吃一个 token:带空格的路径要写成/repo "~/Code/my project"。/repo(不带参数)—— 直接在默认工作目录开会话,等同选仓卡片上的「直接开始」。/repo wt <路径|项目名> [分支]—— 先在该仓库上新建一个 worktree(基于远端默认分支),再在里面开会话。分支可省略(按标题/首轮任务自动命名);写了分支时只认与仓库同一行、长得像分支名的下一个词(ci/temp_split这类),中文正文不会被误吃,但英文开头的正文请换行再写。分支名不合法、目标目录已存在都会在开话题前拒绝;git 侧创建失败则话题已建、会话停在待选仓状态。创建还在进行时重发会提示进行中;失败之后在话题内发/repo <路径|项目名>或/repo wt <仓库> [分支]即可,此前的消息已暂存。/model <模型>—— 本次启动用哪个模型。只对启动参数里带得动模型的 CLI 有效,带不动的会被拒绝而不是静默忽略。/effort <档位>—— 推理强度(low/medium/high/xhigh/max/ultra),按本次实际使用的模型校验。
整条消息可以写成一行,也可以换行分开,结果一样:
不写首轮任务时(如 /t /repo botmux),CLI 会空跑起来等你的下一条消息,不会自说自话。
几条边界:
- 指令头只在新话题的第一条消息里生效。进行中的话题里要换仓库/模型/推理档位,请分别单独发
/repo、/model、/effort;改标题用/rename。 - 头部的
/repo wt不接受编号形式(编号只在选仓卡片上有意义);会话内的/repo wt <编号|项目名> [分支]仍可用。 - 会话中途单独发的
/repo仍然吃整行,与头部里的单 token 规则不同。
💬 回复模式(/reply-mode)
控制 bot 被 @ 触发时如何开会话。无参数(或 status)查看当前模式;带参数修改需 canOperate,仅查看需 canTalk。群聊中均需 @ 目标 bot 才生效,多 bot 群须 @ 到具体 bot。仅普通群与 1:1 私聊支持;话题群无需设置(本就是话题),命令会被拒绝。
私聊(1:1 DM)——模式对该 bot 的所有 DM 生效(bot 级全局配置,非 per-chat),但不同用户与该 bot 的 DM 仍各自隔离会话、互不共享。只有 chat / topic 两态(new-topic 是 topic 的兼容别名):
shared / chat-topic 依赖群内原生话题,私聊不支持,会被拒绝。
普通群——顶层 @ 的开会话方式(per-chat 覆盖,优先级高于 dashboard 默认值):
群级设置会覆盖 dashboard「Bot 配置 → 普通群模式」的默认值。
/substitute [status|on|off] —— 查看或切换当前群的替身模式开关(修改需 owner)。
📢 @ 策略(/mention-mode,仅普通群)
/mention-mode always|topic|never|ambient 切换本群策略,/mention-mode status(或不带参数)查看。仅普通群可设:私聊天然不需要 @,话题群与 /group 会话群会被拒绝。查询只要对话权,修改需操作权(allowedUsers)。
always:必须 @ 才回应(默认);topic:本 bot 自有话题内回复免 @;never:全群免 @;ambient:免 @,但消息明确 @ 了其他人/bot 时让路。- 免 @ 不等于免权限,且仍有 8 个免 @ 例外(话题内回复、替身、消息监听器等)——完整语义见 @ 策略。
📑 群标签页
飞书内置标签页只能查看和参与排序,不能通过开放接口重命名或删除。若群设置为「仅群主和管理员可管理标签页」,机器人也必须具备相应群权限。
AI 或后台脚本应使用 CLI,而不是向群里发送 slash command:
CLI 会从当前 BOTMUX_SESSION_ID 自动确定 bot 和群;脱离当前会话时可传 --session-id,要覆盖目标群可传 --chat-id。add 按 URL 幂等:同一个页面已有 Tab 时复用,并按需更新名称,适用于 MR、项目看板、发布页等自动化场景。后台还可使用 botmux tabs list|update|remove|sort。
🔀 透传给底层 CLI
/compact /model /clear /plugin /usage /new /context /cost /mcp /diff /code-review /security-review /review /btw /effort /fast —— 字面送达底层 CLI,交给它的内置命令处理。
/fast 仅对 Codex 生效:切换 Codex 原生的 service tier 档位,流式卡片会显示只读的 ⚡ <档位> 徽标,如实反映 Codex 实际运行的档位。在 RPC 输入模式或 Riff 后端上,按键到不了 Codex 执行器,因此 /fast 在这些后端会 fail-closed 给出明确提示,而非静默失效。
部分 CLI 还有 adapter 默认放行的命令:Claude Code / Codex 默认放行 /goal,因此新话题第一条发 /goal ... 也会先启动/选择仓库,再把 /goal ... 原样投给 CLI。
想放行更多命令,给该 bot 配 customPassthroughCommands(如 ["/export"])即可在上面白名单之外按需扩展。会遮蔽 botmux daemon 命令的项(如 /status、/help、/cd)会被自动丢弃——daemon 命令始终保留自身语义,无法被透传覆盖。
一条消息里级联多条透传命令(会话内,CLI 已在跑):每行一条透传命令,最后可以接正文,botmux 会按书写顺序逐条送出,每条之间等 CLI 空闲——
规则:只有连续的前缀行是透传命令时才算级联(中间出现 /cd 这类 botmux 命令或不认识的 /xxx 则整条按今天的规则当普通文本转发);正文从第一条不以 / 开头的行起,之后再出现的 /xxx 都算正文;单行 /model opus 然后继续修 仍是整行原样送给 CLI,不会拆。等 CLI 空闲最长 120 秒,超时会把剩余条目直接发出并提示一句。远端沙箱后端(riff / mojo)与接管的外部会话不支持级联,会回一句「请分条发送」;带附件的消息也不切级联。
🧩 查看可用命令
/list-slash-command(别名 /slash):在卡片里分四段列出当前可用的 slash 命令——
- botmux 固定放行的透传白名单;
- 当前 CLI adapter 默认放行的命令;
- 本 bot 在 bots.json 用
customPassthroughCommands自定义放行的命令; - 从
.claude目录(项目级 +~/.claude+ 插件缓存)自动发现的自定义命令 / skill / 插件,以「命令 | 说明」分页表格展示,并提示检测到的 MCP server 名。
权限同 /help,不占用会话槽位。
📡 会话接入
🔐 用户授权
基础授权需要应用开通 im:message:readonly、im:resource、offline_access。其它操作若返回 missing_scope,按错误中的权限名使用 /login --scope ... 补授权,并由应用管理员先在开发者后台开通相应的用户权限。资源不可见或无访问权需要处理该资源的授权,重复 /login 不能解决。
🎭 角色(人设)
详见 角色与团队。
🔀 会话接力(普通群)
详见 会话接力 Relay。
🛎️ Oncall(群聊)
/oncall bind <path> · /oncall unbind · /oncall status
🔑 使用授权(owner / 管理员)
分层、额度、授权申请卡与黑名单详见 权限与授权。注意:把 bot 拉进群不等于授权,限制态 bot 仍只接受名单成员。
⚙️ 远程改配置 & 技能(owner 专用)
写盘即热更新,无需重启。
🆕 一键新建会话群
/group <群名>(别名 /g):自动新建飞书群、邀请你进群、转让群主,整个群作为一个独立 CLI 会话。@botA @botB /g <群名> 可把多个机器人一并拉进新群。
加上 --role-profile <profile> 可以在新群里自动 bootstrap 一套按 bot 区分的角色:
详见 一键建会话群。
📌 普通群升级为项目群
在普通群消息顶层 @ 计划作为主控的 Bot:
当前 Bot 会成为主控,群内其余由本机 Botmux 管理的 Bot 自动成为 Worker;配置写入与 Dashboard 相同的事实源,并立即发送、置顶待启动指引卡。启用时无需先确定项目目标,可以先在群顶层讨论。通过命令启用时默认打开“自动纳入新 Bot”:后续新加入且由同一 Botmux 管理的 Bot 会进入 Worker 白名单;这与“入群自动开工”开关相互独立。
主控会在每个项目轮次收到 Botmux 固定的项目状态协议:开始时读取持久状态,目标、阶段、当前推进、待办、阻塞或里程碑变化后及时更新。该协议与自定义 Role 分层注入,不会被 Role 的“仅首轮”策略或 Role 文案覆盖。项目首次正式立项时会在当前消息位置发送并置顶一张新的正式项目卡,再取消旧指引卡置顶;后续进展继续原地更新正式卡。
@机器人 /project status:查看主控、Worker 和项目是否已启动。@机器人 /project roles:在当前群回复角色配置卡,只列当前项目的主控与 Worker,且只有触发卡片的管理员可操作。保存复用/role的群级角色文件,并按该 Bot 的现有注入策略生效:每轮注入模式从下一条消息生效,仅首轮模式在新会话或重建后生效。@机器人 /project disable:退出项目群模式;未启动的指引卡会取消置顶,已有项目数据会保留以便重新启用后继续。
该命令只支持普通群,且仅 Bot 的 owner/allowedUsers 可以执行。重复执行 enable 不会覆盖已在 Dashboard 精选的 Worker 列表或自动纳入策略。Dashboard 可关闭“自动纳入新 Bot”,关闭后严格保留显式 Worker 名单;项目群配置区也会列出同一批 Agent,并可直接跳转到对应群角色编辑器。两种入口没有第二份角色配置。
🧠 群上下文共享
在真实飞书群中 @任一由当前部署管理的 Bot:
开关按群生效,默认关闭。开启后,当前部署管理的 Bot 会旁听并保存本群已发布的消息;未被 @ 的 Bot 不会因此启动。它在下一次按原有 @ 规则正常唤醒时,收到自己遗漏的、带来源标注的背景。开关不会改变 @ 提及策略,也不会为补背景额外创建模型回合或会话。
只有该 Bot 的真人 owner/allowedUsers 可以查看或修改开关;普通对话授权和其他 Bot 均不具备权限。私聊、API 虚拟会话不支持。配置 promptInjection=none 的会话明确不接收自动背景。
默认每轮背景上限为 24,000 字符;保存上限为每群 30 天或 10,000 条。背景占用被唤醒模型的输入 token,但旁听本身不调用模型。范围只含已发布的群消息和资源引用,不含私聊、隐藏推理、未发布工具结果或私有文件。平台历史补拉失败、权限不足或超出保留期时,背景会带不完整范围提示,不会把缺失内容伪装成完整历史。
status 和开启结果还会显示撤回事件订阅诊断。只有诊断原因为 subscribed 才表示应用配置已验证包含 im.message.recalled_v1;这不承诺平台推送 100% 到达。update_submitted 表示更新已提交但仍须在飞书开放平台发布新版本。未知、登录会话不可用或过期结果表示历史背景可能暂时保留已撤回消息,应检查该事件订阅后重试。关闭操作不会触发订阅检查或设置流程。
📄 飞书文档评论入口
/watch-comment:监听飞书文档评论、绑定 AI 会话并把回复发回评论串;支持 <文档链接> [--dir <路径>] [--all|--mentions-only] 与 list/off。/subscribe-lark-doc 保留原有的飞书逐文件 API 订阅流程。详见 飞书文档评论入口。
🔧 Workflow(流程编排,实验性)
旧的
/template run|cancel已退役;现在发/template只返回退役提示。
详见 Workflow。
👥 多机器人协作
@botA @botB /t <prompt>(各自开新话题)· @botA @botB /introduce(让本群机器人互相登记 open_id,协作时可精确 @ 对方)· botmux bots list(查看当前群可协作 bot)
⏰ 定时 & ❓帮助
/schedule ...(见 定时任务)· /help(话题内显示完整清单)
