生命周期 Hooks
botmux 可以在关键生命周期事件发生时异步调用外部命令。命令失败、超时或不存在只会写日志,不阻塞 botmux 主流程。
配置位置
按优先级从高到低:
BOTMUX_HOOKS_JSON环境变量(直接传 JSON 数组)BOTMUX_HOOKS_FILE指定的文件路径- 默认
~/.botmux/data/hooks.json
快速验证:写入本地日志
仓库内置示例脚本,复制即用:
触发任意 hook 事件后即可在日志里看到 JSON payload。examples/hooks/ 还附带 macOS Notification Center(osascript-notify.sh)和 HTTP webhook(http-webhook.sh)示例。
配置字段
支持事件
Payload 字段
所有 payload 通过 stdin 写入 hook 命令,同时设置环境变量 BOTMUX_HOOK_EVENT。每份 payload 都包含 event、emittedAt;事件上下文可包含 sessionId、chatId、chatType、larkAppId、scope、anchor、title、cliId、workingDir、hasHistory、spawnedAt、lastMessageAt。
不同事件额外携带:
默认会把 content、message、description、finalOutput、lastScreenContent 截断到 600 字符,并补充 xxxLength / xxxTruncated;只有 redact.fullContentEvents 内的事件透传全文。
写自己的 hook
hook 命令可以是任意 executable:bash / Python / Node / Go 二进制、公司内部 CLI、HTTP 转发器都行。命令 exit 0 视为成功;非 0 / 超时 / 找不到命令只写 botmux 日志,不会影响收发消息、定时任务或 session 生命周期。