跳到主要内容

299 篇博文 含有标签「observability」

查看所有标签

发现的能力:当用户上线了你团队从未规划的功能

· 阅读需 12 分钟
Tian Pan
Software Engineer

一个客户给客服发邮件,询问为什么你的 CRM 智能助手停止起草他们的 NDA 了。你根本不知道你的 CRM 智能助手竟然在起草 NDA。一位资深用户抱怨说,你的客服机器人的他加禄语(Tagalog)翻译质量自上周以来有所下降。你根本不知道你的客服机器人还会他加禄语。一个论坛帖子传播了一个提示词,能将你的代码审查助手变成一个还算凑合的安全扫描器,不到一个季度,你就收到了针对该助手生成结果提交的 CVE 报告。其中的每一项都是一个拥有用户群、业务影响力,但完全没有组织归属的功能——没有评估(eval)、没有 SLA、没有在 UX 中体现、没有列入路线图,而且还有一个隐蔽的、仅为 1 的公交因子(bus factor):那个摸索出这种用法的客户。

当你的产品封装了一个能力范围(capability surface)远超你设定范围的模型时,就会发生这种情况。用户会探索更广阔的能力范围,寻找能解决他们问题的行为,并在这些行为之上构建工作流。然后,当你进行下一次模型升级时,即便你的路线图上没有任何变动,他们也会将其视为一种退化(regression)。你与用户之间的契约不再是你书面写下的那份。它包含了模型碰巧为他们做到的、且你碰巧没有破坏掉的所有事情。

将此视为工程上的意外——“我们会强化提示词,增加护栏,下次我们会捕获到它”——这是一种范畴错误(category error)。“发现的能力”(Found capabilities)是一个产品管理问题。这门学科的核心不在于防止它们发生,而在于检测它们、决定如何处理它们,并记住你曾做出的决定。

Token 间抖动:你的 p95 仪表盘看不见的流式传输 UX 失败

· 阅读需 13 分钟
Tian Pan
Software Engineer

你的延迟仪表盘显示一切正常。p95 的首字延迟(TTFT)低于 800ms 的目标。p99 的总生成时间也在 4 秒的预算之内。然而,一位资深 PM 转发了一个支持线程:“助手在回答中途卡住了大约三秒钟”,“它停顿了一下,然后突然吐出一整段文字”,“我以为它死机了”。本周有三位用户因为同样的投诉卸载了应用。团队中没人能在笔记本电脑上重现这个问题,而且你记录的每一项指标都显示系统运行健康。

能解释这个 Bug 的指标正是你没在测量的那个:连续 Token 之间时间间隔的分布。一个看起来很完美的 p95 总时长可能会掩盖这样一种流:其中 8% 的响应在生成中途包含一个 2.5 秒的停顿。对于一个看着字符实时出现的用户来说,这种停顿意味着系统出故障了,而不仅仅是慢。你的仪表盘测量的是电影的总时长,而你的用户正在观看电影。

你的 SRE 复盘模板遗漏了决定每次 LLM 故障的六个关键字段

· 阅读需 12 分钟
Tian Pan
Software Engineer

当你第一次用经典的 SRE 复盘(Postmortem)模板来分析 LLM 事故时,模板赢了,而事故输了。时间线、诱因、缓解措施、预防措施 —— 每个字段都填好了,每个复选框都勾选了,但在文档的最后,没人能回答唯一重要的问题:究竟是哪个变量发生了变动?不是部署事件。不是基础设施故障。不是代码变更。而是 Prompt 的修订、路由选择的模型切片、未触发报警的 Eval 评分所用的 Judge 配置、质量投诉发生时的检索索引状态、规划器(Planner)正在组合的工具 Schema 版本,或者是异常时间段内的流量组合。这些在模板里都没有对应的一行。

SRE 模板并不是为那些“事实来源是观察到的行为而非代码路径”的系统设计的。在 LLM 技术栈中默默变动的变量,正是模板从未需要列举的变量。强行借用模板,只会产生那种被归类为“持续调查中”的“我们不知道发生了什么变化”的复盘报告。

负载降级是为人类设计的,而 Agent 会放大你正在抵御的风暴

· 阅读需 13 分钟
Tian Pan
Software Engineer

对人类来说,503 意味着一个“稍后再试”的页面和一段咖啡休息时间。对 Agent 来说,503 只是在七次重试中的第一次尝试前那 250 毫秒的挫折,而且规划器(planner)已经开始询问 LLM 是否有其他工具可以绕过这个失效的依赖项。第一种行为为过载的服务提供了恢复空间。第二种行为则是过载服务的噩梦:数以千计的关联重试,每一次都比人类的操作更廉价、更快速,其中一半还会扩散(fan out)到下一个依赖项,因为规划器认为那是一个富有创意的变通方案。

