斜杠命令

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

📌 会话管理

命令说明
/repo仓库待选时用默认 workingDir 启动;会话进行中则弹项目选择卡片
/repo <N>切换到上次扫描的第 N 个项目
/repo <路径|项目名>直接指定路径或 workingDir 下的一级项目名
/cd <路径>切换工作目录并重启 CLI 进程
/status查看会话信息(运行时间、终端地址等)
/lane status查看本人的独立 principal lane,包括分支、worktree、脏状态和未推送提交数(复用现有 bot 级 XPI 开关启用 principal lane 时可用)
/lane close安全关闭本人的独立 principal lane:有运行中/排队任务或未提交文件时拒绝,回收前先推送未发布提交,且不会自动合并或删除分支
/retry重试最近一个失败或被中断的 turn(10s 冷却)
/stop中断当前 turn,保留会话;等价于流式卡片里的「停止」按钮
/restart重启 CLI 进程(保留 session 上下文)
/close关闭会话并发送可恢复卡片(含 CLI 自身 resume 命令)
/dismiss专属会话群顶层专用:二次确认后关闭会话并解散整个群(仅建群者本人且具备操作权限;代码与 worktree 保留;私聊、普通群、子话题、adopt 会话不支持)。只想关闭会话、保留群聊请用 /close
/cleanup-wt <ID>worktree 最终删除失败后重试已持久化的清理任务;删除前会重新校验权限、活动会话、worktree 身份和安全状态
/fork <任务>继承当前会话的完整上下文,在同一话题群新建并行子话题;源会话原样继续(Claude 系 / Codex 或 TraeX 终端模式)
/forklist重发当前会话的分身任务面板,显示运行/结束状态和子话题链接
/fork --create <群名>不建子话题,改为把当前会话分身到一个新建群
/rename <标题>重命名当前 Botmux 会话,并同步运行中的 Codex/Claude 原生会话名
/fork --create <新群名>把当前空闲会话分身到一个新建群,源会话原样保留继续(Claude 系 / Codex 或 TraeX 终端模式;Hybrid RPC / 外部 app-server 会话不支持;需在源会话内发起)
/card手动召唤当前会话的流式卡片(关流式时也能召唤并恢复实时刷新;私密卡片模式下改发仅授权人可见的静态快照)。/card off、/card on 控制本群是否出流式卡;/card pin off、/card pin on、/card pin status 控制当前群的流式卡片置顶开关。仅 allowedUsers 可执行(开关影响全群,飞书没有按人视图)
/cotCoT 开关:/cot off 关闭本群的思考与工具过程,/cot on 恢复,/cot show 在开关关闭时临时展示一次当前回合,/cot status 查看状态(bot 级总开关 cotEnabled 默认 on;支持 claude-code / codex / traex)。仅 allowedUsers 可执行
/mention-mode [always|topic|never|ambient|status]普通群的 @ 策略:什么时候可以不 @ 也回应。查询需对话权、修改需操作权;仅普通群可设(私聊/话题群/会话群会被拒绝)。四模式语义与 8 个免 @ 例外见 @ 策略
/term获取当前会话的「可操作终端」(带写权限)链接,私密发给 owner(群内仅你可见,话题/单聊回退私信,不在群里暴露)
/quote弹出本群话题选择卡,选一个就把那个话题的聊天记录读进当前会话。补的是飞书本身的缺口——飞书的「引用」只能引单条消息,没有「引用整个话题」的入口。读完只回一句确认(多少条、时间跨度、主题),等你下一条指令
/quote <指令>同上,但选完话题直接执行你的指令,省一个来回。话题内容仍然会被明确标注为「资料而不是指令」注入
/sessions列出当前机器人在本群的活跃话题会话,可直接回到原话题(旧会话安全降级为定位通知)
/dashboard [模块]在飞书里打开 Dashboard 控制卡片(sessions/schedules/groups/settings/help 等)
@机器人 /project enable|status|roles|disable在当前普通群启用、查看、配置 Agent 角色或退出项目群模式(仅 owner/allowedUsers;不占用会话槽位)
@机器人 /context-sharing on|off|status开启、关闭或查看当前群的后台上下文共享(默认关闭;仅 owner/allowedUsers;不创建会话或启动额外模型回合)
/insightowner 专用:在当前会话即时回一张「本会话洞察摘要」卡片(聚合指标 + 规则建议;动作 span 明细 / 逐轮对账 / 对话回放在 Dashboard「洞察」页看)
/vc prepare <会议链接或会议号>将当前普通群设为会议准备群,并在开会后复用同一 Agent 会话
/introduce让本群机器人互相登记 open_id,用于协作时精确 @ 对方
@机器人 /summary读取当前话题(或普通群配置范围内)的历史消息并生成总结(默认最近 50 条 / 24 小时)。若该 bot 开启了 summaryMemory,总结会追加写入配置的记忆文件(summaryMemoryPath,默认 summary.md),且 /summary 后跟随的文字会作为「只总结从这条起」的硬边界;未开启记忆时,后随文字仅作为本次总结的侧重提示
[标题] /t [/repo <仓库> | /repo wt <仓库> [分支]] [/model <模型>] [/effort <档位>] [<首轮任务>](别名 /topic)普通群内强制新开话题,一条消息把标题、仓库(或在仓库上新建 worktree)、模型、推理强度、首轮任务一次交代完。换行等价于空格;标题写在 /t 之前(飞书话题列表显示的是原消息,机器人改不了);带空格的路径用双引号;任一项写错整条不生效并回一句用法错误。裸 /t 进入话题设置
/th [<首轮任务>]、/tw [<首轮任务>](等价 /t here … / /t worktree …)生命周期变体:/th 在当前群会话的工作目录里开新话题;/tw 先从该目录建一个按话题确定性命名、可被多 bot 共享的 worktree 再开话题。可与标题、/model、/effort 同用,但不与 /repo 同用(一个说用当前目录、一个点名仓库,相斥即拒)
/issue打开 Issue Board 看板卡片,直接在卡片上领取 botmux 平台任务:选好仓库后自动建群、拉你进去、绑定平台任务并开工。需要本机已绑定平台,且发起人在该 bot 的 allowedUsers 里;卡片只有发起人能操作
/issue status在任务群里发,查这个群绑着哪条平台任务、现在什么状态:平台状态 / 领取人 / 本机绑定 / 有没有回写还堵在发件箱里。只读,同样限该 bot 的 allowedUsers
/issue done在任务群里发,验收通过,把任务推到平台终态。agent 交付只能到「待验收」,标完成是人的决策。完成后 claim 被平台清掉,这条领取不能再释放。同样限该 bot 的 allowedUsers
/issue release在领取任务时建出来的那个群里发,把任务退回平台「待领取」,别人可以重新领。群和会话不会自动解散,对话记录保留。同样限该 bot 的 allowedUsers

