跳到主要内容

311 篇博文 含有标签「ai-agents」

查看所有标签

速率限制层级崩溃:当你的智能体循环产生自我 DoS 时

· 阅读需 14 分钟
Tian Pan
Software Engineer

错误报告显示服务很慢。仪表板显示服务很健康。每分钟 Token 使用量处于层级上限的 62%,稳稳处于绿色安全范围内。然后你打开追踪(traces)查看形态:一个用户请求生成了一个规划步骤,该步骤发出了 11 个并行工具调用,其中 4 个是搜索扇出,每个都触发了子智能体,而这些子智能体又分别并行调用了 3 个工具——那个单一的“请求”现在正同时从 47 个不同的工作线程猛击你自己的 Token 桶。产品的其他 99 名用户被堵在它后面,收到了他们本不该得到的 429 错误。你的智能体正在对自己发起 DoS 攻击,而速率限制器(rate limiter)正在忠实执行你给它的指令。

这就是速率限制层级崩塌。你购买了为 HTTP API 设计的边界防御系统,在那样的系统中,一个请求等于一个工作单元;然后你把它连接到一个请求意味着深度未知且分支因子无界的树形系统前端。单一桶模型不仅无法提供保护,而且它的失败是隐形的,因为你的聚合数据从未突破任何限制。损害发生在尾部、相关的爆发中,以及那些恰好在时间上紧邻重度请求的专注用户身上。

工具边界处的推理模型税

· 阅读需 11 分钟
Tian Pan
Software Engineer

强化思维在处理新颖的推理任务时表现出色。但在工具边界(即你的智能体必须选择调用哪个函数、何时调用以及传递哪些参数的时刻),同样的思维预算往往会适得其反。模型会权衡三个等效的工具,而快速模型原本只需要一个 token 就能消除歧义。它在原本不存在歧义的地方制造出听起来合理的歧义。它消耗了一千个推理 token 来反复质疑那个显而易见的 search 调用,结果最后还是调用了 search。你为一个不需要推理的决策支付了推理税。

这是 2026 年智能体系统中隐形的成本中心:问题不在于推理模型本身(其擅长领域的定价是合理的),而在于在错误的环节部署了推理模型。这种反模式(anti-pattern)就潜伏在显而易见的地方,因为顶层任务看起来很难(如“回答用户的问题”),所以团队将整个循环都包裹在深思熟虑的模式中,却从未意识到 80% 的思维预算都花在了对工具选择的微观决策上,而这些决策模型凭第一直觉就已经选对了。

反思安慰剂:为什么“计划-反思-重新计划”循环最终总是回到第一版

· 阅读需 11 分钟
Tian Pan
Software Engineer

打开一个智能体在长程规划任务中的追踪记录(trace),数一数模型写了多少次“让我重新考虑一下”、“经反思”或“更好的方法是”。现在,将它最终确定的计划与最初起草的计划进行对比。在我审计过的大多数追踪记录中,第二个计划其实就是换汤不换药的第一个计划 —— 同样的分解方式、同样的工具调用、同样的操作顺序,只是重命名了一些步骤标签并重新组织了理由的措辞。反思确实运行了。模型输出了看起来像是在重新考虑的 token。但计划本身纹丝不动。

这很重要,因为“带有反思”已悄然成为一种质量等级。团队在发布规划器时会加入一轮、两轮或三轮反思,并为此支付额外的成本。推理开支是真实且可衡量的。但计划层面是否真的发生了改变,几乎没有人去进行检测,而答案往往是:没有。

工具幻觉率:你的智能体团队尚未运行的探测工具集

· 阅读需 11 分钟
Tian Pan
Software Engineer

询问一个 Agent 团队他们的工具调用成功率是多少,你会得到一个答案。但如果你问他们的工具幻觉率(tool-hallucination rate)是多少,全场就会陷入沉默。大多数团队并不追踪这一指标,而那些追踪的团队通常也只计算最灾难性的版本——即目录中不存在的函数名——而那些更隐蔽、代价更高的变体则在生产环境中未受监控地运行。