负载脱落(Load shedding)—— 即通过丢弃低优先级任务来维持高优先级路径可用的准则 —— 是在流量发送主体主要是键盘前的人类,或者是具有手动调优重试策略且行为良好的服务的时代设计的。当 Agent 集群出现时,这两个假设都会瞬间崩塌。Agent 重试速度更快,能同时从更多地方发起重试,绕过故障重新规划,并把你返回的 503 视为负载均衡的暗示,而不是你本意中希望达成的协作式背压(back-pressure)信号。

本文将探讨为什么标准的负载脱落策略在面对 Agent 客户端时会失效,上游服务需要什么样的原语才能真正卸载 Agent 流量,以及 Agent 本身在工具层和规划层必须做些什么,才能不再成为别人事故报告中的恶意流量。

跨区域 Prompt 版本偏差:你的 CDN 误运行了六小时的 A/B 测试

· 阅读需 12 分钟
Tian Pan
Software Engineer

你在 09:14 发布了一个系统提示词(system-prompt)变更。发布仪表盘在 09:31 变绿。到 11:00 时,你的评估追踪器依然显示正常,成本仪表盘也无异常,但一位客户成功工程师联系了团队:仅在亚太地区,解析端的结构化输出错误上升了约 3%。北美无异常。欧洲无异常。

发布在覆盖 67% 的区域时自动暂停了,因为某个 POP 节点上的一个非核心健康检查在切换期间发生了抖动,而当时没人注意到。在六个小时里,us-easteu-west 运行着提示词 v47,而 ap-southap-northeast 仍停留在 v46。你正在运行一个按地理位置划分的实时 A/B 测试——只不过这个测试不是你设计的,你看不到测试过程,而且那个本应捕捉质量回退的评估套件正巧连接到其中一个区域的新版本,然后若无其事地忽略了问题。

这种失败模式并不是单个工具的 bug。它是将提示词通过为不同类型的工件构建的部署系统进行推送时,所产生的可预见的后果。

智能体动作空间的可达性分析:为你从未测试过的分支提供评测覆盖

· 阅读需 13 分钟
Tian Pan
Software Engineer

你的团队第一次意识到 Agent 可以调用 revoke_api_key 是在某个早晨,一位好心的用户输入了:“这个 Token 感觉太旧了,能帮我轮换一下吗?” 这个工具是在六个月前作为认证团队 MCP 服务批量导入的一部分注册的。它通过了 Schema 验证,出现在目录枚举中,然后就一直闲置在那里。没有任何评测(Eval)调用过它,也没有任何生产环境追踪(Trace)触及过它。直到某条提示词(Prompt)、某个规划器(Planner)决策,事件频道(Incident Channel)才发现该工具竟然存在。

这就是隐藏在每一个拥有复杂工具目录的 Agent 中的失效模式。四十个注册函数和一个可以组合它们的规划器,产生了一个你从未观察到的计划可达图的长尾。假设“我们测试了常用路径”掩盖了一个事实:危险的分支几乎从定义上来说就是你从未见过的那一个。

推理力度预算编制:当思维 Token 成为财务账单的独立细目

· 阅读需 13 分钟
Tian Pan
Software Engineer

当你的财务团队第一次问,为什么单个用户在回答一个价值 0.1 美分的问题时产生了两美分的账单,那个电话讨论的不会是模型,而是发票上那行十二个月前还不存在的项目:推理 Token (reasoning tokens)。在账单上它们看起来像输出 Token,在大多数服务商那里也按输出 Token 的费率计费,而且它们没有天然的上限。一个在非推理模型上只需产生 400 个 Token 回复的查询,可能会悄无声息地消耗 8,000 个内部思考 Token 才能得出答案——唯一注意到这一点的人是核对支出的人。

在 API 时代的大部分时间里,“使用的 Token 数”是一个诚实的数字。你输入提示词,得到响应,账单是两者的清晰函数。推理模型打破了这种直觉。模型现在在发出调用者将阅读的答案之前,会生成一个隐藏的、可计费的、仅内部可见的思维链,而该链的大小取决于模型自身对问题难度的评估。用户可见的输出可能只有一句话,而账单可能长达十页。

路由即产品:为什么你的低成本分类器比旗舰模型决定了更多行为

· 阅读需 12 分钟
Tian Pan
Software Engineer

我上个季度接触的一个团队上线了一个他们称之为“路由项目”的东西:在他们的旗舰模型前端放了一个微型 BERT 分类器,用来判断查询是否足够简单,以便分流给更便宜、更快速的备选方案。这个项目在三周内就回本了。成本仪表盘上绿光一片。旗舰模型的评估套件——包含三百个对抗性案例、每周的评分运行等等——依然在每个周五稳稳通过。

上线六周后,某个特定产品界面的留存率下降了四个百分点,没人能找到原因。旗舰模型表现正常。延迟也正常。结果发现,路由竟然将 71% 的查询发送到了廉价模型。这种情况从第二周就开始了。对于大多数用户来说,这个廉价模型才是真正的产品,而这个廉价模型根本没有任何评估套件。