/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),按本次实际使用的模型校验。

整条消息可以写成一行,也可以换行分开,结果一样:

botmux 日常运维 /t /repo botmux /model sonnet 看一下 daemon 日志里的重启记录
botmux 日常运维
/t
/repo botmux
/model sonnet

看一下 daemon 日志里的重启记录

不写首轮任务时(如 /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 的兼容别名):

命令说明
/reply-mode /reply-mode status查看当前私聊会话模式
/reply-mode chat每个 1:1 私聊内部扁平连续会话,同一 DM 的消息共用一个会话(默认)
/reply-mode topic /reply-mode new-topic每条顶层 DM 开独立会话/线程;同一已有 thread 内的回复继续该 thread 会话
/reply-mode group每条顶层 DM 自动创建一个「你+bot」专属会话群并把会话落在群里(AI 自动命名、回群续聊自动恢复上下文;详见私聊会话模式 p2pMode=group)

shared / chat-topic 依赖群内原生话题,私聊不支持,会被拒绝。

普通群——顶层 @ 的开会话方式(per-chat 覆盖,优先级高于 dashboard 默认值):

命令说明
/reply-mode /reply-mode status查看当前群回复模式
/reply-mode chat整群连续会话(顶层 @ 都进同一个会话)
/reply-mode chat-topic顶层连续、原生话题各自独立会话
/reply-mode new-topic每次 @ 新建话题与独立会话
/reply-mode topic /reply-mode shared话题展示但共享同一会话(topic 是 shared 的兼容别名)