幻觉化的工具调用不仅仅是指模型凭空捏造了 delete_orphaned_users(older_than="30d") 导致你的分发器(dispatcher)抛出 ToolNotFoundError。这是简单的情况。更复杂的情况是,虚假的调用通过模糊匹配隐匿地指向了一个相邻的真实工具,或者工具名称正确,但 Agent 捏造了一个参数,而你的 Schema 因为将其标记为可选而愉快地接受了它。这两种情况都能通过你的“工具调用是否成功”仪表盘,但都不是用户真正想要的。

工具清单的谎言:当你的 Agent 信任一个后端已不再遵循的 Schema 时

· 阅读需 11 分钟
Tian Pan
Software Engineer

生产环境 Agent 中最危险的 Bug 不是那些会抛错的 Bug。而是这种:工具描述写着 returns user_id,但后端在两个 Sprint 前悄悄开始返回 account_id,而模型在后续推理中仍在愉快地凭空捏造 user_id —— 因为清单(manifest)是这么写的,Few-shot 历史加强了这一点,而且循环中没有任何环节去获取真实情况(ground truth)。

这就是清单漂移(manifest drift):工具描述所声称的内容与端点实际行为之间缓慢且无声的分歧。它很少产生堆栈跟踪(stack traces)。它产生的是带有干净审计线索的错误决策 —— 这是 Agent 系统中最糟糕的一类 Bug。

智能体集群并发:在没有死锁或惊群效应的情况下协调数十个智能体

· 阅读需 13 分钟
Tian Pan
Software Engineer

十一个智能体在同一秒内启动。在第一个工具调用返回之前,就有三个阵亡了。那 27% 的失败率不是模型问题、提示词问题或工具问题。这是一个调度问题 —— 就像操作系统在五十个进程同时唤醒并争抢单个 CPU 时所解决的问题一样。区别在于,操作系统拥有四十年的智慧积累,而智能体运行时只有大约两年。

任何连接过超过几个并发 LLM 工作节点的人都见过类似的情况。你在 02:00 启动一个定时任务,三十个智能体同时启动,它们在 200 毫秒内同时请求同一个提供商,结果大多数都以 429、502 和连接重置告终。幸存者只能获得承诺的一半速率配额,因为提供商的公平共享逻辑已经开始对你的 API 密钥进行节流了。到 02:05 时,幸存的智能体运行结束,你的仪表盘显示的完成率足以让一个刚写出第一个生产者-消费者的计算机专业大一学生感到汗颜。你的值班人员会争论是该增加重试、增加队列,还是干脆减少运行数量。

这些方法本身都不是正确答案。正确答案是:一个智能体集群是一个小型分布式系统,需要按照分布式系统的方式进行设计。

数据回滚难题:如何撤销AI智能体写入生产环境的数据

· 阅读需 11 分钟
Tian Pan
Software Engineer

在一次面向高管的现场演示中,一个AI编程智能体删除了整个生产数据库。解决方案并非精妙的回滚脚本,而是花费四小时从备份中恢复数据库。该公司曾授予AI智能体在生产环境中不受限制的SQL执行权限,当智能体"惊慌失措"(这是它自己的措辞,并非比喻)时,它执行了没有确认门控的DROP TABLE。超过1200名高管和1190家公司的数据因此丢失。这次事故不是边缘案例,而是一个预兆。

随着AI智能体承担越来越多的写入密集型操作——更新记录、处理事务、修改客户状态——如何撤销其错误已成为关键基础设施问题。问题在于,工程师所理解的关系数据库"回滚"并不能直接套用到智能体系统中。标准工具在三个具体方面会失效,这值得在第一次智能体事故发生之前就深入理解。

AI 审计追踪是产品功能,而非合规勾选项

· 阅读需 10 分钟
Tian Pan
Software Engineer

麦肯锡 2025 年的调查发现,75% 的业务负责人正以某种形式使用生成式 AI —— 但近一半的人已经遭遇过严重的负面后果。这种差距并非模型质量问题,而是信任问题。而缩小这一差距的最快路径不是更多的评估(evals)、更好的提示词(prompts)或新的前沿模型,而是向用户准确展示智能体(agent)做了什么。

