ambleloft

订阅业务事件与消息推送

让插件后端订阅你的业务服务,把任务进展转成 Ambleloft 中可更新、可撤回的消息。

实践指南

完成后:接收演示服务事件,验证更新、断线和清理。

前置条件:按本页具体步骤准备所需文件与工具;学习路线中的上一页不自动构成依赖。

本页内容

01构建安装完整案例

准备 Node.js ≥22.13 与支持扩展的当前宿主。以下从新克隆开始;构建后在设置 → 扩展安装归档,按提示授予 configuration / storage 权限。 先获取配套案例源码快照并完成插件入门的本地包准备。在 ambleloft-extension-samples 的父目录执行,保留 AMBLELOFT_PACKS。

Terminal
cd ambleloft-extension-samples/service-events
npm install --save-dev "$AMBLELOFT_PACKS/ambleloft-extension-sdk-0.1.0-alpha.9.tgz" "$AMBLELOFT_PACKS/ambleloft-extension-core-0.1.0-alpha.9.tgz" "$AMBLELOFT_PACKS/ambleloft-extension-cli-0.1.0-alpha.9.tgz"
npm run build
npm run validate
npm test
npm run pack

02启动业务服务并连接

在独立终端运行服务。将扩展 serviceUrl 配置为 http://127.0.0.1:47831/events,点击连接并确认。案例有意限制为本机 HTTP /events 地址,不是通用生产 SSE 客户端。

Terminal · service-events directory
npm run service

03发送第一条业务事件

另开终端执行。预期消息中心出现 Report ready。响应 subscribers 为 0 表示尚未连接。再次发送相同 eventId 和 version 不应产生新消息。

Terminal · while the service is running
curl http://127.0.0.1:47831/event \
  -H 'content-type: application/json' \
  -d '{"eventId":"report-42","taskId":"report","kind":"progress","version":1,"title":"Report ready","body":"Ready for review"}' 

04更新与撤回

保留 eventId=report-42,把 version 改为 2 并修改 body,现有消息应更新。然后发送 kind=withdraw、version=3(保留 title/body/taskId 必填字段)撤回消息。旧版本应被忽略。eventId 对应消息,taskId 对应业务任务,version 用于事件排序。

05理解后端实现链路

src/push.ts 管理单连接、串行事件处理、负载校验与有上限的退避重连。src/extension.ts 用扩展 storage 记录版本,执行 getByEventKey → publish/update/withdraw。连接加入 context.subscriptions:关闭页面仍在后台运行,点击断开或停用扩展才释放。

阅读完整后端实现

06检查断线与能力边界

POST /disconnect 测试重连,然后发送更高版本事件。演示服务没有持久事件重放;生产接入需补持久游标、重放/确认与 pending 事件对账。案例会先记 pending 再发布,崩溃后不能保证恰好一次送达。这里订阅的是自有服务事件,不是 Agent 对话或 turn 生命周期。

Terminal · reconnect check
curl -X POST http://127.0.0.1:47831/disconnect

07清理与下一步

点击断开并用 Ctrl+C 停止独立服务。需要用户从消息中确认或执行业务任务时,继续实现消息操作。

为消息添加业务操作

检查结果与排错

接收演示服务事件,验证更新、断线和清理。

按本页的验证步骤核对实际结果。涉及业务服务时,分别检查界面提交、工具回执与服务端记录。

打开错误代码与排错 →
SDK / CLI 0.1.0-alpha.9 · 接口基线 兼容性与预览说明 · 案例源码