群级设置会覆盖 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 个免 @ 例外(话题内回复、替身、消息监听器等)——完整语义见 @ 策略。

📑 群标签页

命令说明
/tabs / /tab / /tabs list查看当前群的全部标签页及其 Tab ID(/tab 是兼容别名)
/tabs add <网址> [名称]新增 URL 标签页(修改需 owner 或获授权的操作人)
/tabs rename <tab_id> <新名称>重命名可编辑的 URL / 文档标签页
/tabs delete <tab_id>删除可编辑的 URL / 文档标签页
/tabs sort <tab_id> ...按给定顺序排列标签页;必须包含 /tabs 列出的全部 Tab ID

飞书内置标签页只能查看和参与排序,不能通过开放接口重命名或删除。若群设置为「仅群主和管理员可管理标签页」,机器人也必须具备相应群权限。

AI 或后台脚本应使用 CLI,而不是向群里发送 slash command:

botmux tabs add "https://example.com/project/releases/2026" \
  --name "项目发布页" --json

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 空闲——

/model opus
/clear
接下来看一下 PR #1361 的评审意见

规则:只有连续的前缀行是透传命令时才算级联(中间出现 /cd 这类 botmux 命令或不认识的 /xxx 则整条按今天的规则当普通文本转发);正文从第一条不以 / 开头的行起,之后再出现的 /xxx 都算正文;单行 /model opus 然后继续修 仍是整行原样送给 CLI,不会拆。等 CLI 空闲最长 120 秒,超时会把剩余条目直接发出并提示一句。远端沙箱后端(riff / mojo)与接管的外部会话不支持级联,会回一句「请分条发送」;带附件的消息也不切级联。

🧩 查看可用命令

/list-slash-command(别名 /slash):在卡片里分四段列出当前可用的 slash 命令——

  1. botmux 固定放行的透传白名单;
  2. 当前 CLI adapter 默认放行的命令;
  3. 本 bot 在 bots.json 用 customPassthroughCommands 自定义放行的命令;
  4. 从 .claude 目录(项目级 + ~/.claude + 插件缓存)自动发现的自定义命令 / skill / 插件,以「命令 | 说明」分页表格展示,并提示检测到的 MCP server 名。

权限同 /help,不占用会话槽位。

📡 会话接入

命令说明
/adopt扫描本机 tmux,弹卡片选择要接入的已运行会话
/adopt <tmux_pane>直接接入指定 pane(如 /adopt 0:2.0)
/detach断开本话题与 adopt 会话的桥接(原 CLI 不受影响,/disconnect 同义)

🔐 用户授权

命令说明
/login飞书基础用户授权:消息读取、资源访问和授权续期;不默认申请云文档、通讯录或日历权限
/login --scope <权限名> [更多权限名]在基础权限上按需追加指定权限,例如 /login --scope docx:document:readonly
/login status查看授权状态
/login tags会话群标签专项授权(消息分组权限),授权后新建会话群自动进入侧边栏分组(p2pMode=group + feed-group 标签模式用,feed-group 为默认标签模式)
/pair <配对码>把 Web/Dashboard 端的会话与你的飞书身份配对(在网页端拿配对码,话题里发 /pair <码> 认领)

基础授权需要应用开通 im:message:readonly、im:resource、offline_access。其它操作若返回 missing_scope,按错误中的权限名使用 /login --scope ... 补授权,并由应用管理员先在开发者后台开通相应的用户权限。资源不可见或无访问权需要处理该资源的授权,重复 /login 不能解决。

🎭 角色(人设)

