检测生产问题并直接发送给你的编码代理

💡 原文英文,约1500词,阅读约需6分钟。
📝

内容提要

Cloudflare推出Workers错误监控功能Issues(开放测试版),可将重复异常、5xx响应和错误日志归组,并自动把错误、堆栈、日志、追踪及Worker版本发送给编码代理,触发其排查、查询数据乃至提交PR。该功能内置于Workers运行时,一行配置即可启用,无需SDK。Cloudflare Workflows借此一天内发现并修复两个生产缺陷。

🔎

延伸解读

从错误监控到自动修复的闭环

Issues 将错误监控与编码代理直接连接,形成从检测到修复的自动化闭环。它自动归组重复异常、5xx 响应和错误日志,并将错误、堆栈、日志、追踪及 Worker 版本发送给配置的代理,触发其排查、查询数据乃至提交 PR。这减少了人工收集上下文和转交的步骤,让代理能更快定位和修复生产问题。

内置运行时,无需额外埋点

Issues 内置于 Workers 运行时,只需一行配置即可启用,无需安装 SDK 或添加应用包装器。它自动捕获未捕获异常、失败调用、HTTP 5xx 响应、console.log/error 输出以及包含堆栈的日志,还能标记失控的 alarm 条件和循环中大量写日志的代码。这种低侵入方式降低了接入成本,适合快速开启错误监控。

为代理补充业务上下文

Cloudflare 能捕获 Worker 内部发生的情况,但不知道哪些用户、账户或会话对应用重要。通过 Workers 运行时内置的 OpenTelemetry API,可以添加 user.id、account.id、session.id 等标识符,无需安装额外包。这些标识符会随每次错误出现,帮助判断失败是否集中在某个账户或会话,为代理提供更精准的排查范围。

自动化触发与人工控制

配置一次自动化后,当问题超过出现阈值或静默期后再次出现,Issues 会通过 Automations 将问题发送到指定目的地,如内置编码代理、通用 webhook、聊天或事件管理工具。代理可进一步通过 Cloudflare MCP 查询相关日志和追踪,提出代码和测试更改并打开 PR。但最终部署修复和标记问题解决仍需人工审核,确保生产控制权。

❓

Q&A

Cloudflare Issues 是什么?它主要解决什么问题?

Cloudflare Issues 是内置于 Workers 运行时的错误监控功能(开放测试版),可将重复异常、5xx 响应和错误日志归组,并自动把错误、堆栈、日志、追踪及 Worker 版本发送给编码代理,从而简化从发现问题到修复的流程。

如何启用 Cloudflare Issues?需要安装 SDK 吗?

不需要安装 SDK。只需在 wrangler.jsonc 文件中将 observability.issues.enabled 设置为 true 即可启用,因为 Issues 已内置于 Workers 运行时。

Cloudflare Issues 能捕获哪些类型的错误或事件?

Issues 会记录未捕获异常、失败的调用、HTTP 5xx 响应、console.log() 和 console.error() 的输出、包含堆栈跟踪的日志,还会标记失控的 alarm 条件以及在循环中写入大量日志的代码。

如何将检测到的 Issues 发送给编码代理?

通过 Automations 配置自动化,当 Issue 达到出现次数阈值或静默期后再次出现时,Issues 会将失败摘要和诊断上下文(异常、源映射堆栈跟踪、前后日志和追踪、Worker 版本以及应用上下文)发送给代理。支持内置编码代理(如 Claude Code、Cursor、Devin)、通用 webhook、聊天和事件管理工具。

如何为错误添加上下文信息(如用户 ID、账户 ID)?

使用 Worker 运行时内置的 OpenTelemetry API,无需安装额外包。在代码中通过 tracing.getActiveSpan() 获取活动 span,并调用 setAttribute 添加如 user.id、account.id、session.id 等标识符,这些信息会随每次错误出现一起显示。

Cloudflare Issues 在实际生产环境中效果如何?

Cloudflare Workflows 团队启用 Issues 后,一天内发现并修复了两个生产缺陷:一个迁移因 SQLite 外键错误陷入重试循环,另一个删除流程因超出 Workers 子请求限制而无法完成。自动化设置将问题直接发送给 Cloudflare OS,由其跟踪错误并提交修复。

🏷️

标签

➡️

继续阅读