这是我在 2026 年看到的采用 LLM 路由进行成本控制的团队中最常见的失败模式:评估规范被绑定在系统的昂贵长尾部分,而廉价的头部部分——即承载大部分请求量、定义了产品体验的部分——却处于盲跑状态。

你的影子评估集是一个合规性定时炸弹

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的 AI 技术栈中最危险的数据存储是那个无人设计的存储。这一切始于一次冲刺期间的 Slack 消息:“真实用户是捕捉真实 Bug 的唯一途径 —— 让我们把一定比例的生产流量接入评估流水线,以便我们可以每晚进行回放。”六名工程师给这条消息点了赞。九个月后,该存储桶包含了 430 万条追踪(traces),当失败率上升时,评估任务会呼叫值班人员,而失败案例会被逐字发送到一个有 40 人阅读的 Slack 频道。这些追踪包含电子邮件地址、公司内部名称、部分信用卡卡号、员工电话号码,以及用户解释其愤怒原因的客户支持对话记录。

没有人梳理过数据流。没有 DPIA(数据保护影响评估)涵盖它。上季度的隐私审查查看了模型供应商的 API;但它没有查看你的评估任务。然后,一份数据主体删除请求送达,团队发现“删除该用户的所有数据”这句话已经无法对应到他们实际能做的任何事情。

AI 功能指标陷阱:为什么 DAU 和留存率在随机化表面 (Stochastic Surfaces) 上会产生误导

· 阅读需 13 分钟
Tian Pan
Software Engineer

一位产品经理(PM)带着一张幻灯片走进 AI 功能评审会,上面写着:“参与度 +12%,会话时长 +8%,留存率上升 3 个百分点。” 房间里的人纷纷点头。而在两个工位之外,客服主管正盯着另一张图表:涉及 AI 界面的工单增加了 22%,最常见的处理逻辑是“用户放弃,由人工客服协助”。这两个数字都是真实的,且都来自同一个产品。PM 的仪表盘建立在这样一个假设之上:AI 功能产生的事件形状与它所取代的按钮完全相同。事实并非如此。仪表盘统计的数据与用户实际体验之间的差距,正是 AI 功能在众目睽睽之下悄然失败的原因。

确定性功能的操作手册将交互视为点击流:用户触发一个事件,系统做出反应,用户继续操作。AI 功能具有不同的事件形状——一个包含阶段、重试、转向人工以及遥测数据永远无法看到的离线判断的“任务弧”(Task Arc)。将确定性仪表盘套用在这个任务弧上,就像是用 2018 年的面试流程来筛选 2026 年的工作职位。数字在上升,但这些数字本应预测的结果却在下降。

你的 stop_reason 在说谎:构建生产环境故障排查真正需要的停止分类法

· 阅读需 14 分钟
Tian Pan
Software Engineer

运维工程师调出一个 trace。模型已返回,span 正常关闭,API 调用显示 stop_reason: end_turn。从平台提供的各种信号来看,这是一次成功的生成。3 分钟后,客户报告说 Agent 煞有介事地写了半个配置文件,宣布操作完成,然后就继续下一步了。Trace 里没有任何预警信号,因为预警信号不在 API 协议里 —— 供应商提供的停止原因只有四到七类,而你的事故排查所需要的答案,恰恰隐藏在这些类别的缝隙之中。

停止原因(Stop reasons)是工程师在故障排查时最先查看的字段,也是最具误导性的字段。这些值是为运行时(runtime)设计的,旨在决定下一步该做什么:这一轮是否完成了?是否请求了工具?是否超出了预算?安全检查是否介入了?它们并不是为了让开发者重建答案出错的原因而设计的,而这两者之间的差异,正是生产团队耗费整个下午的时间所在。

信任天花板:产品团队忽视的自主性变量

· 阅读需 12 分钟
Tian Pan
Software Engineer

每个 Agent 功能都有一个自主性上限,一旦超过这个上限,用户就会开始检查工作、进行干预,或者彻底放弃该功能。这个上限并不是你模型的属性,而是由你的用户、领域以及出错成本决定的。它不会因为发布演示稿说它该移动就移动。大多数团队都是通过惨痛的教训才发现这个天花板的:发布的功能被设计为完全自主,但采用率却停滞在“Agent 建议,人类批准”的阶段,指标把责任推给模型,而接下来的一个季度则花在调整一个从未成为瓶颈的旋钮上。

这个上限的形状在各种产品中都足够一致,以至于它值得拥有一个名字。Anthropic 自己关于 Claude Code 的使用数据显示,新用户在约 20% 的时间内使用完全自动批准,只有在经过大约 750 次会话后,这一比例才会攀升至 40% 以上。PwC 2025 年对 300 名高管的调查发现,79% 的公司正在使用 AI Agent,但大多数生产部署都运行在“协作伙伴”或“顾问”级别——即模型提议,人类决策——而不是营销所暗示的全自主层级。这些数字背后的故事并不是用户胆小,而是信任是根据可挽回错误的成本进行校准的,而你的产品几乎肯定没有以用户需要的方式让他们看到、撤销或限制这些成本。