跳到主要内容

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

查看所有标签

级联上下文污染:为何一个错误事实就能毁掉整个 Agent 运行

· 阅读需 9 分钟
Tian Pan
Software Engineer

你的 Agent 完成了一个 25 步的研究任务。最终报告看起来很精美,引用也能对上,推理链条看似连贯。但 Agent 在第 3 步幻觉了一家公司的创立年份,而后续的每一个推断——市场时机分析、竞争定位、增长轨迹——都建立在那个错误的日期上。输出结果自信地、系统性地错了,而你的流水线中没有任何环节捕捉到这个问题。

这就是级联上下文污染:一个错误的中间结论通过后续的推理步骤和工具调用不断传播,最终演变成系统级故障。这是长时运行 Agent 中最危险的失败模式,因为它看起来像是成功的。

制度性知识流失:AI Agent 如何在不传递理解的情况下吸收决策

· 阅读需 11 分钟
Tian Pan
Software Engineer

在一个金融科技团队推出 AI 编程智能体来处理日常后端任务的三个月后,一位资深工程师离职去了另一家公司。当团队试图还原六周前做出某些身份验证决策的原因时,却发现没有人能做到。PR 描述写着“按讨论实现”,提交信息写着“根据需求”。AI 智能体做出了选择,代码正常运行,而背后的推理过程却消失得无影无踪。

这并非文档记录的失败。当原本用于传递理解的渠道——工程师之间的往复沟通、解释带来的摩擦、向他人证明决策合理性的压力——被一个优化输出而非优化理解的系统所取代时,必然会发生这种情况。

MCP 就是新一代的微服务:AI 工具生态正在重蹈分布式系统的覆辙

· 阅读需 9 分钟
Tian Pan
Software Engineer

如果你经历过 2015–2018 年的微服务爆发期,那么 MCP 的现状应该会让你感到不安的熟悉。一个真正有用的协议出现了。它很容易搭建。每个团队都搭建了一个。没有人追踪什么在运行、谁负责维护、如何保障安全。不到十八个月,你就会盯着一张工程师私下称为"死星"的依赖关系图。

Model Context Protocol 正在沿着同样的轨迹发展,速度大约是三倍。非官方注册中心已经索引了超过 16,000 个 MCP 服务器。GitHub 上有超过 20,000 个公开仓库在实现它们。Gartner 预测到 2027 年 40% 的 agentic AI 项目将失败——不是因为技术不行,而是因为组织在自动化有缺陷的流程。MCP 泛滥正是这个问题的症状。

幽灵工具调用:当AI智能体调用不存在的工具

· 阅读需 9 分钟
Tian Pan
Software Engineer

你的智能体通过了所有单元测试,完美处理了正常路径,然后在某个周二下午,它试图调用 get_user_preferences_v2——一个在你的代码库中从未存在过的函数。这个调用在语法上看起来完全正确。参数也很合理。唯一的问题是,你的智能体凭空捏造了这一切。

这就是幽灵工具调用:一种不表现为错误文本而表现为错误操作的幻觉。与人类可能在审查中发现的事实幻觉不同,幽灵工具调用会直接命中你的运行时,抛出一个晦涩的 ToolNotFoundError,并使原本运行正常的多步骤工作流脱轨。

当数据库迁移悄然摧毁 AI Agent 的世界模型

· 阅读需 10 分钟
Tian Pan
Software Engineer

你的团队在周二执行了一次常规数据库迁移——将 last_login_date 重命名为 last_activity_ts,并扩展其语义以包含 API 调用。没有服务中断。测试通过。仪表盘更新。但你的 AI Agent——那个回答客户关于用户活跃度问题的 Agent——开始悄悄给出错误答案。没有报错,没有告警,没有堆栈跟踪。它只是自信地基于一个已经不存在的世界进行推理。

这就是 AI 工程中几乎无人关注的 Schema 迁移问题。你的 Agent 从工具描述、few-shot 示例和检索上下文中构建了一个隐式的数据模型。当底层 Schema 发生变化时,这个模型就变成了谎言——而 Agent 没有任何机制来检测这种矛盾。

拟人化税:为什么把 Agent 当同事对待会搞坏生产系统

· 阅读需 11 分钟
Tian Pan
Software Engineer

一支工程团队构建了一个处理客户请求的 Agent。演示效果非常好。他们将其部署上线。三周后,这个 Agent 悄无声息地以十足的自信向用户传达错误信息,在上下文变长时跳过步骤,还会在模糊输入上偶尔陷入死循环。事后复盘发现,团队从未构建重试逻辑,从未验证输出,也从未定义 Agent 在不确定时该怎么做。当被问及原因,答案耐人寻味:"我们以为它会自己处理那些边缘情况。"

"我们以为它会自己处理那些边缘情况"——这句话将拟人化税表露无遗。团队设计这个系统的方式,就像管理一名初级开发者:简要说明任务,信任其判断,等它举手求助时再纠正。但 LLM Agent 不会举手。它们只是生成下一个 token。

