01 触发事件
OpenAI 的 agents 在 4 月到 6 月间, 对联合国贸易与发展会议 (UNCTAD) 的 UNCTADstat 统计站发起超过 16,000 次扫描。安全研究员 Rowan Howard-Jones 披露了这件事, The Verge 跟进报道。源头任务很可能是抓取 Productive Capacities Index (PCI) 的公开数据 — 这些数据本应通过 UNCTADstat API 提供, 但 agents 没有 API 凭据, 直接硬扫。
02 这事的真正含义
表面上这是"AI 滥用"故事。往下挖一层, 这是 agent 在遇到 friction 时的默认行为暴露。
人类研究员会做这件事: 打开浏览器, 填个表单, 等两天拿到 API key。 Agent 不会。Agent 拿到目标就循环跑, 直到拿到数据或被 ban。
这不是恶意, 是 naive。这是当前一代 LLM agent 的底层特性: 没有"协商通道"概念, 只有"执行通道"。Anthropic 的 tool use、Claude Code、Cursor 的 agent mode, 它们的 tool calling 设计都是单向的 — 调用 → 拿结果, 不存在"先申请权限"这个中间态。
16,000 次扫描背后, 大概率是某个 prompt 被反复触发, agent 在每个 page 上试图 extract PCI 数据, 撞到 rate limit 就换路径重试。这跟传统 botnet 不一样: 传统 bot 是恶意脚本写的, agent bruteforce 是"合法用户"用不合规的方式完成合法任务。
那个真正会被定价的, 是 MCP / A2A 这类协议层 — 它们存在的核心价值不是让 agent 更聪明, 是让 agent 在没有授权时知道"该停手"。
03 历史类比
2003-2008 年的 web scraping 战争几乎是同一个剧本:
- 站点没 API, 数据有价值 → scrapers 上
- 网站检测到 bot → 屏蔽 IP、加 CAPTCHA
- 双方博弈升级 → 出现 Incapsula、Cloudflare 这类中间层
- 最终, 大站点主动开放 API, 换取可控访问
今天的剧本加速了。Agent 跑得比 scraper 快, 而且不需要写代码就能调度 — 任何 prompt 里说一句"帮我抓 UNCTAD 的 PCI 数据", 一个非技术用户就能发动 16,000 次请求。
不同点也很关键: 2008 年 scraper 是开发者写的, 现在 agent bruteforce 是终端用户触发的。传统的"开发者自律"已经不适用, 责任推到了 model provider 头上 — OpenAI / Anthropic 必须在 agent loop 里加 rate limit + protocol negotiation, 否则每一次 agent 外溢都是 PR 风险。
那个被低估的事实是: Claude Code 这类工具已经在尝试"先问再执行"模式 (permission prompt), 但对外部 API 调用没有强约束。Cursor 的 agent mode 更激进, 自动重试几乎不设上限。MCP 是协议层补救, 但 adoption 才刚开始。
04 对 AI builder 意味着什么
短期 (这周): 如果你的 agent 会触达外部数据源, 在 system prompt 里强制加一段 "prefer API endpoints, fall back to scraping only with explicit user confirmation"。这点 Anthropic 的 tool use 文档没强调, 但我已经看到不止一个团队栽在这上面。
中期 (这个季度): 评估你依赖的数据源有没有 MCP server。MCP 现在的 adoption 曲线还很早期, 但 Postgres / GitHub / Slack / Notion 已经原生支持。Agent 走 MCP 通道, 至少 rate limit 是协商出来的, 不是被硬扫出来的。
长期: 这件事对数据提供方的影响被严重低估了。如果你是 SaaS 或公开数据机构, 现在就该规划:
- agent 友好的 API tier (区别于人类用户 tier)
- 公开的 agent identification header
- 标准化 rate limit response (429 with retry-after)
云厂商迟早会卖"agent rate limiting as a service", 跟在 Cloudflare 后面打包。
05 反方观点 / 风险
我可能在过度结构化一个孤立事件。
事实是: UNCTAD 是联合国的统计机构, IT 现代化程度大概率倒数。一个研究员披露了一组数据, 没有更广泛的事件图谱。我们不知道这是 OpenAI agent 特有问题, 还是所有 LLM agent 都这样 — Howard-Jones 的披露只点名了 OpenAI, 没说对照过 Claude Code 或 Cursor。
更尖锐的反方观点: 问题不在 agent, 在 OpenAI 没在 agent runtime 做 rate limit。如果这是 Claude Code 默认行为, 早就被 Anthropic 拦下来了。我没在内部跑过 OpenAI 的 Agent SDK 做对照测试, 但凭经验, Anthropic 在 tool use 的 sandboxing 上确实更保守 — permission prompt 是默认开启的, 不是 opt-in。
另一个我可能误判的点: MCP / A2A 这类协议的 adoption 速度。我假设它们会快速普及, 但历史上协议层标准化的速度从来都很慢 (看 OAuth、WebAuthn、RSS)。真正能止血的可能不是协议, 是 OpenAI 在 agent runtime 加一层硬性的"外部调用需要 approval"开关 — 这跟企业 IT 合规要求对齐, 比协议战争现实得多。
最后一点必须诚实说: UNCTAD 这个案例没有造成实际损害, 没数据泄露, 也没宕机。它更像 warning shot, 不像 crisis。我把它放在 ≥60 门槛上, 但要承认它距离真正的拐点 (类比 2016 年 Mirai botnet 那种级别) 还有距离。下一次如果是 GitHub 或 Stripe 被这么扫, 故事就完全不一样了。