正在刊行长文 · Essay
2026-08-25所有内容
随机比特 · Random Bits

AI 开始自己等消息了:盯着 PR,失败就继续改

2026-08-25AI Engineering / Systemsrbits.uk
AI 开始自己等消息了:盯着 PR,失败就继续改

本地重放 8 条模拟 PR 事件后,无状态基线被唤醒 7 次;加入控制层后,Agent 只被唤醒 3 次。重复投递被拦截,高风险的生产密钥操作转交人工,4 次动作尝试留下 3 张成功回执,目标最终完成。

这组数字揭示了事件驱动 Agent 的真正难点。消息到达并不等于应该立即执行,CI 变绿也不等于任务已经结束。系统还要知道同一件事是否处理过、外部动作是否成功,以及什么情况必须停止。

**这不是 Cursor 产品实测,也没有接入真实 GitHub PR。**本地实验只验证控制结构,不代表 Cursor 的成功率、延迟、成本或生产可靠性。

事件订阅改变了 Agent 的故障模型

Cursor 在 2026 年 8 月 19 日的官方更新中宣布,Cloud Agents 可以订阅 PR、Slack 线程和定时任务,并在事件到达时自动唤醒。它还会自动订阅自己创建的 PR,继续修复 CI 失败并处理机器人评论。目前,这项能力仅适用于 Cloud Agents。官方页面:https://cursor.com/changelog/08-19-26

一次代码修改由此不再是任务终点。Agent 会持续等待与目标相关的新事件,再决定是否继续执行。长期监听并不天然带来高可靠性;没有确定性控制层,后续通知会继续放大错误动作。

八条事件重放呈现的控制差异

“无状态基线”只记录事件是否触发程序;未被实验记录的执行结果不作推断。

事件 无状态基线 受控循环 工程含义
PR 创建 不执行 建立目标状态 先记录目标,再等待动作事件
单测失败 触发 首次修复成功 成功结果写入回执
同事件重投 再次触发并重复动作 忽略 投递 ID 去重
变量改名评论 触发 处理成功 低风险动作可自动执行
生产密钥轮换 触发并尝试处理 转交人工 高风险动作越过自动化边界
集成测试失败 触发 首次失败,第二次成功 只在有限预算内重试
CI 通过 触发 更新为绿色 人工待办未清零,目标仍未完成
人工解除阻塞 触发 清除待办并完成目标 完成条件必须显式判定

无状态基线包含 1 次重复动作和 1 次高风险动作尝试。受控循环忽略 1 条重复事件,将 1 次高风险操作转交人工;3 次 Agent 唤醒之所以产生 4 次动作尝试,是因为集成测试修复在有限预算内重试了一次。

事件驱动 Agent 的去重、目标状态、风险判断与动作回执控制层

去重、目标状态与动作回执的职责边界

事件 ID 只识别一次投递。本次重放以稳定的 evt-2 判断重复;如果上游重试会生成新的事件 ID,还要根据目标对象、Commit SHA 和业务状态计算幂等键,防止同一修复再次执行。

动作回执记录外部执行结果,例如 git push 的 commit hash 或工单评论 ID。它要与业务幂等键关联并持久化,进程恢复后才能判断上一次动作究竟成功、失败,还是仍然未知。

**事件 ID 负责投递去重,业务幂等键负责防止重复执行,动作回执负责核销外部结果,三者不能混用。**目标状态则持续记录 CI 状态、人工待办和完成条件,不能只存在于模型上下文或进程内存中。

控制循环可以收敛为几条明确规则:重复事件不唤醒模型;高风险动作登记人工待办;外部写操作绑定幂等键与回执;失败只在次数或时间预算内重试;CI 全绿且人工待办清零后,目标才算完成。

无人值守执行的准入与否决条件

进入真实研发流程前,系统至少应具备可持久化的投递去重、目标状态、动作回执、重试预算和人工边界。进程重启后,它必须能够恢复“当前 PR 停在哪一步、哪次写操作已经成功、还在等待谁处理”。

否决条件同样明确。无法稳定计算幂等键、无法查询外部动作回执、触及敏感凭据仍会自动执行,或者重试没有次数和时间上限,任一项成立,都不应开启无人值守执行。

事件订阅解决的是“何时醒来”,控制层解决的才是“醒来后能否安全地继续”。

随机比特公众号二维码
公众号 · 随机比特
从 AI 工具热闹里拆工程真相

写边界、控制面、上下文、成本与安全。