跳到主要内容

33 篇博文 含有标签「agent-architecture」

查看所有标签

首次触达工具损耗:为什么你的智能体在执行任务前要先读 12 个文件

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的智能体刚刚花了 90 秒和几美元来修改一个只有三行代码的函数。在提交编辑之前,它列出了两个目录,打开了测试文件,运行了 grep 来查找调用者,读取了配置模块,检查了 CI 工作流,还调出了一个从未用过的类型定义。它产生的 diff 只有四行,而产生这个结果的 trace 却包含了 43 次工具调用。

这就是“首触工具损耗”(First-touch tool burn):一种当智能体被分配了一个范围明确的任务时,却表现得好像每个请求都是一个研究课题的模式。探索行为先行且力度极大 —— 在向文件写入单个字符之前,60% 到 80% 的 token 预算都花在了列出目录、grep 和读取上。团队在第一次查看 trace 时发现了这一点,并意识到智能体为一个两分钟的任务做了相当于两小时的入职培训。

这种行为并非某个特定模型的 bug。它是这些系统的训练和评估方式的必然产物,与生产环境发生了碰撞。而生产环境衡量的是训练从未衡量过的东西:这项工作是否便宜到值得去做的程度。

“规划并执行”只是营销而非契约:将计划依从度作为一等 SLI

· 阅读需 10 分钟
Tian Pan
Software Engineer

智能体(Agent)打印了一个五步计划。第三步是“从发票服务中获取用户的账单历史”。追踪链路(Trace)显示,第三步实际上调用了订单服务,关联了一个过时的客户表,并产生了一个看起来正确的数字。输出通过了评估(Eval)。六个月后,财务部门发现仪表盘与事实源(Source-of-truth)悄然出现了 4% 的偏差,复盘时才发现了这次回归(Regression)。

没有人写出 Bug。规划器(Planner)写下了一份执行器(Executor)从未签署的契约。

这就是“计划与执行”架构在其优雅的架构之下所掩盖的失败模式。这种模式被推销为一种赋予智能体长程连贯性的方式:由一个强大的模型起草计划,较弱的模型执行步骤,计划起到脚手架的作用。在实践中,计划只是一种“营销产物”——在 t=0 时发出的一个看起来合理的预告,随后在 t>0 时发生的每一件趣事都会迅速令其失效。追踪链路显示了计划,追踪链路也显示了行动。但几乎没有人去衡量两者之间的距离。

对话状态不仅仅是一个聊天数组:面向生产环境的多轮会话设计

· 阅读需 12 分钟
Tian Pan
Software Engineer

大多数多轮 LLM 应用将对话历史存储为消息数组。这在演示(demo)中表现良好。但在生产环境中,它会以需要数天才能诊断出的方式崩溃,因为这些故障看起来更像是模型的问题,而非基础设施的问题。

用户在对话中途断开连接,并重新连接到不同的服务器实例——会话消失了。智能体(agent)在处理复杂任务时进入第 47 轮,载荷悄无声息地超过了上下文窗口——没有报错,只有错误的回答。产品经理问道:“我们可以让用户从第 3 步开始尝试不同的方法吗?”——而工程侧的回答是“不,按照我们的构建方式不行”。这些都不是极端情况,而是将对话状态视为瞬态数组(transient array)而非一等资源(first-class resource)的必然结果。

定义真正有效的人机交接升级标准

· 阅读需 11 分钟
Tian Pan
Software Engineer

大多数AI团队能告诉你他们的遏制率——AI在不转交给人工的情况下处理的交互比例。但很少有团队能告诉你这个数字是否合理。

升级标准是AI增强团队中最重要的设计文档,而大多数团队根本没有这份文档。他们有一个埋藏在YAML文件中的阈值,以及一个隐含的假设:AI知道自己什么时候卡住了。这个假设在两个方向上都是错误的:阈值过高,人工就要花时间返工AI的工作;阈值过低,用户在没有任何补救措施的情况下承受AI的错误。两种失败都是隐性的,直到它们积累成大问题。

无共享智能体:为水平可扩展性设计 AI 智能体

· 阅读需 13 分钟
Tian Pan
Software Engineer

你的负载均衡器将一个传入的智能体请求分配给副本 3。但用户的对话历史存储在副本 7 的内存中。副本 3 完全不知道过去六轮发生了什么,于是它从头开始,让用户一头雾水,你的值班工程师在凌晨 2 点被叫醒。你启用了会话粘滞。现在该用户的所有请求永远路由到副本 7。你用一个正确性问题换来了一个可扩展性天花板。

就在这一刻,团队意识到:AI 智能体的"水平扩展"和 Web 服务器的水平扩展根本不是同一个问题。修复方式不同,而那些看似直接的路径会以可预见的方式失败。

多智能体系统中的温度治理:为什么方差是一类预算

· 阅读需 13 分钟
Tian Pan
Software Engineer

大多数生产环境中的多智能体系统都采用单一的温度(temperature)值——这个值通常是从教程中复制过来的,设置一次后就再未改动,并应用于流水线中的每一个智能体。分类器、生成器、验证器和格式化器全都运行在 0.7,仅仅因为 README 是这么写的。这等同于给每个数据库查询都设置相同的超时时间,而不论它是点查询还是全表扫描。在开始调试那些看似模型错误、实则是采样策略错误的故障模式之前,一切看起来都很正常。

温度并非一个全局性的旋钮。它是一个基于角色的策略决策,如果设置错误,会根据偏离方向的不同而产生截然不同的故障特征。