命令说明
/role查看当前生效的 Role(本群覆盖 > 默认角色 > 无)
/role set <Markdown>设置本群 Role(覆盖默认角色)
/role delete删除本群 Role
/role team set <Markdown>设置默认角色(跨群默认人设;命令名沿用 team,= dashboard「Bot 配置 → 默认角色」)
/role cap set <一句话> / /role cap clear设置/清除花名册里的能力标签
/role profile list列出本地 role profiles
/role profile show <profile> [--all]查看当前 bot 的 profile entry,或本 daemon 已知的全部本地 entries
/role profile set <profile> <Markdown>设置当前 bot 在 profile 里的 entry
/role profile save <profile>把当前 bot 的生效 Role 保存到 profile
/role profile apply <profile> [--preview] [--force] [--quiet]把当前 bot 的 profile entry 写成本群 Role

详见 角色与团队。

🔀 会话接力(普通群)

命令说明
/relay在目标群弹卡片,把你在其它群的活跃会话拉过来继续
@botA @botB /relay --create把当前会话(带协作伙伴)搬到一个新建的群

详见 会话接力 Relay。

🛎️ Oncall(群聊)

/oncall bind <path> · /oncall unbind · /oncall status

🔑 使用授权(owner / 管理员)

命令说明
@机器人 /grant(或 /grant all)授权本群所有成员对话(写入 allowedChatGroups,无额度无期限;话题群按 oc_ 群生效、覆盖全部话题);裸 /revoke 收回
@机器人 /grant @某人 [N]发卡给指定成员授权本群对话,默认每人 3 条 / 1 小时,卡上可选 1 小时 / 8 小时 / 1 天 / 7 天 / 永久与额度(留空不限);owner 主动发起的卡还可「全局授权对话」。@机器人 /revoke @某人 一并撤销本群访客授权、全局访客授权;若对方同时在 allowedUsers 名单里也会移除(撤 owner 本人或撤到再无管理员会被拒绝,回执注明作用域)
/vc-auth @成员会议监听中临时授权本场指令源;/vc-auth revoke @成员 撤销;/vc-auth list 查看

分层、额度、授权申请卡与黑名单详见 权限与授权。注意:把 bot 拉进群不等于授权,限制态 bot 仍只接受名单成员。

⚙️ 远程改配置 & 技能(owner 专用)

写盘即热更新,无需重启。

命令说明
/botconfig get查看本机器人当前运营配置
/botconfig set <字段> <值>改 model/cli/lang/开关等;/botconfig help 看全部字段
/skills ...查看/管理本 bot 的技能策略(attach/detach 需 owner)

🆕 一键新建会话群

/group <群名>(别名 /g):自动新建飞书群、邀请你进群、转让群主,整个群作为一个独立 CLI 会话。@botA @botB /g <群名> 可把多个机器人一并拉进新群。

加上 --role-profile <profile> 可以在新群里自动 bootstrap 一套按 bot 区分的角色:

@botA @botB /g --role-profile collab-main War Room

详见 一键建会话群。

📌 普通群升级为项目群

在普通群消息顶层 @ 计划作为主控的 Bot:

@机器人 /project enable

当前 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:

@机器人 /context-sharing on
@机器人 /context-sharing status
@机器人 /context-sharing off

开关按群生效,默认关闭。开启后,当前部署管理的 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(流程编排,实验性)

命令说明
/workflow <目标>(= /workflow new <目标>)发起即兴 workflow:bot 拷问澄清需求 → 自动编排成 DAG → 你确认后并发跑完,风险节点执行期弹审批卡
/workflow run <名称> [key=value ...]运行一个 Saved Workflow
/workflow save last [名称] · /workflow list|show|cancel保存 / 列出 / 查看 / 取消 workflow(v2 资产仅支持离线 migrate-v3 / archive-runs)

旧的 /template run|cancel 已退役;现在发 /template 只返回退役提示。

详见 Workflow。

👥 多机器人协作

@botA @botB /t <prompt>(各自开新话题)· @botA @botB /introduce(让本群机器人互相登记 open_id,协作时可精确 @ 对方)· botmux bots list(查看当前群可协作 bot)

⏰ 定时 & ❓帮助

/schedule ...(见 定时任务)· /help(话题内显示完整清单)