Anthropic Agent 质量复盘专题:离线评估、运行配置与用户反馈
原文一:A postmortem of three recent issues(2025-09-17)
原文二:An update on recent Claude Code quality reports(2026-04-23)
前置阅读:《Demystifying evals for AI agents》系统解读 · 评估可信度专题
实践项目:PPT Master
两篇复盘都从相似的用户感受开始:Claude “变差了”。
但调查结果不是一个模型整体退化,而是多个不同变更在不同时间、平台、配置和流量切片上叠加。对部分用户,问题持续存在;对另一些用户,一切正常;内部离线评估和日常使用又没有立即复现。
这使“质量下降”成为一个典型的系统归因问题:
用户看到的是最终体验,工程团队首先看到的却是分散的局部信号。本篇关注的不是两次事故的技术细节本身,而是四类证据为什么会错位:离线评估、运行配置、生产监控和用户反馈。
一、两次复盘发生在不同层
| 复盘 | 主要影响层 | 问题类型 | API 是否受影响 |
|---|---|---|---|
| 2025 年三项基础设施问题 | 推理服务、路由、硬件和编译器 | 请求被送到错误服务池、输出损坏、top-k 错误 | 部分 API 与平台受影响 |
| 2026 年 Claude Code 质量问题 | 产品默认值、上下文管理、系统提示 | 推理强度降低、历史推理反复清除、限字指令损伤编码质量 | API 和推理层未受影响 |
第一篇说明:同一个模型在不同基础设施路径上,输出质量可能不同。
第二篇说明:即使模型 API 完全正常,Agent 产品的默认参数、上下文处理和系统提示也足以改变用户体验。
因此,“模型没变”与“产品体验没变”不是同一个命题。
二、2025 年复盘:三个基础设施问题叠加
Anthropic 同时在 AWS Trainium、NVIDIA GPU 和 Google TPU 上提供 Claude,并通过第一方 API、Amazon Bedrock 与 Google Cloud Vertex AI 服务用户。
多平台提高了容量和覆盖范围,也意味着每次基础设施修改都要保持实现等价。三项事件正是在这种复杂性中重叠发生。
1. 上下文窗口路由错误
部分短上下文 Sonnet 4 请求被错误送到为即将推出的 1M context window 配置的服务器。
问题最初只影响约 0.8% 的请求,因此很难从总体指标中识别。8 月 29 日的一次常规负载均衡变更扩大了错误流量;最严重时段,受影响比例升到 16%。
路由还是 sticky 的:某次请求一旦进入错误服务池,后续消息更可能继续走同一路径。这让影响不是均匀随机噪声,而是集中在部分会话和用户上。
2. 输出损坏
TPU 服务的一项运行时性能优化配置错误,偶尔给低概率 token 分配异常高概率。
表现可能是英语回答中突然出现其他文字,或者代码出现明显语法错误。它影响特定模型、平台和时间窗口,第三方平台又可能完全正常。
团队回滚配置,并把异常字符检测加入部署过程。
3. approximate top-k 与 XLA:TPU 问题
采样代码的修改触发了 XLA:TPU 编译器中的潜在问题。某些 batch size 和模型配置下,approximate top-k 会返回完全错误的结果。
更棘手的是:
- 之前的 workaround 曾偶然掩盖该问题;
- 调试工具是否启用都可能改变表现;
- 同一 prompt 有时正常、有时失败;
- CPU 上的最小复现可能正确,TPU 上却错误。
最终团队改用 exact top-k,并统一部分 fp32 运算,接受较小效率代价来换取确定性。
流量变更不是根因,却改变了可见度
三项问题的引入时间、模型范围和平台范围不同。负载均衡变更没有创造所有 bug,但扩大了其中一项问题的暴露面。
用户于是看到两种矛盾现实:
- 一部分人连续遇到明显退化;
- 另一部分人在相同日期完全无法复现。
汇总指标把这种切片差异平均掉了,社区反馈又把多个根因压缩成同一句“Claude 变差了”。
三、为什么原有验证没有及时发现
Anthropic 当时已有 benchmark、安全评估、性能指标、工程抽查和小范围 canary,并不是完全没有验证。
问题在于这些机制覆盖的分布与真实故障分布不一致。
Claude 会从孤立错误中恢复
离线评估中的单次局部错误,不一定改变最终得分。模型可能在后续步骤自我纠正,grader 只看到 outcome 仍然通过。
用户在长对话中却能感受到:回答变得不稳定、代码偶发损坏、某些会话持续异常。最终通过率可能没有显著变化,过程质量已经下降。
故障只出现在特定平台和配置
如果离线评估没有覆盖错误服务器池、特定 batch size、硬件后端或 sticky routing,就不会经历同一问题。
这不是“再多跑几个 prompt”就必然能解决的缺口。运行环境必须进入实验设计。
隐私边界限制了调查材料
工程师不能任意查看没有被用户主动报告的真实交互。这保护了用户隐私,却也使团队难以取得问题会话并复现。
因此,带具体示例的主动反馈同时承担了两种作用:
- 告诉团队离线信号没有覆盖什么;
- 在许可边界内提供可调查的真实样本。
多个根因产生相似症状
路由错误、token 损坏和编译器 bug 都可能表现为“回答质量下降”,但修复入口完全不同。
只观察用户层症状,无法直接决定应该改模型、Prompt、路由还是编译器。复盘的困难不是没有信号,而是 缺少从信号到最近变更的可靠关联。
四、2026 年复盘:API 正常,Agent 产品仍然退化
第二次复盘涉及 Claude Code、Claude Agent SDK 和 Claude Cowork。Anthropic 很快确认 API 与推理层没有问题,但产品层仍有三项真实退化。
1. 默认推理强度从 high 调到 medium
团队为了降低 high effort 的长尾延迟、token 使用和“界面像卡住”的体验,把 Claude Code 默认 reasoning effort 调到 medium。
内部评估显示,多数任务只损失少量 intelligence,却显著降低延迟。这在平均指标上是一个可以解释的产品取舍。
用户反馈却表明,默认值代表的产品承诺不同:许多用户更愿意默认获得更高能力,再主动选择低 effort 处理简单任务。
这不是隐藏 bug,而是 内部优化目标与用户价值权重错位。团队最终恢复更高的默认 effort。
2. 缓存优化反复清除历史推理
设计目标是在闲置超过一小时后,只清除一次旧 thinking,以降低恢复会话的未缓存 token 成本。
实现 bug 却让清除操作在该会话后续每一轮持续发生。结果是:
- Agent 越执行越不记得自己为什么做出先前选择;
- 用户看到遗忘、重复和奇怪的工具调用;
- 连续 cache miss 还可能加速消耗 usage limits。
该问题处于 Claude Code 上下文管理、Anthropic API 和 extended thinking 的交界处,又只在 stale session 触发。
它通过了人工与自动代码审查、单元测试、端到端测试、自动验证和 dogfooding。两个无关实验还在多数内部 CLI 会话中掩盖了问题,使外部构建测试也不易复现。
3. 限制输出长度的系统提示损伤编码质量
为了控制 Opus 4.7 的冗长输出,团队加入了严格限字指令:工具调用之间不超过 25 词,最终回复通常不超过 100 词。
现有评估连续数周没有发现回归。发布后,团队扩大评估范围并做逐行 ablation,其中一项评估显示 Opus 4.6 和 4.7 都下降约 3%,于是回滚该指令。
这个案例说明:静态上非常简洁、目标也很清楚的一行 Prompt,可能在复杂任务中影响推理和工具协作。没有覆盖相关行为的评估,无法从文字本身推断结果。
五、四类信号各自回答什么问题
| 信号 | 最适合回答 | 不能单独回答 |
|---|---|---|
| 静态检查与代码测试 | 配置、Schema、确定性代码是否满足合同 | 用户体验是否改善 |
| 离线评估 | 固定任务和环境下,版本行为是否变化 | 真实流量中的所有切片是否正常 |
| 生产监控与渐进发布 | 哪些版本、配置、平台和流量切片出现异常 | 主观质量为什么变差 |
| 用户反馈 | 哪些真实场景让用户感到退化 | 根因在哪个组件、总体影响多大 |
四类信号不是从低级到高级的替代关系,而是一条归因链。
离线评估给出可控对照;生产监控告诉团队故障落在哪个切片;用户反馈补充评估没有表达的价值标准和真实样本;静态检查与代码测试则验证具体修复没有破坏确定性合同。
为什么总量指标容易骗人
两次复盘都出现了相同模式:多个问题影响不同流量,并在不同时间开始和结束。
如果只看总体平均值:
- 低比例但 sticky 的问题可能被稀释;
- 某平台退化可能被其他平台正常流量抵消;
- 默认值变更与真实 bug 可能混成一个趋势;
- 问题修复后,另一个问题仍在,曲线不会干净恢复。
因此,质量指标必须带上版本、平台、配置、时间和用户路径等切片,才能用于归因。
六、Anthropic 后续措施的共同逻辑
两篇复盘提出的措施虽然不同,但可以归为四类:
提高离线评估的敏感度与覆盖面
- 构造更能区分正常与损坏实现的评估;
- 对每次系统提示变更运行更广的逐模型评估;
- 用 ablation 识别具体哪一行造成影响。
让验证更接近真实生产路径
- 在真实生产系统上持续运行质量评估;
- 让更多内部员工使用与用户相同的公开构建;
- 对潜在能力取舍增加 soak period 和渐进发布。
保留配置和变更的可归因性
- 模型特定变化只作用于目标模型;
- Prompt 修改更容易审查和审计;
- Code Review 获取跨仓库上下文,覆盖组件交界处。
把用户反馈接入调查
- 鼓励提交具体、可复现的示例;
- 建设在隐私边界内调试社区反馈的工具;
- 不用离线评估结果否定用户看到的真实退化。
这里的核心不是“评估越多越好”,而是让每种证据覆盖自己的盲区。
七、PPT Master 的产品边界不同
PPT Master 是本地运行的 workflow/skill package,不是 Anthropic 那种托管模型服务。
当前仓库不拥有:
- 模型推理集群;
- 用户请求流量与负载均衡;
- 服务端 canary 和线上 A/B;
- 跨用户生产遥测;
- 对 Agent host 的统一控制。
因此,不能把 Anthropic 的生产监控方案直接翻译成 PPT Master 的待办。为了“看起来完整”而建设常驻遥测、通用线上评估或大规模测试系统,会超出项目形态和真实需求。
更有价值的是精确理解当前已有证据。
八、PPT Master 当前证据如何用于事故归因
本节对照 2026-08-12 的当前仓库快照 4e6ecbcb。各机制的合同与局限已在评估可信度专题展开,这里只说明发生质量事故时如何使用这些信号。
| 信号 | 事故归因中的用途 | 不能据此得出的结论 |
|---|---|---|
| Default 的计划制品结构检查、Default/Quick Generate 的 SVG 质量门 | 先排除规划结构或当前作者 SVG 违反确定性合同 | 不能证明跨版本行为稳定,也不能判断内容与审美 |
svg_to_pptx.py postflight | 检查 ZIP 完整性、SVG 与幻灯片数量、部分 package 结构、资源风险和 final 质量报告指纹关联 | 不能评价叙事、审美或用户偏好 |
| Prompt Audit | 判断 Agent-facing 静态语料的预算、引用、注册表或 Schema 是否漂移 | 不能证明某句 Prompt 没有行为影响 |
validation/workflow.log | 从命令、错误、回执和有限重要结果中提供失败定位线索 | 不是完整会话记录或线上遥测 |
| 当前依赖 Design Spec/Spec Lock 的可选 visual review 与用户反馈 | 定位机器合同之外的视觉问题和真实体验退化 | 仍需记录环境并复现,不能直接锁定根因 |
最终用户对内容和审美的反馈仍然不可替代。仓库的 bug_report.yml 要求问题描述、复现步骤和 AI editor/tool,并可补充模型、系统、Python 版本及文件;这些信息把主观报告转成可调查样本,也为环境切片提供入口。
九、最容易混淆的四个结论
“质量门通过”不等于“跨版本没有退化”
质量门验证一份当前制品。它没有固定任务集、重复 trial 和跨版本指标。
“Prompt Audit 通过”不等于“Prompt 没有行为影响”
静态预算、引用和 Schema 正确,只说明 Prompt 结构可维护。模型如何解释该文字,仍需真实任务证据。
“用户觉得变差”不等于“根因一定在 Prompt”
Agent host、模型、路线、profile、模板、系统字体、依赖和输入材料都可能改变体验。反馈足以触发调查,但不能跳过复现直接归因。
“无法复现”不等于“用户报告不真实”
Anthropic 两次复盘都证明,流量切片、闲置会话、实验配置和组件交界能让内部环境掩盖真实问题。调查应先确认环境是否等价。
十、适合 PPT Master 的窄诊断流程
当用户报告“最近生成质量变差”时,最小而有效的处理顺序是:
- 保存具体样本:输入材料、项目目录、SVG/PPTX、错误回执或截图;
- 记录运行条件:PPT Master commit、Agent host、模型、OS、Python、路线与 profile;
- 区分制品失败与体验退化:先运行当前路线已有检查器,再判断是否属于内容或审美问题;
- 定位最近变化:只比较可能影响该路径的 Prompt、脚本、模板或依赖,不做全仓猜测;
- 构造最小复现:用同一输入和环境验证修复前后差异;
- 只在问题重复出现时固化检查:机器可判定的真实回归进入窄规则,主观问题保留人工判断;
- 明确适用范围:一个 host 或模型上的结果,不外推为全部环境结论。
这个流程复用了现有制品和质量门,不要求先建设通用评估平台。
十一、何时才需要增加评估
只有出现以下任一触发,才值得为某项行为增加可重复试验:
- 同一类真实用户报告反复出现;
- 某项 Prompt 或工作流变更明确声称改善行为;
- 维护者需要在两个具体策略之间做选择;
- 已有静态检查无法区分正常与损坏实现。
此时也应从最小范围开始:少量真实输入、固定模型和环境、复用现有 checker、读取失败记录,并在需要审美判断时加入人工比较。
没有触发时,新增大而全的测试、监控或日志体系不符合 KISS/YAGNI,也可能把维护精力从真实问题转向维护评估本身。
十二、我的理解:质量治理的核心是可归因
两次复盘最值得保留的,不是“Anthropic 增加了哪些测试”,而是它们共同揭示了一个事实:
核心观点
质量问题之所以难,不是因为没有信号,而是因为信号来自不同环境、不同时间和不同层,无法自动指向同一个根因。
离线评估提供可控比较,生产监控提供流量切片,用户反馈提供真实价值与样本,静态检查和质量门验证具体修复。任何一层都不能冒充全部证据。
对 PPT Master,最清楚的边界是:现有质量门守住单次制品,Prompt Audit 守住静态语料,用户反馈决定哪些真实行为值得研究。跨版本评估只在明确比较需求出现时按最小范围建立;线上可观测系统不属于当前本地 workflow package 的默认职责。