CLI 进入 botmux 会话后自动获得 ~/.botmux/bin(在 PATH 中)与一组开箱即用的 botmux 子命令——这是 CLI agent 主动与飞书话题交互的通道。「终端有输出但没发飞书」的根因往往就是模型没走这个通道(见 faq)。

开箱即用的命令

会话内可直接调用(session 信息自动推断,无需传 id):

命令作用
botmux send向当前话题发消息(文本/图片/文件/interactive 卡片 JSON/@mention)
botmux history读当前会话历史消息(话题群拉话题内,普通群拉整群)
botmux quoted <message_id>读取被引用的那条消息
botmux bots list查当前群里的机器人及 open_id(供 --mention)
botmux schedule增删改查定时任务

实际可用命令更多(如 botmux ask 交互提问、workflow/goal/dispatch 编排入口),以 botmux --help 与注入的 Skill 目录为准。交棒/编排另有 botmux-handoff / botmux-orchestrate 等 Skill(是 Skill,不是可执行子命令)。

botmux send 的 @ 决策硬门

botmux send 必须带一个 @ 决策,否则拒发:

  • --mention <openId> — 点名某人;
  • --mention-back — @ 回触发者;
  • --no-mention — 不 @(与前两者互斥)。

仅显式 --top-level 旗标(或全局关闭硬门)豁免——普通话题/引用回复照样三选一。这道门确保「该 @ 的没漏、不该 @ 的不炸群」。

wrapper 机制

会话内命令依赖 ~/.botmux/bin/botmux wrapper 脚本:daemon 启动时自动写入并加入 worker 的 PATH。它是极薄的 exec node <本 daemon 的 dist/cli.js> shim,因此版本永远与 daemon 一致,不需要单独 npm i -g。

session 信息通过祖先进程标记自动推断:worker 启动 CLI 时按子进程 PID 写一份标记(含 sessionId / turnId),agent 侧命令沿进程树向上找到最近的标记即知道自己属于哪个会话,无需手动传 session id。进程树被打断(detached / setsid / 深层嵌套)时回落到 BOTMUX_SESSION_ID 环境变量兜底。会话模型见 session-model。

注入机制(按 CLI 而异)

路由指引与 Skill 目录的注入通道随 CLI 不同(见 adapters):

  • Claude 家族(claude-code / seed / relay):路由/身份走 --append-system-prompt;Skill 走 --plugin-dir(不塞进 system prompt)。
  • genius:路由 + Skill 目录都走 --append-system-prompt;grok 用等价开关 --rules。
  • 其余大多数 CLI(codex / gemini / opencode / cursor / coco / traex 等):默认 skillInjection=prompt 模式下,路由与 Skill 目录内联进首条 prompt,不占任何 system-prompt 旗标。

per-bot skillInjection 模式

Skill catalog 的注入受 per-bot skillInjection 配置影响:

模式行为
prompt(默认)内联精简目录进 prompt,按需 botmux skill show <name> 拉全文
global把 skill 文件装进 CLI 共享 skills 目录(手动跑的 CLI 也能看到)
off不装目录,只留路由指引 + botmux --help

注入指引按当前 locale 动态生成,会尊重用户设置的语言。

为什么是 Skill + CLI,而不是 MCP

  • CLI 启动不用做 MCP 握手:核心的 botmux send / history 等通道零 MCP 依赖、不占用工具列表 token(仅当 adapter 显式开启且插件真的贡献了 MCP server 时才起网关,见 plugins)。
  • shell / 路由层通用:只要 CLI 能读 system prompt、能跑 shell 命令,~/.botmux/bin/botmux + PATH 就能用,覆盖 Claude Code / Codex / Cursor / Gemini / OpenCode 等。

⚠️ 但开箱 Skill 层并非对所有 CLI 均等:少数 CLI(如 Antigravity,只认插件包内 SKILL.md、不认扁平 skills/ 目录)只拿到路由指引、不装 Skill 目录。「通用」对 shell/路由通道成立,对 Skill 目录是「大多数」而非「全部」。

相关页面