by deepcoldy
Bridge Feishu/Lark to AI coding CLIs — Claude Code, Codex, Gemini, OpenCode… every DM, group or topic spawns its own live-streaming CLI session
# Add to your Claude Code skills
git clone https://github.com/deepcoldy/botmuxGuides for using cli tools skills like botmux.
Last scanned: 6/10/2026
{
"issues": [
{
"type": "npm-audit",
"message": "@larksuiteoapi/node-sdk: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "@midscene/core: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "@midscene/playground: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "@midscene/shared: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "@midscene/web: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "@modelcontextprotocol/sdk: Anthropic's MCP TypeScript SDK has a ReDoS vulnerability",
"severity": "high"
},
{
"type": "npm-audit",
"message": "axios: Axios has a NO_PROXY Hostname Normalization Bypass that Leads to SSRF",
"severity": "high"
},
{
"type": "npm-audit",
"message": "js-yaml: js-yaml has prototype pollution in merge (<<)",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "pm2: pm2 Regular Expression Denial of Service vulnerability",
"severity": "low"
},
{
"type": "npm-audit",
"message": "uuid: uuid: Missing buffer bounds check in v3/v5/v6 when buf is provided",
"severity": "medium"
}
],
"status": "WARNING",
"scannedAt": "2026-06-10T08:08:26.469Z",
"npmAuditRan": true,
"pipAuditRan": true
}No comments yet. Be the first to share your thoughts!
Top skills in this category by stars
Requires a passing catalog security scan. Resolve the flagged issues and resubmit to enable featuring.
飞书 + AI 编程 CLI——私聊 / 群聊 / 话题,每个会话一个独立 CLI 进程,实时流式回传。 Daemon 监听飞书消息,为每个新会话自动启动独立 CLI 进程(Claude Code / Codex / Cursor / Gemini / OpenCode / Antigravity / GitHub Copilot),提供实时流式卡片和可交互 Web 终端。
📖 完整文档(命令 / 配置 / 最佳实践 / 排错):https://bytedance.aiforce.cloud/app/app_4k9smq6rdxher/ ——本 README 只讲为什么用它和怎么快速上手。
| 飞书流式卡片 | Web 终端 | tmux 会话管理 | 多机器人协作 |
|---|---|---|---|
不做 SDK wrapper,直接桥接 CLI。
botmux 不重新实现 Agent 能力,而是直接桥接已有的 AI 编程 CLI(Claude Code、Codex、Cursor、Gemini、OpenCode、Antigravity、GitHub Copilot)。记忆、上下文管理、工具调用、权限体系——这些能力 CLI 本身都在快速迭代,botmux 选择站在这个进化之上,而不是平行重造一套。CLI 的每次升级,botmux 零适配自动受益。
与 OpenClaw 等基于 Agent SDK 构建的方案相比:
| 特性 | botmux | OpenClaw 类方案 |
|---|---|---|
| 底层架构 | 直接桥接完整 CLI 进程 | 基于 Agent SDK 重新构建 |
| CLI 能力 | 完整运行时(hooks、memory、plan mode、Skill、/ 命令) |
SDK API 子集,需手动实现缺失功能 |
| CLI 升级 | 零适配自动受益 | 需要跟进 SDK 版本变更 |
| 记忆 / 上下文 | 直接复用 CLI 内建的记忆系统,随 CLI 迭代自动增强 | 需自建记忆系统,与 CLI 原生能力重复 |
| 多 CLI 支持 | 7 种 CLI 一键切换(Claude Code / Codex / Cursor / Gemini / OpenCode / Antigravity / GitHub Copilot) | 绑定单一 SDK,无法切换 CLI |
| Web 终端 | 可交互的完整终端,移动端快捷键工具栏,手机/电脑/飞书三端同步 | 通常仅 Web 聊天界面或只读输出 |
| 多机器人协作 | 多 bot 同群 @mention 路由,独立进程隔离,不同 CLI 赛博斗蛐蛐 | 通常单机器人 |
| 多话题协作模式 | 主 bot 自动拆任务、开多话题、派多 bot 并行协作(coder+reviewer),飞书任务清单当共享进度板 | 通常需人工逐个分派、无统一进度板 |
| 终端直连 | tmux attach 直接进入 CLI 进程,和本地开发体验一致 | 无法直接操作底层终端 |
| 安装部署 | npm install -g botmux,5 分钟飞书配置即可使用 |
安装简单,但配置项较多 |
每轮对话一张实时更新的飞书卡片,是你在手机/飞书上感知并操控 CLI 的主窗口:
/relay 搬到别的群后,原卡片自动冻结为存档每个会话提供一个 Web 终端,地址为 http://<WEB_EXTERNAL_HOST>:<端口>。
同一台机器上可运行多个飞书机器人,每个机器人可对应不同的 CLI。同一群聊中通过 @mention 路由消息,仅有一个机器人时无需 @ 自动响应;多机器人时 @<bot1> @<bot2> /t xxx 可让每个被 @ 的机器人在同一条消息上各自独立开新话题。先发一次 @<bot1> @<bot2> /introduce 让它们互相登记 open_id,之后各 bot 就能在自己的会话里显式 @mention 对方协作(命令详见 📖 文档 · 斜杠命令)。
「多机器人协作」的升级版:主 bot(编排者)把一个大任务拆成多个子项目,在群里自动开多条话题,每条话题派一组 bot 并行推进(常见「一个写代码 + 一个 review」),用一张飞书任务清单当所有人共享的进度板,最后由主 bot 收齐汇总。一个普通群就是一个并行工作台,你在飞书任务面板一眼看完成度。
怎么跑 —— botmux-orchestrate skill 教编排者走完整流程:
拆子项目 → 提一版「子项目 ↔ bot」分配 → 发给你一次审批(可用卡片确认) → 建飞书任务清单 → 逐个开话题派活 → 收齐回报 → 汇总
底层派活靠 botmux dispatch:在群里种一条话题、把指定 bot @ 进去各起独立会话。
botmux dispatch --title "实现登录模块" \
--bot "ou_xxx:Alice:coder" --bot "ou_yyy:Bob:reviewer" \
--repo /path/to/repo --brief-file /tmp/brief.md
--repo <目录> —— 预设子 bot 的工作目录(绝对路径,需在子 bot 所在机器上存在),起会话直接进去、免手点「选仓库」卡。--standby —— 必须配 --repo(且不能与 --into 同用):只发一次 /repo 把 bot 拉起到指定目录待命、不派简报,之后用 --into ... --brief(-file) 激活派活。--into <话题root> —— 回到已有话题追加一条(激活待命的 bot / 追加协调);仍需 --bot,且非 standby 时必须带 --brief 或 --brief-file。协作边界:
/repo 等 operate 级命令(与自家 bot 的对话权限一致)。外部 bot 的授权分两层:/grant @bot 只给「对话 / 被 chat-scope 拉起」的权限(talk-only,不碰 allowedUsers、跑不了 operate 级命令);要让外部 bot 跑 /repo 等 operate 级命令,需把它列进 allowedUsers(或后续 operate 级授权)。/introduce 只负责发现 / 登记 open_id,不授予任何权限。im:message.group_at_msg.include_bot 权限)。安装 tmux 后自动启用。CLI 进程常驻在 tmux session 内,所有功能不受影响。
核心收益:Daemon 重启不中断 CLI。 botmux restart 时 worker 进程退出,但 tmux session(及其中的 CLI 进程)保持运行。下次收到消息时 worker 自动 re-attach,无需 --resume 重载上下文。
| 事件 | tmux session | CLI 进程 |
|---|---|---|
botmux restart |
存活 | 存活(下次消息 re-attach) |
/close 或关闭按钮 |
销毁 | 终止(SIGHUP) |
| CLI 自行退出 / 崩溃 | 随之关闭 | 已退出(自动重启用新 session) |
# 交互式会话列表 — 选择后直接 attach 到 tmux(见 § CLI 命令)
botmux list
# 也可以手动 attach(会话名 = bmx-<sessionId 前 8 位>)
tmux attach -t bmx-<session-id-前8位>
# Ctrl+B, D 退出 attach,不影响 CLI 继续运行
# 强制降级到纯 pty 模式(不使用 tmux)
BACKEND_TYPE=pty botmux start
将已在 tmux 中运行的 CLI 进程无缝接入 Botmux,在手机上通过飞书查看进度和交互。
/adopt # 扫描 tmux,弹出选择卡片
/adopt 0:2.0 # 直接接入指定 tmux pane
--resume 重建会话,转为标准 Botmux 会话支持三种调度类型 + 中文自然语言,支持原话题延续(到点在同一话题内继续,不另开 thread)。
两种创建方式:
/schedule 每日17:50 帮我看看AI圈有什么新闻botmux-schedule Skill支持的调度格式:
每日17:50 / 每周一10:00 / 30分钟后 / 明天9:0030m / 2h / every 30m / every 2h0 9 * * *2026-05-01T10:00CLI 进入 botmux 会话时自动获得 ~/.botmux/bin 在 PATH 中,以及一组开箱即用的 Skill:
botmux send — 向当前话题发消息(支持文本、图片、文件、@mention)botmux history — 读取当前会话历史消息(话题/thread 会话拉话题内,普通群 chat-scope 会话拉整群)botmux quoted <message_id> — 用户用引用 UI @ 机器人时,按需读取被引用的那条消息botmux bots list — 查询当前群聊的机器人及 open_idbotmux schedule — 增删改查定时任务这些能力通过 --append-system-prompt 注入和 Skill 描述自动引导 agent 使用。Skill + CLI 的组合相比 Anthropic 官方 Telegram channel 那套 MCP 方案:CLI 启动不用做 MCP 握手、不占用工具列表 token,且对 Claude Code / Codex / Cursor / Gemini / OpenCode / Antigravity / GitHub Copilot 通用 —— 只要 CLI 能读 system prompt 跑 shell 命令就行,不依赖任何 MCP 协议支持。
命令行
botmux dashboard出一次性 token URL,浏览器里跨所有 daemon/机器人管控
~/.botmux/workflows/ 下的 workflow,点进去看 schema / 依赖图,直接在 UI 触发 run(带 params 输入)claude、codex、coco、cursor-agent、gemini、opencode、hermes、seed(Seed CLI,Claude Code 衍生)、pi、omp(oh-my-pi,Pi 衍生)、copilot(GitHub Copilot CLI)、traex(TRAE CLI)或 agy(Antigravity)在 PATH 中)
0.120.32:type-ahead(会话忙时即可发新消息,由 CoCo 自己的消息队列接住)依赖 0.120.32+ 的行为;更早版本忙时输入可能丢失或串行,请升级后再用apt-get install fonts-noto-cjk fonts-noto-color-emoji(需免密 sudo 或以 root 运行;装完重启 daemon 生效)💡 TL;DR:
npm i -g botmux→botmux setup,扫两次码就能建好一个可用机器人 →botmux start。第 1 次扫码建应用、拿到 AppID/AppSecret(事件订阅 + bot 能力默认已配好);第 2 次扫码让 botmux 内置的飞书 Web 登录自动导入权限、配置重定向 URL、创建并提交发布版本。整个开放平台配置(建应用 / 权限 / 重定向 / 发版)都已由 setup 默认完成;加--no-open-platform-auto可跳过第二次自动配置、改走文末折叠的手动步骤。
npm install -g botmux
要求 Node.js ≥ 20,且本地已装好并登录至少一种 AI 编程 CLI(
claude/codex/cursor-agent/gemini/opencode/coco/agy等在 PATH 中)。推荐顺手装 tmux(装了自动启用会话常驻)。
botmux setup)跑 botmux setup,按交互菜单一步步选:
1 回车(已有配置时输入 2 添加机器人)。1 → 扫码创建(推荐),飞书扫码完成后自动建出 PersonalAgent 应用并落盘 AppID/AppSecret,事件订阅 + bot 能力默认已配好,无需手动浏览器创建。底层走 @larksuiteoapi/node-sdk 官方 device flow。(也可输入 2 手动粘贴 AppID/Secret,见文末折叠的「手动创建应用」。)1)。~/projects),新话题会从该目录向下查找 git 仓库(最多 3 层);尽量别填 ~(要遍历太多文件夹)。接着进入第 2 次扫码:botmux 内置的飞书 Web 登录会自动导入权限、配置 http://127.0.0.1:9768/callback 重定向 URL、创建并提交发布版本。失败会自动回退并打印手动步骤(见文末折叠),不影响已写入的配置;权限只导入了一部分也算成功,缺的可事后到开放平台补。
✅ 飞书 (feishu.cn) 与 Lark 国际版 (larksuite.com) 均支持。扫码创建时自动识别租户类型(国内 / 国际)并记住,无需手动选择;手动粘 AppID/Secret 时会让你选一次。每个机器人按所属版本独立连对应域名,同一台机器可同时跑飞书 + Lark 机器人,登录凭证按应用隔离、互不干扰。
setup 末尾会用 tenant_access_token 校验凭证(通过才落盘 bots.json),并把完整权限 JSON 写到 ~/.botmux/lark-scopes.json 备查。
botmux start
start 前再校验一次凭证;权限未配齐不会阻塞 daemon,只 WARN。如果之后需要确认事件订阅,飞书后台会要求 daemon 已在跑才能识别长连接。

确认机器人能正常收发消息之后,跑一次:
botmux autostart enable
手动创建应用:去 [飞书开放平台](https://open.larko