用即时通讯工具远程控制 AI Agent:botmux
想象一个常见的场景。你在工作站上启动了 Claude Code 或 Codex 进行大规模重构,然后离开去喝杯茶或回家了。五分钟后,CLI 冻结了,等待确认删除某个文件。而你正坐在公共交通工具上,手里只有智能手机,进程就这样卡住了。
对于那些频繁使用终端 AI 助手的人来说,开发者 deepcoldy 开发了 botmux 工具。它将飞书(即海外版 Lark)变成了一块控制面板,可以同时管理二十多个终端代理工具。

项目核心思路
大多数将 AI 集成到聊天中的平台都走了复杂路线。开发者获取所需模型的 SDK,在其之上构建包装器,重新实现函数调用、内存管理和文件处理。结果就是得到一个功能精简版的真正终端代理。
botmux 采用了不同的方式。这个工具并不试图成为一个 AI 代理,也不通过自己的代码管理上下文。取而代之的是,一个后台服务在你的服务器或工作站上启动一个完整的终端工具进程。聊天中的每个新话题或对话都会创建一个独立的会话,输出以交互式卡片的形式流式传输到即时通讯工具。
这种架构带来了一个很好的优势。当 Claude Code、Codex、Gemini CLI 或 Cursor 的开发者发布更新,新增命令或 MCP 服务器支持时,botmux 无需重写。你直接使用原始的终端应用程序,保留所有功能。
四个有趣的特性
以下是聊天中与代理协作的结构细节。
流式卡片与控制交接
CLI 输出直接流式传输到即时通讯消息中。你可以看到实时更新的文本,并通过卡片按钮控制进程。查看终端截图、折叠长日志、重启卡住的会话,这些都可以实现。
如果交互按钮不够用,botmux 提供了网页终端链接。你可以直接在智能手机上操作,屏幕上会显示一个特殊的虚拟键盘,包含 Esc、Ctrl+C 和导航箭头按钮。
多模型协作
你可以在一个群聊中添加多个绑定到不同终端工具的机器人。例如,将一个机器人连接到 Claude Code,另一个连接到 Codex。
当你通过 @ 提及某个机器人时,消息会发送到那个特定的代理。这对于交叉审查代码非常方便。你可以请两个不同的模型分析同一个 Pull Request,它们会在讨论线程中直接开始互相辩论。
跨设备会话迁移
假设你在熟悉的 tmux 中本地启动了一个会话。使用聊天中的 /adopt 命令,你可以直接在手机上接管那个会话。
如果某个任务的讨论持续太久,需要与整个团队分享,/relay 命令可以将整个进程连同累积的内存和上下文一起转移到共享群聊中。
自动化与外部触发器
该工具支持定时任务和 Webhook。你可以用自然语言描述任务,设置定期告警解析或定时报告生成。外部系统可以通过标准 HTTP 请求触发代理。
内部实现原理
项目使用 TypeScript 编写,运行在 Node.js 22 或更高版本上。内部采用适配器架构来支持不同的 CLI:
claude-codecodexgeminicursoropencodecopilot
本地工具使用进程隔离运行。如果你在工作站旁,始终可以通过 tmux attach 直接连接到正在运行的代理。
安装和初始设置已精简到最少步骤:
npm install -g botmux
botmux setup
botmux start
交互式向导 botmux setup 可以帮助通过二维码绑定你的飞书账号,自动在企业控制台配置应用权限,并启动基础配置。
值得一试吗
该项目在 GitHub 上获得了近 900 颗星,这并非没有原因。代码结构清晰,使用真正的 CLI 而不是重新编写 SDK 的思路听起来很合理。
该工具的主要缺点是与飞书/Lark 即时通讯工具的紧耦合。如果你的团队使用 Slack 或 Telegram,就无法使用这个现成工具。你需要编写自己的桥接或从仓库中移植适配器。
不过,如果你在 Lark 上工作并频繁使用终端 AI 代理,botmux 可以让你摆脱必须一直坐在显示器前的束缚。查看项目在 GitHub 上的仓库,探索支持的适配器列表或了解架构解决方案。
相关项目