M41 同族的最后一条缺口:HTTP 200 的响应里用顶层 message 报业务失败,而这句话 是上游自由文本 —— create_voice 的 input.url 是参考音频的公开地址(可能是预签名 URL,带凭据),上游报错常把它原样回显。 - ERROR 只留「打到了、但 200 是个业务失败」这个形状事实 + 体积摘要; message 原文不进 error,code/type 若真的带回来也只以令牌形态出镜 - errors.Is(err, ErrProviderFailed) 不变(熔断口径不动) - 用例断言失败仍被识别、且 error 文本里搜不到哨兵正文
- 只翻注释/文档字符串,代码零变化:go/scanner 词法流比对 21 文件 token+字面量全等,增删行数 1:1(467/467) - 刻意保留非散文英文:JSON Schema description、工具 Description() 返回值、adapter prompt、API 路径与命令示例、环境变量名 - 逐行确认代码前缀未变,未触碰其他模块