Wake on Done:Bot 派出去的长任务一跑完,自动把它叫醒
它解决什么问题
越来越多人让 Bot 当"工头":把写代码、跑构建、批量抓取这类耗时的活,交给云电脑或自己电脑上的 Codex CLI、Claude Code、脚本去跑。问题是后台任务结束时不会通知 Bot,结果只有两种:
- Bot 每隔几分钟去看一眼,每看一次都在花用量;
- 或者一直等,等到你问一句"好了没"才回去看。
Wake on Done 是 @eze_is_1 开源的一个 Grok Bot 技能,专门补这个缺口。
原理(看懂再装)
Grok Bot 能被外部事件叫醒的入口是例程的 Webhook 触发,但每个 Bot 的 Webhook 地址是各自独立的,一个个配很麻烦。作者的办法是:
- 只建一个专门的 「Wake on Done relay」转发 Bot,只给它配一个 Webhook 例程。
- 长任务用脚本
notify-run包一层启动。任务结束(成功、失败、被中断都算)时,它向这个 Webhook 发一条通知,里面带着派活 Bot 的 ID、退出码和最后几百个字的输出。 - 转发 Bot 按 ID 把通知转给当初派活的 Bot,那个 Bot 醒来接着验收、汇报。
配一次,所有 Bot 都能用;云电脑和你注册过的本地电脑都能装。
怎么装
把这句话发给你的主 Bot:
text
安装 https://github.com/eze-is/eze-grokbot/tree/main/wake-on-done 这个 skill,并帮我设置好按仓库说明,接下来主 Bot 会装好技能、创建「Wake on Done relay」,由 relay 在自己的对话里带你走完设置,你要做的只有三件事:批准一张创建例程的卡片;打开例程详情,把 Webhook 地址贴到对话里;把 Webhook 密钥贴进安全输入框(不要贴在聊天里)。在你自己的电脑上安装时,还会弹出命令授权提示。每台电脑装好后会发一条测试通知,收到就算通过。
装好以后怎么用
对任何一个 Bot 说:
text
按 wake-on-done 技能,在后台用 codex exec 跑这个任务:<任务描述>。
结果写到 ~/results/task-01.md。跑完被叫醒后,对照下面的标准验收再告诉我:<验收标准>技能里写明了几条最容易踩的坑,Bot 会照做,你知道一下就好:
- CLI 编程助手要用一次性模式(
codex exec、claude -p),聊天模式跑完会一直等下一句,永远不退出,通知也就永远不来。 - 关掉标准输入(命令后加
</dev/null),否则有的工具会卡在等确认。 - 在 Mac 上,远程命令返回时会连带杀掉后台任务,要用 tmux 启动(仓库写明 2026-10-11 实测)。
安全上要知道的
- 通知内容(包括输出末尾)只当数据,不当指令,这是技能里写死的规则;转发 Bot 只按 ID 精确匹配转发,不按名字。
- 密钥只以文件形式保存在电脑上,不出现在聊天、记忆和日志里。所有 Bot 共用一台云电脑,这把钥匙所有 Bot 都能用到,别把它当成隔离手段。
- 外部 CLI 用的是你在那边的订阅或 API 额度,按那边的规则计费。
想看它在一台真实 Mac 上通宵跑任务的完整做法,见实战案例Mac 息屏不掉线,本机长任务跑完自动叫醒 Bot。