技术 ·
我受够了盯着 Agent 于是做了一个 QQ 提醒 skill
本站为文字版;原文中的图片、投票及嵌入内容尚未迁入,见文末原始出处。
OPEN SOURCE · AGENT HOOK 我受够了盯着 Agent 于是做了一个 QQ 提醒 skill 任务完成、停下来等你、需要批准——手机都会响。
我受够了盯着 Agent,于是做了一个 QQ 提醒 skill
最近我越来越习惯同时开好几个 Agent 对话:一个查资料,一个改代码,一个在跑部署,另一个还在整理文档。
问题也随之出现了。
我不可能一直盯着每个窗口。有时切去做别的事,忘了哪个会话已经结束;有时玩手机去了,任务早就跑完,我半小时后才想起来;还有时 Agent 停在一个批准弹窗前,我却以为它仍在工作。
Agent 已经会自己干活了, 但它干完之后,得有人叫我一声。
这种“偶尔切回去看一眼”的动作看似很轻,累积起来却会不断打断注意力。你会忍不住猜:是不是已经做完了?是不是报错了?是不是正在等我?本来交给 Agent 是为了减少等待,最后却变成了更隐蔽的窗口轮询。
于是我做了 qqbot-task-notify:一个基于 QQ 开放平台官方 Bot API 的开源 skill。它监听编码 Agent 的关键事件,再把一条足够简短的提醒主动推送到我的 QQ。
LOCK SCREEN · REAL NOTIFICATION
现在,哪怕锁着屏幕,我也知道是哪一个会话做完了
01 · WHY 我想要的不是遥控器 而是一只“完工铃”
现在很多厂商已经能用微信、飞书等软件控制 Agent。但在我当时使用的两款产品里,如果想从微信收到这一轮结果,通常得先从微信发起这一轮对话。
这和我的使用方式不太一样。我大多数任务仍从电脑端开始:项目文件、终端环境和上下文都在电脑里。我并不想把完整操作迁到聊天软件,只希望离开电脑以后,手机能告诉我:它做完了,或者它卡在这里等我。
我也尝试过微信里的相关机器人方案,但交互窗口和风控方面的顾虑,让我不想把整条通知链路押在上面。相比之下,QQ 开放平台的官方 Bot 更开放,也允许我把多个 Agent、多个会话接到同一个提醒入口。
THE DIFFERENCE 远程控制 Bot:你从聊天软件里发起任务,再在那里接收结果。 这个 skill:任务在哪里开始都可以,只在关键节点主动叫你回来。
它不尝试接管 Agent,也不替你回复批准,更不会在 QQ 里复刻整个编码界面。它刻意只做通知,因此可以独立于具体的对话入口存在。今天我从桌面端开任务,明天从终端开任务,提醒逻辑仍然是同一条。
02 · NOTIFICATIONS 现在有三种消息 值得打断我
不是所有 Agent 动静都值得推到手机。如果每个工具调用都响一次,通知本身就会变成新的噪音。我最后只保留三个真正需要人重新介入的节点:
✅ 任务完成 一轮任务结束,消息里带上 Agent 名称和会话标题。我不用挨个切回窗口检查,也不会让已经完成的结果在后台躺半小时。 ⏸️ 停下来等你 Agent 向我提问、提交计划等我批准,或者需要我做选择时立刻提醒。它不再看似“运行中”,实际上已经停在交互节点。 🔐 权限请求 需要批准工具调用或提升权限时提醒我。敏感操作仍由人确认,通知只负责缩短它在后台等待的时间。
不同时间、不同会话的完成与等待提醒,统一进 QQ
实际用起来,它改变的并不是某一次任务的速度,而是我安排任务的方式。以前我只敢开一两个对话,因为再多就记不清谁在做什么;现在我可以把资料搜集、代码修改和文档整理分别交出去,然后去吃饭、上课或处理别的事情。
谁先做完、谁需要选择、谁在等权限,QQ 会用会话标题告诉我。提醒不会发送完整对话,只保留让我识别任务所需的最少信息。我的注意力不再被“它到底跑完没有”反复切碎。
一个很普通的使用下午 14:00 我让一个会话分析仓库,让另一个会话修改页面,再开第三个会话跑测试。 14:08 手机收到“停下来等你”,原来页面修改需要我在两种方案里做选择。 14:16 测试会话先完成,我回到电脑看结果;仓库分析继续在后台运行。 14:27 最后一条完成通知到达,我再统一检查三个结果,而不是在二十多分钟里轮流点开三个窗口。
这也是我没有把它做成“任务进度直播”的原因。大多数时候,我不需要知道 Agent 刚调用了什么工具、读到了第几个文件;这些细节留在原会话里更合适。手机通知只需要回答两个问题:现在是否需要我,以及需要回到哪个会话。
03 · HOW IT WORKS 它只做一件事 但把链路做完整
Agent 触发关键事件 ↓ Hook 捕获并提取简短会话标题 本地直发 / 本地常驻 / Linux 中转 ↓ QQ 开放平台官方 C2C 接口 手机收到提醒
仓库提供三种部署形态,不需要为了一个通知工具先买服务器:
A · 本地直发|推荐入门 Windows / macOS 可用,Python 标准库单文件直接调用官方接口,无服务器、无常驻进程。适合先把完成提醒跑通。 B · 本地常驻|保持在线 在自己的电脑上保持 Bot 网关连接,可完成一次性配对并维护在线状态,仍然不需要公网服务器。 C · Linux 中转|多机共用 适合已有服务器、同时使用多台电脑或多个 Agent 的人。AppSecret 集中留在服务器,多端共用一个通知出口。
Hook 不会把通知结果写回正常回答。即使临时断网、QQ 接口失败或服务器不可达,脚本也会安静退出,只写一条脱敏的本地日志。换句话说,提醒链路坏了,Agent 仍然应该正常完成任务。
这条原则对自动化工具很重要。通知是附加能力,不应该成为主任务的新依赖:不能因为 QQ 暂时不可用,就让代码生成失败;不能因为标题读取不到,就阻塞一轮回答;更不能为了“保证送达”无限重试,最后把同一条消息刷几十遍。仓库中的 Hook 因此始终返回成功,失败只留给本地排障。
通知里到底会发送什么? 完成提醒通常只有 Agent 名称和经过截断的会话标题;等待提醒会再加上“提问、计划批准或权限请求”等事件类型。 它不会默认把最后一段回答、完整 prompt、代码内容或工具返回结果推到 QQ。通知的职责是定位会话,不是复制会话。
目前仓库已经包含 ZCode、Claude Code、Codex、WorkBuddy 的接入模板。会话标题会优先从各自可用的结构化信息中提取,取不到时就降级成固定文案,而不是为了一个标题读取或发送整段对话。
ZCode 完成 + 提问 + 计划批准 + 权限请求 Claude Code 完成 + 等待提醒 Codex / WorkBuddy 目前支持完成提醒;等待类事件受上游能力限制(可让你的agent自行升级)
这里我刻意没有把四个平台写成“能力完全一致”。通知能做到什么,首先取决于 Agent 本身有没有暴露对应事件。Codex 当前只有整轮结束回调,就只能可靠地做完成通知;等上游未来开放暂停事件,再扩展等待提醒。
04 · SECURITY 为什么我选择 QQ 官方 Bot
这个项目走的是 QQ 开放平台官方接口,不是个人 QQ 协议、逆向登录或 OneBot 模拟方案。你需要在 QQ 开放平台创建自己的机器人,并遵守平台的服务条款和主动消息政策。
“能把消息发到 QQ”只是最外层。真正容易踩坑的是:谁有权绑定机器人、凭据放在哪里、通知接口会不会暴露公网、日志会不会把对话和 token 全记下来。仓库因此把下面这些边界写进了默认模板:
只有发送正确一次性配对码的 QQ 才能绑定为 owner,不会把第一个发消息的人自动认成主人; 配对码使用后会留下消费标记,即使状态文件丢失,旧的绑定消息也不能直接重放; 凭据只放在本机私有文件或服务器 root-only 环境文件,不写进仓库和示例; 服务器通知入口默认只监听 127.0.0.1,不为一个提醒服务额外开放公网端口; 日志不记录通知正文,也不会输出 Secret、access token 或完整 openid; 通知失败永远不应阻塞 Agent 的回答,更不会自动重试到刷屏。
一个需要说明的边界 QQ 主动消息仍可能受平台频率和交互窗口政策影响。如果长时间(约1个月)没有互动后发送失败,给机器人发一条消息即可重新建立交互窗口。它不是对平台政策的绕过,具体权益始终以当时的 QQ 开放平台控制台为准。
05 · GET STARTED 不用啃完文档 把这段话发给 Agent
完整接入包括创建 QQ 官方 Bot、选择部署形态、完成 owner 配对、注册 Agent Hook 和真实事件验证。步骤不少,但大部分正好适合交给 Agent 按仓库文档逐项完成。
最省事的方式,是把下面这段提示词原样发给你正在使用的 Agent:
COPY THIS PROMPT 帮我克隆 https://github.com/KerryChia/qqbot-task-notify 这个仓库,并引导我完成方案选择、QQ 官方 Bot 的创建和通知链路配置。优先推荐无需服务器的本地直发方案;需要凭据时只引导我写入私有配置,不要在聊天、日志或命令行中回显 AppSecret、token、openid 等敏感信息。完成后请用真实 Agent 事件验证一次任务完成提醒。
接入时,至少做完这 4 次验证 01 手工发送一条测试消息,确认 QQ 能收到 02 完成一轮真实 Agent 对话,确认自动触发 03 触发一次提问或批准节点,核对等待提醒 04 临时断网,确认通知失败不会影响回答
如果你本来就有 Linux 服务器,可以让它选择服务器中转;如果只是想先体验,直接从本地直发开始。不要因为看到仓库里有 systemd、网关协议和安全模板,就误以为必须先完成一整套服务器部署。
它尤其适合这几类人 同时开启多个编码会话,不想靠记忆管理进度的人; 经常把长任务挂在后台,自己离开电脑做别的事的人; 任务仍从电脑发起,但希望手机只接收关键节点提醒的人。 如果你始终只开一个短会话,而且全程坐在电脑前,它带来的提升可能有限。这个工具真正解决的是多任务、长等待和离开屏幕后的信息断层。
读完可以做的 3 件事 01点开 GitHub 仓库,Star 一下备用 02复制上面的提示词,让你的 Agent 帮你接入 03同时开几个会话,然后放心离开电脑