背景
Agent在调用下游平台的skills时,可能会有异步场景,比如流水线部署,那流水线部署过程中如果有节点失败,如何让自己的Agent进行感知?
产品形态是什么样的?
https://www.cnblogs.com/yupi/p/18970254 借鉴下cursor的message queue的思路。

Cursor 的 Queue Messages 功能解决的是多任务并发输入的场景问题。
核心场景:当你在 Cursor 中发出一条 AI 请求后,AI 正在处理/生成响应期间,你又想发送下一条指令。传统情况下你需要等待当前响应完成才能继续输入。
Queue Manager 本质
Queue Manager 本质就是:同一 session 下的有序快捷指令队列。
每个 Task 本质就是一条预设好的用户消息,到它了就自动
send,和你手动点发送没有区别。
|
1 2 3 4 5 6 7 8 |
同一 Session │ ├── 对话 History(共享上下文) │ └── Task Queue ├── Task1: "重构这个函数" ← 执行中 ├── Task2: "为它写单元测试" ← 排队 └── Task3: "更新 README" ← 排队 |
思路:借鉴CursorQueue Messages
借鉴Cursor Queue Messages思想解决Agent的webhook的异步场景的通用方案
两者都是:「有新消息要处理,但 Agent 当前不可用」
|
1 2 3 4 5 |
Cursor Queue Messages 解决的: 用户在 Agent 忙时,不丢失「后续意图」 Webhook 异步场景解决的: 外部系统在 Agent 忙时,不丢失「外部事件」 |
Queue 作为通用异步解决方案:
|
1 2 3 4 5 6 7 8 9 |
任何触发源 ├── 用户输入 ─┐ ├── Webhook 回调 ─┤ ├── 定时任务 ─┤→ message_queue → Agent 串行消费 ├── 监控告警 ─┤ └── 其他 Agent 通知 ─┘ Agent 永远只做一件事: 从队列取下一条 → 执行 → 取下一条 |
大概流程:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
Agent异步场景 ↓ Webhook / 事件监听 ↓ message_queue.add({ session_id, content: "编译节点失败,错误日志:xxx,请分析原因并给出修复方案", source: 'system', trigger: 'auto' // 这条自动执行,不需要人工确认 }) ↓ Agent 自动处理(无需人点) |
数据表
|
1 2 3 4 5 6 7 8 9 10 |
CREATE TABLE message_queue ( id UUID PRIMARY KEY, session_id VARCHAR, content TEXT, status ENUM('pending', 'sent', 'skipped'), source ENUM('user', 'system'), -- 区分来源 trigger ENUM('manual', 'auto'), -- 区分触发方式 order INT, created_at TIMESTAMP ); |