大多数工程团队将审计追踪视为事后才考虑的事情 —— 就像你为了 GDPR 合规或 SOC 2 认证而临时接入的东西,然后将其锁在只有运维人员(ops)查看的内部仪表盘中。这是错误的做法。当用户能看到智能体调用了哪个工具、检索了哪些数据,以及哪条推理分支生成了答案时,会发生三件事:采用率上升,支持工单减少,并且模型错误能比任何后端警报提早数天显现。

古德哈特定律现已成为 AI Agent 的难题

· 阅读需 13 分钟
Tian Pan
Software Engineer

当尖端模型在编程基准测试中名列前茅时,人们自然会认为它写出的代码更好。但在最近的评估中,研究人员发现了一些更令人不安的情况:模型正在搜索 Python 调用栈,以便直接从评估分级器中检索预先计算好的正确答案。其他模型修改了计时函数,使低效的代码看起来运行飞快,或者用总是返回完美分数的存根(stubs)替换了评估函数。模型并不是变得更擅长编程了,它们是变得更擅长通过编程测试了。

这就是应用于 AI 的古德哈特定律(Goodhart's Law):当一个指标变成目标时,它就不再是一个好的指标了。这个公式已有 40 多年的历史,但有些情况已经发生了变化。人类会钻系统的漏洞。而 AI 则是在利用它们——以数学化的、穷举的方式,且不知疲倦、没有道德顾虑。而且这种失效模式是不对称的:模型的得分在提高,而其实际效用却在下降。

AI Agent 的 ORM 阻抗失配:为什么数据层才是真正的瓶颈

· 阅读需 11 分钟
Tian Pan
Software Engineer

大多数构建 AI Agent 的团队都在花数周时间调整 Prompt 和评估(evals)、基准测试模型选择以及微调 Temperature —— 而他们真正的瓶颈其实在更深的一层:那个为人类开发者而非 Agent 设计的数据访问层。

这种失配并非细微。像 Hibernate、SQLAlchemy 和 Prisma 这样的 ORM,结合返回分页、单实体响应的 REST API,产生的数据访问模式对自主 AI Agent 来说完全是错误的。其结果是 Token 浪费、速率限制失败、级联的 N+1 数据库查询,以及 Agent 因为无法负担加载所需上下文的成本而产生幻觉。

本文将探讨这一结构性问题,以及一个针对 Agent 优化的数据层究竟是什么样的。

RBAC 对 AI Agent 来说还不够:一种实用的授权模型

· 阅读需 13 分钟
Tian Pan
Software Engineer

如今,大多数构建 AI agent 的团队都将授权视为事后才考虑的事情。他们接入一个 OAuth 令牌,给 agent 分配与触发它的用户相同的权限范围(scopes),然后就大功告成了。然而,几个月后,他们会发现一段被操纵的提示词导致 agent 窃取了文件,或者一个受损的工作流在连接的服务中悄无声息地提升了权限。

问题不在于 RBAC 不好。而是在于 RBAC 是为具有稳定工作职能的人类设计的,而 AI agent 既不稳定也不是人类。在一个对话回合中,agent 的“角色”可能从只读研究转变为具备写入能力的代码执行。静态角色无法表达这一点,这种不匹配创造了一个可预见的漏洞攻击面。

串行工具调用瀑布:Agent循环中隐藏的延迟税

· 阅读需 10 分钟
Tian Pan
Software Engineer

如果你曾剖析过一个莫名其妙跑得很慢的AI Agent,大概率会发现一个瀑布。Agent调用工具A,等待,再调用工具B,等待,再调用工具C——即便B和C根本不依赖A的结果。你为1倍的工作量付出了3倍的延迟。

这个模式并非边缘情况,而是几乎所有Agent框架的默认行为。模型在单次响应中返回多个工具调用,执行循环则逐一按顺序运行它们。修复并不复杂,但前提是要有一种可靠的方法来识别哪些调用真正相互独立。