飞书话题群 ↔ AI 编程 CLI 桥接。Daemon 监听飞书消息,每个新话题自动 spawn 一个独立 CLI 进程(Claude Code / Codex / Gemini / OpenCode / Antigravity)。
pnpm build # tsc 编译
pnpm daemon:restart # 重启 daemon(自动恢复 active sessions)
pnpm daemon:logs # 查看日志- 每次修改后需要
pnpm build然后pnpm daemon:restart
daemon.ts— 薄编排层,组装各模块并启动worker.ts— Worker 子进程,通过适配器管理 CLI + PTYserver.ts— Web 终端 HTTP 服务(xterm.js)bot-registry.ts— 多机器人配置加载 + 状态管理config.ts— 全局配置adapters/cli/— CLI 适配器(参数构建、输入写入、Skill 目录),每种 CLI 一个文件skills/— 开箱即用的 Skill 定义(botmux-send/botmux-schedule/botmux-bots/botmux-history/botmux-quoted)+ installeradapters/backend/— 会话后端:PtyBackend、TmuxBackendcore/types.ts—DaemonSession是核心类型,所有模块从此导入core/—worker-pool、command-handler、session-manager、cost-calculator、schedulerim/lark/— 飞书:事件路由(event-dispatcher)、卡片(card-builder/card-handler)、API(client)、消息解析(message-parser)utils/—idle-detector(CLI 空闲检测)、terminal-renderer(xterm.js 截屏)、logger
- 日常提交:正常
git commit+git push,不会触发发版 - 发版:打
v*tag 并 push 即可,GitHub Action 自动从 tag 提取版本号写入package.json后发布 npm + 创建 GitHub Release - 不要手动修改
package.json的version字段来发版,CI 会自动处理 - commit message 格式:
type(scope): 中文描述。type(feat/fix/docs/chore 等)和scope(模块名)保留英文,冒号后的描述用中文 - 发版的 annotated tag message 用中文撰写,CI 会把 tag message 作为 GitHub Release body
| tag 格式 | npm dist-tag | GitHub prerelease | 用途 |
|---|---|---|---|
v1.2.3 |
latest |
否 | 正式发版,默认安装 |
v1.2.3-canary.N |
canary |
是 | 内测、灰度验证;npm i botmux@canary |
v1.2.3-beta.N |
beta |
是 | beta 预览 |
v1.2.3-rc.N |
rc |
是 | 发版候选 |
其它带 - 后缀 |
next |
是 | 兜底,不污染 latest |
canary 不会覆盖 latest,stable 用户依旧拿 stable。要验证 canary:npm i -g botmux@canary 或 npx botmux@canary。
# 日常开发
git add <files> && git commit -m "fix(cli): 修复某某问题" && git push
# 正式发版(仅在用户明确要求时执行)
git tag -a v1.x.x -m "中文 changelog 标题
详细改动说明..."
git push origin v1.x.x
# Canary 发版(基于待发正式版号,递增 .N)
git tag -a v1.x.x-canary.0 -m "canary: 加诊断日志排查截图卡死
详细改动说明..."
git push origin v1.x.x-canary.0src/adapters/cli/下创建新文件,实现CliAdapter接口src/adapters/cli/types.ts的CliId联合类型中添加新 IDsrc/adapters/cli/registry.ts添加 import、switch case、exportsrc/worker.ts的CLI_DISPLAY_NAMES添加显示名src/im/lark/card-builder.ts的cliDisplayNames添加显示名src/cli.ts的 setup 交互菜单添加选项README.md、README.en.md更新 CLI 列表