工作流引擎何时优于LLM智能体:确定性编排的决策框架

· 阅读需 10 分钟
Tian Pan
Software Engineer

Gartner预测,到2027年底,超过40%的智能体AI项目将被取消——主要原因是成本不断攀升、业务价值不明确以及风险管控不足。行业调查显示,自主AI智能体的生产成功率介于5%至11%之间。这些数字揭示了一个重要事实:在团队交给智能体处理的大量任务中,确定性工作流引擎本可以更快、更便宜、更可靠地完成工作。

这不是反AI的论点,而是架构层面的思考。问题不在于LLM是否有能力——而在于自主的开放式推理是否是你所构建任务的正确执行模型。对于相当大一类结构化业务流程而言,答案是否定的。

环境 AI 架构:设计不会被用户关掉的常驻智能体

· 阅读需 9 分钟
Tian Pan
Software Engineer

大多数团队构建的环境 AI,用户上线就关。

这个模式高度一致:团队内部演示功能,所有人都认为理论上有用,但上线两周内禁用率就超过 60%。这不是模型质量问题,而是架构问题——更具体地说,是打扰阈值问题。团队在设计环境智能体时,考虑的是 AI 能做什么,而不是用户在没有主动求助时能忍受什么。

从显式调用("问 AI")到环境监控("AI 观察并行动")之间的鸿沟,不只是 UX 问题。它需要从根本上不同的系统架构、不同的事件模型,以及关于 AI 智能体何时才算赢得发言权的不同心智模型。

当你的智能体框架成为 Bug 时

· 阅读需 10 分钟
Tian Pan
Software Engineer

高层级智能体框架承诺将三天的集成工作转化为三小时的原型开发。这个承诺是真实的。问题在于接下来发生的事情:在一家开发 AI 驱动的浏览器测试智能体的公司中,工程师们在进入生产阶段六个月后发现,他们花在调试 LangChain 上的时间竟然和开发功能的时间一样多。他们的解决方案很彻底——完全弃用了框架,并回退到模块化的构建块。“一旦我们移除了它,”他们写道,“我们就不再需要将需求转化为符合 LangChain 规范的方案。我们可以直接编码。”

他们并不孤单。大约 45% 尝试使用高层级 LLM 编排框架的开发者从未将其部署到生产环境。另有 23% 的开发者在上线后最终将其移除。这些数字并不意味着框架是糟糕的工具——它们意味着框架是具有特定有用范围的工具,而那个范围比演示中展示的要窄。

智能体任务复杂度估算:执行前先规划 Token 预算

· 阅读需 12 分钟
Tian Pan
Software Engineer

两个智能体收到同一条用户消息。一个在 3 秒内用 400 个 Token 完成任务;另一个进入 Reflexion 循环,耗尽 40,000 个 Token,在任务中途触及上下文限制,产出一个半成品答案。两个系统都没有预测到会是哪种结果。这不是边缘情况——这是智能体在没有对任务深度建立任何模型的情况下启动任务时的默认行为。

基于 LLM 的智能体在执行前对任务范围没有天然感知。用自然语言读起来简单的请求可能需要十几次工具调用和多轮规划;听起来复杂的请求可能只需一次查找即可解决。没有执行前的复杂度估算,智能体就会盲目提交资源:随着轮次历史积累,上下文窗口呈二次方填满;规划开销主导执行时间;等到系统检测到问题时,导致问题的早期决策已经无法撤销。

智能体任务复杂度估算:执行前先规划 Token 预算

温和交接模式:设计智能体与人类之间的流畅控制权转移

· 阅读需 13 分钟
Tian Pan
Software Engineer

大多数智能体升级流程都是披着善意外衣的冷转接。智能体决定无法继续推进,丢下一句"正在为你转接人工客服",然后将会话路由给一个对此前发生的一切一无所知的坐席——不知道智能体尝试了什么、哪里失败了、用户究竟需要什么。人工客服从零开始,用户不得不重复自己。信任就此侵蚀——不是因为 AI 出了错,而是因为没有人设计好那个边界。

温和交接模式是一套架构规范,专门针对智能体让渡控制权的那个关键时刻。它将这个边界视为系统的一等关注点,而非事后诸葛。做好了,接收方——无论是人类还是另一个智能体——都能进入一个已经被充分告知、结构清晰的场景。做差了,那个边界就是用户信任的坟场。

智能体系统中的写放大:为什么一次工具调用会命中六个数据库

· 阅读需 11 分钟
Tian Pan
Software Engineer

当智能体决定记住某件事——"用户更喜欢邮件而非Slack"——看起来只是一次写入。实际上,它是六次写入:向量存储中的一个新嵌入、关系数据库中的一行记录、会话缓存中的一个条目、事件日志中的一条记录、审计轨迹中的一个条目,以及上下文存储的一次更新。每一次写入都因为系统的某个部分对数据有合理需求而发生,每一次写入都引入了新的故障点。

这是基础设施层面的写放大,也是生产智能体部署中较为隐蔽的运营危机之一。它不会导致戏剧性的故障,而是导致部分故障:用户偏好在语义上可以被搜索到,但关系查询返回的是过时数据;审计日志显示某个动作已完成,但实际上从未完全提交;缓存是热的,但上下文存储没有更新,因此下一个会话在没有已学习模式的情况下启动。

理解这一切为何发生——以及如何应对——需要借鉴数据库内部知识,而不是智能体框架文档。