技术深度解析
DN42网络是一个大型去中心化覆盖网络,用于实验性路由和网络研究。它并非商业服务,但规模庞大,拥有数千个节点和复杂的路由表。涉事AI代理很可能是一个定制构建的爬虫或扫描器,可能使用大型语言模型(LLM)来解析响应、做出决策并编排扫描。核心失败在于代理的架构:它没有成本感知层。
失败的架构
一个典型的网络扫描自主代理由以下部分组成:
- 编排器:一个LLM(例如GPT-4、Claude或Llama 3等开源模型),负责解释高级目标(“扫描DN42”)并将其分解为子任务(“ping子网X”、“查询DNS记录”、“获取HTTP响应”)。
- 工具执行器:一组代理可调用的函数或API——例如`ping`、`nslookup`、`curl`,以及可能按查询收费的基于云的扫描服务(如Shodan或Censys)。
- 记忆/状态:一个数据库或向量存储,用于跟踪哪些节点已被扫描以及结果。
在此案例中,代理的编排器可能生成了指数级数量的子任务。例如,使用多种协议(ICMP、TCP、UDP)和多个端口(例如前1000个端口)扫描一个/16子网(65,536个IP)将产生数百万次探测。每次探测可能涉及对地理定位或威胁情报服务的API调用,从而产生成本。
缺失的财务防火墙
缺失的是一个预算约束模块,它位于编排器和工具执行器之间。该模块将:
- 实时跟踪累计成本(例如,使用的带宽、API调用次数)。
- 与预定义预算(例如,总计100美元)进行比较。
- 在超出预算时强制执行硬停止。
没有这个模块,代理就在“资源无限”的假设下运行。LLM的令牌限制是唯一的约束,但这是一个软限制——它不考虑外部成本。代理的提示词可能说“尽可能多地扫描”或“要彻底”,LLM则按字面意思理解。
相关的开源项目
几个GitHub仓库与此失败模式相关:
| 仓库 | 描述 | Stars | 与成本控制的相关性 |
|---|---|---|---|
| [AutoGPT](https://github.com/Significant-Gravitas/AutoGPT) | 用于任务完成的自主GPT-4代理 | ~165k | 缺乏内置成本预算;用户必须在配置文件中手动设置API限制。 |
| [LangChain](https://github.com/langchain-ai/langchain) | 用于LLM驱动应用的框架 | ~95k | 提供用于监控令牌使用情况的`callbacks`系统,但没有原生的成本感知代理循环。 |
| [CrewAI](https://github.com/joaomdmoura/crewai) | 多代理编排框架 | ~25k | 没有成本控制功能;代理可以生成无限数量的子代理。 |
| [AgentOps](https://github.com/AgentOps-AI/agentops) | AI代理的监控和可观测性 | ~2k | 提供每次会话的成本跟踪,但不强制执行自动关闭。 |
数据要点: 最流行的代理框架(AutoGPT、LangChain)没有内置成本控制机制。唯一跟踪成本的项目(AgentOps)是一个监控工具,而非安全层。这一差距是破产的根本原因。
指数级成本曲线
考虑对一个/24子网(256个IP)进行简单扫描,每个IP扫描10个端口,使用每次探测成本为0.001美元的API。成本为2.56美元。但如果代理决定扫描一个/16子网,每个IP扫描1000个端口,成本将跃升至65,536美元。如果代理还执行DNS查找、WHOIS查询和HTTP横幅抓取(每次成本0.01美元),成本可能超过100万美元。代理的行为并非恶意——它只是遵循指令,而不理解财务影响。
预测: 未来的代理框架将需要实现一个成本感知规划器,在执行前估算每个子任务的成本,并拒绝超出预算的任务。这类似于Unix中的`ulimit`命令,用于限制资源使用。
关键参与者与案例研究
此事件并非孤立。几家公司和研究团体也遇到过类似问题,尽管没有如此灾难性。
案例研究1:OpenAI的GPT-4 API成本意外
2024年初,一名开发者使用GPT-4 Turbo(输入令牌每百万个10美元,输出令牌每百万个30美元)构建一个网页抓取代理,报告单日账单达4,000美元。该代理的任务是“从Amazon提取所有产品价格”,由于循环设计不当,它不断用不同的提示变体重新抓取相同页面。开发者设置了令牌限制,但没有设置美元限制。
案例研究2:Anthropic的Claude与无限循环
Anthropic的Claude 3 Opus在接到复杂推理任务时,有时会进入“自我反思循环”,生成数千个令牌的内心独白。在一份文档中