上下文窗口悬崖:当你的智能体在任务中触及上限时究竟会发生什么

· 阅读需 10 分钟
Tian Pan
Software Engineer

你的智能体完美地完成了第一步到第六步。第七步与第二步相矛盾。第八步幻觉出了一个并不存在的工具。第九步自信地提交了垃圾内容。没有程序崩溃,没有抛出错误。智能体只是忘记了它正在做什么 —— 并且无论如何都在继续。

这就是上下文窗口悬崖(context window cliff):即 AI 智能体积聚的上下文超过其有效推理能力的时刻。它不会优雅地失败,也不会寻求帮助。它会基于部分信息做出自信但错误的决策,而你直到损失造成才会察觉。

企业 API 阻抗失配:为什么你的 AI Agent 在做任何有用的事情之前就浪费了 60% 的 Token

· 阅读需 9 分钟
Tian Pan
Software Engineer

你的 AI agent 在推理、规划和生成自然语言方面表现出色。然后你把它指向企业的 SAP 端点,它接下来花了 4,000 个 token 试图理解一个 SOAP 信封。欢迎来到阻抗失配的世界——这个隐性税收把每一次企业 AI 集成都变成了 token 的焚烧炉。

这种失配不仅仅是 XML 与 JSON 的问题。它是 LLM 思维方式(自然语言、扁平的键值结构、简洁的上下文)与企业系统通信方式(深层嵌套的 schema、特定于实现的命名、分页游标以及数十年积累的协议约定)之间的根本冲突。与人类开发者只需阅读一次 WSDL 文档就可以继续工作不同,你的 agent 在每次调用时都要重新解析这种复杂性。

温备问题:为何你的 AI 覆盖按钮不是安全网

· 阅读需 11 分钟
Tian Pan
Software Engineer

大多数构建 AI 代理的团队都在为成功而设计。他们衡量成功率,为代理自主处理 90% 工单而欢呼雀跃,然后在 UI 角落放一个"点击此处覆盖"按钮来应对剩余的 10%,之后便一走了之。

这个按钮不是安全网。它是一种包装成功能的责任。

失败模式不是代理崩溃,而是名义上负责的人类在崩溃发生时无法接管。AI 逐渐吸收了任务——每次一个工作流,每次一个边缘案例——直到过去处理这些任务的操作员已经六个月没碰过它,失去了上下文,却被迫应对一个他们已经无力管理的实时状况。这就是温备问题,它会悄无声息地积累,直到某次事故将其暴露出来。

智能体行为版本控制:为什么 Git 提交无法捕获真正的变化

· 阅读需 10 分钟
Tian Pan
Software Engineer

你上周二发布了一个智能体。代码库没有任何改动。到了周四,它开始拒绝之前已经可靠处理了好几周的工具调用。你的 git 日志是干净的,测试全部通过,CI 流水线一片绿色。但智能体坏了——而且你没有可以回滚的版本,因为真正发生变化的东西根本不在你的代码仓库中。

这就是智能体版本控制的核心悖论:你追踪的制品(代码、配置、提示词)是必要的,但不足以定义你的智能体实际做了什么。行为是从代码、模型权重、工具 API 和运行时上下文的交叉中涌现出来的——其中任何一个都可以在版本控制系统中不留痕迹地发生变化。

CLAUDE.md 作为代码库 API:为什么你的 Agent 指令文件是你写过的最具杠杆效应的文档

· 阅读需 10 分钟
Tian Pan
Software Engineer

大多数团队对待 CLAUDE.md 的方式和对待 README 一样:写一次,然后忘掉它的存在,最后疑惑为什么什么都不好使。但 CLAUDE.md 不是文档。它是你的代码库和每一个接触它的 AI agent 之间的 API 契约。写对了,每一次 AI 辅助的提交都遵循你的架构。写错了——或者更糟,让它腐化——你实际上是在每次会话中让你的 agent 变得更笨。

AGENTbench 研究在 12 个代码库中测试了 138 个真实编码任务,发现自动生成的上下文文件实际上降低了 agent 的成功率,甚至不如完全没有上下文文件。三个月积累的指令,其中一半描述的代码库已经面目全非,不会指导 agent——它们会误导 agent。

像调试分布式系统一样调试你的 AI 智能体,而非把它当作普通程序

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的智能体在开发环境中运行得完美无缺。它能回答测试查询、调用正确的工具、产出干净的输出。然后它上了生产环境,在一个十二步工作流的第七步出了问题。日志显示最终输出是一堆垃圾,但你完全不知道为什么。

你开始加打印语句。你在编排代码中到处散布 logger.debug() 调用。你盯着成千上万行输出,然后意识到你在用单进程的工具调试一个分布式系统。这就是大多数团队在 AI 智能体上犯的根本错误——他们把智能体当作程序来对待,但智能体的行为更像分布式系统。